Add go to page option

This commit is contained in:
Petar Kukolj 2018-11-15 20:54:40 +01:00
parent b3fbb0ec75
commit 6262f98e39
5 changed files with 80 additions and 9 deletions

View File

@ -656,12 +656,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi
case SHOW_PROMPT:
new AlertDialog.Builder(this)
.setMessage(R.string.close_prompt)
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
MainActivity.super.onBackPressed();
}
})
.setPositiveButton(R.string.yes, (dialogInterface, i) -> MainActivity.super.onBackPressed())
.setNegativeButton(R.string.no, null)
.setCancelable(false)
.show();
@ -674,6 +669,27 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi
super.onBackPressed();
}
break;
case GO_TO_QUEUE:
if(getLastNavFragment().equals(QueueFragment.TAG)) {
super.onBackPressed();
} else {
loadFragment(QueueFragment.TAG, null);
}
break;
case GO_TO_EPISODES:
if(getLastNavFragment().equals(EpisodesFragment.TAG)) {
super.onBackPressed();
} else {
loadFragment(EpisodesFragment.TAG, null);
}
break;
case GO_TO_SUBSCRIPTIONS:
if(getLastNavFragment().equals(SubscriptionFragment.TAG)) {
super.onBackPressed();
} else {
loadFragment(SubscriptionFragment.TAG, null);
}
break;
default: super.onBackPressed();
}
}

View File

@ -227,6 +227,33 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
return true;
});
ui.findPreference(UserPreferences.PREF_BACK_BUTTON_BEHAVIOR)
.setOnPreferenceChangeListener((preference, newValue) -> {
if(newValue.equals("page")) {
final Context context = ui.getActivity();
final String[] navTitles = context.getResources().getStringArray(R.array.back_button_go_to_pages);
final int choice[] = { UserPreferences.getBackButtonGoToPage() };
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(R.string.back_button_go_to_page_title);
builder.setSingleChoiceItems(navTitles, choice[0], (dialogInterface, i) -> {
if(i >= 0) {
choice[0] = i;
}
});
builder.setPositiveButton(R.string.confirm_label, (dialogInterface, i) -> {
if (choice[0] != UserPreferences.getBackButtonGoToPage()) {
UserPreferences.setBackButtonGoToPage(choice[0]);
}
});
builder.setNegativeButton(R.string.cancel_label, null);
builder.create().show();
return true;
} else {
return true;
}
});
if (Build.VERSION.SDK_INT >= 26) {
ui.findPreference(UserPreferences.PREF_EXPANDED_NOTIFICATION).setVisible(false);
}

View File

@ -52,7 +52,8 @@ public class UserPreferences {
public static final String PREF_COMPACT_NOTIFICATION_BUTTONS = "prefCompactNotificationButtons";
public static final String PREF_LOCKSCREEN_BACKGROUND = "prefLockscreenBackground";
private static final String PREF_SHOW_DOWNLOAD_REPORT = "prefShowDownloadReport";
private static final String PREF_BACK_BUTTON_BEHAVIOR = "prefBackButtonBehavior";
public static final String PREF_BACK_BUTTON_BEHAVIOR = "prefBackButtonBehavior";
private static final String PREF_BACK_BUTTON_GO_TO_PAGE = "prefBackButtonGoToPage";
// Queue
private static final String PREF_QUEUE_ADD_TO_FRONT = "prefQueueAddToFront";
@ -812,7 +813,7 @@ public class UserPreferences {
}
public enum BackButtonBehavior {
DEFAULT, OPEN_DRAWER, DOUBLE_TAP, SHOW_PROMPT
DEFAULT, OPEN_DRAWER, DOUBLE_TAP, SHOW_PROMPT, GO_TO_QUEUE, GO_TO_EPISODES, GO_TO_SUBSCRIPTIONS
}
public static BackButtonBehavior getBackButtonBehavior() {
@ -821,7 +822,24 @@ public class UserPreferences {
case "drawer": return BackButtonBehavior.OPEN_DRAWER;
case "doubletap": return BackButtonBehavior.DOUBLE_TAP;
case "prompt": return BackButtonBehavior.SHOW_PROMPT;
case "page":
switch (UserPreferences.getBackButtonGoToPage()) {
case 0: return BackButtonBehavior.GO_TO_QUEUE;
case 1: return BackButtonBehavior.GO_TO_EPISODES;
case 2: return BackButtonBehavior.GO_TO_SUBSCRIPTIONS;
default: return BackButtonBehavior.GO_TO_QUEUE;
}
default: return BackButtonBehavior.DEFAULT;
}
}
public static int getBackButtonGoToPage() {
return prefs.getInt(PREF_BACK_BUTTON_GO_TO_PAGE, 0);
}
public static void setBackButtonGoToPage(int page) {
prefs.edit()
.putInt(PREF_BACK_BUTTON_GO_TO_PAGE, page)
.apply();
}
}

View File

@ -280,6 +280,7 @@
<string-array name="back_button_behavior_options">
<item>@string/back_button_default</item>
<item>@string/back_button_go_to_page</item>
<item>@string/back_button_open_drawer</item>
<item>@string/back_button_double_tap</item>
<item>@string/back_button_show_prompt</item>
@ -287,8 +288,15 @@
<string-array name="back_button_behavior_values">
<item>default</item>
<item>page</item>
<item>drawer</item>
<item>doubletap</item>
<item>prompt</item>
</string-array>
<string-array name="back_button_go_to_pages">
<item>@string/queue_label</item>
<item>@string/episodes_label</item>
<item>@string/subscriptions_label</item>
</string-array>
</resources>

View File

@ -471,7 +471,7 @@
<string name="stop_playback">Stop playback</string>
<string name="continue_playback">Continue audio playback</string>
<string name="behavior">Behavior</string>
<string name="pref_back_button_behavior_title">Back button behavior</string>
<string name="pref_back_button_behavior_title">Back Button Behavior</string>
<string name="pref_back_button_behavior_sum">Change behavior of the back button.</string>
<string name="back_button_default">Default</string>
<string name="back_button_open_drawer">Open navigation drawer</string>
@ -479,6 +479,8 @@
<string name="back_button_show_prompt">Confirm to exit</string>
<string name="close_prompt">Are you sure you want to close AntennaPod?</string>
<string name="double_tap_toast">Tap back button again to exit</string>
<string name="back_button_go_to_page">Go to page</string>
<string name="back_button_go_to_page_title">Select page</string>
<!-- Auto-Flattr dialog -->
<string name="auto_flattr_enable">Enable automatic flattring</string>