dockbar editor fixes

This commit is contained in:
Vologhat
2022-07-15 17:39:25 +03:00
parent e06e5ac3a7
commit 0e225db32d
2 changed files with 35 additions and 57 deletions
@@ -115,8 +115,9 @@ public class DockBarEditorAdapter extends RecyclerView.Adapter<DockBarEditorAdap
DockBarTab curr;
if (AdapterHelper.getTabType(fromPosition) == AdapterHelper.SELECTED) {
curr = selectedTabs.get(fromPosition - 1);
var min = selectedTabs.size() == DockBarManager.MIN_SELECTED_TABS_LIMIT;
if (AdapterHelper.getItemViewType(toPosition) == AdapterHelper.CATEGORY_TITLE_TYPE) {
if (selectedTabs.size() == DockBarManager.MIN_SELECTED_TABS_LIMIT)
if (min)
return false;
selectedTabs.remove(fromPosition - 1);
disabledTabs.add(curr);
@@ -125,16 +126,21 @@ public class DockBarEditorAdapter extends RecyclerView.Adapter<DockBarEditorAdap
disabledTabs.set(i + 1, disabledTabs.get(i));
disabledTabs.set(i, tmp);
}
} else if (AdapterHelper.getTabType(toPosition) == AdapterHelper.DISABLED && min) {
return false;
} else {
Collections.swap(selectedTabs, fromPosition - 1, toPosition - 1);
}
} else if (AdapterHelper.getTabType(fromPosition) == AdapterHelper.DISABLED) {
curr = disabledTabs.get(fromPosition - selectedTabs.size() - 2);
var max = selectedTabs.size() == DockBarManager.MAX_SELECTED_TABS_LIMIT;
if (AdapterHelper.getItemViewType(toPosition) == AdapterHelper.CATEGORY_TITLE_TYPE) {
if (selectedTabs.size() == DockBarManager.MAX_SELECTED_TABS_LIMIT)
if (max)
return false;
disabledTabs.remove(0);
selectedTabs.add(curr);
} else if (AdapterHelper.getTabType(toPosition) == AdapterHelper.SELECTED && max) {
return false;
} else {
Collections.swap(disabledTabs, fromPosition - selectedTabs.size() - 2, toPosition - selectedTabs.size() - 2);
}
@@ -1,6 +1,7 @@
package ru.vtosters.lite.ui.fragments.dockbar;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Globals.getPreferences;
import static ru.vtosters.lite.utils.Globals.getString;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import static ru.vtosters.lite.utils.Preferences.milkshake;
@@ -37,13 +38,13 @@ import com.vtosters.lite.general.fragments.PhotosFragment;
import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import ru.vtosters.lite.utils.Globals;
public class DockBarManager{
public class DockBarManager {
public static final int MIN_SELECTED_TABS_LIMIT = 3;
public static final int MAX_SELECTED_TABS_LIMIT = 9;
@@ -56,15 +57,15 @@ public class DockBarManager{
getString("dockbar_selected_items"),
getString("dockbar_unselected_items")
};
private Set<String> mSelectedTabsSet;
public static DockBarManager getInstance(){
public static DockBarManager getInstance() {
return sInstance == null
? (sInstance = new DockBarManager())
: sInstance;
}
public DockBarManager(){
public DockBarManager() {
init();
}
@@ -80,11 +81,9 @@ public class DockBarManager{
checkOldConfig();
mSelectedTabsSet = Globals.getPreferences().getStringSet("selected_dockbar_tabs", new HashSet<>());
if (mSelectedTabsSet.size() > 0)
parseSelectedTabs();
else
fillDefault();
String[] selectedTabsTags = getPreferences().getString("dockbar_tabs", "tab_news,tab_superapps,tab_messages,tab_friends,tab_profile")
.split(",");
parseSelectedTabs(selectedTabsTags);
}
private void checkOldConfig() {
@@ -92,62 +91,35 @@ public class DockBarManager{
if (config.exists()) config.deleteOnExit();
}
private void parseSelectedTabs() {
String[] tags = { "tab_news", "tab_superapps", "tab_messages", "tab_feedback", "tab_profile",
private void parseSelectedTabs(String[] selectedTabsTags) {
List<String> allTags = new ArrayList<>(Arrays.asList( "tab_news", "tab_superapps", "tab_messages", "tab_feedback", "tab_profile",
"tab_friends", "tab_groups", "tab_photos", "tab_audios", "tab_videos", "tab_lives", "tab_games", "tab_liked",
"tab_fave", "tab_documents", "tab_payments", "tab_vk_apps", "tab_settings", "tab_menu", "tab_brtd" };
for (String tag : tags) {
DockBarTab tab = getTabByTag(tag);
if (mSelectedTabsSet.contains(tag))
mSelectedTabs.add(tab);
else
mDisabledTabs.add(tab);
"tab_fave", "tab_documents", "tab_payments", "tab_vk_apps", "tab_settings", "tab_menu", "tab_brtd" ));
for (String tag : selectedTabsTags) {
mSelectedTabs.add(getTabByTag(tag));
allTags.remove(tag);
}
allTags.forEach(tag -> mDisabledTabs.add(getTabByTag(tag)));
}
private void fillDefault() {
mSelectedTabs.add(getTabByTag("tab_news"));
mSelectedTabs.add(getTabByTag("tab_superapps"));
mSelectedTabs.add(getTabByTag("tab_messages"));
mSelectedTabs.add(getTabByTag("tab_feedback"));
mSelectedTabs.add(getTabByTag("tab_profile"));
mDisabledTabs.add(getTabByTag("tab_friends"));
mDisabledTabs.add(getTabByTag("tab_groups"));
mDisabledTabs.add(getTabByTag("tab_photos"));
mDisabledTabs.add(getTabByTag("tab_audios"));
mDisabledTabs.add(getTabByTag("tab_videos"));
mDisabledTabs.add(getTabByTag("tab_lives"));
mDisabledTabs.add(getTabByTag("tab_games"));
mDisabledTabs.add(getTabByTag("tab_liked"));
mDisabledTabs.add(getTabByTag("tab_fave"));
mDisabledTabs.add(getTabByTag("tab_documents"));
mDisabledTabs.add(getTabByTag("tab_payments"));
mDisabledTabs.add(getTabByTag("tab_vk_apps"));
mDisabledTabs.add(getTabByTag("tab_settings"));
mDisabledTabs.add(getTabByTag("tab_menu"));
mDisabledTabs.add(getTabByTag("tab_brtd"));
public void save() {
Globals.getPreferences().edit().putString("dockbar_tabs", mSelectedTabs.stream().map(tab -> tab.tag)
.collect(Collectors.joining(","))).commit();
}
public void save(){
mSelectedTabsSet = new HashSet<>();
mSelectedTabs.forEach(tab -> mSelectedTabsSet.add(tab.tag));
Globals.getPreferences().edit().putStringSet("selected_dockbar_tabs", mSelectedTabsSet).commit();
public void reset() {
Globals.getPreferences().edit().putString("dockbar_tabs", "tab_news,tab_superapps,tab_messages,tab_friends,tab_profile").commit();
}
public void reset(){
Globals.getPreferences().edit().putStringSet("selected_dockbar_tabs", null).commit();
}
public List<DockBarTab> getSelectedTabs(){
public List<DockBarTab> getSelectedTabs() {
return mSelectedTabs;
}
public List<DockBarTab> getDisabledTabs(){
public List<DockBarTab> getDisabledTabs() {
return mDisabledTabs;
}
public String[] getCategoryTitles(){
public String[] getCategoryTitles() {
return mCategoryTitles;
}
@@ -191,10 +163,10 @@ public class DockBarManager{
case "tab_friends":
return DockBarTab.valuesOf(
"tab_friends",
R.drawable.ic_user_outline_28,
milkshake() ? R.drawable.ic_users_outline_28 : R.drawable.ic_menu_notification_outline_28,
R.string.friends,
R.id.menu_friends,
FriendsCatalogFragment.class);
milkshake() ? FriendsCatalogFragment.class : NotificationsContainerFragment.class);
case "tab_groups":
return DockBarTab.valuesOf(
"tab_groups",