OSDN Git Service

Begin implementing manage app data screen
authorBraden Farmer <farmerbb@gmail.com>
Tue, 18 Feb 2020 06:45:40 +0000 (23:45 -0700)
committerBraden Farmer <farmerbb@gmail.com>
Tue, 18 Feb 2020 06:51:58 +0000 (23:51 -0700)
22 files changed:
app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java
app/src/main/java/com/farmerbb/taskbar/fragment/AboutFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/AppearanceFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/FreeformModeFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/GeneralFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/ManageAppDataFragment.java [new file with mode: 0644]
app/src/main/java/com/farmerbb/taskbar/fragment/RecentAppsFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/SettingsFragment.java
app/src/main/res/values-de/strings.xml
app/src/main/res/values-ja/strings.xml
app/src/main/res/values-nl/strings.xml
app/src/main/res/values-pl-land/strings.xml [new file with mode: 0644]
app/src/main/res/values-pl-port/strings.xml [new file with mode: 0644]
app/src/main/res/values-pl-v28/strings.xml [new file with mode: 0644]
app/src/main/res/values-pl/strings.xml
app/src/main/res/values-ru/strings.xml
app/src/main/res/values-tr/strings.xml
app/src/main/res/values-zh-rCN/strings.xml
app/src/main/res/values/strings.xml
app/src/main/res/xml/tb_pref_advanced.xml
app/src/main/res/xml/tb_pref_manage_app_data.xml [new file with mode: 0644]

index 999854d..63f15ef 100644 (file)
@@ -17,6 +17,7 @@ package com.farmerbb.taskbar.activity;
 
 import android.annotation.TargetApi;
 import android.app.AlertDialog;
+import android.app.Fragment;
 import android.app.FragmentTransaction;
 import android.content.ActivityNotFoundException;
 import android.content.BroadcastReceiver;
@@ -42,7 +43,9 @@ import androidx.appcompat.widget.SwitchCompat;
 import com.farmerbb.taskbar.BuildConfig;
 import com.farmerbb.taskbar.R;
 import com.farmerbb.taskbar.fragment.AboutFragment;
+import com.farmerbb.taskbar.fragment.AdvancedFragment;
 import com.farmerbb.taskbar.fragment.AppearanceFragment;
+import com.farmerbb.taskbar.fragment.ManageAppDataFragment;
 import com.farmerbb.taskbar.service.DashboardService;
 import com.farmerbb.taskbar.service.NotificationService;
 import com.farmerbb.taskbar.service.StartMenuService;
@@ -367,14 +370,32 @@ public class MainActivity extends AppCompatActivity {
 
     @Override
     public void onBackPressed() {
-        if(getFragmentManager().findFragmentById(R.id.fragmentContainer) instanceof AboutFragment)
+        Fragment oldFragment = getFragmentManager().findFragmentById(R.id.fragmentContainer);
+
+        if(oldFragment instanceof AboutFragment)
             super.onBackPressed();
-        else
+        else {
+            Fragment newFragment;
+            String tag;
+
+            if(oldFragment instanceof ManageAppDataFragment) {
+                newFragment = new AdvancedFragment();
+                tag = "AdvancedFragment";
+
+                Bundle bundle = new Bundle();
+                bundle.putBoolean("from_manage_app_data", true);
+                newFragment.setArguments(bundle);
+            } else {
+                newFragment = new AboutFragment();
+                tag = "AboutFragment";
+            }
+
             getFragmentManager()
                     .beginTransaction()
-                    .replace(R.id.fragmentContainer, new AboutFragment(), "AboutFragment")
+                    .replace(R.id.fragmentContainer, newFragment, tag)
                     .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE)
                     .commit();
+        }
     }
 
     public String getAboutFragmentTitle() {
index 357860d..fe7375f 100644 (file)
@@ -37,7 +37,7 @@ import java.util.Currency;
 import java.util.Locale;
 import java.util.TimeZone;
 
-public class AboutFragment extends SettingsFragment implements Preference.OnPreferenceClickListener {
+public class AboutFragment extends SettingsFragment {
 
     private int noThanksCount = 0;
 
@@ -177,6 +177,6 @@ public class AboutFragment extends SettingsFragment implements Preference.OnPref
                 break;
         }
 
-        return true;
+        return super.onPreferenceClick(p);
     }
 }
\ No newline at end of file
index c7db12a..4adf5c1 100644 (file)
@@ -17,6 +17,7 @@ package com.farmerbb.taskbar.fragment;
 
 import android.annotation.SuppressLint;
 import android.app.Activity;
+import android.app.FragmentTransaction;
 import android.content.ActivityNotFoundException;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
@@ -40,21 +41,20 @@ import android.view.View;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.EditText;
 import android.widget.LinearLayout;
+import android.widget.ListView;
 
 import com.farmerbb.taskbar.BuildConfig;
 import com.farmerbb.taskbar.R;
-import com.farmerbb.taskbar.activity.ClearDataActivity;
 import com.farmerbb.taskbar.activity.KeyboardShortcutActivityLockDevice;
 import com.farmerbb.taskbar.activity.NavigationBarButtonsActivity;
 import com.farmerbb.taskbar.activity.SecondaryHomeActivity;
-import com.farmerbb.taskbar.activity.dark.ClearDataActivityDark;
 import com.farmerbb.taskbar.activity.HomeActivity;
 import com.farmerbb.taskbar.activity.KeyboardShortcutActivity;
 import com.farmerbb.taskbar.activity.dark.NavigationBarButtonsActivityDark;
 import com.farmerbb.taskbar.util.DependencyUtils;
 import com.farmerbb.taskbar.util.U;
 
-public class AdvancedFragment extends SettingsFragment implements Preference.OnPreferenceClickListener {
+public class AdvancedFragment extends SettingsFragment {
 
     boolean secondScreenPrefEnabled = false;
 
@@ -77,7 +77,6 @@ public class AdvancedFragment extends SettingsFragment implements Preference.OnP
         addPreferencesFromResource(R.xml.tb_pref_advanced);
 
         // Set OnClickListeners for certain preferences
-        findPreference("clear_pinned_apps").setOnPreferenceClickListener(this);
         findPreference("dashboard_grid_size").setOnPreferenceClickListener(this);
         findPreference("keyboard_shortcut").setSummary(DependencyUtils.getKeyboardShortcutSummary(getActivity()));
 
@@ -85,13 +84,19 @@ public class AdvancedFragment extends SettingsFragment implements Preference.OnP
         boolean isAndroidx86 = getActivity().getPackageName().equals(BuildConfig.ANDROIDX86_APPLICATION_ID);
 
         if(isLibrary) {
+            findPreference("clear_pinned_apps").setOnPreferenceClickListener(this);
+
             getPreferenceScreen().removePreference(findPreference("launcher"));
             getPreferenceScreen().removePreference(findPreference("keyboard_shortcut"));
             getPreferenceScreen().removePreference(findPreference("navigation_bar_buttons"));
+            getPreferenceScreen().removePreference(findPreference("manage_app_data"));
         } else {
             findPreference("launcher").setOnPreferenceClickListener(this);
             findPreference("keyboard_shortcut").setOnPreferenceClickListener(this);
             findPreference("navigation_bar_buttons").setOnPreferenceClickListener(this);
+            findPreference("manage_app_data").setOnPreferenceClickListener(this);
+
+            getPreferenceScreen().removePreference(findPreference("clear_pinned_apps"));
         }
 
         if(!isAndroidx86 && !isLibrary && U.isPlayStoreInstalled(getActivity()) && U.isPlayStoreRelease(getActivity())) {
@@ -112,6 +117,14 @@ public class AdvancedFragment extends SettingsFragment implements Preference.OnP
         if(!isLibrary)
             findPreference("launcher").setEnabled(!lockHomeToggle);
 
+        if(getArguments() != null && getArguments().getBoolean("from_manage_app_data", false)) {
+            View rootView = getView();
+            if(rootView != null) {
+                ListView list = rootView.findViewById(android.R.id.list);
+                if(list != null) list.scrollTo(0, Integer.MAX_VALUE);
+            }
+        }
+
         finishedLoadingPrefs = true;
     }
 
@@ -161,20 +174,6 @@ public class AdvancedFragment extends SettingsFragment implements Preference.OnP
         final SharedPreferences pref = U.getSharedPreferences(getActivity());
 
         switch(p.getKey()) {
-            case "clear_pinned_apps":
-                Intent clearIntent = null;
-
-                switch(pref.getString("theme", "light")) {
-                    case "light":
-                        clearIntent = new Intent(getActivity(), ClearDataActivity.class);
-                        break;
-                    case "dark":
-                        clearIntent = new Intent(getActivity(), ClearDataActivityDark.class);
-                        break;
-                }
-
-                startActivity(clearIntent);
-                break;
             case "launcher":
                 if(U.canDrawOverlays(getActivity())) {
                     ComponentName component = new ComponentName(getActivity(), HomeActivity.class);
@@ -312,9 +311,16 @@ public class AdvancedFragment extends SettingsFragment implements Preference.OnP
                 }
 
                 break;
+            case "manage_app_data":
+                getFragmentManager()
+                        .beginTransaction()
+                        .replace(R.id.fragmentContainer, new ManageAppDataFragment(), "ManageAppDataFragment")
+                        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
+                        .commit();
+                break;
         }
 
-        return true;
+        return super.onPreferenceClick(p);
     }
 
     private void updateDashboardGridSize(boolean restartTaskbar) {
index 8cc859a..49b24d1 100644 (file)
@@ -38,7 +38,7 @@ import com.farmerbb.taskbar.activity.IconPackActivity;
 import com.farmerbb.taskbar.activity.dark.IconPackActivityDark;
 import com.farmerbb.taskbar.util.U;
 
-public class AppearanceFragment extends SettingsFragment implements Preference.OnPreferenceClickListener {
+public class AppearanceFragment extends SettingsFragment {
     private int alpha, red, green, blue;
 
     private enum ColorPickerType { BACKGROUND_TINT, ACCENT_COLOR }
@@ -164,7 +164,7 @@ public class AppearanceFragment extends SettingsFragment implements Preference.O
                 break;
         }
 
-        return true;
+        return super.onPreferenceClick(p);
     }
 
     protected void showFileChooser() {
index 245f92c..e2d5eaf 100644 (file)
@@ -38,7 +38,7 @@ import com.farmerbb.taskbar.R;
 import com.farmerbb.taskbar.util.FreeformHackHelper;
 import com.farmerbb.taskbar.util.U;
 
-public class FreeformModeFragment extends SettingsFragment implements Preference.OnPreferenceClickListener {
+public class FreeformModeFragment extends SettingsFragment {
 
     private BroadcastReceiver checkBoxReceiver = new BroadcastReceiver() {
         @Override
@@ -215,7 +215,7 @@ public class FreeformModeFragment extends SettingsFragment implements Preference
                 break;
         }
 
-        return true;
+        return super.onPreferenceClick(p);
     }
 
     private void freeformSetupComplete() {
index 24d6c37..547fd19 100644 (file)
@@ -33,7 +33,7 @@ import com.farmerbb.taskbar.util.Blacklist;
 import com.farmerbb.taskbar.util.TopApps;
 import com.farmerbb.taskbar.util.U;
 
-public class GeneralFragment extends SettingsFragment implements Preference.OnPreferenceClickListener {
+public class GeneralFragment extends SettingsFragment {
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -140,6 +140,6 @@ public class GeneralFragment extends SettingsFragment implements Preference.OnPr
                 break;
         }
 
-        return true;
+        return super.onPreferenceClick(p);
     }
 }
diff --git a/app/src/main/java/com/farmerbb/taskbar/fragment/ManageAppDataFragment.java b/app/src/main/java/com/farmerbb/taskbar/fragment/ManageAppDataFragment.java
new file mode 100644 (file)
index 0000000..8ebad2c
--- /dev/null
@@ -0,0 +1,69 @@
+/* Copyright 2020 Braden Farmer
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.farmerbb.taskbar.fragment;
+
+import android.annotation.TargetApi;
+import android.os.Build;
+import android.os.Bundle;
+import android.preference.Preference;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.farmerbb.taskbar.R;
+
+public class ManageAppDataFragment extends SettingsFragment {
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        finishedLoadingPrefs = false;
+
+        super.onCreate(savedInstanceState);
+
+        // Add preferences
+        addPreferencesFromResource(R.xml.tb_pref_manage_app_data);
+
+        // Set OnClickListeners for certain preferences
+        findPreference("backup_settings").setOnPreferenceClickListener(this);
+        findPreference("restore_settings").setOnPreferenceClickListener(this);
+        findPreference("clear_pinned_apps").setOnPreferenceClickListener(this);
+
+        finishedLoadingPrefs = true;
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        AppCompatActivity activity = (AppCompatActivity) getActivity();
+        activity.setTitle(R.string.tb_manage_app_data);
+        ActionBar actionBar = activity.getSupportActionBar();
+        if(actionBar != null)
+            actionBar.setDisplayHomeAsUpEnabled(true);
+    }
+
+    @TargetApi(Build.VERSION_CODES.O)
+    @Override
+    public boolean onPreferenceClick(final Preference p) {
+        switch(p.getKey()) {
+            case "backup_settings":
+            case "restore_settings":
+                // TODO
+                break;
+        }
+
+        return super.onPreferenceClick(p);
+    }
+}
index b5dd54b..18bb901 100644 (file)
@@ -36,7 +36,7 @@ import android.widget.TextView;
 import com.farmerbb.taskbar.R;
 import com.farmerbb.taskbar.util.U;
 
-public class RecentAppsFragment extends SettingsFragment implements Preference.OnPreferenceClickListener, SharedPreferences.OnSharedPreferenceChangeListener {
+public class RecentAppsFragment extends SettingsFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -204,7 +204,7 @@ public class RecentAppsFragment extends SettingsFragment implements Preference.O
                 break;
         }
 
-        return true;
+        return super.onPreferenceClick(p);
     }
 
     private void updateMaxNumOfRecents(boolean restartTaskbar) {
index 366c118..1ae71fc 100644 (file)
@@ -15,6 +15,7 @@
 
 package com.farmerbb.taskbar.fragment;
 
+import android.annotation.SuppressLint;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
@@ -29,11 +30,13 @@ import android.view.View;
 import android.widget.ListView;
 
 import com.farmerbb.taskbar.BuildConfig;
+import com.farmerbb.taskbar.activity.ClearDataActivity;
 import com.farmerbb.taskbar.activity.MainActivity;
+import com.farmerbb.taskbar.activity.dark.ClearDataActivityDark;
 import com.farmerbb.taskbar.util.FreeformHackHelper;
 import com.farmerbb.taskbar.util.U;
 
-public abstract class SettingsFragment extends PreferenceFragment {
+public abstract class SettingsFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener {
 
     boolean finishedLoadingPrefs;
     boolean showReminderToast = false;
@@ -152,4 +155,26 @@ public abstract class SettingsFragment extends PreferenceFragment {
             U.restartNotificationService(getActivity());
         }
     }
+
+    @SuppressLint("SetTextI18n")
+    @Override
+    public boolean onPreferenceClick(final Preference p) {
+        if(p.getKey().equals("clear_pinned_apps")) {
+            Intent clearIntent = null;
+
+            SharedPreferences pref = U.getSharedPreferences(getActivity());
+            switch(pref.getString("theme", "light")) {
+                case "light":
+                    clearIntent = new Intent(getActivity(), ClearDataActivity.class);
+                    break;
+                case "dark":
+                    clearIntent = new Intent(getActivity(), ClearDataActivityDark.class);
+                    break;
+            }
+
+            startActivity(clearIntent);
+        }
+
+        return true;
+    }
 }
\ No newline at end of file
index 7a7b489..a26a0b7 100644 (file)
     <string name="tb_settings">Settings</string>
     <string name="tb_powered_by_taskbar">Powered by Taskbar</string>
 
+    <string name="tb_manage_app_data">Manage app data</string>
+    <string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
+    <string name="tb_backup_settings">Backup settings</string>
+    <string name="tb_restore_settings">Restore settings</string>
+
 </resources>
index b8245ae..0a28646 100644 (file)
     <string name="tb_settings">Settings</string>
     <string name="tb_powered_by_taskbar">Powered by Taskbar</string>
 
+    <string name="tb_manage_app_data">Manage app data</string>
+    <string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
+    <string name="tb_backup_settings">Backup settings</string>
+    <string name="tb_restore_settings">Restore settings</string>
+
 </resources>
\ No newline at end of file
index 115afe9..d10e594 100644 (file)
     <string name="tb_settings">Settings</string>
     <string name="tb_powered_by_taskbar">Powered by Taskbar</string>
 
+    <string name="tb_manage_app_data">Manage app data</string>
+    <string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
+    <string name="tb_backup_settings">Backup settings</string>
+    <string name="tb_restore_settings">Restore settings</string>
+
 </resources>
diff --git a/app/src/main/res/values-pl-land/strings.xml b/app/src/main/res/values-pl-land/strings.xml
new file mode 100644 (file)
index 0000000..6bec407
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2020 Braden Farmer
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+
+    <string name="tb_window_size_half_left">@string/tb_window_size_half_left_alt</string>
+    <string name="tb_window_size_half_right">@string/tb_window_size_half_right_alt</string>
+
+</resources>
diff --git a/app/src/main/res/values-pl-port/strings.xml b/app/src/main/res/values-pl-port/strings.xml
new file mode 100644 (file)
index 0000000..6bec407
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2020 Braden Farmer
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+
+    <string name="tb_window_size_half_left">@string/tb_window_size_half_left_alt</string>
+    <string name="tb_window_size_half_right">@string/tb_window_size_half_right_alt</string>
+
+</resources>
diff --git a/app/src/main/res/values-pl-v28/strings.xml b/app/src/main/res/values-pl-v28/strings.xml
new file mode 100644 (file)
index 0000000..50f1577
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2020 Braden Farmer
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+<string name="tb_pref_description_keyboard_shortcut">"Start/stop Taskbar: &#160; {fou_social-windows} + M &#160; {fou_magnifying-glass} + M
+
+Pokaż menu Start: &#160; {fou_social-windows} &#160; {fou_magnifying-glass}
+(wymaga, aby Taskbar był ustawiony jako aplikacja pomocnicza w Ustawieniach)"</string>
+<string name="tb_pref_description_keyboard_shortcut_alt">"Start/stop Taskbar
+• WinKey+M / Search+M
+
+Pokaż menu Start
+• WinKey / Search
+(wymaga, aby Taskbar był ustawiony jako aplikacja pomocnicza w Ustawieniach)"</string>
+
+</resources>
\ No newline at end of file
index 482f898..0b94460 100644 (file)
@@ -406,4 +406,9 @@ W takim przypadku może być konieczne flashowanie niestandardowego ROM-u w celu
         <item>Nigdy nie pokazuj paska wyszukiwania</item>
     </string-array>
 
+    <string name="tb_manage_app_data">Manage app data</string>
+    <string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
+    <string name="tb_backup_settings">Backup settings</string>
+    <string name="tb_restore_settings">Restore settings</string>
+
 </resources>
index 561328e..0129963 100644 (file)
     <string name="tb_settings">Settings</string>
     <string name="tb_powered_by_taskbar">Powered by Taskbar</string>
 
+    <string name="tb_manage_app_data">Manage app data</string>
+    <string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
+    <string name="tb_backup_settings">Backup settings</string>
+    <string name="tb_restore_settings">Restore settings</string>
+
 </resources>
\ No newline at end of file
index f456bd5..5b9da8a 100644 (file)
@@ -381,4 +381,9 @@ Bu durumda, bu cihazdaki serbest biçimli modu kullanmak için özel bir ROM fla
     <string name="tb_settings">Settings</string>
     <string name="tb_powered_by_taskbar">Powered by Taskbar</string>
 
+    <string name="tb_manage_app_data">Manage app data</string>
+    <string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
+    <string name="tb_backup_settings">Backup settings</string>
+    <string name="tb_restore_settings">Restore settings</string>
+
 </resources>
\ No newline at end of file
index a79c6a2..257bfe7 100644 (file)
     <string name="tb_settings">Settings</string>
     <string name="tb_powered_by_taskbar">Powered by Taskbar</string>
 
+    <string name="tb_manage_app_data">Manage app data</string>
+    <string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
+    <string name="tb_backup_settings">Backup settings</string>
+    <string name="tb_restore_settings">Restore settings</string>
+
 </resources>
\ No newline at end of file
index 2e8a1b2..4ec4042 100644 (file)
     <string name="tb_settings">Settings</string>
     <string name="tb_powered_by_taskbar">Powered by Taskbar</string>
 
+    <string name="tb_manage_app_data">Manage app data</string>
+    <string name="tb_manage_app_data_description">Backup and restore settings, or reset per-app preferences</string>
+    <string name="tb_backup_settings">Backup settings</string>
+    <string name="tb_restore_settings">Restore settings</string>
+
 </resources>
index 72d1ee1..2590fc4 100644 (file)
         android:key="clear_pinned_apps"
         android:title="@string/tb_clear_pinned_apps"/>
 
+    <Preference
+        android:key="manage_app_data"
+        android:title="@string/tb_manage_app_data"
+        android:summary="@string/tb_manage_app_data_description"/>
+
     <PreferenceCategory android:key="dummy" android:title="\n\n" />
 
 </PreferenceScreen>
diff --git a/app/src/main/res/xml/tb_pref_manage_app_data.xml b/app/src/main/res/xml/tb_pref_manage_app_data.xml
new file mode 100644 (file)
index 0000000..af2409c
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2020 Braden Farmer
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <Preference
+        android:key="backup_settings"
+        android:title="@string/tb_backup_settings"/>
+
+    <Preference
+        android:key="restore_settings"
+        android:title="@string/tb_restore_settings"/>
+
+    <Preference
+        android:key="clear_pinned_apps"
+        android:title="@string/tb_clear_pinned_apps"/>
+
+    <PreferenceCategory android:key="dummy" android:title="\n\n" />
+
+</PreferenceScreen>