diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarInjector.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarInjector.java index 5fede7d35..efafe719f 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarInjector.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarInjector.java @@ -2,27 +2,12 @@ package ru.vtosters.lite.ui.fragments.dockbar; import android.content.res.ColorStateList; import android.graphics.drawable.Drawable; -import android.support.v4.f.Pools; -import android.util.Log; import android.view.Menu; import android.view.MenuItem; import com.vk.apps.AppsFragment; import com.vk.core.d.RecoloredDrawable; import com.vk.core.fragments.FragmentImpl; -import com.vk.discover.DiscoverFeedFragment; -import com.vk.menu.MenuFragment; -import com.vk.newsfeed.NewsfeedFragment; -import com.vk.notifications.NotificationsFragment; -import com.vtosters.lite.fragments.GamesFragment; -import com.vtosters.lite.fragments.PhotosFragment; -import com.vtosters.lite.fragments.d.DocumentsViewFragment; -import com.vtosters.lite.fragments.f.FriendsFragment; -import com.vtosters.lite.fragments.h.GroupsFragment; -import com.vtosters.lite.fragments.lives.LivesPostListFragment; -import com.vtosters.lite.fragments.m.VideosFragment; -import com.vtosters.lite.fragments.messages.dialogs.DialogsFragment; -import com.vtosters.lite.fragments.money.MoneyTransfersFragment; import com.vtosters.lite.ui.bottomnavigation.BottomNavigationMenuView; import com.vtosters.lite.ui.bottomnavigation.BottomNavigationView; @@ -39,8 +24,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import ru.vtosters.lite.ui.fragments.FeedFragment; -import ru.vtosters.lite.ui.fragments.MusicFragment; import ru.vtosters.lite.utils.Helper; public class DockBarInjector { @@ -56,10 +39,6 @@ public class DockBarInjector { public static void inject(BottomNavigationView navigationView) { Menu menu = navigationView.getMenu(); - for (int i = 0; i < menu.size(); i++) { - MenuItem item = menu.getItem(i); - Log.d("sova", "Found menuitem " + item.getItemId() + ", " + item.getGroupId() + ", " + ((Object) item.getTitle())); - } menu.clear(); try { Field field = BottomNavigationMenuView.class.getDeclaredField("h"); @@ -98,40 +77,40 @@ public class DockBarInjector { return 0; } - public static void injectMenuFragment(Menu m) { + public static void injectMenuFragment(Menu menu) { List menuItems = new ArrayList<>(); - for (int i = 0; i < m.size(); i++) { - menuItems.add(m.getItem(i)); + for (int i = 0; i < menu.size(); i++) { + menuItems.add(menu.getItem(i)); } - m.clear(); + menu.clear(); for (DockBarTab tab : sManager.getSelectedTabs()) { if (tab.id != com.vtosters.lite.R.id.tab_menu) { int itemId = tab.id; - switch (tab.id) { - case com.vtosters.lite.R.id.tab_news: - itemId = com.vtosters.lite.R.id.menu_newsfeed; - case com.vtosters.lite.R.id.tab_discover: - itemId = com.vtosters.lite.R.id.menu_search; - case com.vtosters.lite.R.id.tab_feedback: - itemId = com.vtosters.lite.R.id.menu_feedback; - case com.vtosters.lite.R.id.tab_messages: - itemId = com.vtosters.lite.R.id.menu_messages; + 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; } - MenuItem add = m.add(0, itemId, 0, tab.titleID); + + MenuItem add = menu.add(0, itemId, 0, tab.titleID); add.setIcon(tab.iconID); add.setVisible(true); } } for (MenuItem menuItem : menuItems) { - MenuItem add2 = m.add(menuItem.getGroupId(), menuItem.getItemId(), menuItem.getOrder(), menuItem.getTitle()); - add2.setIcon(menuItem.getIcon()); + MenuItem item = menu.add(menuItem.getGroupId(), menuItem.getItemId(), menuItem.getOrder(), menuItem.getTitle()); + item.setIcon(menuItem.getIcon()); } menuItems.clear(); - for (int i = 0; i < m.size(); i++) { - MenuItem menuItem = m.getItem(i); + for (int i = 0; i < menu.size(); i++) { + MenuItem menuItem = menu.getItem(i); for (DockBarTab tab : sManager.getSelectedTabs()) { int itemId = menuItem.getItemId(); if (itemId == com.vtosters.lite.R.id.menu_newsfeed) { @@ -151,7 +130,7 @@ public class DockBarInjector { } for (MenuItem menuItem : menuItems) { - m.removeItem(menuItem.getItemId()); + menu.removeItem(menuItem.getItemId()); } } @@ -163,19 +142,14 @@ public class DockBarInjector { "discover" )); for (DockBarTab tab : sManager.getSelectedTabs()) { - switch (tab.id) { - case com.vtosters.lite.R.id.tab_discover: - arrayList.remove("discover"); - break; - case com.vtosters.lite.R.id.tab_feedback: - arrayList.remove("feedback"); - break; - case com.vtosters.lite.R.id.tab_messages: - arrayList.remove("messages"); - break; - case com.vtosters.lite.R.id.tab_news: - arrayList.remove("news"); - break; + if (tab.id == com.vtosters.lite.R.id.tab_discover) { + arrayList.remove("discover"); + } else if (tab.id == com.vtosters.lite.R.id.tab_feedback) { + arrayList.remove("feedback"); + } else if (tab.id == com.vtosters.lite.R.id.tab_messages) { + arrayList.remove("messages"); + } else if (tab.id == com.vtosters.lite.R.id.tab_news) { + arrayList.remove("news"); } } try { @@ -212,57 +186,14 @@ public class DockBarInjector { } public static Class interceptClick(int id) { - switch (id) { - case com.vtosters.lite.R.id.tab_news: - return NewsfeedFragment.class; - - case com.vtosters.lite.R.id.tab_discover: - return DiscoverFeedFragment.class; - - case com.vtosters.lite.R.id.tab_messages: - return DialogsFragment.class; - - case com.vtosters.lite.R.id.tab_feedback: - return NotificationsFragment.class; - - case com.vtosters.lite.R.id.tab_menu: - return MenuFragment.class; - - case com.vtosters.lite.R.id.menu_friends: - return FriendsFragment.class; - - case com.vtosters.lite.R.id.menu_groups: - return GroupsFragment.class; - - case com.vtosters.lite.R.id.menu_photos: - return PhotosFragment.class; - - case com.vtosters.lite.R.id.menu_audios: - return MusicFragment.class; - - case com.vtosters.lite.R.id.menu_videos: - return VideosFragment.class; - - case com.vtosters.lite.R.id.menu_lives: - return LivesPostListFragment.class; - - case com.vtosters.lite.R.id.menu_games: - return GamesFragment.class; - - case com.vtosters.lite.R.id.menu_fave: - return FriendsFragment.class; //! - - case com.vtosters.lite.R.id.menu_documents: - return DocumentsViewFragment.class; - - case com.vtosters.lite.R.id.menu_payments: - return MoneyTransfersFragment.class; - - case com.vtosters.lite.R.id.menu_vk_apps: - return AppsFragment.class; - - default: - return AppsFragment.class; + for (DockBarTab tab : sManager.getSelectedTabs()) { + if (id == tab.id) + return tab.fragmentClass; } + for (DockBarTab tab : sManager.getDisabledTabs()) { + if (id == tab.id) + return tab.fragmentClass; + } + return AppsFragment.class; } } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java index 039924307..383e52909 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java @@ -1,5 +1,7 @@ package ru.vtosters.lite.ui.fragments.dockbar; +import android.util.Log; + import androidx.recyclerview.widget.RecyclerView; import com.vk.apps.AppsFragment; @@ -22,6 +24,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; import com.vk.notifications.NotificationsFragment; import com.vtosters.lite.R; @@ -135,6 +138,7 @@ public class DockBarManager { JSONArray selected = new JSONArray(); for (DockBarTab tab : mSelectedTabs) { + JSONObject item = new JSONObject() .put("tag", tab.tag) .put("iconID", tab.iconID) @@ -190,9 +194,11 @@ public class DockBarManager { DockBarTab tab = mSelectedTabs.get(curr); mSelectedTabs.remove(tab); mDisabledTabs.add(tab); + for (int i = mDisabledTabs.size() - 1; i > target; i--) { Collections.swap(mDisabledTabs, i, i - 1); } + for (int i = 0; i < target; i++) { Collections.swap(mDisabledTabs, i, i + 1); } @@ -203,9 +209,6 @@ public class DockBarManager { DockBarTab tab = mDisabledTabs.get(curr); mDisabledTabs.remove(tab); mSelectedTabs.add(tab); - for (int i = mSelectedTabs.size() - 1; i > 0; i--) { - Collections.swap(mSelectedTabs, i, i - 1); - } } adapter.b(fromPosition, toPosition);// notifyItemMoved } @@ -235,7 +238,7 @@ public class DockBarManager { if (viewType == DockBarAdapter.SELECTED_TAB_TYPE) { return position - 1; } else if (viewType == DockBarAdapter.DISABLED_TAB_TYPE) { - return position - (mSelectedTabs.size() + mGroups.size()); + return position - mSelectedTabs.size() - mGroups.size(); } else if (viewType == RecyclerView.INVALID_TYPE){ return position != 0 ? 1 : 0; } else {