diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/Settings/NotificationsSettingsFragment.java b/app/src/main/java/ca/pkay/rcloneexplorer/Settings/NotificationsSettingsFragment.java index b295185..09ef9d8 100644 --- a/app/src/main/java/ca/pkay/rcloneexplorer/Settings/NotificationsSettingsFragment.java +++ b/app/src/main/java/ca/pkay/rcloneexplorer/Settings/NotificationsSettingsFragment.java @@ -26,6 +26,8 @@ public class NotificationsSettingsFragment extends Fragment { private View notificationsElement; private View appUpdatesElement; private Switch appUpdatesSwitch; + private View betaAppUpdatesElement; + private Switch betaAppUpdatesSwitch; /** * Mandatory empty constructor for the fragment manager to instantiate the @@ -68,13 +70,23 @@ private void getViews(View view) { notificationsElement = view.findViewById(R.id.notifications); appUpdatesElement = view.findViewById(R.id.app_updates); appUpdatesSwitch = view.findViewById(R.id.app_updates_switch); + betaAppUpdatesElement = view.findViewById(R.id.beta_app_updates); + betaAppUpdatesSwitch = view.findViewById(R.id.beta_app_updates_switch); } private void setDefaultStates() { SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); boolean appUpdates = sharedPreferences.getBoolean(getString(R.string.pref_key_app_updates), false); + boolean betaUpdates = sharedPreferences.getBoolean(getString(R.string.pref_key_app_updates_beta), false); appUpdatesSwitch.setChecked(appUpdates); + betaAppUpdatesSwitch.setChecked(betaUpdates); + + if (appUpdates) { + betaAppUpdatesElement.setVisibility(View.VISIBLE); + } else { + betaAppUpdatesElement.setVisibility(View.GONE); + } } private void setClickListeners() { @@ -101,6 +113,22 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { onAppUpdatesClicked(isChecked); } }); + betaAppUpdatesElement.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (betaAppUpdatesSwitch.isChecked()) { + betaAppUpdatesSwitch.setChecked(false); + } else { + betaAppUpdatesSwitch.setChecked(true); + } + } + }); + betaAppUpdatesSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + onBetaAppUpdatesClicked(isChecked); + } + }); } private void onNotificationsClicked() { @@ -124,8 +152,11 @@ private void onNotificationsClicked() { private void onAppUpdatesClicked(boolean isChecked) { if (isChecked) { FirebaseMessaging.getInstance().subscribeToTopic(getString(R.string.firebase_msg_app_updates_topic)); + betaAppUpdatesElement.setVisibility(View.VISIBLE); } else { FirebaseMessaging.getInstance().unsubscribeFromTopic(getString(R.string.firebase_msg_app_updates_topic)); + betaAppUpdatesSwitch.setChecked(false); + betaAppUpdatesElement.setVisibility(View.GONE); } SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); @@ -133,4 +164,17 @@ private void onAppUpdatesClicked(boolean isChecked) { editor.putBoolean(getString(R.string.pref_key_app_updates), isChecked); editor.apply(); } + + private void onBetaAppUpdatesClicked(boolean isChecked) { + if (isChecked) { + FirebaseMessaging.getInstance().subscribeToTopic(getString(R.string.firebase_msg_beta_app_updates_topic)); + } else { + FirebaseMessaging.getInstance().unsubscribeFromTopic(getString(R.string.firebase_msg_beta_app_updates_topic)); + } + + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putBoolean(getString(R.string.pref_key_app_updates_beta), isChecked); + editor.apply(); + } } diff --git a/app/src/main/res/layout/notification_settings_fragment.xml b/app/src/main/res/layout/notification_settings_fragment.xml index 61eefda..d8d3faf 100644 --- a/app/src/main/res/layout/notification_settings_fragment.xml +++ b/app/src/main/res/layout/notification_settings_fragment.xml @@ -14,7 +14,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" - android:paddingBottom="16dp"> + android:paddingBottom="16dp" + android:animateLayoutChanges="true"> + + + + + + + + + + pref_key_color_accent pref_key_dark_theme pref_key_app_updates + pref_key_app_updates_beta pref_key_crash_reports pref_key_show_thumbnails pref_key_wifi_only_transfers @@ -279,8 +280,10 @@ Choose directory Error exporting config file app_updates + beta_app_updates New version of Rclone Explorer is available on GitHub Get notified about app updates + Get notified about beta releases Delete remote? Empty trash Trash emptied