lmao
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package ru.vtosters.lite.ui.fragments.dockbar;
|
||||
|
||||
public class AdapterHelper {
|
||||
public class AdapterHelper{
|
||||
|
||||
// Adapter item types
|
||||
public static final int TAB_TYPE = 1;
|
||||
@@ -12,19 +12,19 @@ public class AdapterHelper {
|
||||
|
||||
private static final DockBarManager sManager = DockBarManager.getInstance();
|
||||
|
||||
public static int getItemViewType(int i) {
|
||||
public static int getItemViewType(int i){
|
||||
return i == 0 || sManager.getSelectedTabs().size() + 1 == i ? CATEGORY_TITLE_TYPE : TAB_TYPE;
|
||||
}
|
||||
|
||||
public static int getTabType(int i) {
|
||||
public static int getTabType(int i){
|
||||
return i <= sManager.getSelectedTabs().size() ? SELECTED : DISABLED;
|
||||
}
|
||||
|
||||
public static boolean needTransfer(int from, int to) {
|
||||
public static boolean needTransfer(int from, int to){
|
||||
return getItemViewType(from) == TAB_TYPE && getItemViewType(to) == CATEGORY_TITLE_TYPE;
|
||||
}
|
||||
|
||||
public static int getItemCount() {
|
||||
public static int getItemCount(){
|
||||
return sManager.getCategoryTitles().size()
|
||||
+ sManager.getSelectedTabs().size()
|
||||
+ sManager.getDisabledTabs().size();
|
||||
|
||||
@@ -17,25 +17,23 @@ import android.widget.TextView;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import ru.vtosters.lite.utils.Themes;
|
||||
|
||||
public class DockBarEditorAdapter extends RecyclerView.Adapter<DockBarEditorAdapter.ItemViewHolder>
|
||||
implements IItemTouchHelper {
|
||||
implements IItemTouchHelper{
|
||||
|
||||
private final DockBarManager mDockBarManager = DockBarManager.getInstance();
|
||||
|
||||
@Override
|
||||
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
|
||||
FrameLayout container = new FrameLayout(getContext());
|
||||
container.addView(newGroupTitle(), new FrameLayout.LayoutParams(-1, -2));
|
||||
container.addView(newTabItem(), new FrameLayout.LayoutParams(-1, -2));
|
||||
return new ItemViewHolder(container);
|
||||
}
|
||||
|
||||
private View newTabItem() {
|
||||
private View newTabItem(){
|
||||
LinearLayout container = new LinearLayout(getContext());
|
||||
container.setTag("tab_container");
|
||||
container.setGravity(Gravity.CENTER_VERTICAL);
|
||||
@@ -70,7 +68,7 @@ public class DockBarEditorAdapter extends RecyclerView.Adapter<DockBarEditorAdap
|
||||
return container;
|
||||
}
|
||||
|
||||
private View newGroupTitle() {
|
||||
private View newGroupTitle(){
|
||||
LinearLayout container = new LinearLayout(getContext());
|
||||
container.setTag("category_title_container");
|
||||
container.setLayoutParams(new LinearLayout.LayoutParams(-1, -2));
|
||||
@@ -93,22 +91,22 @@ public class DockBarEditorAdapter extends RecyclerView.Adapter<DockBarEditorAdap
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ItemViewHolder holder, int position) {
|
||||
public void onBindViewHolder(ItemViewHolder holder, int position){
|
||||
holder.bind(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
public int getItemCount(){
|
||||
return AdapterHelper.getItemCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemDismiss(int index) {
|
||||
public void onItemDismiss(int index){
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemMove(int fromPosition, int toPosition) {
|
||||
public boolean onItemMove(int fromPosition, int toPosition){
|
||||
if (toPosition == 0)
|
||||
return false;
|
||||
|
||||
@@ -147,16 +145,16 @@ public class DockBarEditorAdapter extends RecyclerView.Adapter<DockBarEditorAdap
|
||||
return true;
|
||||
}
|
||||
|
||||
protected class ItemViewHolder extends RecyclerView.ViewHolder {
|
||||
protected class ItemViewHolder extends RecyclerView.ViewHolder{
|
||||
|
||||
private LinearLayout mTabContainer;
|
||||
private ImageView mTabIcon;
|
||||
private TextView mTabName;
|
||||
private final LinearLayout mTabContainer;
|
||||
private final ImageView mTabIcon;
|
||||
private final TextView mTabName;
|
||||
|
||||
private LinearLayout mCategoryTitleContainer;
|
||||
private TextView mCategoryTitle;
|
||||
private final LinearLayout mCategoryTitleContainer;
|
||||
private final TextView mCategoryTitle;
|
||||
|
||||
public ItemViewHolder(View itemView) {
|
||||
public ItemViewHolder(View itemView){
|
||||
super(itemView);
|
||||
|
||||
mTabContainer = itemView.findViewWithTag("tab_container");
|
||||
@@ -168,8 +166,8 @@ public class DockBarEditorAdapter extends RecyclerView.Adapter<DockBarEditorAdap
|
||||
mCategoryTitle = mCategoryTitleContainer.findViewWithTag("category_title");
|
||||
}
|
||||
|
||||
public void bind(int pos) {
|
||||
Log.d("ItemViewHolder", pos+"");
|
||||
public void bind(int pos){
|
||||
Log.d("ItemViewHolder", pos + "");
|
||||
if (AdapterHelper.getItemViewType(pos) == AdapterHelper.TAB_TYPE) {
|
||||
DockBarTab tab = AdapterHelper.getTabType(pos) == AdapterHelper.SELECTED
|
||||
? mDockBarManager.getSelectedTabs().get(pos - 1)
|
||||
|
||||
@@ -21,7 +21,7 @@ import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
|
||||
|
||||
import ru.vtosters.lite.utils.Globals;
|
||||
|
||||
public class DockBarEditorFragment extends MaterialPreferenceToolbarFragment {
|
||||
public class DockBarEditorFragment extends MaterialPreferenceToolbarFragment{
|
||||
|
||||
private RecyclerView mRecycler;
|
||||
private DockBarEditorAdapter mAdapter;
|
||||
@@ -29,7 +29,7 @@ public class DockBarEditorFragment extends MaterialPreferenceToolbarFragment {
|
||||
private ItemTouchHelper mItemTouchHelper;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) {
|
||||
public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle){
|
||||
super.onCreateView(layoutInflater, viewGroup, bundle);
|
||||
|
||||
LinearLayout container = new LinearLayout(getContext());
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
package ru.vtosters.lite.ui.fragments.dockbar;
|
||||
|
||||
import static com.vtosters.lite.R.id.*;
|
||||
import static com.vtosters.lite.R.id.menu_feedback;
|
||||
import static com.vtosters.lite.R.id.menu_messages;
|
||||
import static com.vtosters.lite.R.id.menu_newsfeed;
|
||||
import static com.vtosters.lite.R.id.menu_search;
|
||||
import static com.vtosters.lite.R.id.menu_vk_pay;
|
||||
import static com.vtosters.lite.R.id.tab_discover;
|
||||
import static com.vtosters.lite.R.id.tab_feedback;
|
||||
import static com.vtosters.lite.R.id.tab_menu;
|
||||
import static com.vtosters.lite.R.id.tab_messages;
|
||||
import static com.vtosters.lite.R.id.tab_news;
|
||||
import static ru.vtosters.lite.utils.Globals.getResources;
|
||||
|
||||
import android.content.res.ColorStateList;
|
||||
@@ -12,7 +21,6 @@ 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;
|
||||
@@ -35,7 +43,7 @@ public class DockBarInjector{
|
||||
|
||||
public static Map<Class<? extends FragmentImpl>, Integer> injectMap(){
|
||||
LinkedHashMap<Class<? extends FragmentImpl>, Integer> map = new LinkedHashMap<>();
|
||||
for(DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
for (DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
map.put(tab.fragmentClass, tab.id);
|
||||
}
|
||||
return map;
|
||||
@@ -52,7 +60,7 @@ public class DockBarInjector{
|
||||
|
||||
Class<?> synchronisedPoolCls = Class.forName("androidx.core.util.Pools$SynchronizedPool");
|
||||
Method acquire = synchronisedPoolCls.getDeclaredMethod("acquire");
|
||||
if(synchronizedPool != null){
|
||||
if (synchronizedPool != null) {
|
||||
do {
|
||||
} while(acquire.invoke(synchronizedPool) != null);
|
||||
}
|
||||
@@ -61,16 +69,16 @@ public class DockBarInjector{
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
for(DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
for (DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
MenuItem add = menu.add(0, tab.id, 0, tab.titleID);
|
||||
Drawable drawable = getResources().getDrawable(tab.iconID);
|
||||
|
||||
ColorStateList dockcolors = new ColorStateList(
|
||||
new int[][]{
|
||||
new int[]{android.R.attr.state_checked},
|
||||
new int[]{-android.R.attr.state_checked}
|
||||
new int[][] {
|
||||
new int[] {android.R.attr.state_checked},
|
||||
new int[] {-android.R.attr.state_checked}
|
||||
},
|
||||
new int[]{
|
||||
new int[] {
|
||||
Color.parseColor("#ff528bcc"),
|
||||
Color.parseColor("#ffaaaeb3")
|
||||
}
|
||||
@@ -83,8 +91,8 @@ public class DockBarInjector{
|
||||
}
|
||||
|
||||
public static int injectId(String tag){
|
||||
for(DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
if(tag.equals(tab.tag))
|
||||
for (DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
if (tag.equals(tab.tag))
|
||||
return tab.id;
|
||||
}
|
||||
return 0;
|
||||
@@ -92,21 +100,21 @@ public class DockBarInjector{
|
||||
|
||||
public static void injectMenuFragment(Menu menu){
|
||||
List<MenuItem> menuItems = new ArrayList<>();
|
||||
for(int i = 0; i < menu.size(); i++) {
|
||||
for (int i = 0; i < menu.size(); i++) {
|
||||
menuItems.add(menu.getItem(i));
|
||||
}
|
||||
menu.clear();
|
||||
|
||||
for(DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
if(tab.id != tab_menu){
|
||||
for (DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
if (tab.id != tab_menu) {
|
||||
int itemId = tab.id;
|
||||
if(tab.id == tab_news){
|
||||
if (tab.id == tab_news) {
|
||||
itemId = menu_newsfeed;
|
||||
} else if(tab.id == tab_discover){
|
||||
} else if (tab.id == tab_discover) {
|
||||
itemId = menu_search;
|
||||
} else if(tab.id == tab_feedback){
|
||||
} else if (tab.id == tab_feedback) {
|
||||
itemId = menu_feedback;
|
||||
} else if(tab.id == tab_messages){
|
||||
} else if (tab.id == tab_messages) {
|
||||
itemId = menu_messages;
|
||||
}
|
||||
|
||||
@@ -116,33 +124,33 @@ public class DockBarInjector{
|
||||
}
|
||||
}
|
||||
|
||||
for(MenuItem menuItem : menuItems) {
|
||||
for (MenuItem menuItem : menuItems) {
|
||||
MenuItem item = menu.add(menuItem.getGroupId(), menuItem.getItemId(), menuItem.getOrder(), menuItem.getTitle());
|
||||
item.setIcon(menuItem.getIcon());
|
||||
}
|
||||
menuItems.clear();
|
||||
|
||||
for(int i = 0; i < menu.size(); i++) {
|
||||
for (int i = 0; i < menu.size(); i++) {
|
||||
MenuItem menuItem = menu.getItem(i);
|
||||
for(DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
for (DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
int itemId = menuItem.getItemId();
|
||||
if(itemId == menu_newsfeed){
|
||||
if (itemId == menu_newsfeed) {
|
||||
itemId = tab_news;
|
||||
} else if(itemId == menu_search){
|
||||
} else if (itemId == menu_search) {
|
||||
itemId = tab_discover;
|
||||
} else if(itemId == menu_feedback){
|
||||
} else if (itemId == menu_feedback) {
|
||||
itemId = tab_feedback;
|
||||
} else if(itemId == menu_messages){
|
||||
} else if (itemId == menu_messages) {
|
||||
itemId = tab_messages;
|
||||
}
|
||||
if(itemId == tab.id && tab.id != menu_vk_pay){
|
||||
if (itemId == tab.id && tab.id != menu_vk_pay) {
|
||||
menuItems.add(menuItem);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(MenuItem menuItem : menuItems) {
|
||||
for (MenuItem menuItem : menuItems) {
|
||||
menu.removeItem(menuItem.getItemId());
|
||||
}
|
||||
}
|
||||
@@ -154,23 +162,23 @@ public class DockBarInjector{
|
||||
"feedback",
|
||||
"discover"
|
||||
));
|
||||
for(DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
if(tab.id == tab_discover){
|
||||
for (DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
if (tab.id == tab_discover) {
|
||||
arrayList.remove("discover");
|
||||
} else if(tab.id == tab_feedback){
|
||||
} else if (tab.id == tab_feedback) {
|
||||
arrayList.remove("feedback");
|
||||
} else if(tab.id == tab_messages){
|
||||
} else if (tab.id == tab_messages) {
|
||||
arrayList.remove("messages");
|
||||
} else if(tab.id == tab_news){
|
||||
} else if (tab.id == tab_news) {
|
||||
arrayList.remove("news");
|
||||
}
|
||||
}
|
||||
try {
|
||||
JSONArray jSONArray = new JSONArray();
|
||||
for(int i = 0; i < arrayList.size(); i++) {
|
||||
for (int i = 0; i < arrayList.size(); i++) {
|
||||
jSONArray.put(new JSONObject().put("name", arrayList.get(i)));
|
||||
}
|
||||
for(int i2 = 0; i2 < arr.length(); i2++) {
|
||||
for (int i2 = 0; i2 < arr.length(); i2++) {
|
||||
jSONArray.put(arr.getJSONObject(i2));
|
||||
}
|
||||
return jSONArray;
|
||||
@@ -189,26 +197,26 @@ public class DockBarInjector{
|
||||
}
|
||||
|
||||
public static boolean isDockOpenAllowed(Class<?> cls){
|
||||
for(DockBarTab tab : sManager.getSelectedTabs())
|
||||
if(tab.fragmentClass == cls)
|
||||
for (DockBarTab tab : sManager.getSelectedTabs())
|
||||
if (tab.fragmentClass == cls)
|
||||
return true;
|
||||
for(DockBarTab tab : sManager.getDisabledTabs())
|
||||
if(tab.fragmentClass == cls)
|
||||
for (DockBarTab tab : sManager.getDisabledTabs())
|
||||
if (tab.fragmentClass == cls)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static Class<?> interceptClick(int id, RightMenu rightMenu){
|
||||
if(id == tab_menu){
|
||||
if (id == tab_menu) {
|
||||
rightMenu.a();
|
||||
}
|
||||
|
||||
for(DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
if(id == tab.id)
|
||||
for (DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
if (id == tab.id)
|
||||
return tab.fragmentClass;
|
||||
}
|
||||
for(DockBarTab tab : sManager.getDisabledTabs()) {
|
||||
if(id == tab.id)
|
||||
for (DockBarTab tab : sManager.getDisabledTabs()) {
|
||||
if (id == tab.id)
|
||||
return tab.fragmentClass;
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ public class DockBarManager{
|
||||
private void init(){
|
||||
mConfig = new File(getContext().getFilesDir(), "dockbar.json");
|
||||
|
||||
if(mConfig.exists()){
|
||||
if (mConfig.exists()) {
|
||||
readFromConfig();
|
||||
} else {
|
||||
fillDefault();
|
||||
@@ -88,7 +88,7 @@ public class DockBarManager{
|
||||
}
|
||||
|
||||
private void fillList(List<DockBarTab> list, JSONArray array) throws JSONException, ClassNotFoundException{
|
||||
for(int i = 0; i < array.length(); i++) {
|
||||
for (int i = 0; i < array.length(); i++) {
|
||||
JSONObject item = array.getJSONObject(i);
|
||||
DockBarTab tab = DockBarTab.valuesOf(
|
||||
item.getString("tag"),
|
||||
@@ -97,9 +97,9 @@ 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);
|
||||
@@ -107,14 +107,14 @@ public class DockBarManager{
|
||||
}
|
||||
|
||||
private void fillDefault(){
|
||||
if(vkme()){
|
||||
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,
|
||||
@@ -279,7 +279,7 @@ public class DockBarManager{
|
||||
|
||||
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)
|
||||
|
||||
@@ -2,7 +2,7 @@ package ru.vtosters.lite.ui.fragments.dockbar;
|
||||
|
||||
import com.vk.core.fragments.FragmentImpl;
|
||||
|
||||
public class DockBarTab {
|
||||
public class DockBarTab{
|
||||
|
||||
public String tag;
|
||||
public int iconID;
|
||||
@@ -15,7 +15,7 @@ public class DockBarTab {
|
||||
int iconID,
|
||||
int titleID,
|
||||
int resID,
|
||||
Class<?> fragmentClass) {
|
||||
Class<?> fragmentClass){
|
||||
this.tag = tag;
|
||||
this.iconID = iconID;
|
||||
this.titleID = titleID;
|
||||
@@ -28,7 +28,7 @@ public class DockBarTab {
|
||||
int iconID,
|
||||
int titleID,
|
||||
int resID,
|
||||
Class<?> fragmentClass) {
|
||||
Class<?> fragmentClass){
|
||||
return new DockBarTab(tag, iconID, titleID, resID, fragmentClass);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package ru.vtosters.lite.ui.fragments.dockbar;
|
||||
|
||||
public interface IItemTouchHelper {
|
||||
public interface IItemTouchHelper{
|
||||
|
||||
void onItemDismiss(int index);
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ import androidx.recyclerview.widget.ItemTouchHelper;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
|
||||
public class ItemTouchHelperCallback extends ItemTouchHelper.Callback {
|
||||
public class ItemTouchHelperCallback extends ItemTouchHelper.Callback{
|
||||
|
||||
private final DockBarEditorAdapter mAdapter;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user