From 6a41ca13f074f3a91ef142563e578c9d16bcdd97 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 30 Oct 2017 21:38:00 +0300 Subject: use dialogfragment for the "switch offline success" dialog to make it persist through orientation changes etc --- .../main/java/org/fox/ttrss/CommonActivity.java | 1 + .../main/java/org/fox/ttrss/OnlineActivity.java | 62 +++++++++++++++------- 2 files changed, 43 insertions(+), 20 deletions(-) (limited to 'org.fox.ttrss') diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java index 9b210e68..6374704b 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java @@ -50,6 +50,7 @@ public class CommonActivity extends ActionBarActivity implements SharedPreferenc public final static String FRAG_ARTICLE = "article"; public final static String FRAG_FEEDS = "feeds"; public final static String FRAG_CATS = "cats"; + public final static String FRAG_DIALOG = "dialog"; public final static String THEME_DARK = "THEME_DARK"; public final static String THEME_LIGHT = "THEME_LIGHT"; diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java index 49f727cb..10ac2e22 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java @@ -17,6 +17,7 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.v4.app.DialogFragment; import android.support.v7.view.ActionMode; import android.support.v7.widget.Toolbar; import android.util.Log; @@ -177,46 +178,67 @@ public class OnlineActivity extends CommonActivity { m_headlinesActionModeCallback = new HeadlinesActionModeCallback(); } } - - protected void switchOffline() { - if (m_offlineModeStatus == 2) { - - AlertDialog.Builder builder = new AlertDialog.Builder( - OnlineActivity.this) + + // TODO: if necessary rework into a class for multiple alert dialog types + public static class SwitchOfflineDialogFragment extends DialogFragment { + + public static SwitchOfflineDialogFragment newInstance() { + SwitchOfflineDialogFragment frag = new SwitchOfflineDialogFragment(); + Bundle args = new Bundle(); + frag.setArguments(args); + return frag; + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + + return new AlertDialog.Builder( + getActivity()) .setMessage(R.string.dialog_offline_success) .setPositiveButton(R.string.dialog_offline_go, new Dialog.OnClickListener() { public void onClick(DialogInterface dialog, - int which) { - - m_offlineModeStatus = 0; - - SharedPreferences localPrefs = getSharedPreferences("localprefs", Context.MODE_PRIVATE); + int which) { + + ((OnlineActivity)getActivity()).setOfflineModeStatus(0); + + SharedPreferences localPrefs = getActivity().getSharedPreferences("localprefs", Context.MODE_PRIVATE); SharedPreferences.Editor editor = localPrefs.edit(); editor.putBoolean("offline_mode_active", true); editor.apply(); - + Intent offline = new Intent( - OnlineActivity.this, + getActivity(), OfflineActivity.class); offline.putExtra("initial", true); startActivity(offline); - finish(); + + getActivity().finish(); } }) .setNegativeButton(R.string.dialog_cancel, new Dialog.OnClickListener() { public void onClick(DialogInterface dialog, - int which) { + int which) { - m_offlineModeStatus = 0; + ((OnlineActivity)getActivity()).setOfflineModeStatus(0); } - }); + }) + .create(); + } + } + + protected void setOfflineModeStatus(int status) { + m_offlineModeStatus = status; + } + + protected void switchOffline() { + if (m_offlineModeStatus == 2) { + + DialogFragment frag = SwitchOfflineDialogFragment.newInstance(); + frag.show(getSupportFragmentManager(), FRAG_DIALOG); - AlertDialog dlg = builder.create(); - dlg.show(); - } else if (m_offlineModeStatus == 0) { AlertDialog.Builder builder = new AlertDialog.Builder(this) -- cgit v1.2.3