Added nav menu settings

pull/203/head
M66B 4 years ago
parent a55230f36b
commit 802edc8553

@ -54,6 +54,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu;
import androidx.constraintlayout.widget.Group;
import androidx.core.app.NotificationCompat;
import androidx.core.widget.NestedScrollView;
@ -91,6 +92,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
private String startup;
private boolean nav_pinned;
private boolean nav_expanded;
private boolean nav_options;
private int colorDrawerScrim;
private int layoutId;
@ -106,6 +108,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
private ImageButton ibExpanderNav;
private ImageButton ibPin;
private ImageButton ibSettings;
private View vSeparatorOptions;
private ImageButton ibExpanderAccount;
private RecyclerView rvAccount;
private ImageButton ibExpanderUnified;
@ -187,6 +190,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
startup = prefs.getString("startup", "unified");
nav_pinned = getDrawerPinned();
nav_expanded = prefs.getBoolean("nav_expanded", true);
nav_options = prefs.getBoolean("nav_options", true);
Configuration config = getResources().getConfiguration();
boolean portrait2 = prefs.getBoolean("portrait2", false);
@ -273,6 +277,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
ibExpanderNav = drawerContainer.findViewById(R.id.ibExpanderNav);
ibPin = drawerContainer.findViewById(R.id.ibPin);
ibSettings = drawerContainer.findViewById(R.id.ibSettings);
vSeparatorOptions = drawerContainer.findViewById(R.id.vSeparatorOptions);
grpOptions = drawerContainer.findViewById(R.id.grpOptions);
ibExpanderAccount = drawerContainer.findViewById(R.id.ibExpanderAccount);
rvAccount = drawerContainer.findViewById(R.id.rvAccount);
@ -344,15 +349,45 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
ibSettings.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent privacy = new Intent(v.getContext(), ActivitySetup.class)
.setAction("display")
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra("tab", "display");
v.getContext().startActivity(privacy);
PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(ActivityView.this, owner, ibSettings);
popupMenu.inflate(R.menu.popup_nav);
popupMenu.insertIcons(ActivityView.this);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.menu_hide) {
View dview = LayoutInflater.from(ActivityView.this).inflate(R.layout.dialog_nav_options, null);
new AlertDialog.Builder(ActivityView.this)
.setView(dview)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
prefs.edit().putBoolean("nav_options", false).apply();
}
})
.setNegativeButton(android.R.string.cancel, null)
.show();
return true;
} else if (itemId != R.id.menu_settings) {
String tab = FragmentOptions.TAB_LABELS.get(item.getOrder());
startActivity(new Intent(ActivityView.this, ActivitySetup.class)
.setAction(tab)
.putExtra("tab", tab));
return true;
}
return false;
}
});
popupMenu.show();
}
});
grpOptions.setVisibility(nav_expanded ? View.VISIBLE : View.GONE);
ibExpanderNav.setVisibility(nav_options ? View.VISIBLE : View.GONE);
grpOptions.setVisibility(nav_expanded && nav_options ? View.VISIBLE : View.GONE);
vSeparatorOptions.setVisibility(nav_options ? View.VISIBLE : View.GONE);
// Accounts
rvAccount.setLayoutManager(new LinearLayoutManager(this));
@ -789,6 +824,17 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
drawerToggle.onConfigurationChanged(newConfig);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
super.onSharedPreferenceChanged(prefs, key);
if ("nav_options".equals(key)) {
nav_options = prefs.getBoolean(key, true);
ibExpanderNav.setVisibility(nav_options ? View.VISIBLE : View.GONE);
grpOptions.setVisibility(nav_expanded && nav_options ? View.VISIBLE : View.GONE);
vSeparatorOptions.setVisibility(nav_options ? View.VISIBLE : View.GONE);
}
}
private void setupDrawer() {
if (nav_pinned) {
drawerLayout.setScrimColor(Color.TRANSPARENT);

@ -59,6 +59,10 @@ import androidx.viewpager.widget.ViewPager;
import com.google.android.material.tabs.TabLayout;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class FragmentOptions extends FragmentBase {
private ViewPager pager;
private PagerAdapter adapter;
@ -103,6 +107,19 @@ public class FragmentOptions extends FragmentBase {
R.drawable.twotone_more_24
};
static final List<String> TAB_LABELS = Collections.unmodifiableList(Arrays.asList(
"main",
"sync",
"send",
"connection",
"display",
"behavior",
"privacy",
"encryption",
"notifications",
"misc"
));
static String[] OPTIONS_RESTART = new String[]{
"first", "app_support", "notify_archive", "message_swipe", "message_select", "folder_actions", "folder_sync",
"subscriptions",
@ -212,17 +229,12 @@ public class FragmentOptions extends FragmentBase {
}
String tab = getActivity().getIntent().getStringExtra("tab");
if ("connection".equals(tab))
pager.setCurrentItem(3);
else if ("display".equals(tab))
pager.setCurrentItem(4);
else if ("privacy".equals(tab))
pager.setCurrentItem(6);
else if ("encryption".equals(tab))
pager.setCurrentItem(7);
else if ("misc".equals(tab))
pager.setCurrentItem(9);
getActivity().getIntent().removeExtra("tab");
if (!TextUtils.isEmpty(tab)) {
int index = TAB_LABELS.indexOf(tab);
if (index >= 0)
pager.setCurrentItem(index);
getActivity().getIntent().removeExtra("tab");
}
}
@Override

@ -69,6 +69,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
private SwitchCompat swPortrait2;
private SwitchCompat swPortrait2c;
private SwitchCompat swLandscape;
private SwitchCompat swNavOptions;
private SwitchCompat swNavMessageCount;
private SwitchCompat swThreading;
@ -154,7 +155,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
private final static String[] RESET_OPTIONS = new String[]{
"theme", "startup", "cards", "beige", "tabular_card_bg", "shadow_unread",
"date", "date_bold",
"portrait2", "portrait2c", "landscape", "nav_count", "navbar_colorize",
"portrait2", "portrait2c", "landscape", "nav_options", "nav_count", "navbar_colorize",
"threading", "threading_unread", "indentation", "seekbar", "actionbar", "actionbar_color",
"highlight_unread", "highlight_color", "color_stripe",
"avatars", "bimi", "gravatars", "favicons", "generated_icons", "identicons", "circular", "saturation", "brightness", "threshold",
@ -191,6 +192,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
swPortrait2 = view.findViewById(R.id.swPortrait2);
swPortrait2c = view.findViewById(R.id.swPortrait2c);
swLandscape = view.findViewById(R.id.swLandscape);
swNavOptions = view.findViewById(R.id.swNavOptions);
swNavMessageCount = view.findViewById(R.id.swNavMessageCount);
swNavBarColorize = view.findViewById(R.id.swNavBarColorize);
@ -368,6 +370,13 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
}
});
swNavOptions.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("nav_options", checked).apply();
}
});
swNavMessageCount.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -1025,6 +1034,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
swPortrait2.setChecked(prefs.getBoolean("portrait2", false));
swPortrait2c.setChecked(prefs.getBoolean("portrait2c", false) && !swPortrait2.isChecked());
swLandscape.setChecked(prefs.getBoolean("landscape", true));
swNavOptions.setChecked(prefs.getBoolean("nav_options", true));
swNavMessageCount.setChecked(prefs.getBoolean("nav_count", false));
swNavBarColorize.setChecked(prefs.getBoolean("navbar_colorize", false));

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<eu.faircode.email.ScrollViewEx xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="24dp"
android:scrollbarStyle="outsideOverlay">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<eu.faircode.email.FixedTextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_advanced_nav_hide_title"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="?android:textColorPrimary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ivExpanderNav"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:padding="6dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvTitle"
app:srcCompat="@drawable/expander_hor" />
<ImageView
android:id="@+id/ivPin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:padding="6dp"
app:layout_constraintStart_toEndOf="@id/ivExpanderNav"
app:layout_constraintTop_toBottomOf="@id/tvTitle"
app:srcCompat="@drawable/pin" />
<ImageView
android:id="@+id/ivSettings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:padding="6dp"
app:layout_constraintStart_toEndOf="@id/ivPin"
app:layout_constraintTop_toBottomOf="@id/tvTitle"
app:srcCompat="@drawable/twotone_settings_24" />
<View
android:id="@+id/vDash"
android:layout_width="0dp"
android:layout_height="2dp"
android:background="?attr/colorWarning"
app:layout_constraintBottom_toBottomOf="@id/ivExpanderNav"
app:layout_constraintEnd_toEndOf="@id/ivSettings"
app:layout_constraintStart_toStartOf="@id/ivExpanderNav"
app:layout_constraintTop_toTopOf="@id/ivExpanderNav" />
<eu.faircode.email.FixedTextView
android:id="@+id/tMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/title_advanced_nav_hide_message"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="italic"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ivExpanderNav" />
</androidx.constraintlayout.widget.ConstraintLayout>
</eu.faircode.email.ScrollViewEx>

@ -310,6 +310,17 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swLandscape" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/swNavOptions"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/title_advanced_nav_options"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvLandscapeHint"
app:switchPadding="12dp" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/swNavMessageCount"
android:layout_width="0dp"
@ -318,7 +329,7 @@
android:text="@string/title_advanced_nav_message_count"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvLandscapeHint"
app:layout_constraintTop_toBottomOf="@id/swNavOptions"
app:switchPadding="12dp" />
<androidx.appcompat.widget.SwitchCompat

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_hide"
android:icon="@drawable/twotone_visibility_off_24"
android:title="@string/title_hide" />
<item
android:id="@+id/menu_settings"
android:icon="@drawable/twotone_settings_24"
android:title="@string/menu_setup">
<menu>
<item
android:id="@+id/menu_settings_main"
android:icon="@drawable/twotone_home_24"
android:orderInCategory="0"
android:title="@string/title_advanced_section_main" />
<item
android:id="@+id/menu_settings_sync"
android:icon="@drawable/twotone_sync_24"
android:orderInCategory="1"
android:title="@string/title_advanced_section_synchronize" />
<item
android:id="@+id/menu_settings_send"
android:icon="@drawable/twotone_send_24"
android:orderInCategory="2"
android:title="@string/title_advanced_section_send" />
<item
android:id="@+id/menu_settings_connection"
android:icon="@drawable/twotone_cloud_24"
android:orderInCategory="3"
android:title="@string/title_advanced_section_connection" />
<item
android:id="@+id/menu_settings_display"
android:icon="@drawable/twotone_monitor_24"
android:orderInCategory="4"
android:title="@string/title_advanced_section_display" />
<item
android:id="@+id/menu_settings_behavior"
android:icon="@drawable/twotone_psychology_24"
android:orderInCategory="5"
android:title="@string/title_advanced_section_behavior" />
<item
android:id="@+id/menu_settings_privacy"
android:icon="@drawable/twotone_account_circle_24"
android:orderInCategory="6"
android:title="@string/title_advanced_section_privacy" />
<item
android:id="@+id/menu_settings_encryption"
android:icon="@drawable/twotone_lock_24"
android:orderInCategory="7"
android:title="@string/title_advanced_section_encryption" />
<item
android:id="@+id/menu_settings_notification"
android:icon="@drawable/twotone_notifications_24"
android:orderInCategory="8"
android:title="@string/title_advanced_section_notifications" />
<item
android:id="@+id/menu_settings_misc"
android:icon="@drawable/twotone_more_24"
android:orderInCategory="9"
android:title="@string/title_advanced_section_misc" />
</menu>
</item>
</menu>

@ -400,7 +400,9 @@
<string name="title_advanced_landscape">Landscape mode</string>
<string name="title_advanced_two_row">Use two rows</string>
<string name="title_advanced_two_col">Use two columns</string>
<string name="title_advanced_default_nav">Show navigation menu by default</string>
<string name="title_advanced_nav_options">Show navigation menu options</string>
<string name="title_advanced_nav_hide_title">Hide navigation menu options?</string>
<string name="title_advanced_nav_hide_message">You can enable the options again in the display settings</string>
<string name="title_advanced_nav_message_count">Show number of locally stored messages in the navigation menu</string>
<string name="title_advanced_startup">Show on start screen</string>
<string name="title_advanced_cards">Use card style instead of tabular style</string>

Loading…
Cancel
Save