mirror of
https://github.com/gsantner/dandelion
synced 2025-12-15 00:31:11 +01:00
Show Tor preset in Pod selection
; Themed BadgeDrawable ; Update TR, Pods ; Show Stream option after login
This commit is contained in:
parent
2f5aa1e0e7
commit
866672eb47
13 changed files with 176 additions and 66 deletions
|
|
@ -60,6 +60,7 @@ import android.widget.Toast;
|
|||
import com.github.dfa.diaspora_android.App;
|
||||
import com.github.dfa.diaspora_android.R;
|
||||
import com.github.dfa.diaspora_android.data.AppSettings;
|
||||
import com.github.dfa.diaspora_android.data.DiasporaPodList;
|
||||
import com.github.dfa.diaspora_android.data.PodUserProfile;
|
||||
import com.github.dfa.diaspora_android.fragment.BrowserFragment;
|
||||
import com.github.dfa.diaspora_android.fragment.CustomFragment;
|
||||
|
|
@ -71,6 +72,7 @@ import com.github.dfa.diaspora_android.receiver.OpenExternalLinkReceiver;
|
|||
import com.github.dfa.diaspora_android.receiver.UpdateTitleReceiver;
|
||||
import com.github.dfa.diaspora_android.ui.BadgeDrawable;
|
||||
import com.github.dfa.diaspora_android.ui.IntellihideToolbarActivityListener;
|
||||
import com.github.dfa.diaspora_android.ui.PodSelectionDialog;
|
||||
import com.github.dfa.diaspora_android.util.AppLog;
|
||||
import com.github.dfa.diaspora_android.util.CustomTabHelpers.CustomTabActivityHelper;
|
||||
import com.github.dfa.diaspora_android.util.DiasporaUrlHelper;
|
||||
|
|
@ -85,7 +87,8 @@ public class MainActivity extends ThemedActivity
|
|||
implements NavigationView.OnNavigationItemSelectedListener,
|
||||
WebUserProfileChangedListener,
|
||||
CustomTabActivityHelper.ConnectionCallback,
|
||||
IntellihideToolbarActivityListener {
|
||||
IntellihideToolbarActivityListener,
|
||||
PodSelectionDialog.PodSelectionDialogResultListener{
|
||||
|
||||
|
||||
public static final int REQUEST_CODE_ASK_PERMISSIONS = 123;
|
||||
|
|
@ -370,6 +373,11 @@ public class MainActivity extends ThemedActivity
|
|||
|
||||
protected void updateNavigationViewEntryVisibilities() {
|
||||
Menu navMenu = navView.getMenu();
|
||||
|
||||
// Initially show all items visible when logged in
|
||||
navMenu.setGroupVisible(navMenu.findItem(R.id.nav_exit).getGroupId(), true);
|
||||
|
||||
// Hide by app settings
|
||||
navMenu.findItem(R.id.nav_exit).setVisible(appSettings.isVisibleInNavExit());
|
||||
navMenu.findItem(R.id.nav_activities).setVisible(appSettings.isVisibleInNavActivities());
|
||||
navMenu.findItem(R.id.nav_aspects).setVisible(appSettings.isVisibleInNavAspects());
|
||||
|
|
@ -380,8 +388,10 @@ public class MainActivity extends ThemedActivity
|
|||
navMenu.findItem(R.id.nav_mentions).setVisible(appSettings.isVisibleInNavMentions());
|
||||
navMenu.findItem(R.id.nav_profile).setVisible(appSettings.isVisibleInNavProfile());
|
||||
navMenu.findItem(R.id.nav_public).setVisible(appSettings.isVisibleInNavPublic_activities());
|
||||
navMenu.findItem(R.id.nav_stream).setVisible(true);
|
||||
|
||||
// Top bar
|
||||
|
||||
// Hide whole group (for logged in use) if no pod was selected
|
||||
if (!appSettings.hasPod()) {
|
||||
navMenu.setGroupVisible(navMenu.findItem(R.id.nav_exit).getGroupId(), false);
|
||||
}
|
||||
|
|
@ -921,6 +931,14 @@ public class MainActivity extends ThemedActivity
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPodSelectionDialogResult(DiasporaPodList.DiasporaPod pod, boolean accepted) {
|
||||
if(accepted) {
|
||||
invalidateOptionsMenu();
|
||||
navheaderDescription.setText(pod.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCustomTabsDisconnected() {
|
||||
|
||||
|
|
|
|||
|
|
@ -275,8 +275,8 @@ public class AppSettings {
|
|||
return getInt(prefApp, R.string.pref_key__http_proxy_port, 0);
|
||||
} catch(Exception _anything){
|
||||
//TODO: Backward Compatibility for older versions. REMOVE after App v1.7.0
|
||||
setInt(prefApp, R.string.pref_key__http_proxy_port, 0);
|
||||
return 0;
|
||||
String str = getString(prefApp, R.string.pref_key__http_proxy_port, "0");
|
||||
return Integer.parseInt(str);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -341,7 +341,7 @@ public class AppSettings {
|
|||
}
|
||||
|
||||
public boolean isVisibleInNavProfile() {
|
||||
return getBoolean(prefApp, R.string.pref_key__visibility_nav__profile, false);
|
||||
return getBoolean(prefApp, R.string.pref_key__visibility_nav__profile, true);
|
||||
}
|
||||
|
||||
public void setPrimaryColorSettings(int base, int shade) {
|
||||
|
|
|
|||
|
|
@ -251,7 +251,7 @@ public class PodSelectionFragment extends CustomFragment implements SearchView.O
|
|||
|
||||
MainActivity mainActivity = (MainActivity) getActivity();
|
||||
DiasporaUrlHelper urlHelper = new DiasporaUrlHelper(appSettings);
|
||||
mainActivity.invalidateOptionsMenu();
|
||||
mainActivity.onPodSelectionDialogResult(pod, accepted);
|
||||
mainActivity.openDiasporaUrl(urlHelper.getSignInUrl());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ import android.graphics.drawable.LayerDrawable;
|
|||
import android.support.v4.content.ContextCompat;
|
||||
|
||||
import com.github.dfa.diaspora_android.R;
|
||||
import com.github.dfa.diaspora_android.data.AppSettings;
|
||||
|
||||
public class BadgeDrawable extends Drawable {
|
||||
// Source: http://mobikul.com/adding-badge-count-on-menu-items-like-cart-notification-etc/
|
||||
|
|
@ -47,8 +48,9 @@ public class BadgeDrawable extends Drawable {
|
|||
public BadgeDrawable(Context context) {
|
||||
float textSize = context.getResources().getDimension(R.dimen.textsize_badge_count);
|
||||
|
||||
AppSettings settings = new AppSettings(context);
|
||||
badgeBackground = new Paint();
|
||||
badgeBackground.setColor(ContextCompat.getColor(context.getApplicationContext(), R.color.md_deep_orange_650));
|
||||
badgeBackground.setColor(settings.getAccentColor());
|
||||
badgeBackground.setAntiAlias(true);
|
||||
badgeBackground.setStyle(Paint.Style.FILL);
|
||||
badgeStroke = new Paint();
|
||||
|
|
|
|||
|
|
@ -10,14 +10,18 @@ import android.text.TextUtils;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.EditText;
|
||||
import android.widget.RadioGroup;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.github.dfa.diaspora_android.App;
|
||||
import com.github.dfa.diaspora_android.R;
|
||||
import com.github.dfa.diaspora_android.data.AppSettings;
|
||||
import com.github.dfa.diaspora_android.data.DiasporaPodList.DiasporaPod;
|
||||
import com.github.dfa.diaspora_android.data.DiasporaPodList.DiasporaPod.DiasporaPodUrl;
|
||||
import com.github.dfa.diaspora_android.util.ProxyHandler;
|
||||
|
||||
import org.json.JSONException;
|
||||
|
||||
|
|
@ -73,15 +77,23 @@ public class PodSelectionDialog extends AppCompatDialogFragment {
|
|||
@BindView(R.id.podselection__dialog__spinner_profile)
|
||||
Spinner spinnerProfile;
|
||||
|
||||
@BindView(R.id.podselection__dialog__check_torpreset)
|
||||
CheckBox checkboxTorPreset;
|
||||
|
||||
@BindView(R.id.podselection__dialog__text_torpreset)
|
||||
TextView textTorPreset;
|
||||
|
||||
private PodSelectionDialogResultListener resultListener;
|
||||
private View root;
|
||||
private DiasporaPod pod = new DiasporaPod();
|
||||
private App app;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
LayoutInflater inflater = getActivity().getLayoutInflater();
|
||||
app = (App) getActivity().getApplication();
|
||||
|
||||
// Bind UI
|
||||
root = inflater.inflate(R.layout.podselection__dialog, null);
|
||||
|
|
@ -101,7 +113,6 @@ public class PodSelectionDialog extends AppCompatDialogFragment {
|
|||
spinnerProfile.setAdapter(spinnerAdapter);
|
||||
}
|
||||
|
||||
|
||||
builder.setView(root);
|
||||
return builder.create();
|
||||
}
|
||||
|
|
@ -122,6 +133,18 @@ public class PodSelectionDialog extends AppCompatDialogFragment {
|
|||
editPodAddress.setText(url1.getHost());
|
||||
radiogrpProtocol.check(url1.getProtocol().equals("https")
|
||||
? R.id.podselection__dialog__radio_https : R.id.podselection__dialog__radio_http);
|
||||
|
||||
// Tor
|
||||
boolean isOnionUrl = url1.getHost().endsWith(".onion");
|
||||
setUiVisible(textTorPreset, isOnionUrl);
|
||||
setUiVisible(checkboxTorPreset, isOnionUrl);
|
||||
checkboxTorPreset.setChecked(isOnionUrl);
|
||||
}
|
||||
|
||||
public void setUiVisible(View view, boolean visible) {
|
||||
if (view != null) {
|
||||
view.setVisibility(visible ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -142,11 +165,22 @@ public class PodSelectionDialog extends AppCompatDialogFragment {
|
|||
pod.setName(editPodName.getText().toString());
|
||||
pod.getPodUrls().clear();
|
||||
pod.getPodUrls().add(podUrl);
|
||||
|
||||
// Load Tor preset
|
||||
if(pod.getPodUrl().getHost().endsWith(".onion") && checkboxTorPreset.isChecked()){
|
||||
AppSettings settings = app.getSettings();
|
||||
settings.setProxyHttpEnabled(true);
|
||||
settings.setProxyWasEnabled(false);
|
||||
settings.setProxyHttpPort(8118);
|
||||
settings.setProxyHttpHost("127.0.0.1");
|
||||
ProxyHandler.getInstance().updateProxySettings(getContext());
|
||||
}
|
||||
|
||||
getDialog().dismiss();
|
||||
publishResult(POSITIVE_PRESSED);
|
||||
publishResult(true);
|
||||
} else {
|
||||
getDialog().cancel();
|
||||
publishResult(POSITIVE_PRESSED);
|
||||
publishResult(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue