From 119d1fedf3e2cd338966e2f1742f4e0b8b070dd5 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 12 Jun 2019 16:15:46 +0200 Subject: [PATCH] Merge setup and options --- .../java/eu/faircode/email/ActivitySetup.java | 56 ++++++++----- .../eu/faircode/email/FragmentOptions.java | 32 +++---- .../email/FragmentOptionsBehavior.java | 2 +- .../email/FragmentOptionsConnection.java | 2 +- .../email/FragmentOptionsDisplay.java | 2 +- .../faircode/email/FragmentOptionsMisc.java | 2 +- .../email/FragmentOptionsNotifications.java | 2 +- .../faircode/email/FragmentOptionsSend.java | 2 +- .../email/FragmentOptionsSynchronize.java | 2 +- .../java/eu/faircode/email/FragmentSetup.java | 84 +++++-------------- app/src/main/res/layout/fragment_setup.xml | 23 ++--- app/src/main/res/menu/menu_setup.xml | 15 ---- app/src/main/res/values/strings.xml | 3 +- 13 files changed, 92 insertions(+), 135 deletions(-) delete mode 100644 app/src/main/res/menu/menu_setup.xml diff --git a/app/src/main/java/eu/faircode/email/ActivitySetup.java b/app/src/main/java/eu/faircode/email/ActivitySetup.java index 338aa67907..fc0fec82b4 100644 --- a/app/src/main/java/eu/faircode/email/ActivitySetup.java +++ b/app/src/main/java/eu/faircode/email/ActivitySetup.java @@ -117,6 +117,9 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On static final int REQUEST_EXPORT = 4; static final int REQUEST_IMPORT = 5; + static final String ACTION_QUICK_SETUP = BuildConfig.APPLICATION_ID + ".ACTION_QUICK_SETUP"; + static final String ACTION_VIEW_ACCOUNTS = BuildConfig.APPLICATION_ID + ".ACTION_VIEW_ACCOUNTS"; + static final String ACTION_VIEW_IDENTITIES = BuildConfig.APPLICATION_ID + ".ACTION_VIEW_IDENTITIES"; static final String ACTION_EDIT_ACCOUNT = BuildConfig.APPLICATION_ID + ".EDIT_ACCOUNT"; static final String ACTION_EDIT_IDENTITY = BuildConfig.APPLICATION_ID + ".EDIT_IDENTITY"; static final String ACTION_SHOW_PRO = BuildConfig.APPLICATION_ID + ".SHOW_PRO"; @@ -223,14 +226,6 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On drawerLayout.closeDrawer(drawerContainer); onMenuContacts(); } - })); - - menus.add(new NavMenuItem(R.drawable.baseline_settings_applications_24, R.string.title_setup_advanced, new Runnable() { - @Override - public void run() { - drawerLayout.closeDrawer(drawerContainer); - onMenuOptions(); - } }).setSeparated()); menus.add(new NavMenuItem(R.drawable.baseline_help_24, R.string.menu_legend, new Runnable() { @@ -285,7 +280,7 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On if ("accounts".equals(target)) fragmentTransaction.replace(R.id.content_frame, new FragmentAccounts()).addToBackStack("accounts"); else - fragmentTransaction.replace(R.id.content_frame, new FragmentSetup()).addToBackStack("setup"); + fragmentTransaction.replace(R.id.content_frame, new FragmentOptions()).addToBackStack("options"); fragmentTransaction.commit(); if (intent.hasExtra("target")) { @@ -322,6 +317,9 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On super.onResume(); LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this); IntentFilter iff = new IntentFilter(); + iff.addAction(ACTION_QUICK_SETUP); + iff.addAction(ACTION_VIEW_ACCOUNTS); + iff.addAction(ACTION_VIEW_IDENTITIES); iff.addAction(ACTION_EDIT_ACCOUNT); iff.addAction(ACTION_EDIT_IDENTITY); iff.addAction(ACTION_SHOW_PRO); @@ -518,15 +516,6 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On fragmentTransaction.commit(); } - private void onMenuOptions() { - if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) - getSupportFragmentManager().popBackStack("options", FragmentManager.POP_BACK_STACK_INCLUSIVE); - - FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); - fragmentTransaction.replace(R.id.content_frame, new FragmentOptions()).addToBackStack("options"); - fragmentTransaction.commit(); - } - private void onMenuLegend() { if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) getSupportFragmentManager().popBackStack("legend", FragmentManager.POP_BACK_STACK_INCLUSIVE); @@ -1085,6 +1074,24 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On return channel; } + private void onViewQuickSetup(Intent intent) { + FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); + fragmentTransaction.replace(R.id.content_frame, new FragmentQuickSetup()).addToBackStack("quick"); + fragmentTransaction.commit(); + } + + private void onViewAccounts(Intent intent) { + FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); + fragmentTransaction.replace(R.id.content_frame, new FragmentAccounts()).addToBackStack("accounts"); + fragmentTransaction.commit(); + } + + private void onViewIdentities(Intent intent) { + FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); + fragmentTransaction.replace(R.id.content_frame, new FragmentIdentities()).addToBackStack("identities"); + fragmentTransaction.commit(); + } + private void onEditAccount(Intent intent) { FragmentAccount fragment = new FragmentAccount(); fragment.setArguments(intent.getExtras()); @@ -1113,11 +1120,18 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - if (ACTION_EDIT_ACCOUNT.equals(intent.getAction())) + String action = intent.getAction(); + if (ACTION_QUICK_SETUP.equals(action)) + onViewQuickSetup(intent); + else if (ACTION_VIEW_ACCOUNTS.equals(action)) + onViewAccounts(intent); + else if (ACTION_VIEW_IDENTITIES.equals(action)) + onViewIdentities(intent); + else if (ACTION_EDIT_ACCOUNT.equals(action)) onEditAccount(intent); - else if (ACTION_EDIT_IDENTITY.equals(intent.getAction())) + else if (ACTION_EDIT_IDENTITY.equals(action)) onEditIdentity(intent); - else if (ACTION_SHOW_PRO.equals(intent.getAction())) + else if (ACTION_SHOW_PRO.equals(action)) onShowPro(intent); } }; diff --git a/app/src/main/java/eu/faircode/email/FragmentOptions.java b/app/src/main/java/eu/faircode/email/FragmentOptions.java index 118f10feaa..98f5d1fcf7 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptions.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptions.java @@ -48,8 +48,6 @@ public class FragmentOptions extends FragmentBase { @Override @Nullable public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - setSubtitle(R.string.title_advanced); - View view = inflater.inflate(R.layout.fragment_options, container, false); pager = view.findViewById(R.id.pager); @@ -72,25 +70,27 @@ public class FragmentOptions extends FragmentBase { @Override public int getCount() { - return 7; + return 8; } @Override public Fragment getItem(int position) { switch (position) { case 0: - return new FragmentOptionsSynchronize(); + return new FragmentSetup(); case 1: - return new FragmentOptionsSend(); + return new FragmentOptionsSynchronize(); case 2: - return new FragmentOptionsConnection(); + return new FragmentOptionsSend(); case 3: - return new FragmentOptionsDisplay(); + return new FragmentOptionsConnection(); case 4: - return new FragmentOptionsBehavior(); + return new FragmentOptionsDisplay(); case 5: - return new FragmentOptionsNotifications(); + return new FragmentOptionsBehavior(); case 6: + return new FragmentOptionsNotifications(); + case 7: return new FragmentOptionsMisc(); default: throw new IllegalArgumentException(); @@ -101,18 +101,20 @@ public class FragmentOptions extends FragmentBase { public CharSequence getPageTitle(int position) { switch (position) { case 0: - return getString(R.string.title_advanced_section_synchronize); + return getString(R.string.title_advanced_section_main); case 1: - return getString(R.string.title_advanced_section_send); + return getString(R.string.title_advanced_section_synchronize); case 2: - return getString(R.string.title_advanced_section_connection); + return getString(R.string.title_advanced_section_send); case 3: - return getString(R.string.title_advanced_section_display); + return getString(R.string.title_advanced_section_connection); case 4: - return getString(R.string.title_advanced_section_behavior); + return getString(R.string.title_advanced_section_display); case 5: - return getString(R.string.title_advanced_section_notifications); + return getString(R.string.title_advanced_section_behavior); case 6: + return getString(R.string.title_advanced_section_notifications); + case 7: return getString(R.string.title_advanced_section_misc); default: throw new IllegalArgumentException(); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java index d257ec3f43..79f9c966b1 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java @@ -53,7 +53,7 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe @Override @Nullable public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - setSubtitle(R.string.title_advanced); + setSubtitle(R.string.title_setup); setHasOptionsMenu(true); View view = inflater.inflate(R.layout.fragment_options_behavior, container, false); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java b/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java index 87242a2122..58a5e61838 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java @@ -59,7 +59,7 @@ public class FragmentOptionsConnection extends FragmentBase implements SharedPre @Override @Nullable public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - setSubtitle(R.string.title_advanced); + setSubtitle(R.string.title_setup); setHasOptionsMenu(true); View view = inflater.inflate(R.layout.fragment_options_connection, container, false); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java index dfb625d4b7..bf55ee2a4f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java @@ -61,7 +61,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer @Override @Nullable public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - setSubtitle(R.string.title_advanced); + setSubtitle(R.string.title_setup); setHasOptionsMenu(true); View view = inflater.inflate(R.layout.fragment_options_display, container, false); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index cbe14e91eb..0c4abcf63c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -74,7 +74,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc @Override @Nullable public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - setSubtitle(R.string.title_advanced); + setSubtitle(R.string.title_setup); setHasOptionsMenu(true); View view = inflater.inflate(R.layout.fragment_options_misc, container, false); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java b/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java index 9ac2487786..4e5e30f995 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java @@ -64,7 +64,7 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared @Override @Nullable public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - setSubtitle(R.string.title_advanced); + setSubtitle(R.string.title_setup); setHasOptionsMenu(true); View view = inflater.inflate(R.layout.fragment_options_notifications, container, false); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java index a4b6439fe8..185f7e2cdc 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java @@ -52,7 +52,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc @Override @Nullable public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - setSubtitle(R.string.title_advanced); + setSubtitle(R.string.title_setup); setHasOptionsMenu(true); View view = inflater.inflate(R.layout.fragment_options_send, container, false); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java index 15198a06d3..70aed7a429 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java @@ -66,7 +66,7 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr @Override @Nullable public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - setSubtitle(R.string.title_advanced); + setSubtitle(R.string.title_setup); setHasOptionsMenu(true); View view = inflater.inflate(R.layout.fragment_options_synchronize, container, false); diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index 46d8d36a3d..b67e5f3626 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -35,9 +35,6 @@ import android.os.Bundle; import android.os.PowerManager; import android.provider.Settings; import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Button; @@ -46,8 +43,8 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; -import androidx.fragment.app.FragmentTransaction; import androidx.lifecycle.Observer; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.preference.PreferenceManager; import java.util.List; @@ -55,6 +52,7 @@ import java.util.List; public class FragmentSetup extends FragmentBase { private ViewGroup view; + private Button btnHelp; private Button btnQuick; private TextView tvAccountDone; @@ -73,7 +71,6 @@ public class FragmentSetup extends FragmentBase { private Button btnData; - private Button btnOptions; private Button btnInbox; private int textColorPrimary; @@ -88,7 +85,6 @@ public class FragmentSetup extends FragmentBase { @Nullable public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { setSubtitle(R.string.title_setup); - setHasOptionsMenu(true); textColorPrimary = Helper.resolveColor(getContext(), android.R.attr.textColorPrimary); colorWarning = Helper.resolveColor(getContext(), R.attr.colorWarning); @@ -97,6 +93,7 @@ public class FragmentSetup extends FragmentBase { view = (ViewGroup) inflater.inflate(R.layout.fragment_setup, container, false); // Get controls + btnHelp = view.findViewById(R.id.btnHelp); btnQuick = view.findViewById(R.id.btnQuick); tvAccountDone = view.findViewById(R.id.tvAccountDone); @@ -115,35 +112,41 @@ public class FragmentSetup extends FragmentBase { btnData = view.findViewById(R.id.btnData); - btnOptions = view.findViewById(R.id.btnOptions); btnInbox = view.findViewById(R.id.btnInbox); // Wire controls + btnHelp.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startActivity(Helper.getIntentSetupHelp()); + } + }); + + PackageManager pm = getContext().getPackageManager(); + btnHelp.setVisibility(Helper.getIntentSetupHelp().resolveActivity(pm) == null ? View.GONE : View.VISIBLE); + btnQuick.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); - fragmentTransaction.replace(R.id.content_frame, new FragmentQuickSetup()).addToBackStack("quick"); - fragmentTransaction.commit(); + LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext()); + lbm.sendBroadcast(new Intent(ActivitySetup.ACTION_QUICK_SETUP)); } }); btnAccount.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); - fragmentTransaction.replace(R.id.content_frame, new FragmentAccounts()).addToBackStack("accounts"); - fragmentTransaction.commit(); + LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext()); + lbm.sendBroadcast(new Intent(ActivitySetup.ACTION_VIEW_ACCOUNTS)); } }); btnIdentity.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); - fragmentTransaction.replace(R.id.content_frame, new FragmentIdentities()).addToBackStack("identities"); - fragmentTransaction.commit(); + LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext()); + lbm.sendBroadcast(new Intent(ActivitySetup.ACTION_VIEW_IDENTITIES)); } }); @@ -188,19 +191,10 @@ public class FragmentSetup extends FragmentBase { } }); - btnOptions.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); - fragmentTransaction.replace(R.id.content_frame, new FragmentOptions()).addToBackStack("options"); - fragmentTransaction.commit(); - } - }); - btnInbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - finish(); + ((FragmentBase) getParentFragment()).finish(); } }); @@ -344,44 +338,6 @@ public class FragmentSetup extends FragmentBase { } } - @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - inflater.inflate(R.menu.menu_setup, menu); - super.onCreateOptionsMenu(menu, inflater); - } - - @Override - public void onPrepareOptionsMenu(Menu menu) { - PackageManager pm = getContext().getPackageManager(); - menu.findItem(R.id.menu_advanced).setVisible(BuildConfig.DEBUG); - menu.findItem(R.id.menu_help).setVisible(Helper.getIntentSetupHelp().resolveActivity(pm) != null); - super.onPrepareOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_advanced: - onMenuAdvanced(); - return true; - case R.id.menu_help: - onMenuHelp(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - private void onMenuAdvanced() { - FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); - fragmentTransaction.replace(R.id.content_frame, new FragmentOptions()).addToBackStack("options"); - fragmentTransaction.commit(); - } - - private void onMenuHelp() { - startActivity(Helper.getIntentSetupHelp()); - } - @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == ActivitySetup.REQUEST_PERMISSION) diff --git a/app/src/main/res/layout/fragment_setup.xml b/app/src/main/res/layout/fragment_setup.xml index 34b649d106..d184fbe820 100644 --- a/app/src/main/res/layout/fragment_setup.xml +++ b/app/src/main/res/layout/fragment_setup.xml @@ -50,6 +50,18 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/fast" /> +