Moved report issue to new about menu

pull/156/head
M66B 6 years ago
parent b0cfb2f1e7
commit 9a6cf5da43

@ -82,7 +82,6 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URL; import java.net.URL;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.util.ArrayList; import java.util.ArrayList;
@ -210,9 +209,6 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
case R.string.menu_faq: case R.string.menu_faq:
onMenuFAQ(); onMenuFAQ();
break; break;
case R.string.menu_issue:
onMenuIssue();
break;
case R.string.menu_privacy: case R.string.menu_privacy:
onMenuPrivacy(); onMenuPrivacy();
break; break;
@ -363,13 +359,10 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
if (Helper.getIntentFAQ().resolveActivity(getPackageManager()) != null) if (Helper.getIntentFAQ().resolveActivity(getPackageManager()) != null)
items.add(new DrawerItem(-9, R.drawable.baseline_question_answer_24, R.string.menu_faq).setCollapsible()); 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) 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 pro = (getIntentPro() == null || getIntentPro().resolveActivity(getPackageManager()) != null);
boolean invite = (getIntentInvite().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); boolean other = (getIntentOtherApps().resolveActivity(getPackageManager()) != null);
if (pro || invite || rate || other) if (pro || invite || rate || other)
items.add(new DrawerItem(-13).setCollapsible()); items.add(new DrawerItem(-12).setCollapsible());
if (pro) 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) 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) 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) 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); drawerArray.set(items);
} }
@ -982,40 +975,6 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
Helper.view(this, this, Helper.getIntentFAQ()); 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() { private void onMenuPrivacy() {
Helper.view(this, this, Helper.getIntentPrivacy()); Helper.view(this, this, Helper.getIntentPrivacy());
} }

@ -20,50 +20,98 @@ package eu.faircode.email;
*/ */
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Paint; import android.graphics.Paint;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import java.io.UnsupportedEncodingException;
public class FragmentAbout extends FragmentBase { public class FragmentAbout extends FragmentBase {
@Override @Override
@Nullable @Nullable
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
setSubtitle(R.string.menu_about); setSubtitle(R.string.menu_about);
setHasOptionsMenu(true);
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;
}
View view = inflater.inflate(R.layout.fragment_about, container, false); View view = inflater.inflate(R.layout.fragment_about, container, false);
TextView tvVersion = view.findViewById(R.id.tvVersion); TextView tvVersion = view.findViewById(R.id.tvVersion);
Button btnChangelog = view.findViewById(R.id.btnChangelog);
TextView tvLimitations = view.findViewById(R.id.tvLimitations); TextView tvLimitations = view.findViewById(R.id.tvLimitations);
tvVersion.setText(getString(R.string.title_version, BuildConfig.VERSION_NAME)); 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); 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; 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;
}
} }

@ -36,18 +36,6 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvVersion" /> app:layout_constraintTop_toBottomOf="@id/tvVersion" />
<Button
android:id="@+id/btnChangelog"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:minWidth="0dp"
android:minHeight="0dp"
android:text="@string/app_changelog"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvCopyright" />
<include <include
android:id="@+id/inEula" android:id="@+id/inEula"
layout="@layout/include_eula" layout="@layout/include_eula"
@ -55,7 +43,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnChangelog" /> app:layout_constraintTop_toBottomOf="@id/tvCopyright" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView> </ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_changelog"
android:title="@string/app_changelog"
app:showAsAction="never" />
<item
android:id="@+id/menu_issue"
android:title="@string/menu_issue"
app:showAsAction="never" />
</menu>

@ -82,10 +82,6 @@
<string name="menu_rate">Rate this app</string> <string name="menu_rate">Rate this app</string>
<string name="menu_other">Other apps</string> <string name="menu_other">Other apps</string>
<string name="title_issue_type">Do you have a question or problem?</string>
<string name="title_issue_question">Question</string>
<string name="title_issue_problem">Problem</string>
<string name="title_welcome">Welcome</string> <string name="title_welcome">Welcome</string>
<string name="title_eula">End-user license agreement</string> <string name="title_eula">End-user license agreement</string>
<string name="title_agree">I agree</string> <string name="title_agree">I agree</string>

Loading…
Cancel
Save