fix dockbar

This commit is contained in:
gdlbo
2022-07-11 20:58:45 +03:00
parent 25c5182877
commit 2755c93147
3 changed files with 59 additions and 49 deletions
@@ -1,5 +1,6 @@
package ru.vtosters.lite.ui.fragments.dockbar;
import static com.vtosters.lite.R.id.*;
import static ru.vtosters.lite.utils.Globals.getResources;
import android.content.res.ColorStateList;
@@ -11,6 +12,8 @@ import android.view.MenuItem;
import com.vk.apps.AppsFragment;
import com.vk.core.drawable.RecoloredDrawable;
import com.vk.core.fragments.FragmentImpl;
import com.vk.navigation.NavigationDelegateBottom;
import com.vk.navigation.right.RightMenu;
import com.vtosters.lite.ui.bottomnavigation.BottomNavigationMenuView;
import com.vtosters.lite.ui.bottomnavigation.BottomNavigationView;
@@ -95,16 +98,16 @@ public class DockBarInjector{
menu.clear();
for(DockBarTab tab : sManager.getSelectedTabs()) {
if(tab.id != com.vtosters.lite.R.id.tab_menu){
if(tab.id != tab_menu){
int itemId = tab.id;
if(tab.id == com.vtosters.lite.R.id.tab_news){
itemId = com.vtosters.lite.R.id.menu_newsfeed;
} else if(tab.id == com.vtosters.lite.R.id.tab_discover){
itemId = com.vtosters.lite.R.id.menu_search;
} else if(tab.id == com.vtosters.lite.R.id.tab_feedback){
itemId = com.vtosters.lite.R.id.menu_feedback;
} else if(tab.id == com.vtosters.lite.R.id.tab_messages){
itemId = com.vtosters.lite.R.id.menu_messages;
if(tab.id == tab_news){
itemId = menu_newsfeed;
} else if(tab.id == tab_discover){
itemId = menu_search;
} else if(tab.id == tab_feedback){
itemId = menu_feedback;
} else if(tab.id == tab_messages){
itemId = menu_messages;
}
MenuItem add = menu.add(0, itemId, 0, tab.titleID);
@@ -123,16 +126,16 @@ public class DockBarInjector{
MenuItem menuItem = menu.getItem(i);
for(DockBarTab tab : sManager.getSelectedTabs()) {
int itemId = menuItem.getItemId();
if(itemId == com.vtosters.lite.R.id.menu_newsfeed){
itemId = com.vtosters.lite.R.id.tab_news;
} else if(itemId == com.vtosters.lite.R.id.menu_search){
itemId = com.vtosters.lite.R.id.tab_discover;
} else if(itemId == com.vtosters.lite.R.id.menu_feedback){
itemId = com.vtosters.lite.R.id.tab_feedback;
} else if(itemId == com.vtosters.lite.R.id.menu_messages){
itemId = com.vtosters.lite.R.id.tab_messages;
if(itemId == menu_newsfeed){
itemId = tab_news;
} else if(itemId == menu_search){
itemId = tab_discover;
} else if(itemId == menu_feedback){
itemId = tab_feedback;
} else if(itemId == menu_messages){
itemId = tab_messages;
}
if(itemId == tab.id && tab.id != com.vtosters.lite.R.id.menu_vk_pay){
if(itemId == tab.id && tab.id != menu_vk_pay){
menuItems.add(menuItem);
break;
}
@@ -152,13 +155,13 @@ public class DockBarInjector{
"discover"
));
for(DockBarTab tab : sManager.getSelectedTabs()) {
if(tab.id == com.vtosters.lite.R.id.tab_discover){
if(tab.id == tab_discover){
arrayList.remove("discover");
} else if(tab.id == com.vtosters.lite.R.id.tab_feedback){
} else if(tab.id == tab_feedback){
arrayList.remove("feedback");
} else if(tab.id == com.vtosters.lite.R.id.tab_messages){
} else if(tab.id == tab_messages){
arrayList.remove("messages");
} else if(tab.id == com.vtosters.lite.R.id.tab_news){
} else if(tab.id == tab_news){
arrayList.remove("news");
}
}
@@ -195,7 +198,11 @@ public class DockBarInjector{
return false;
}
public static Class<?> interceptClick(int id){
public static Class<?> interceptClick(int id, RightMenu rightMenu){
if(id == tab_menu){
rightMenu.a();
}
for(DockBarTab tab : sManager.getSelectedTabs()) {
if(id == tab.id)
return tab.fragmentClass;
@@ -204,6 +211,7 @@ public class DockBarInjector{
if(id == tab.id)
return tab.fragmentClass;
}
return AppsFragment.class;
}
}
@@ -42,7 +42,7 @@ import java.util.List;
import ru.vtosters.lite.utils.StreamUtils;
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,27 +56,27 @@ public class DockBarManager {
);
private File mConfig;
public DockBarManager() {
public DockBarManager(){
init();
}
public static DockBarManager getInstance() {
public static DockBarManager getInstance(){
return sInstance == null
? (sInstance = new DockBarManager())
: sInstance;
}
private void init() {
private void init(){
mConfig = new File(getContext().getFilesDir(), "dockbar.json");
if (mConfig.exists()) {
if(mConfig.exists()){
readFromConfig();
} else {
fillDefault();
}
}
private void readFromConfig() {
private void readFromConfig(){
try {
JSONObject jsonObj = new JSONObject(StreamUtils.readAllLines(mConfig));
@@ -87,8 +87,8 @@ public class DockBarManager {
}
}
private void fillList(List<DockBarTab> list, JSONArray array) throws JSONException, ClassNotFoundException {
for (int i = 0; i < array.length(); i++) {
private void fillList(List<DockBarTab> list, JSONArray array) throws JSONException, ClassNotFoundException{
for(int i = 0; i < array.length(); i++) {
JSONObject item = array.getJSONObject(i);
DockBarTab tab = DockBarTab.valuesOf(
item.getString("tag"),
@@ -97,24 +97,24 @@ public class DockBarManager {
item.getInt("id"),
Class.forName(item.getString("fragmentClass"))
);
if (milkshake() && NewsfeedFragment.class == tab.fragmentClass) {
if(milkshake() && NewsfeedFragment.class == tab.fragmentClass){
tab.fragmentClass = HomeFragment.class;
} else if (!milkshake() && HomeFragment.class == tab.fragmentClass) {
} else if(!milkshake() && HomeFragment.class == tab.fragmentClass){
tab.fragmentClass = NewsfeedFragment.class;
}
list.add(tab);
}
}
private void fillDefault() {
if (vkme()) {
private void fillDefault(){
if(vkme()){
mSelectedTabs.add(DockBarTab.valuesOf(
"tab_settings",
R.drawable.ic_settings_outline_28,
R.string.menu_settings,
R.id.menu_settings,
useNewSettings()));
if (vkme_notifs())
if(vkme_notifs())
mSelectedTabs.add(DockBarTab.valuesOf(
"tab_feedback",
R.drawable.ic_menu_notification_outline_28,
@@ -261,7 +261,7 @@ public class DockBarManager {
BirthdaysFragment.class));
}
public void save() {
public void save(){
try {
JSONObject jsonObj = new JSONObject()
.put("selected", makeJsonArrayWithTabs(mSelectedTabs))
@@ -273,13 +273,13 @@ public class DockBarManager {
}
}
public void reset() {
public void reset(){
mConfig.deleteOnExit();
}
private JSONArray makeJsonArrayWithTabs(List<DockBarTab> list) throws JSONException {
private JSONArray makeJsonArrayWithTabs(List<DockBarTab> list) throws JSONException{
JSONArray array = new JSONArray();
for (DockBarTab tab : list) {
for(DockBarTab tab : list) {
JSONObject item = new JSONObject()
.put("tag", tab.tag)
.put("iconID", tab.iconID)
@@ -291,15 +291,15 @@ public class DockBarManager {
return array;
}
public List<DockBarTab> getSelectedTabs() {
public List<DockBarTab> getSelectedTabs(){
return mSelectedTabs;
}
public List<DockBarTab> getDisabledTabs() {
public List<DockBarTab> getDisabledTabs(){
return mDisabledTabs;
}
public List<String> getCategoryTitles() {
public List<String> getCategoryTitles(){
return mCategoryTitles;
}
}
@@ -1676,7 +1676,7 @@
.end method
.method private final a(IZ)Z
.locals 4
.locals 6
const v0, 0x7f0a0d14
@@ -1729,15 +1729,17 @@
.line 63
:cond_0
# invoke-static {p1}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->interceptClick(I)Ljava/lang/Class;
iget-object v5, p0, Lcom/vk/navigation/NavigationDelegateBottom;->U:Lcom/vk/navigation/right/RightMenu;
# move-result-object p1
invoke-static {p1, v5}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->interceptClick(ILcom/vk/navigation/right/RightMenu;)Ljava/lang/Class;
# const/4 v2, 0x0
move-result-object p1
# const/4 v0, 0x0
const/4 v2, 0x0
# goto :goto_1
const/4 v0, 0x0
goto :goto_1
invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;