1
0
Fork 0
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:
Gregor Santner 2016-10-22 19:21:26 +02:00
parent 2f5aa1e0e7
commit 866672eb47
13 changed files with 176 additions and 66 deletions

View file

@ -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() {

View file

@ -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) {

View file

@ -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());
}
}

View file

@ -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();

View file

@ -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);
}
}