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" />
-
-