From 11fa834af7b268bf02218b4e3fe4f4f47991fe97 Mon Sep 17 00:00:00 2001 From: Vologhat Date: Sat, 2 Apr 2022 11:53:43 +0300 Subject: [PATCH] migration to android support due to androidx instability --- ...arEditAdapter.java => DockBarAdapter.java} | 86 ++++++++----------- ...EditFragment.java => DockBarFragment.java} | 30 +++---- ...BarEditHelper.java => DockBarManager.java} | 48 ++++++----- .../lite/ui/fragments/dockbar/DockBarTab.java | 10 ++- .../dockbar/ItemTouchHelperCallback.java | 47 +++++----- 5 files changed, 105 insertions(+), 116 deletions(-) rename app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/{DockBarEditAdapter.java => DockBarAdapter.java} (65%) rename app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/{DockBarEditFragment.java => DockBarFragment.java} (66%) rename app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/{DockBarEditHelper.java => DockBarManager.java} (88%) diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarEditAdapter.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarAdapter.java similarity index 65% rename from app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarEditAdapter.java rename to app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarAdapter.java index d33cbff27..094b0bda5 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarEditAdapter.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarAdapter.java @@ -3,42 +3,32 @@ package ru.vtosters.lite.ui.fragments.dockbar; import android.content.res.ColorStateList; import android.graphics.Color; import android.graphics.Typeface; +import android.support.v7.widget.RecyclerView; import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; -import android.view.WindowManager; -import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.ItemTouchHelper; -import androidx.recyclerview.widget.RecyclerView; - import com.vtosters.lite.R; -import com.vtosters.lite.fragments.f.FriendsFragment; import java.util.List; import ru.vtosters.lite.utils.Helper; -public class DockBarEditAdapter extends RecyclerView.Adapter +public class DockBarAdapter extends RecyclerView.a implements IItemTouchHelper { public static final int SELECTED_TAB_TYPE = 1; public static final int DISABLED_TAB_TYPE = 2; - public static DockBarEditHelper sDockBarEditHelper = DockBarEditHelper.getInstance(); + private final DockBarManager mDockBarManager = DockBarManager.getInstance(); - private ItemTouchHelper mItemTouchHelper; - - @NonNull @Override - public DockBarEditViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - + public DockBarEditViewHolder b(ViewGroup parent, int i) { LinearLayout container = new LinearLayout(parent.getContext()); container.setLayoutParams(new LinearLayout.LayoutParams(-1, -2)); @@ -63,6 +53,7 @@ public class DockBarEditAdapter extends RecyclerView.Adapter list = fromViewType == 1 ? sDockBarEditHelper.getSelectedTabs() : sDockBarEditHelper.getDisabledTabs(); - sDockBarEditHelper.swap(this, list, fromViewType, fromPosition, toPosition); + List list = fromViewType == 1 ? mDockBarManager.getSelectedTabs() : mDockBarManager.getDisabledTabs(); + mDockBarManager.swap(this, list, fromViewType, fromPosition, toPosition); } } else if (toPosition != 0) { if (fromViewType != toViewType){ - sDockBarEditHelper.swapAndMigrate(this, fromPosition, toPosition); + mDockBarManager.swapAndMigrate(this, fromPosition, toPosition); } else { - List list = fromViewType == 1 ? sDockBarEditHelper.getSelectedTabs() : sDockBarEditHelper.getDisabledTabs(); - sDockBarEditHelper.swap(this, list, fromViewType, fromPosition, toPosition); + List list = fromViewType == 1 ? mDockBarManager.getSelectedTabs() : mDockBarManager.getDisabledTabs(); + mDockBarManager.swap(this, list, fromViewType, fromPosition, toPosition); } } @@ -183,19 +167,17 @@ public class DockBarEditAdapter extends RecyclerView.Adapter mDisabledTabs = new ArrayList<>(); private List mGroups = Arrays.asList( "Выбранные элементы докбара", - "Отключённые элементы" + "Невыбранные элементы" ); - public DockBarEditHelper() { + public DockBarManager() { load(); } private void load() { File dockbar = new File(Helper.GetContext().getFilesDir(), "dockbar.json"); - // if (!dockbar.exists()) { + if (!dockbar.exists()) { mSelectedTabs.add(new DockBarTab("tab_news", R.drawable.ic_newsfeed_28, R.string.newsfeed, R.id.tab_news, NewsfeedFragment.class)); mSelectedTabs.add(new DockBarTab("tab_discover", R.drawable.ic_search_28, R.string.search, R.id.tab_discover, DiscoverFeedFragment.class)); mSelectedTabs.add(new DockBarTab("tab_messages", R.drawable.ic_menu_messages_28, R.string.messages, R.id.tab_messages, DialogsFragment.class)); @@ -81,7 +83,7 @@ public class DockBarEditHelper { mDisabledTabs.add(new DockBarTab("tab_documents", R.drawable.ic_document_24, R.string.docs, R.id.menu_documents, DocumentsViewFragment.class)); mDisabledTabs.add(new DockBarTab("tab_payments", R.drawable.ic_money_transfer_24, R.string.money_transfer_money_transfers, R.id.menu_payments, MoneyTransfersFragment.class)); mDisabledTabs.add(new DockBarTab("tab_vk_apps", R.drawable.ic_services_24, R.string.menu_apps, R.id.menu_vk_apps, AppsFragment.class)); - /*} else { + } else { try { JSONObject json = new JSONObject(readFully(new FileInputStream(dockbar))); @@ -92,7 +94,7 @@ public class DockBarEditHelper { item.getString("tag"), item.getInt("iconID"), item.getInt("titleID"), - item.getInt("resID"), + item.getInt("id"), Class.forName(item.getString("fragmentClass")) ); mSelectedTabs.add(tab); @@ -105,7 +107,7 @@ public class DockBarEditHelper { item.getString("tag"), item.getInt("iconID"), item.getInt("titleID"), - item.getInt("resID"), + item.getInt("id"), Class.forName(item.getString("fragmentClass")) ); mDisabledTabs.add(tab); @@ -114,7 +116,7 @@ public class DockBarEditHelper { } catch (JSONException | IOException | ClassNotFoundException e) { e.printStackTrace(); } - }*/ + } } private static String readFully(InputStream is) throws IOException { @@ -137,6 +139,7 @@ public class DockBarEditHelper { .put("tag", tab.tag) .put("iconID", tab.iconID) .put("titleID", tab.titleID) + .put("id", tab.id) .put("fragmentClass", tab.fragmentClass.getName()); selected.put(item); } @@ -147,6 +150,7 @@ public class DockBarEditHelper { .put("tag", tab.tag) .put("iconID", tab.iconID) .put("titleID", tab.titleID) + .put("id", tab.id) .put("fragmentClass", tab.fragmentClass.getName()); disabled.put(item); } @@ -161,7 +165,7 @@ public class DockBarEditHelper { } } - public void swap(DockBarEditAdapter adapter, List list, int itemType, int fromPosition, int toPosition) { + public void swap(DockBarAdapter adapter, List list, int itemType, int fromPosition, int toPosition) { int curr = adapter.getIndexByViewType(fromPosition, itemType); int target = adapter.getIndexByViewType(toPosition, itemType); if (fromPosition < toPosition) { @@ -173,10 +177,10 @@ public class DockBarEditHelper { Collections.swap(list, i, i - 1); } } - adapter.notifyItemMoved(fromPosition, toPosition); + adapter.b(fromPosition, toPosition);// notifyItemMoved } - public void swapAndMigrate(DockBarEditAdapter adapter, int fromPosition, int toPosition) { + public void swapAndMigrate(DockBarAdapter adapter, int fromPosition, int toPosition) { int curr = adapter.getIndexByViewType(fromPosition, adapter.getItemType(fromPosition)); int target = adapter.getIndexByViewType(toPosition, adapter.getItemType(toPosition)); if (fromPosition < toPosition) { @@ -203,10 +207,10 @@ public class DockBarEditHelper { Collections.swap(mSelectedTabs, i, i - 1); } } - adapter.notifyItemMoved(fromPosition, toPosition); + adapter.b(fromPosition, toPosition);// notifyItemMoved } - public void move(DockBarEditAdapter adapter, int index) { + public void move(DockBarAdapter adapter, int index) { if (getItemType(index) == 1) { DockBarTab item = mSelectedTabs.get(getIndexByViewType(index, 1)); @@ -218,8 +222,8 @@ public class DockBarEditHelper { Collections.swap(mDisabledTabs, i, i - 1); } - adapter.notifyItemRemoved(index); - adapter.notifyItemInserted(getItemCount() - mDisabledTabs.size()); + adapter.e_(index); // notifyItemRemoved + adapter.d_(getItemCount() - mDisabledTabs.size()); // notifyItemInserted } } @@ -228,9 +232,9 @@ public class DockBarEditHelper { } public int getIndexByViewType(int position, int viewType) { - if (viewType == DockBarEditAdapter.SELECTED_TAB_TYPE) { + if (viewType == DockBarAdapter.SELECTED_TAB_TYPE) { return position - 1; - } else if (viewType == DockBarEditAdapter.DISABLED_TAB_TYPE) { + } else if (viewType == DockBarAdapter.DISABLED_TAB_TYPE) { return position - (mSelectedTabs.size() + mGroups.size()); } else if (viewType == RecyclerView.INVALID_TYPE){ return position != 0 ? 1 : 0; @@ -243,9 +247,9 @@ public class DockBarEditHelper { if (position == 0 || position == mSelectedTabs.size() + 1) { return RecyclerView.INVALID_TYPE; } else if (position - 1 < mSelectedTabs.size()) { - return DockBarEditAdapter.SELECTED_TAB_TYPE; + return DockBarAdapter.SELECTED_TAB_TYPE; } else { - return DockBarEditAdapter.DISABLED_TAB_TYPE; + return DockBarAdapter.DISABLED_TAB_TYPE; } } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarTab.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarTab.java index d850f0526..512a5f9a4 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarTab.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarTab.java @@ -1,18 +1,20 @@ package ru.vtosters.lite.ui.fragments.dockbar; +import com.vk.core.fragments.FragmentImpl; + public class DockBarTab { public String tag; public int iconID; public int titleID; - public int resID; - public Class fragmentClass; + public int id; + public Class fragmentClass; public DockBarTab(String tag, int iconID, int titleID, int resID, Class fragmentClass) { this.tag = tag; this.iconID = iconID; this.titleID = titleID; - this.resID = resID; - this.fragmentClass = fragmentClass; + this.id = resID; + this.fragmentClass = (Class) fragmentClass; } } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/ItemTouchHelperCallback.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/ItemTouchHelperCallback.java index 63c526835..245f29c65 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/ItemTouchHelperCallback.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/ItemTouchHelperCallback.java @@ -1,44 +1,45 @@ package ru.vtosters.lite.ui.fragments.dockbar; -import androidx.recyclerview.widget.ItemTouchHelper; -import androidx.recyclerview.widget.RecyclerView; +import static androidx.recyclerview.widget.ItemTouchHelper.Callback.makeMovementFlags; -public class ItemTouchHelperCallback extends ItemTouchHelper.Callback { +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.a.ItemTouchHelper; - private DockBarEditAdapter mAdapter; +public class ItemTouchHelperCallback extends ItemTouchHelper.a { - public ItemTouchHelperCallback(DockBarEditAdapter mAdapter) { + private DockBarAdapter mAdapter; + + public ItemTouchHelperCallback(DockBarAdapter mAdapter) { this.mAdapter = mAdapter; } - @Override - public boolean isLongPressDragEnabled() { + @Override // isItemViewSwipeEnabled + public boolean a() { + return true; + } + + @Override // isLongPressDragEnabled + public boolean b() { return true; } @Override - public boolean isItemViewSwipeEnabled() { - return false; - } - - @Override - public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { - int pos = mAdapter.getItemType(viewHolder.getAdapterPosition()); - int dragFlags = pos != RecyclerView.INVALID_TYPE ? ItemTouchHelper.UP | ItemTouchHelper.DOWN : 0; - int swipeFlags = pos == 1 ? ItemTouchHelper.START | ItemTouchHelper.END : 0; + public int a(RecyclerView recyclerView, RecyclerView.x viewHolder) { + int pos = mAdapter.getItemType(viewHolder.d()); + int dragFlags = pos != androidx.recyclerview.widget.RecyclerView.INVALID_TYPE ? androidx.recyclerview.widget.ItemTouchHelper.UP | androidx.recyclerview.widget.ItemTouchHelper.DOWN : 0; + int swipeFlags = pos == 1 ? androidx.recyclerview.widget.ItemTouchHelper.START | androidx.recyclerview.widget.ItemTouchHelper.END : 0; return makeMovementFlags(dragFlags, swipeFlags); } @Override - public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, - RecyclerView.ViewHolder target) { - if (mAdapter.getItemType(viewHolder.getAdapterPosition()) == RecyclerView.INVALID_TYPE) - return false; - return mAdapter.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition()); + public void a(RecyclerView.x viewHolder, int direction) { + mAdapter.onItemDismiss(viewHolder.d()); } @Override - public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { - mAdapter.onItemDismiss(viewHolder.getAdapterPosition()); + public boolean b(RecyclerView recyclerView, RecyclerView.x viewHolder, RecyclerView.x target) { + if (mAdapter.getItemType(viewHolder.d()) == androidx.recyclerview.widget.RecyclerView.INVALID_TYPE) + return false; + return mAdapter.onItemMove(viewHolder.d(), target.d()); } }