import android.annotation.TargetApi;
import android.app.AlertDialog;
+import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
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;
@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() {
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;
break;
}
- return true;
+ return super.onPreferenceClick(p);
}
}
\ No newline at end of file
import android.annotation.SuppressLint;
import android.app.Activity;
+import android.app.FragmentTransaction;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
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;
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()));
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())) {
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;
}
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);
}
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) {
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 }
break;
}
- return true;
+ return super.onPreferenceClick(p);
}
protected void showFileChooser() {
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
break;
}
- return true;
+ return super.onPreferenceClick(p);
}
private void freeformSetupComplete() {
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) {
break;
}
- return true;
+ return super.onPreferenceClick(p);
}
}
--- /dev/null
+/* 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);
+ }
+}
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) {
break;
}
- return true;
+ return super.onPreferenceClick(p);
}
private void updateMaxNumOfRecents(boolean restartTaskbar) {
package com.farmerbb.taskbar.fragment;
+import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
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;
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
<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>
<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
<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>
--- /dev/null
+<?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>
--- /dev/null
+<?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>
--- /dev/null
+<?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:   {fou_social-windows} + M   {fou_magnifying-glass} + M
+
+Pokaż menu Start:   {fou_social-windows}   {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
<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>
<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
<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
<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
<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>
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>
--- /dev/null
+<?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>