Error dialog added
This commit is contained in:
parent
ab332a9025
commit
4d5f6fd243
3 changed files with 105 additions and 3 deletions
|
@ -62,6 +62,7 @@ import net.osmand.plus.activities.search.SearchActivity;
|
|||
import net.osmand.plus.base.FailSafeFuntions;
|
||||
import net.osmand.plus.base.MapViewTrackingUtilities;
|
||||
import net.osmand.plus.dashboard.DashboardOnMap;
|
||||
import net.osmand.plus.dialogs.ErrorBottomSheetDialog;
|
||||
import net.osmand.plus.dialogs.WhatsNewDialogFragment;
|
||||
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
|
||||
import net.osmand.plus.helpers.GpxImportHelper;
|
||||
|
@ -394,8 +395,13 @@ public class MapActivity extends AccessibleActivity implements DownloadEvents {
|
|||
if (!dashboardOnMap.isVisible()) {
|
||||
final OsmandSettings.CommonPreference<Boolean> shouldShowDashboardOnStart =
|
||||
settings.registerBooleanPreference(MapActivity.SHOULD_SHOW_DASHBOARD_ON_START, true);
|
||||
if (shouldShowDashboardOnStart.get() || dashboardOnMap.hasCriticalMessages())
|
||||
if (shouldShowDashboardOnStart.get() || dashboardOnMap.hasCriticalMessages()) {
|
||||
dashboardOnMap.setDashboardVisibility(true, DashboardOnMap.staticVisibleType);
|
||||
} else {
|
||||
if (ErrorBottomSheetDialog.shouldShow(settings, this)) {
|
||||
new ErrorBottomSheetDialog().show(getFragmentManager(), "dialog");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
dashboardOnMap.updateLocation(true, true, false);
|
||||
|
|
|
@ -907,8 +907,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks {
|
|||
// TODO: 11/13/15 Remove
|
||||
public boolean hasCriticalMessages() {
|
||||
final OsmandSettings settings = getMyApplication().getSettings();
|
||||
return rateUsShouldShow.shouldShow(settings, mapActivity, DashRateUsFragment.TAG)
|
||||
|| errorShouldShow.shouldShow(null, mapActivity, null);
|
||||
return rateUsShouldShow.shouldShow(settings, mapActivity, DashRateUsFragment.TAG);
|
||||
}
|
||||
|
||||
View getParentView() {
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
package net.osmand.plus.dialogs;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Typeface;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.OsmandSettings;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.Version;
|
||||
import net.osmand.plus.activities.MapActivity;
|
||||
import net.osmand.plus.activities.OsmandActionBarActivity;
|
||||
import net.osmand.plus.base.BottomSheetDialogFragment;
|
||||
import net.osmand.plus.helpers.FontCache;
|
||||
|
||||
import java.io.File;
|
||||
import java.text.MessageFormat;
|
||||
|
||||
/**
|
||||
* Created by GaidamakUA on 11/13/15.
|
||||
*/
|
||||
public class ErrorBottomSheetDialog extends BottomSheetDialogFragment {
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View view = getActivity().getLayoutInflater().inflate(R.layout.dash_error_fragment, container, false);
|
||||
String msg = MessageFormat.format(getString(R.string.previous_run_crashed), OsmandApplication.EXCEPTION_PATH);
|
||||
Typeface typeface = FontCache.getRobotoMedium(getActivity());
|
||||
ImageView iv = ((ImageView) view.findViewById(R.id.error_icon));
|
||||
iv.setImageDrawable(getMyApplication().getIconsCache().getContentIcon(R.drawable.ic_crashlog));
|
||||
TextView message = ((TextView) view.findViewById(R.id.error_header));
|
||||
message.setTypeface(typeface);
|
||||
message.setText(msg);
|
||||
Button errorBtn = ((Button) view.findViewById(R.id.error_btn));
|
||||
errorBtn.setTypeface(typeface);
|
||||
errorBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent intent = new Intent(Intent.ACTION_SEND);
|
||||
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"crash@osmand.net"}); //$NON-NLS-1$
|
||||
File file = getMyApplication().getAppPath(OsmandApplication.EXCEPTION_PATH);
|
||||
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
|
||||
intent.setType("vnd.android.cursor.dir/email"); //$NON-NLS-1$
|
||||
intent.putExtra(Intent.EXTRA_SUBJECT, "OsmAnd bug"); //$NON-NLS-1$
|
||||
StringBuilder text = new StringBuilder();
|
||||
text.append("\nDevice : ").append(Build.DEVICE); //$NON-NLS-1$
|
||||
text.append("\nBrand : ").append(Build.BRAND); //$NON-NLS-1$
|
||||
text.append("\nModel : ").append(Build.MODEL); //$NON-NLS-1$
|
||||
text.append("\nProduct : ").append(Build.PRODUCT); //$NON-NLS-1$
|
||||
text.append("\nBuild : ").append(Build.DISPLAY); //$NON-NLS-1$
|
||||
text.append("\nVersion : ").append(Build.VERSION.RELEASE); //$NON-NLS-1$
|
||||
text.append("\nApp Version : ").append(Version.getAppName(getMyApplication())); //$NON-NLS-1$
|
||||
try {
|
||||
PackageInfo info = getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(),
|
||||
0);
|
||||
if (info != null) {
|
||||
text.append("\nApk Version : ").append(info.versionName).append(" ").append(info.versionCode); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
PlatformUtil.getLog(ErrorBottomSheetDialog.class).error("", e);
|
||||
}
|
||||
intent.putExtra(Intent.EXTRA_TEXT, text.toString());
|
||||
startActivity(Intent.createChooser(intent, getString(R.string.send_report)));
|
||||
}
|
||||
});
|
||||
|
||||
Button cancelBtn = ((Button) view.findViewById(R.id.error_cancel));
|
||||
cancelBtn.setTypeface(typeface);
|
||||
cancelBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OsmandActionBarActivity dashboardActivity = ((OsmandActionBarActivity) getActivity());
|
||||
if (dashboardActivity != null) {
|
||||
dismiss();
|
||||
}
|
||||
}
|
||||
});
|
||||
return view;
|
||||
}
|
||||
|
||||
public static boolean shouldShow(OsmandSettings settings, MapActivity activity) {
|
||||
return activity.getMyApplication().getAppInitializer()
|
||||
.checkPreviousRunsForExceptions(activity, settings != null);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue