From 9a6cf5da432472b3fd50854c678f84b7d5d708b4 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 28 Apr 2019 11:56:57 +0200 Subject: [PATCH] Moved report issue to new about menu --- .../java/eu/faircode/email/ActivityView.java | 55 ++---------- .../java/eu/faircode/email/FragmentAbout.java | 86 +++++++++++++++---- app/src/main/res/layout/fragment_about.xml | 14 +-- app/src/main/res/menu/menu_about.xml | 13 +++ app/src/main/res/values/strings.xml | 4 - 5 files changed, 88 insertions(+), 84 deletions(-) create mode 100644 app/src/main/res/menu/menu_about.xml diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 880dcbb1c6..66720392a4 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -82,7 +82,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; -import java.io.UnsupportedEncodingException; import java.net.URL; import java.text.NumberFormat; import java.util.ArrayList; @@ -210,9 +209,6 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB case R.string.menu_faq: onMenuFAQ(); break; - case R.string.menu_issue: - onMenuIssue(); - break; case R.string.menu_privacy: onMenuPrivacy(); break; @@ -363,13 +359,10 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB if (Helper.getIntentFAQ().resolveActivity(getPackageManager()) != null) items.add(new DrawerItem(-9, R.drawable.baseline_question_answer_24, R.string.menu_faq).setCollapsible()); - if (BuildConfig.BETA_RELEASE) - items.add(new DrawerItem(-10, R.drawable.baseline_report_problem_24, R.string.menu_issue).setCollapsible()); - if (Helper.getIntentPrivacy().resolveActivity(getPackageManager()) != null) - items.add(new DrawerItem(-11, R.drawable.baseline_account_box_24, R.string.menu_privacy).setCollapsible()); + items.add(new DrawerItem(-10, R.drawable.baseline_account_box_24, R.string.menu_privacy).setCollapsible()); - items.add(new DrawerItem(-12, R.drawable.baseline_info_24, R.string.menu_about).setCollapsible()); + items.add(new DrawerItem(-11, R.drawable.baseline_info_24, R.string.menu_about).setCollapsible()); boolean pro = (getIntentPro() == null || getIntentPro().resolveActivity(getPackageManager()) != null); boolean invite = (getIntentInvite().resolveActivity(getPackageManager()) != null); @@ -377,19 +370,19 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB boolean other = (getIntentOtherApps().resolveActivity(getPackageManager()) != null); if (pro || invite || rate || other) - items.add(new DrawerItem(-13).setCollapsible()); + items.add(new DrawerItem(-12).setCollapsible()); if (pro) - items.add(new DrawerItem(-14, R.drawable.baseline_monetization_on_24, R.string.menu_pro).setCollapsible()); + items.add(new DrawerItem(-13, R.drawable.baseline_monetization_on_24, R.string.menu_pro).setCollapsible()); if (invite) - items.add(new DrawerItem(-15, R.drawable.baseline_people_24, R.string.menu_invite).setCollapsible()); + items.add(new DrawerItem(-14, R.drawable.baseline_people_24, R.string.menu_invite).setCollapsible()); if (rate) - items.add(new DrawerItem(-16, R.drawable.baseline_star_24, R.string.menu_rate).setCollapsible()); + items.add(new DrawerItem(-15, R.drawable.baseline_star_24, R.string.menu_rate).setCollapsible()); if (other) - items.add(new DrawerItem(-17, R.drawable.baseline_get_app_24, R.string.menu_other).setCollapsible()); + items.add(new DrawerItem(-16, R.drawable.baseline_get_app_24, R.string.menu_other).setCollapsible()); drawerArray.set(items); } @@ -982,40 +975,6 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB Helper.view(this, this, Helper.getIntentFAQ()); } - private void onMenuIssue() { - new DialogBuilderLifecycle(this, this) - .setMessage(R.string.title_issue_type) - .setPositiveButton(R.string.title_issue_question, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Helper.view(ActivityView.this, ActivityView.this, Helper.getIntentFAQ()); - } - }) - .setNegativeButton(R.string.title_issue_problem, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - onReportIssue(); - } - }) - .show(); - } - - void onReportIssue() { - try { - String version = BuildConfig.VERSION_NAME + "/" + - (Helper.hasValidFingerprint(this) ? "1" : "3") + - (Helper.isPro(this) ? "+" : ""); - Intent issue = new Intent(Intent.ACTION_SEND); - issue.setPackage(BuildConfig.APPLICATION_ID); - issue.setType("text/plain"); - issue.putExtra(Intent.EXTRA_EMAIL, new String[]{Helper.myAddress().getAddress()}); - issue.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.title_issue_subject, version)); - startActivity(issue); - } catch (UnsupportedEncodingException ex) { - Helper.unexpectedError(this, this, ex); - } - } - private void onMenuPrivacy() { Helper.view(this, this, Helper.getIntentPrivacy()); } diff --git a/app/src/main/java/eu/faircode/email/FragmentAbout.java b/app/src/main/java/eu/faircode/email/FragmentAbout.java index b8cbdbe8b9..f6ee0a7ce9 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAbout.java +++ b/app/src/main/java/eu/faircode/email/FragmentAbout.java @@ -20,50 +20,98 @@ package eu.faircode.email; */ import android.content.Intent; +import android.content.pm.PackageManager; import android.graphics.Paint; import android.net.Uri; import android.os.Bundle; 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; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import java.io.UnsupportedEncodingException; + public class FragmentAbout extends FragmentBase { @Override @Nullable public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { setSubtitle(R.string.menu_about); - - Intent changelog = null; - if (!Helper.isPlayStoreInstall(getContext())) { - changelog = new Intent(Intent.ACTION_VIEW); - changelog.setData(Uri.parse(BuildConfig.CHANGELOG)); - if (changelog.resolveActivity(getContext().getPackageManager()) == null) - changelog = null; - } + setHasOptionsMenu(true); View view = inflater.inflate(R.layout.fragment_about, container, false); TextView tvVersion = view.findViewById(R.id.tvVersion); - Button btnChangelog = view.findViewById(R.id.btnChangelog); TextView tvLimitations = view.findViewById(R.id.tvLimitations); tvVersion.setText(getString(R.string.title_version, BuildConfig.VERSION_NAME)); - btnChangelog.setVisibility(changelog == null ? View.GONE : View.VISIBLE); tvLimitations.setPaintFlags(tvLimitations.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); - final Intent intent = changelog; - btnChangelog.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - startActivity(intent); - } - }); - return view; } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + inflater.inflate(R.menu.menu_about, menu); + super.onCreateOptionsMenu(menu, inflater); + } + + @Override + public void onPrepareOptionsMenu(Menu menu) { + PackageManager pm = getContext().getPackageManager(); + menu.findItem(R.id.menu_changelog).setVisible( + !Helper.isPlayStoreInstall(getContext()) && getIntentChangelog().resolveActivity(pm) != null); + menu.findItem(R.id.menu_issue).setVisible( + BuildConfig.BETA_RELEASE && getIntentIssue().resolveActivity(pm) != null); + super.onPrepareOptionsMenu(menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.menu_changelog: + onMenuChangelog(); + return true; + case R.id.menu_issue: + onMenuIssue(); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + private void onMenuChangelog() { + startActivity(getIntentChangelog()); + } + + private void onMenuIssue() { + startActivity(getIntentIssue()); + } + + private Intent getIntentChangelog() { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(BuildConfig.CHANGELOG)); + return intent; + } + + private Intent getIntentIssue() { + String version = BuildConfig.VERSION_NAME + "/" + + (Helper.hasValidFingerprint(getContext()) ? "1" : "3") + + (Helper.isPro(getContext()) ? "+" : ""); + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setPackage(BuildConfig.APPLICATION_ID); + intent.setType("text/plain"); + try { + intent.putExtra(Intent.EXTRA_EMAIL, new String[]{Helper.myAddress().getAddress()}); + } catch (UnsupportedEncodingException ex) { + Log.w(ex); + } + intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.title_issue_subject, version)); + return intent; + } } diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index 31739f596f..94c8cc3173 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -36,18 +36,6 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvVersion" /> -