diff --git a/app/src/main/java/com/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView.java b/app/src/main/java/com/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView.java new file mode 100644 index 000000000..53552ef6d --- /dev/null +++ b/app/src/main/java/com/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView.java @@ -0,0 +1,320 @@ +package com.vtosters.lite.ui.bottomnavigation; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.graphics.Color; +import android.graphics.PorterDuff; +import android.graphics.drawable.Drawable; +import android.text.TextUtils; +import android.util.AttributeSet; +import android.util.Log; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.view.menu.MenuItemImpl; +import androidx.appcompat.view.menu.MenuView; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.core.view.ViewCompat; + +import com.vk.core.ui.themes.Themable; +import com.vk.core.ui.themes.VKThemeHelper; +import com.vtosters.lite.R; + +import me.grishka.appkit.utils.V; +import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.Themes; + +public class BottomNavigationItemView extends FrameLayout implements MenuView.ItemView { + private final TextView mSmallLabel; + private final TextView mLargeLabel; + private final View mCounterContainer; + private final TextView mCounter; + private final View mDot; + private int mItemPos; + private MenuItemImpl mItemData; + private ColorStateList mColorStateList; + private final int mMargin; + private final int mDiff; + private final float mSmallScale; + private final float mLargeScale; + private boolean mShiftingModeEnabled; + private boolean mIconsModeEnabled; + private boolean mStaticModeEnabled; + private ImageView mIcon; + private ImageView mActionIcon; + + public BottomNavigationItemView(@NonNull Context context) { + this(context, null); + } + + public BottomNavigationItemView(@NonNull Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public BottomNavigationItemView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + this.mItemPos = -1; + + var textSize = (float) getResources().getDimensionPixelSize(R.dimen.design_bottom_navigation_text_size); + var activeTextSize = (float) getResources().getDimensionPixelSize(R.dimen.design_bottom_navigation_active_text_size); + this.mMargin = getResources().getDimensionPixelSize(R.dimen.design_bottom_navigation_margin); + this.mDiff = (int) (textSize - activeTextSize); + this.mSmallScale = activeTextSize / textSize; + this.mLargeScale = textSize / activeTextSize; + + LayoutInflater.from(context).inflate(R.layout.design_bottom_navigation_item, this, true); + this.setBackgroundResource(R.drawable.design_bottom_navigation_item_background); + this.mIcon = this.findViewById(R.id.icon); + this.mIcon.getLayoutParams().width = V.a(28.0F); + this.mIcon.getLayoutParams().height = V.a(28.0F); + + var colorStateList = getResources().getColorStateList(R.color.bottom_navigation_item); + this.mSmallLabel = this.findViewById(R.id.smallLabel); + mSmallLabel.setTextColor(colorStateList); + + this.mLargeLabel = this.findViewById(R.id.largeLabel); + mLargeLabel.setTextColor(colorStateList); + + LayoutInflater.from(this.getContext()).inflate(R.layout.navigation_bottom_counter, this, true); + this.mCounterContainer = this.findViewById(R.id.counter_container); + this.mCounter = this.findViewById(R.id.counter); + this.mDot = this.findViewById(R.id.dot); + + LayoutInflater.from(this.getContext()).inflate(R.layout.navigation_bottom_action, this, true); + this.mActionIcon = this.findViewById(R.id.action_icon); + VKThemeHelper.a(this.mActionIcon, R.attr.tabbar_active_icon, PorterDuff.Mode.MULTIPLY); + } + + public void a() { + this.mActionIcon.setVisibility(GONE); + } + + public void b() { + this.mActionIcon.setVisibility(VISIBLE); + } + + public MenuItemImpl getItemData() { + return this.mItemData; + } + + public int getItemPosition() { + return this.mItemPos; + } + + public void initialize(MenuItemImpl impl, int i) { + this.mItemData = impl; + this.setCheckable(impl.isCheckable()); + this.setChecked(impl.isChecked()); + this.setEnabled(impl.isEnabled()); + this.setIcon(impl.getIcon()); + this.setTitle(impl.getTitle()); + this.setId(impl.getItemId()); + this.setContentDescription(impl.getTitle()); + } + + public int[] onCreateDrawableState(int extraSpace) { + int[] baseState = super.onCreateDrawableState(extraSpace + 1); + if (this.mItemData != null && this.mItemData.isCheckable() && this.mItemData.isChecked()) { + FrameLayout.mergeDrawableStates(baseState, new int[]{android.R.attr.state_checked}); + } + + return baseState; + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + if (/*this.mShiftingModeEnabled &&*/ this.mCounterContainer.getVisibility() != GONE) { + left = this.mCounterContainer.getMeasuredWidth() / 2 + + V.a(4.0F) + + Math.min(this.getMeasuredWidth() / 2 + - this.mCounterContainer.getWidth() + - V.a(4.0F), 0); + this.mCounterContainer.layout(this.mCounterContainer.getLeft() + left, + this.mCounterContainer.getTop(), + this.mCounterContainer.getRight() + left, + this.mCounterContainer.getBottom()); + } + } + + public boolean prefersCondensedTitle() { + return false; + } + + public void setCheckable(boolean var1) { + this.refreshDrawableState(); + } + + public void setChecked(boolean checked) { + this.mItemData.setChecked(checked); + + ViewCompat.setPivotX(mLargeLabel, mLargeLabel.getWidth() / 2); + ViewCompat.setPivotY(mLargeLabel, mLargeLabel.getBaseline()); + ViewCompat.setPivotX(mSmallLabel, mSmallLabel.getWidth() / 2); + ViewCompat.setPivotY(mSmallLabel, mSmallLabel.getBaseline()); + + if (this.mIconsModeEnabled) { + var iconParams = (LayoutParams) this.mIcon.getLayoutParams(); + iconParams.gravity = Gravity.CENTER; + iconParams.topMargin = 0; + iconParams.bottomMargin = 0; + this.mIcon.setLayoutParams(iconParams); + + var counterContainerParams = (LayoutParams) this.mCounterContainer.getLayoutParams(); + counterContainerParams.gravity = Gravity.CENTER; + counterContainerParams.topMargin = this.mMargin + V.a(1.5F); + counterContainerParams.bottomMargin = this.mMargin + V.a(1.5F); + this.mCounterContainer.setLayoutParams(counterContainerParams); + this.mCounterContainer.setTranslationY((float)(-V.a(5.5F))); + + this.mLargeLabel.setVisibility(GONE); + this.mSmallLabel.setVisibility(GONE); + } else { + if (mShiftingModeEnabled) { + if (checked) { + var iconParams = (LayoutParams)this.mIcon.getLayoutParams(); + iconParams.gravity = Gravity.TOP|Gravity.CENTER_HORIZONTAL; + iconParams.topMargin = this.mMargin; + this.mIcon.setLayoutParams(iconParams); + + var counterContainerParams = (LayoutParams)this.mCounterContainer.getLayoutParams(); + counterContainerParams.gravity = Gravity.TOP|Gravity.CENTER_HORIZONTAL; + counterContainerParams.topMargin = this.mMargin + V.a(1.5F); + counterContainerParams.bottomMargin = this.mMargin + V.a(1.5F); + + this.mCounterContainer.setLayoutParams(counterContainerParams); + this.mCounterContainer.setTranslationY(-V.a(5.5F)); + + this.mLargeLabel.setVisibility(VISIBLE); + ViewCompat.setScaleX(this.mLargeLabel, 1.0F); + ViewCompat.setScaleY(this.mLargeLabel, 1.0F); + } else { + var iconParams = (LayoutParams)this.mIcon.getLayoutParams(); + iconParams.gravity = Gravity.CENTER; + iconParams.topMargin = this.mMargin; + this.mIcon.setLayoutParams(iconParams); + + var counterContainerParams = (LayoutParams)this.mCounterContainer.getLayoutParams(); + counterContainerParams.gravity = Gravity.CENTER; + counterContainerParams.topMargin = this.mMargin + V.a(1.5F); + counterContainerParams.bottomMargin = this.mMargin + V.a(1.5F); + this.mCounterContainer.setLayoutParams(counterContainerParams); + this.mCounterContainer.setTranslationY((float)(-V.a(5.5F))); + + this.mLargeLabel.setVisibility(INVISIBLE); + ViewCompat.setScaleX(this.mLargeLabel, 0.5F); + ViewCompat.setScaleY(this.mLargeLabel, 0.5F); + } + mSmallLabel.setVisibility(INVISIBLE); + } else { +// ViewCompat.setScaleX(mLargeLabel, !mStaticModeEnabled && !checked ? mLargeScale : 1.0f); +// ViewCompat.setScaleY(mLargeLabel, !mStaticModeEnabled && !checked ? mLargeScale : 1.0f); + ViewCompat.setScaleX(mSmallLabel, !mStaticModeEnabled && checked ? mSmallScale : 1.0f); + ViewCompat.setScaleY(mSmallLabel, !mStaticModeEnabled && checked ? mSmallScale : 1.0f); + mLargeLabel.setVisibility(/*checked ? VISIBLE :*/ INVISIBLE); + mSmallLabel.setVisibility(VISIBLE);//checked ? INVISIBLE : VISIBLE); + + var iconParams = (LayoutParams) this.mIcon.getLayoutParams(); + iconParams.gravity = Gravity.CENTER; + iconParams.topMargin = 0; + iconParams.bottomMargin = V.a(6); + this.mIcon.setLayoutParams(iconParams); + + var counterContainerParams = (LayoutParams)this.mCounterContainer.getLayoutParams(); + counterContainerParams.gravity = Gravity.CENTER; + counterContainerParams.topMargin = 0; + counterContainerParams.bottomMargin = V.a(8); + this.mCounterContainer.setLayoutParams(counterContainerParams); + this.mCounterContainer.setTranslationY(-V.a(5.5F)); + } + } + + this.refreshDrawableState(); + } + + public void setCounterText(@Nullable CharSequence text) { + this.mCounter.setText(text); + if (text == null) { + this.mCounterContainer.setVisibility(GONE); + } else if (TextUtils.isEmpty(text)) { + this.mCounterContainer.setVisibility(VISIBLE); + this.mCounter.setVisibility(GONE); + this.mDot.setVisibility(VISIBLE); + } else { + this.mCounterContainer.setVisibility(VISIBLE); + this.mCounter.setVisibility(VISIBLE); + this.mDot.setVisibility(mItemPos); + } + + } + + public void setEnabled(boolean b) { + super.setEnabled(b); + this.mSmallLabel.setEnabled(b); + this.mLargeLabel.setEnabled(b); + this.mIcon.setEnabled(b); + } + + public void setIcon(Drawable drawable) { + if (drawable != null) { + if (drawable.getConstantState() != null) + drawable = drawable.getConstantState().newDrawable(); + + drawable = DrawableCompat.wrap(drawable).mutate(); + DrawableCompat.setTintList(drawable, this.mColorStateList); + } + + this.mIcon.setImageDrawable(drawable); + } + + public void setIconTintList(ColorStateList colorStateList) { + this.mColorStateList = colorStateList; + MenuItemImpl impl = this.mItemData; + if (impl != null) { + this.setIcon(impl.getIcon()); + } + + } + + public void setIconsMode(boolean enabled) { + this.mIconsModeEnabled = enabled; + } + + public void setStaticMode(boolean enabled) { + this.mStaticModeEnabled = enabled; + } + + public void setItemBackground(int resId) { + ViewCompat.setBackground(this, resId != 0 ? ContextCompat.getDrawable(this.getContext(), resId) : null); + } + + public void setItemPosition(int pos) { + this.mItemPos = pos; + } + + public void setShiftingMode(boolean var1) { + this.mShiftingModeEnabled = var1; + } + + public void setShortcut(boolean b, char c) { + } + + public void setTextColor(ColorStateList colorStateList) { + } + + public void setTitle(CharSequence title) { + this.mSmallLabel.setText(title); + this.mLargeLabel.setText(title); + } + + public boolean showsIcon() { + return true; + } +} diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarInjector.java b/app/src/main/java/ru/vtosters/lite/hooks/DockBarInjector.java similarity index 82% rename from app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarInjector.java rename to app/src/main/java/ru/vtosters/lite/hooks/DockBarInjector.java index 364012fac..fa8bc01e3 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarInjector.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/DockBarInjector.java @@ -1,6 +1,5 @@ -package ru.vtosters.lite.ui.fragments.dockbar; +package ru.vtosters.lite.hooks; -import static com.vtosters.lite.R.id.groups; import static com.vtosters.lite.R.id.menu_fave; import static com.vtosters.lite.R.id.menu_feedback; import static com.vtosters.lite.R.id.menu_friends; @@ -17,6 +16,7 @@ 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.getContext; import static ru.vtosters.lite.utils.Globals.getResources; import android.annotation.SuppressLint; @@ -25,6 +25,7 @@ import android.graphics.Color; import android.graphics.drawable.Drawable; import android.view.Menu; import android.view.MenuItem; +import android.view.ViewGroup; import com.vk.apps.AppsFragment; import com.vk.core.drawable.RecoloredDrawable; @@ -48,12 +49,15 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import ru.vtosters.lite.ui.components.DockBarEditorManager; +import ru.vtosters.lite.ui.items.DockBarTab; +import ru.vtosters.lite.utils.Globals; import ru.vtosters.lite.utils.Preferences; -public class DockBarInjector{ - private static final DockBarManager sManager = DockBarManager.getInstance(); +public class DockBarInjector { + private static final DockBarEditorManager sManager = DockBarEditorManager.getInstance(); - public static Map, Integer> injectMap(){ + public static Map, Integer> injectMap() { LinkedHashMap, Integer> map = new LinkedHashMap<>(); for (DockBarTab tab : sManager.getSelectedTabs()) { map.put(tab.fragmentClass, tab.id); @@ -61,7 +65,8 @@ public class DockBarInjector{ return map; } - public static void inject(BottomNavigationView navigationView){ + @SuppressLint("RestrictedApi") + public static void inject(BottomNavigationView navigationView) { Menu menu = navigationView.getMenu(); menu.clear(); try { @@ -74,7 +79,7 @@ public class DockBarInjector{ Method acquire = synchronisedPoolCls.getDeclaredMethod("acquire"); if (synchronizedPool != null) { do { - } while(acquire.invoke(synchronizedPool) != null); + } while (acquire.invoke(synchronizedPool) != null); } } catch (NoSuchFieldException | IllegalAccessException | ClassNotFoundException | NoSuchMethodException | InvocationTargetException e) { @@ -86,23 +91,41 @@ public class DockBarInjector{ 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") } ); add.setIcon(new RecoloredDrawable(drawable, dockcolors)); - add.setShowAsAction(1); + add.setTitle(getContext().getString(tab.titleID)); add.setCheckable(true); } + if (Globals.getPreferences().getBoolean("dockbar_tab_titles", true)) { + var menuView = (BottomNavigationMenuView) navigationView.getChildAt(0); + for (int i = 0; i < menuView.getChildCount(); i++) { + var item = (com.vtosters.lite.ui.bottomnavigation.BottomNavigationItemView) menuView.getChildAt(i); + item.setStaticMode(true); + item.setIconsMode(false); + item.setShiftingMode(false); + } + } } - public static int injectId(String tag){ + private static void removeAllChildren(ViewGroup view) { + for (int i = 0; i < view.getChildCount(); i++) { + if (view instanceof ViewGroup) { + removeAllChildren((ViewGroup) view.getChildAt(i)); + view.removeAllViews(); + } + } + } + + public static int injectId(String tag) { for (DockBarTab tab : sManager.getSelectedTabs()) { if (tag.equals(tab.tag)) return tab.id; @@ -110,7 +133,7 @@ public class DockBarInjector{ return 0; } - public static void injectMenuFragment(Menu menu){ + public static void injectMenuFragment(Menu menu) { List menuItems = new ArrayList<>(); for (int i = 0; i < menu.size(); i++) { menuItems.add(menu.getItem(i)); @@ -167,12 +190,12 @@ public class DockBarInjector{ } } - public static void setCounter(int tabId, BottomNavigationView navigationView){ + public static void setCounter(int tabId, BottomNavigationView navigationView) { navigationView.a(tabId, counters(tabId)); } @SuppressLint("NonConstantResourceId") - private static CharSequence counters(int tabId){ + private static CharSequence counters(int tabId) { if (!Preferences.dockcounter()) return null; int val = 0; @@ -197,11 +220,11 @@ public class DockBarInjector{ break; case tab_feedback: if (Preferences.milkshake()) - val = MenuCountersState.k(); + val = MenuCountersState.k(); break; case menu_friends: if (!Preferences.milkshake()) - val = MenuCountersState.k(); + val = MenuCountersState.k(); break; } // @@ -222,7 +245,7 @@ public class DockBarInjector{ return val > 0 ? StringUtils.a(val) : null; } - public static JSONArray injectMenuJSON(JSONArray arr){ + public static JSONArray injectMenuJSON(JSONArray arr) { List arrayList = new ArrayList(Arrays.asList( "news", "messages", @@ -255,15 +278,15 @@ public class DockBarInjector{ } } - public static int getItemCount(){ + public static int getItemCount() { return sManager.getSelectedTabs().size(); } - public static boolean isDockOpenAllowed(FragmentImpl fragment){ + public static boolean isDockOpenAllowed(FragmentImpl fragment) { return isDockOpenAllowed(fragment.getClass()); } - public static boolean isDockOpenAllowed(Class cls){ + public static boolean isDockOpenAllowed(Class cls) { for (DockBarTab tab : sManager.getSelectedTabs()) if (tab.fragmentClass == cls) return false; @@ -273,7 +296,7 @@ public class DockBarInjector{ return true; } - public static Class interceptClick(int id, RightMenu rightMenu){ + public static Class interceptClick(int id, RightMenu rightMenu) { if (id == tab_menu) { rightMenu.a(); } diff --git a/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java b/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java index 0b55b5fb7..51b081fd0 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java @@ -6,7 +6,6 @@ import static ru.vtosters.lite.f0x1d.VTVerifications.isVerified; import static ru.vtosters.lite.hooks.DateHook.getLocale; import static ru.vtosters.lite.utils.Base64Utils.decode; import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getUserId; import static ru.vtosters.lite.utils.Globals.getUserToken; import static ru.vtosters.lite.utils.Preferences.dev; import static ru.vtosters.lite.utils.Preferences.friendsblock; @@ -34,6 +33,7 @@ import okhttp3.Headers; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; +import ru.vtosters.lite.utils.Globals; public class JsonInjectors{ private static final OkHttpClient mClient = new OkHttpClient(); @@ -104,15 +104,28 @@ public class JsonInjectors{ return orig; } - public static JSONObject superapp(JSONObject json) throws JSONException{ + public static JSONObject superapp(JSONObject json) throws JSONException { + var superApps = Globals.getPreferences().getString("superapp_items", "").split(","); + if (superApps.length == 0) return json; + var oldItems = json.optJSONArray("items"); var newItems = new JSONArray(); if (oldItems != null) { for (int i = 0; i < oldItems.length(); i++) { var item = oldItems.optJSONObject(i); var type = item.optString("type"); - if (!getBoolValue("superapp_" + type, false)) - newItems.put(item); + for (String superApp : superApps) { + if (type.equals(superApp)) + newItems.put(item); + } + } + for (int i = 0; i < superApps.length; i++) { + for (int j = i; j < newItems.length(); j++) { + var item = newItems.optJSONObject(j); + if (superApps[i].equals(item.optString("type"))) + newItems.put(j, newItems.getJSONObject(i)) + .put(i, item); + } } } diff --git a/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java b/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java index ae1be70a4..0d4ee604f 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java @@ -1,5 +1,5 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.ui.fragments.dockbar.DockBarManager.getInstance; +import static ru.vtosters.lite.ui.components.DockBarEditorManager.getInstance; import static ru.vtosters.lite.utils.Globals.getPrefsValue; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.milkshake; diff --git a/app/src/main/java/ru/vtosters/lite/ui/adapters/CategorizedAdapter.java b/app/src/main/java/ru/vtosters/lite/ui/adapters/CategorizedAdapter.java new file mode 100644 index 000000000..6107cb57c --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/ui/adapters/CategorizedAdapter.java @@ -0,0 +1,245 @@ +package ru.vtosters.lite.ui.adapters; + +import static ru.vtosters.lite.utils.Globals.convertDpToPixel; +import static ru.vtosters.lite.utils.Globals.getContext; +import static ru.vtosters.lite.utils.Globals.getString; + +import android.content.res.ColorStateList; +import android.graphics.Typeface; +import android.util.Log; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.Collections; +import java.util.List; + +import ru.vtosters.lite.ui.components.IItemMovingListener; +import ru.vtosters.lite.utils.Themes; + +public class CategorizedAdapter extends RecyclerView.Adapter implements IItemMovingListener { + + // Adapter item types + public static final int MOVING_ITEM = -0x1; + public static final int CATEGORY_TITLE = -0x2; + + // Item states + public static final int SELECTED_STATE = -0x1; + public static final int DISABLED_STATE = -0x2; + + private List mSelectedItems; + private List mDisabledItems; + private IViewHolderBinder mBinder; + + private int mMinSelectedItems = -1; + private int mMaxSelectedItems = -1; + + public CategorizedAdapter(List selectedItems, List disabledItems, IViewHolderBinder binder) { + this.mSelectedItems = selectedItems; + this.mDisabledItems = disabledItems; + this.mBinder = binder; + } + + public void setMinAndMaxCounts(int min, int max) { + this.mMinSelectedItems = min; + this.mMaxSelectedItems = max; + } + + public int getItemViewType(int i) { + return i == 0 || mSelectedItems.size() + 1 == i ? CATEGORY_TITLE : MOVING_ITEM; + } + + public int getTabType(int i) { + return i <= mSelectedItems.size() ? SELECTED_STATE : DISABLED_STATE; + } + + @NonNull + @Override + public CategorizedViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { + FrameLayout container = new FrameLayout(getContext()); + container.addView(newCategoryTitle(), new FrameLayout.LayoutParams(-1, -2)); + container.addView(newMovingItem(), new FrameLayout.LayoutParams(-1, -2)); + return new CategorizedViewHolder(container); + } + + private View newMovingItem() { + LinearLayout container = new LinearLayout(getContext()); + container.setTag("container"); + container.setGravity(Gravity.CENTER_VERTICAL); + container.setOrientation(LinearLayout.HORIZONTAL); + container.setPadding( + convertDpToPixel(12), + convertDpToPixel(12), + convertDpToPixel(12), + convertDpToPixel(12) + ); + container.setLayoutParams(new LinearLayout.LayoutParams(-1, convertDpToPixel(48))); + container.setVisibility(View.INVISIBLE); + + ImageView icon = new ImageView(getContext()); + icon.setTag("icon"); + icon.setImageTintList(ColorStateList.valueOf(Themes.getAccentColor())); + icon.setLayoutParams(new LinearLayout.LayoutParams( + convertDpToPixel(24), + convertDpToPixel(24))); + container.addView(icon); + + TextView name = new TextView(getContext()); + name.setTag("name"); + name.setTextSize(16.0f); + name.setTypeface(Typeface.DEFAULT_BOLD); + name.setTextColor(Themes.getTextAttr()); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(-1, -2); + params.weight = 1; + params.leftMargin = convertDpToPixel(16); + container.addView(name, params); + + return container; + } + + private View newCategoryTitle() { + LinearLayout container = new LinearLayout(getContext()); + container.setTag("category_title_container"); + container.setLayoutParams(new LinearLayout.LayoutParams(-1, -2)); + container.setVisibility(View.INVISIBLE); + + TextView title = new TextView(getContext()); + title.setTag("category_title"); + title.setTextSize(13.0f); + title.setPadding( + convertDpToPixel(16), + convertDpToPixel(13), + convertDpToPixel(16), + convertDpToPixel(13) + ); + title.setAllCaps(true); + title.setTextColor(Themes.getTextAttr()); + container.addView(title, new LinearLayout.LayoutParams(-2, -2)); + + return container; + } + + @Override + public void onBindViewHolder(@NonNull CategorizedViewHolder viewHolder, int i) { + try { + Log.d("TAG", i + ""); + if (getItemViewType(i) == MOVING_ITEM) + mBinder.bind(viewHolder, i); + else + viewHolder.bindCategory(i == 0); + } catch (Exception e) { + Log.d("TAG", e + ""); + } + } + + @Override + public int getItemCount() { + return mSelectedItems.size() + mDisabledItems.size() + 2; + } + + @Override + public void onItemDismiss(int index) { + + } + + @Override + public boolean onItemMove(int fromPosition, int toPosition) { + if (toPosition == 0) + return false; + + Object curr; + if (getTabType(fromPosition) == SELECTED_STATE) { + var min = mSelectedItems.size() == mMinSelectedItems; + if (getTabType(toPosition) == DISABLED_STATE && min) + return false; + curr = mSelectedItems.get(fromPosition - 1); + if (getItemViewType(toPosition) == CATEGORY_TITLE) { + if (min) + return false; + mSelectedItems.remove(fromPosition - 1); + mDisabledItems.add(curr); + for (int i = mDisabledItems.size() - 2; i >= 0; i--) { + var tmp = mDisabledItems.get(i + 1); + mDisabledItems.set(i + 1, mDisabledItems.get(i)); + mDisabledItems.set(i, tmp); + } + } else { + Collections.swap(mSelectedItems, fromPosition - 1, toPosition - 1); + } + } else if (getTabType(fromPosition) == DISABLED_STATE) { + var max = mSelectedItems.size() == mMaxSelectedItems; + if (getTabType(toPosition) == SELECTED_STATE && max) + return false; + curr = mDisabledItems.get(fromPosition - mSelectedItems.size() - 2); + if (getItemViewType(toPosition) == CATEGORY_TITLE) { + if (max) + return false; + mDisabledItems.remove(0); + mSelectedItems.add(curr); + } else { + Collections.swap(mDisabledItems, + fromPosition - mSelectedItems.size() - 2, + toPosition - mSelectedItems.size() - 2); + } + } + + notifyItemMoved(fromPosition, toPosition); + return true; + } + + public static class CategorizedViewHolder extends RecyclerView.ViewHolder { + + private final LinearLayout mMovingItemContainer; + private final ImageView mIcon; + private final TextView mName; + + private final LinearLayout mCategoryTitleContainer; + private final TextView mCategoryTitle; + + public CategorizedViewHolder(View itemView) { + super(itemView); + + mMovingItemContainer = itemView.findViewWithTag("container"); + mCategoryTitleContainer = itemView.findViewWithTag("category_title_container"); + + mIcon = mMovingItemContainer.findViewWithTag("icon"); + mName = mMovingItemContainer.findViewWithTag("name"); + + mCategoryTitle = mCategoryTitleContainer.findViewWithTag("category_title"); + } + + public void bindMovingItem(int iconId, int textId) { + if (iconId != -1) + mIcon.setImageResource(iconId); + else + mIcon.setVisibility(View.GONE); + mName.setText(textId); + mMovingItemContainer.setVisibility(View.VISIBLE); + mCategoryTitleContainer.setVisibility(View.INVISIBLE); + } + + public void bindMovingItem(String text) { + mIcon.setVisibility(View.GONE); + mName.setText(text); + mMovingItemContainer.setVisibility(View.VISIBLE); + mCategoryTitleContainer.setVisibility(View.INVISIBLE); + } + + public void bindCategory(boolean fist) { + mCategoryTitle.setText(getString(fist ? "selected_items" : "unselected_items")); + mCategoryTitleContainer.setVisibility(View.VISIBLE); + mMovingItemContainer.setVisibility(View.INVISIBLE); + } + } + + public interface IViewHolderBinder { + void bind(CategorizedViewHolder holder, int pos); + } +} diff --git a/app/src/main/java/ru/vtosters/lite/ui/components/ImagineArrayAdapter.java b/app/src/main/java/ru/vtosters/lite/ui/adapters/ImagineArrayAdapter.java similarity index 98% rename from app/src/main/java/ru/vtosters/lite/ui/components/ImagineArrayAdapter.java rename to app/src/main/java/ru/vtosters/lite/ui/adapters/ImagineArrayAdapter.java index 269a1b9eb..34847a33c 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/components/ImagineArrayAdapter.java +++ b/app/src/main/java/ru/vtosters/lite/ui/adapters/ImagineArrayAdapter.java @@ -1,4 +1,4 @@ -package ru.vtosters.lite.ui.components; +package ru.vtosters.lite.ui.adapters; import static ru.vtosters.lite.utils.Themes.getTextAttr; @@ -12,7 +12,6 @@ import android.widget.ArrayAdapter; import android.widget.CheckedTextView; import android.widget.ImageView; import android.widget.LinearLayout; -import android.widget.ListView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickerPackAdapter.java b/app/src/main/java/ru/vtosters/lite/ui/adapters/StickerPackAdapter.java similarity index 98% rename from app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickerPackAdapter.java rename to app/src/main/java/ru/vtosters/lite/ui/adapters/StickerPackAdapter.java index d5f843d14..c74d7ff0c 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickerPackAdapter.java +++ b/app/src/main/java/ru/vtosters/lite/ui/adapters/StickerPackAdapter.java @@ -1,4 +1,4 @@ -package ru.vtosters.lite.ui.fragments.tgstickers; +package ru.vtosters.lite.ui.adapters; import static ru.vtosters.lite.utils.Globals.getContext; import static ru.vtosters.lite.utils.Globals.getIdentifier; diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java b/app/src/main/java/ru/vtosters/lite/ui/components/DockBarEditorManager.java similarity index 92% rename from app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java rename to app/src/main/java/ru/vtosters/lite/ui/components/DockBarEditorManager.java index 6c4121cae..90746846b 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/DockBarEditorManager.java @@ -1,8 +1,7 @@ -package ru.vtosters.lite.ui.fragments.dockbar; +package ru.vtosters.lite.ui.components; 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; import static ru.vtosters.lite.utils.Preferences.superapp; @@ -43,30 +42,26 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; +import ru.vtosters.lite.ui.items.DockBarTab; import ru.vtosters.lite.utils.Globals; -public class DockBarManager { +public class DockBarEditorManager { - public static final int MIN_SELECTED_TABS_LIMIT = 3; - public static final int MAX_SELECTED_TABS_LIMIT = 9; - - private static DockBarManager sInstance = new DockBarManager(); + public static final int MIN_SELECTED_TABS = 3; + public static final int MAX_SELECTED_TABS = 9; private final List mSelectedTabs = new ArrayList<>(); private final List mDisabledTabs = new ArrayList<>(); - private final String[] mCategoryTitles = { - getString("dockbar_selected_items"), - getString("dockbar_unselected_items") - }; + private static DockBarEditorManager sInstance; - public static DockBarManager getInstance() { + public static DockBarEditorManager getInstance() { return sInstance == null - ? (sInstance = new DockBarManager()) + ? (sInstance = new DockBarEditorManager()) : sInstance; } - public DockBarManager() { + public DockBarEditorManager() { init(); } @@ -109,12 +104,17 @@ public class DockBarManager { } public void save() { - Globals.getPreferences().edit().putString("dockbar_tabs", mSelectedTabs.stream().map(tab -> tab.tag) - .collect(Collectors.joining(","))).commit(); + Globals.getPreferences().edit().putString("dockbar_tabs", mSelectedTabs.stream() + .map(tab -> tab.tag) + .collect(Collectors.joining(","))) + .commit(); } public void reset() { - Globals.getPreferences().edit().putString("dockbar_tabs", "tab_news,tab_superapps,tab_messages,tab_friends,tab_profile").commit(); + Globals.getPreferences() + .edit() + .putString("dockbar_tabs", "tab_news,tab_superapps,tab_messages,tab_friends,tab_profile") + .commit(); } public List getSelectedTabs() { @@ -125,10 +125,6 @@ public class DockBarManager { return mDisabledTabs; } - public String[] getCategoryTitles() { - return mCategoryTitles; - } - private DockBarTab getTabByTag(String tag) { switch (tag) { case "tab_news": diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/IItemTouchHelper.java b/app/src/main/java/ru/vtosters/lite/ui/components/IItemMovingListener.java similarity index 54% rename from app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/IItemTouchHelper.java rename to app/src/main/java/ru/vtosters/lite/ui/components/IItemMovingListener.java index 1fffe281d..8eb6b6ee7 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/IItemTouchHelper.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/IItemMovingListener.java @@ -1,6 +1,6 @@ -package ru.vtosters.lite.ui.fragments.dockbar; +package ru.vtosters.lite.ui.components; -public interface IItemTouchHelper{ +public interface IItemMovingListener { void onItemDismiss(int index); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/ItemTouchHelperCallback.java b/app/src/main/java/ru/vtosters/lite/ui/components/ItemMovingCallback.java similarity index 70% rename from app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/ItemTouchHelperCallback.java rename to app/src/main/java/ru/vtosters/lite/ui/components/ItemMovingCallback.java index d26158dcf..669790d49 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/ItemTouchHelperCallback.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/ItemMovingCallback.java @@ -1,16 +1,17 @@ -package ru.vtosters.lite.ui.fragments.dockbar; +package ru.vtosters.lite.ui.components; import androidx.annotation.NonNull; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.RecyclerView; +import ru.vtosters.lite.ui.adapters.CategorizedAdapter; -public class ItemTouchHelperCallback extends ItemTouchHelper.Callback{ +public class ItemMovingCallback extends ItemTouchHelper.Callback { - private final DockBarEditorAdapter mAdapter; + private final CategorizedAdapter mAdapter; - public ItemTouchHelperCallback(DockBarEditorAdapter mAdapter){ - this.mAdapter = mAdapter; + public ItemMovingCallback(CategorizedAdapter adapter){ + this.mAdapter = adapter; } @Override @@ -25,7 +26,7 @@ public class ItemTouchHelperCallback extends ItemTouchHelper.Callback{ @Override public int getMovementFlags(@NonNull RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder){ - int dragFlags = AdapterHelper.getItemViewType(viewHolder.getAdapterPosition()) != AdapterHelper.CATEGORY_TITLE_TYPE + int dragFlags = mAdapter.getItemViewType(viewHolder.getAdapterPosition()) == CategorizedAdapter.MOVING_ITEM ? ItemTouchHelper.UP | ItemTouchHelper.DOWN : 0; return makeMovementFlags(dragFlags, 0); diff --git a/app/src/main/java/ru/vtosters/lite/ui/components/SuperAppEditorManager.java b/app/src/main/java/ru/vtosters/lite/ui/components/SuperAppEditorManager.java new file mode 100644 index 000000000..24db0f8d8 --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/ui/components/SuperAppEditorManager.java @@ -0,0 +1,103 @@ +package ru.vtosters.lite.ui.components; + +import static ru.vtosters.lite.utils.Globals.getPreferences; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import ru.vtosters.lite.ui.items.SuperAppItem; +import ru.vtosters.lite.utils.Globals; + +public class SuperAppEditorManager { + + private final List mSelectedItems = new ArrayList<>(); + private final List mDisabledItems = new ArrayList<>(); + + private static SuperAppEditorManager sInstance; + + public static SuperAppEditorManager getInstance() { + return sInstance == null + ? (sInstance = new SuperAppEditorManager()) + : sInstance; + } + + public SuperAppEditorManager() { + init(); + } + + private void init() { + var tmp = getPreferences().getString("superapp_items", "promo,miniapps,vkpay_slim,greeting,holiday,weather,sport,games,informer,food,event,music,vk_run"); + var selectedTags = !tmp.isEmpty() ? tmp.split(",") : new String[0]; + parseSelectedItems(selectedTags); + } + + private void parseSelectedItems(String[] selectedTabsTags) { + List allTags = new ArrayList<>(Arrays.asList( "promo", "miniapps", "vkpay_slim", "greeting", "holiday", + "weather", "sport", "games", "informer", "food", "event", "music", "vk_run" )); + for (String tag : selectedTabsTags) { + mSelectedItems.add(getItemByTag(tag)); + allTags.remove(tag); + } + allTags.forEach(tag -> mDisabledItems.add(getItemByTag(tag))); + } + + public void save() { + if (mSelectedItems.size() > 0) + getPreferences().edit().putString("superapp_items", mSelectedItems.stream() + .map(item -> item.type) + .collect(Collectors.joining(","))) + .commit(); + else + reset(); + } + + public void reset() { + Globals.getPreferences() + .edit() + .putString("superapp_items", "promo,miniapps,vkpay_slim,greeting,holiday,weather,sport,games,informer,food,event,music,vk_run") + .commit(); + } + + public List getSelectedTabs() { + return mSelectedItems; + } + + public List getDisabledTabs() { + return mDisabledItems; + } + + private SuperAppItem getItemByTag(String tag) { + switch (tag) { + case "promo": + return SuperAppItem.valuesOf("promo", "Mini Apps: промо"); + case "miniapps": + return SuperAppItem.valuesOf("miniapps", "Mini Apps: виджет"); + case "vkpay_slim": + return SuperAppItem.valuesOf("vkpay_slim", "VK Pay"); + case "greeting": + return SuperAppItem.valuesOf("greeting", "Приветствие"); + case "holiday": + return SuperAppItem.valuesOf("holiday", "Дни рождения у друзей"); + case "weather": + return SuperAppItem.valuesOf("weather", "Погода"); + case "sport": + return SuperAppItem.valuesOf("sport", "Спортивные события"); + case "games": + return SuperAppItem.valuesOf("games", "Игры"); + case "informer": + return SuperAppItem.valuesOf("informer", "Информер"); + case "food": + return SuperAppItem.valuesOf("food", "Еда"); + case "event": + return SuperAppItem.valuesOf("event", "Мероприятия"); + case "music": + return SuperAppItem.valuesOf("music", "Музыка"); + case "vk_run": + return SuperAppItem.valuesOf("vk_run", "VK Run"); + default: + return null; + } + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/DockBarEditorFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/DockBarEditorFragment.java new file mode 100644 index 000000000..575707dc5 --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/DockBarEditorFragment.java @@ -0,0 +1,98 @@ +package ru.vtosters.lite.ui.fragments; + +import static ru.vtosters.lite.utils.Globals.convertDpToPixel; +import static ru.vtosters.lite.utils.Globals.getIdentifier; +import static ru.vtosters.lite.utils.Globals.restartApplication; + +import android.os.Bundle; +import android.view.ContextThemeWrapper; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.CallSuper; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.ItemTouchHelper; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.vtosters.lite.R; + +import ru.vtosters.lite.ui.adapters.CategorizedAdapter; +import ru.vtosters.lite.ui.components.DockBarEditorManager; +import ru.vtosters.lite.ui.components.ItemMovingCallback; +import ru.vtosters.lite.utils.Globals; + +public class DockBarEditorFragment extends BaseToolbarFragment { + + @CallSuper + @Override + public View onCreateContent(@NonNull LayoutInflater inflater, @Nullable Bundle bundle) { + setTitle(getIdentifier("dockbar_editor", "string")); + + FrameLayout content = new FrameLayout(getContext()); + + LinearLayout container = new LinearLayout(getContext()); + container.setOrientation(LinearLayout.VERTICAL); + content.addView(container, new FrameLayout.LayoutParams(-1, -1)); + + LinearLayout buttonsContainer = new LinearLayout(getContext()); + buttonsContainer.setPadding( + convertDpToPixel(13), + convertDpToPixel(10), + convertDpToPixel(13), + convertDpToPixel(10) + ); + container.addView(buttonsContainer, new LinearLayout.LayoutParams(-1, -2)); + + TextView save = new TextView(new ContextThemeWrapper(getContext(), R.style.VKUIButton_Primary)); + save.setText(Globals.getString("save")); + save.setOnClickListener(v -> { + DockBarEditorManager.getInstance().save(); + restartApplication(); + }); + + LinearLayout.LayoutParams saveParams = new LinearLayout.LayoutParams(0, -2); + saveParams.weight = 1.0f; + buttonsContainer.addView(save, saveParams); + + View divider = new View(getContext()); + buttonsContainer.addView(divider, new LinearLayout.LayoutParams(convertDpToPixel(10), 0)); + + TextView reset = new TextView(new ContextThemeWrapper(getContext(), R.style.VKUIButton_Primary)); + reset.setText(Globals.getString("reset")); + reset.setOnClickListener(v -> { + DockBarEditorManager.getInstance().reset(); + restartApplication(); + }); + + LinearLayout.LayoutParams resetParams = new LinearLayout.LayoutParams(0, -2); + resetParams.weight = 1.0f; + buttonsContainer.addView(reset, resetParams); + + DockBarEditorManager manager = DockBarEditorManager.getInstance(); + var adapter = new CategorizedAdapter(manager.getSelectedTabs(), manager.getDisabledTabs(), (holder, pos) -> { + var tab = pos <= manager.getSelectedTabs().size() + ? manager.getSelectedTabs().get(pos - 1) + : manager.getDisabledTabs().get(pos - manager.getSelectedTabs().size() - 2); + holder.bindMovingItem(tab.iconID, tab.titleID); + }); + adapter.setMinAndMaxCounts(DockBarEditorManager.MIN_SELECTED_TABS, DockBarEditorManager.MAX_SELECTED_TABS); + + var recyclerView = new RecyclerView(getContext()); + recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + recyclerView.setAdapter(adapter); + recyclerView.setHasFixedSize(true); + var params = new LinearLayout.LayoutParams(-1, -1); + params.gravity = Gravity.CENTER; + container.addView(recyclerView, params); + + new ItemTouchHelper(new ItemMovingCallback(adapter)).attachToRecyclerView(recyclerView); + + return content; + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java index e36e3694b..a67b3414c 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java @@ -1,6 +1,7 @@ package ru.vtosters.lite.ui.fragments; import static ru.vtosters.lite.utils.Globals.getIdentifier; +import static ru.vtosters.lite.utils.Globals.getPreferences; import static ru.vtosters.lite.utils.Globals.restartApplicationWithTimer; import android.os.Bundle; @@ -9,6 +10,8 @@ import androidx.preference.Preference; import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; +import ru.vtosters.lite.utils.Globals; + public class InterfaceFragment extends MaterialPreferenceToolbarFragment{ @Override public void onCreate(Bundle bundle){ @@ -17,10 +20,20 @@ public class InterfaceFragment extends MaterialPreferenceToolbarFragment{ prefs(); } + //dockbar_tab_titles + private void prefs(){ findPreference("stories").setOnPreferenceClickListener(new restart()); findPreference("swipe").setOnPreferenceClickListener(new restart()); findPreference("dockcounter").setOnPreferenceClickListener(new restart()); + findPreference("dockbar_tab_titles").setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object o) { + getPreferences().edit().putBoolean("dockbar_tab_titles", (boolean) o).commit(); + Globals.restartApplication(); + return false; + } + }); } public boolean restart(Preference preference){ diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java index 7477078c0..76fdc2cce 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java @@ -26,7 +26,7 @@ import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; import java.util.Arrays; import ru.vtosters.lite.downloaders.VideoDownloader; -import ru.vtosters.lite.ui.components.ImagineArrayAdapter; +import ru.vtosters.lite.ui.adapters.ImagineArrayAdapter; public class MediaFragment extends MaterialPreferenceToolbarFragment{ public static void download(Context ctx){ diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarEditorFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/SuperAppEditorFragment.java similarity index 63% rename from app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarEditorFragment.java rename to app/src/main/java/ru/vtosters/lite/ui/fragments/SuperAppEditorFragment.java index 0635c8055..11bb9956c 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarEditorFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/SuperAppEditorFragment.java @@ -1,4 +1,4 @@ -package ru.vtosters.lite.ui.fragments.dockbar; +package ru.vtosters.lite.ui.fragments; import static ru.vtosters.lite.utils.Globals.convertDpToPixel; import static ru.vtosters.lite.utils.Globals.getIdentifier; @@ -13,25 +13,24 @@ import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import ru.vtosters.lite.ui.fragments.BaseToolbarFragment; +import ru.vtosters.lite.ui.adapters.CategorizedAdapter; +import ru.vtosters.lite.ui.components.ItemMovingCallback; +import ru.vtosters.lite.ui.components.SuperAppEditorManager; import ru.vtosters.lite.utils.Globals; -public class DockBarEditorFragment extends BaseToolbarFragment { - - private RecyclerView mRecycler; - private DockBarEditorAdapter mAdapter; - private ItemTouchHelperCallback mCallback; - private ItemTouchHelper mItemTouchHelper; +public class SuperAppEditorFragment extends BaseToolbarFragment { + @CallSuper @Override public View onCreateContent(@NonNull LayoutInflater inflater, @Nullable Bundle bundle) { - setTitle(getIdentifier("dockbar_editor", "string")); + setTitle(getIdentifier("superapp_editor", "string")); FrameLayout content = new FrameLayout(getContext()); @@ -49,9 +48,9 @@ public class DockBarEditorFragment extends BaseToolbarFragment { container.addView(buttonsContainer, new LinearLayout.LayoutParams(-1, -2)); TextView save = new TextView(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.VKUIButton_Primary)); - save.setText(Globals.getString("dockbar_save")); + save.setText(Globals.getString("save")); save.setOnClickListener(v -> { - DockBarManager.getInstance().save(); + SuperAppEditorManager.getInstance().save(); restartApplication(); }); @@ -63,9 +62,9 @@ public class DockBarEditorFragment extends BaseToolbarFragment { buttonsContainer.addView(divider, new LinearLayout.LayoutParams(convertDpToPixel(10), 0)); TextView reset = new TextView(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.VKUIButton_Primary)); - reset.setText(Globals.getString("dockbar_reset")); + reset.setText(Globals.getString("reset")); reset.setOnClickListener(v -> { - DockBarManager.getInstance().reset(); + SuperAppEditorManager.getInstance().reset(); restartApplication(); }); @@ -73,18 +72,23 @@ public class DockBarEditorFragment extends BaseToolbarFragment { resetParams.weight = 1.0f; buttonsContainer.addView(reset, resetParams); - mRecycler = new RecyclerView(getContext()); - mRecycler.setLayoutManager(new LinearLayoutManager(getContext())); - mRecycler.setAdapter((mAdapter = new DockBarEditorAdapter())); - mRecycler.setHasFixedSize(true); + SuperAppEditorManager manager = SuperAppEditorManager.getInstance(); + var adapter = new CategorizedAdapter(manager.getSelectedTabs(), manager.getDisabledTabs(), (holder, pos) -> { + var item = pos <= manager.getSelectedTabs().size() + ? manager.getSelectedTabs().get(pos - 1) + : manager.getDisabledTabs().get(pos - manager.getSelectedTabs().size() - 2); + holder.bindMovingItem(item.title); + }); + + var recyclerView = new RecyclerView(getContext()); + recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + recyclerView.setAdapter(adapter); + recyclerView.setHasFixedSize(true); var params = new LinearLayout.LayoutParams(-1, -1); params.gravity = Gravity.CENTER; - container.addView(mRecycler, params); + container.addView(recyclerView, params); - mCallback = new ItemTouchHelperCallback(mAdapter); - - mItemTouchHelper = new ItemTouchHelper(mCallback); - mItemTouchHelper.attachToRecyclerView(mRecycler); + new ItemTouchHelper(new ItemMovingCallback(adapter)).attachToRecyclerView(recyclerView); return content; } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java index 323500f17..05972a447 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java @@ -7,9 +7,6 @@ import static ru.vtosters.lite.ui.PreferencesUtil.addMaterialSwitchPreference; import static ru.vtosters.lite.ui.PreferencesUtil.addPreference; import static ru.vtosters.lite.ui.PreferencesUtil.addPreferenceCategory; import static ru.vtosters.lite.ui.PreferencesUtil.addPreferenceDrawable; -import static ru.vtosters.lite.ui.vkui.VBListBuilder.VBListItem; -import static ru.vtosters.lite.ui.vkui.VBListBuilder.buildListOf; -import static ru.vtosters.lite.ui.vkui.VBottomSheetBuilder.VBSContent; import static ru.vtosters.lite.utils.About.getBuildNumber; import static ru.vtosters.lite.utils.About.getCommitLink; import static ru.vtosters.lite.utils.CacheUtils.humanReadableByteCountBin; @@ -61,14 +58,10 @@ import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; import com.vtosters.lite.general.fragments.SettingsAccountFragment; import com.vtosters.lite.general.fragments.SettingsGeneralFragment; -import java.util.Arrays; -import java.util.List; - +import ru.vtosters.lite.ui.components.DockBarEditorManager; +import ru.vtosters.lite.ui.components.SuperAppEditorManager; import ru.vtosters.lite.ui.dialogs.OTADialog; -import ru.vtosters.lite.ui.fragments.dockbar.DockBarEditorFragment; -import ru.vtosters.lite.ui.fragments.dockbar.DockBarManager; import ru.vtosters.lite.ui.fragments.tgstickers.StickersFragment; -import ru.vtosters.lite.ui.vkui.VBottomSheetBuilder; import ru.vtosters.lite.utils.CacheUtils; import ru.vtosters.lite.utils.Globals; import ru.vtosters.lite.utils.SSFS; @@ -99,7 +92,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ public static String getDocksumm(){ if (disableSettingsSumms()) return null; - return Globals.getString("vtldocksumm") + ": " + DockBarManager.getInstance().getSelectedTabs().size(); + return Globals.getString("vtldocksumm") + ": " + DockBarEditorManager.getInstance().getSelectedTabs().size(); } public static String getTGSsumm(){ @@ -125,7 +118,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ public static String getSuperappsumm(){ if (disableSettingsSumms()) return null; - return "Скрыто элементов" + ": " + preferences.getInt("superappitems", 0); + return "Скрыто элементов" + ": " + SuperAppEditorManager.getInstance().getDisabledTabs().size(); } public static String getCachesumm(){ @@ -315,9 +308,9 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ addPreference(this, "", Globals.getString("dockbar_editor"), docksumm, !DoNotUseOldIcons() ? "ic_list_24" : "ic_list_outline_28", preference -> { Context context = getContext(); - Intent a2 = new Navigator(DockBarEditorFragment.class).b(context); - a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(a2); + Intent intent = new Navigator(DockBarEditorFragment.class).b(context); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(intent); return false; }); } @@ -372,7 +365,10 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ if (milkshake() && superapp()) { addPreference(this, "", "Настроить Superapp", superapp, "ic_explore_outline_28", (preference) -> { - callEditorPopup(); + Context context = getContext(); + Intent intent = new Navigator(SuperAppEditorFragment.class).b(context); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(intent); return true; }); } @@ -442,46 +438,6 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ } } - private void callEditorPopup(){ - hideitems = 0; - - List list = Arrays.asList( - new VBListItem("promo", "Mini Apps: промо"), - new VBListItem("miniapps", "Mini Apps: виджет"), - new VBListItem("vkpay_slim", "VK Pay"), - new VBListItem("greeting", "Приветствие"), - new VBListItem("holiday", "Дни рождения у друзей"), - new VBListItem("weather", "Погода"), - new VBListItem("sport", "Спортивные события"), - new VBListItem("games", "Игры"), - new VBListItem("informer", "Информер"), - new VBListItem("food", "Еда"), - new VBListItem("event", "Мероприятия"), - new VBListItem("music", "Музыка"), - new VBListItem("vk_run", "VK Run") - ); - - VBottomSheetBuilder.show(getActivity(), new VBSContent( - "Выберите пункты для скрытия", - buildListOf(getActivity(), list), - - new VBSContent.VBSButton( - "Сохранить", - () -> { - for (VBListItem item : list) { - edit().putBoolean("superapp_" + item.id, item.checked).commit(); - if (item.checked) { - hideitems++; - edit().putInt("superappitems", hideitems).commit(); - } else if (hideitems == 0) { - edit().putInt("superappitems", hideitems).commit(); - } - } - } - ) - )); - } - @Override public void onResume(){ super.onResume(); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/AdapterHelper.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/AdapterHelper.java deleted file mode 100644 index 07e08c950..000000000 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/AdapterHelper.java +++ /dev/null @@ -1,30 +0,0 @@ -package ru.vtosters.lite.ui.fragments.dockbar; - -public class AdapterHelper{ - - // Adapter item types - public static final int TAB_TYPE = 1; - public static final int CATEGORY_TITLE_TYPE = 2; - - // Tab types - public static final int SELECTED = 3; - public static final int DISABLED = 4; - - private static final DockBarManager sManager = DockBarManager.getInstance(); - - 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){ - return i <= sManager.getSelectedTabs().size() ? SELECTED : DISABLED; - } - - public static boolean needTransfer(int from, int to){ - return getItemViewType(from) == TAB_TYPE && getItemViewType(to) == CATEGORY_TITLE_TYPE; - } - - public static int getItemCount(){ - return sManager.getSelectedTabs().size() + sManager.getDisabledTabs().size() + 2; - } -} diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarEditorAdapter.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarEditorAdapter.java deleted file mode 100644 index 061f5d4d6..000000000 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarEditorAdapter.java +++ /dev/null @@ -1,190 +0,0 @@ -package ru.vtosters.lite.ui.fragments.dockbar; - -import static ru.vtosters.lite.utils.Globals.convertDpToPixel; -import static ru.vtosters.lite.utils.Globals.getContext; - -import android.content.res.ColorStateList; -import android.graphics.Typeface; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.recyclerview.widget.RecyclerView; - -import java.util.Collections; - -import ru.vtosters.lite.utils.Themes; - -public class DockBarEditorAdapter extends RecyclerView.Adapter - implements IItemTouchHelper{ - - private final DockBarManager mDockBarManager = DockBarManager.getInstance(); - - @Override - 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(){ - LinearLayout container = new LinearLayout(getContext()); - container.setTag("tab_container"); - container.setGravity(Gravity.CENTER_VERTICAL); - container.setOrientation(LinearLayout.HORIZONTAL); - container.setPadding( - convertDpToPixel(12), - convertDpToPixel(12), - convertDpToPixel(12), - convertDpToPixel(12) - ); - container.setLayoutParams(new LinearLayout.LayoutParams(-1, convertDpToPixel(48))); - container.setVisibility(View.INVISIBLE); - - ImageView icon = new ImageView(getContext()); - icon.setTag("tab_icon"); - icon.setImageTintList(ColorStateList.valueOf(Themes.getAccentColor())); - icon.setLayoutParams(new LinearLayout.LayoutParams( - convertDpToPixel(24), - convertDpToPixel(24))); - container.addView(icon); - - TextView name = new TextView(getContext()); - name.setTag("tab_name"); - name.setTextSize(16.0f); - name.setTypeface(Typeface.DEFAULT_BOLD); - name.setTextColor(Themes.getTextAttr()); - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(-1, -2); - params.weight = 1; - params.leftMargin = convertDpToPixel(16); - container.addView(name, params); - - return container; - } - - private View newGroupTitle(){ - LinearLayout container = new LinearLayout(getContext()); - container.setTag("category_title_container"); - container.setLayoutParams(new LinearLayout.LayoutParams(-1, -2)); - container.setVisibility(View.INVISIBLE); - - TextView title = new TextView(getContext()); - title.setTag("category_title"); - title.setTextSize(13.0f); - title.setPadding( - convertDpToPixel(16), - convertDpToPixel(13), - convertDpToPixel(16), - convertDpToPixel(13) - ); - title.setAllCaps(true); - title.setTextColor(Themes.getTextAttr()); - container.addView(title, new LinearLayout.LayoutParams(-2, -2)); - - return container; - } - - @Override - public void onBindViewHolder(ItemViewHolder holder, int position){ - holder.bind(position); - } - - @Override - public int getItemCount(){ - return AdapterHelper.getItemCount(); - } - - @Override - public void onItemDismiss(int index){ - - } - - @Override - public boolean onItemMove(int fromPosition, int toPosition){ - if (toPosition == 0) - return false; - - var selectedTabs = mDockBarManager.getSelectedTabs(); - var disabledTabs = mDockBarManager.getDisabledTabs(); - - 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 (min) - return false; - selectedTabs.remove(fromPosition - 1); - disabledTabs.add(curr); - for (int i = disabledTabs.size() - 2; i >= 0; i--) { - var tmp = disabledTabs.get(i + 1); - 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 (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); - } - } - - notifyItemMoved(fromPosition, toPosition); - return true; - } - - protected class ItemViewHolder extends RecyclerView.ViewHolder{ - - private final LinearLayout mTabContainer; - private final ImageView mTabIcon; - private final TextView mTabName; - - private final LinearLayout mCategoryTitleContainer; - private final TextView mCategoryTitle; - - public ItemViewHolder(View itemView){ - super(itemView); - - mTabContainer = itemView.findViewWithTag("tab_container"); - mCategoryTitleContainer = itemView.findViewWithTag("category_title_container"); - - mTabIcon = mTabContainer.findViewWithTag("tab_icon"); - mTabName = mTabContainer.findViewWithTag("tab_name"); - - mCategoryTitle = mCategoryTitleContainer.findViewWithTag("category_title"); - } - - public void bind(int pos){ - if (AdapterHelper.getItemViewType(pos) == AdapterHelper.TAB_TYPE) { - DockBarTab tab = AdapterHelper.getTabType(pos) == AdapterHelper.SELECTED - ? mDockBarManager.getSelectedTabs().get(pos - 1) - : mDockBarManager.getDisabledTabs().get(pos - mDockBarManager.getSelectedTabs().size() - 2); - mTabIcon.setImageResource(tab.iconID); - mTabName.setText(tab.titleID); - mTabContainer.setVisibility(View.VISIBLE); - mCategoryTitleContainer.setVisibility(View.INVISIBLE); - } else { - mCategoryTitle.setText(mDockBarManager.getCategoryTitles()[pos == 0 ? 0 : 1]); - mCategoryTitleContainer.setVisibility(View.VISIBLE); - mTabContainer.setVisibility(View.INVISIBLE); - } - } - } -} diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java index 056bd2e80..d5d973cbe 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java @@ -16,7 +16,6 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.res.ColorStateList; -import android.os.Build; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; @@ -30,7 +29,6 @@ import android.widget.LinearLayout; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.core.view.ViewCompat; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; @@ -43,6 +41,7 @@ import java.io.File; import ru.vtosters.lite.tgs.TGPref; import ru.vtosters.lite.ui.PreferencesUtil; +import ru.vtosters.lite.ui.adapters.StickerPackAdapter; import ru.vtosters.lite.ui.fragments.BaseToolbarFragment; import ru.vtosters.lite.utils.Globals; diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarTab.java b/app/src/main/java/ru/vtosters/lite/ui/items/DockBarTab.java similarity index 94% rename from app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarTab.java rename to app/src/main/java/ru/vtosters/lite/ui/items/DockBarTab.java index 5b176017f..afa72f446 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarTab.java +++ b/app/src/main/java/ru/vtosters/lite/ui/items/DockBarTab.java @@ -1,4 +1,4 @@ -package ru.vtosters.lite.ui.fragments.dockbar; +package ru.vtosters.lite.ui.items; import com.vk.core.fragments.FragmentImpl; diff --git a/app/src/main/java/ru/vtosters/lite/ui/items/SuperAppItem.java b/app/src/main/java/ru/vtosters/lite/ui/items/SuperAppItem.java new file mode 100644 index 000000000..b83b270c9 --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/ui/items/SuperAppItem.java @@ -0,0 +1,16 @@ +package ru.vtosters.lite.ui.items; + +public class SuperAppItem { + + public String type; + public String title; + + public SuperAppItem(String type, String title) { + this.type = type; + this.title = title; + } + + public static SuperAppItem valuesOf(String type, String title) { + return new SuperAppItem(type, title); + } +} diff --git a/app/src/main/java/ru/vtosters/lite/ui/vkui/VBListBuilder.java b/app/src/main/java/ru/vtosters/lite/ui/vkui/VBListBuilder.java deleted file mode 100644 index 8d714d013..000000000 --- a/app/src/main/java/ru/vtosters/lite/ui/vkui/VBListBuilder.java +++ /dev/null @@ -1,56 +0,0 @@ -package ru.vtosters.lite.ui.vkui; -import static ru.vtosters.lite.utils.Globals.convertDpToPixel; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; -import static ru.vtosters.lite.utils.Themes.getTextAttr; - -import android.content.Context; -import android.util.TypedValue; -import android.view.ViewGroup; -import android.widget.LinearLayout; - -import androidx.appcompat.widget.AppCompatCheckBox; - -import java.util.List; - -public class VBListBuilder{ - public static ViewGroup buildListOf(Context ctx, List items){ - LinearLayout mainView = new LinearLayout(ctx); - mainView.setOrientation(LinearLayout.VERTICAL); - mainView.setPadding(convertDpToPixel(8f), 0, convertDpToPixel(8f), 0); - - for (VBListItem item : items) { - AppCompatCheckBox mcb = new AppCompatCheckBox(ctx, null); - mcb.setPadding(0, convertDpToPixel(8f), 0, convertDpToPixel(8f)); - - mcb.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14f); - mcb.setTextColor(getTextAttr()); - - mcb.setChecked(item.checked); - mcb.setText(item.title); - - mcb.setOnCheckedChangeListener((buttonView, isChecked) -> { - item.checked = isChecked; - }); - - mainView.addView(mcb); - } - - return mainView; - } - - public static class VBListItem{ - public String id; - public String title; - public boolean checked; - - public VBListItem(String id, String title){ - this(id, title, getBoolValue("superapp_" + id, false)); - } - - public VBListItem(String id, String title, boolean checked){ - this.id = id; - this.title = title; - this.checked = checked; - } - } -} diff --git a/smali/res/layout/design_bottom_navigation_item.xml b/smali/res/layout/design_bottom_navigation_item.xml index 46ec2276c..453cb3e6d 100644 --- a/smali/res/layout/design_bottom_navigation_item.xml +++ b/smali/res/layout/design_bottom_navigation_item.xml @@ -15,9 +15,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|center" + android:clipChildren="false" android:clipToPadding="false" android:duplicateParentState="true" - android:paddingBottom="10.0dip"> + android:paddingBottom="5.0dip"> Неписалка Счётчики в докбаре Отключение не работает в интерфейсе для планшетов + Показ заголовков вкладок в докбаре Уведомления были восстановлены! FCM токен получен FCM токен удален @@ -5629,10 +5630,9 @@ Исправление покрасок для Android 12+ Редактор докбара - Сохранить - Сбросить - Выбранные элементы - Невыбранные элементы + SuperApp Редактор + Выбранные элементы + Отключенные элементы Добавить новый аккаунт diff --git a/smali/res/values/strings.xml b/smali/res/values/strings.xml index ecac6db75..9a395de65 100644 --- a/smali/res/values/strings.xml +++ b/smali/res/values/strings.xml @@ -5570,6 +5570,7 @@ Warning! It can cause long downloads of user lists if there are a lot of users i Do not write Counters in dockbar "Disabling doesn't work in the tablet interface" + Show dockbar item titles Notifications have been restored! FCM token received FCM token deleted @@ -5782,10 +5783,9 @@ May look like a fake leaving the online" Fix colors on Android 12+ Dockbar editor - Save - Reset - Selected items - Disabled items + SuperApp editor + Selected items + Disabled items Add new account diff --git a/smali/res/xml/preferences_interface.xml b/smali/res/xml/preferences_interface.xml index 89f57798e..45269c838 100644 --- a/smali/res/xml/preferences_interface.xml +++ b/smali/res/xml/preferences_interface.xml @@ -65,6 +65,10 @@ android:key="dockcounter" android:summary="@string/docknumberssum" android:title="@string/docknumbers" /> + injectMenuJSON(Lorg/json/JSONArray;)Lorg/json/JSONArray; +# invoke-static {v0}, Lru/vtosters/lite/hooks/DockBarInjector;->injectMenuJSON(Lorg/json/JSONArray;)Lorg/json/JSONArray; # move-result-object v0 diff --git a/smali/smali_classes3/com/vk/menu/MenuFragment.smali b/smali/smali_classes3/com/vk/menu/MenuFragment.smali index 1ff890606..09367dd7d 100644 --- a/smali/smali_classes3/com/vk/menu/MenuFragment.smali +++ b/smali/smali_classes3/com/vk/menu/MenuFragment.smali @@ -302,7 +302,7 @@ invoke-virtual {v3, v5, v1}, Landroid/view/MenuInflater;->inflate(ILandroid/view/Menu;)V -# invoke-static {v1}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->injectMenuFragment(Landroid/view/Menu;)V +# invoke-static {v1}, Lru/vtosters/lite/hooks/DockBarInjector;->injectMenuFragment(Landroid/view/Menu;)V .line 5 invoke-direct {p0, v1}, Lcom/vk/menu/MenuFragment;->a(Landroidx/appcompat/view/menu/MenuBuilder;)Ljava/util/List; diff --git a/smali/smali_classes3/com/vk/menu/MenuUtils.smali b/smali/smali_classes3/com/vk/menu/MenuUtils.smali index 6fe95ab4c..4b691ae9d 100644 --- a/smali/smali_classes3/com/vk/menu/MenuUtils.smali +++ b/smali/smali_classes3/com/vk/menu/MenuUtils.smali @@ -45,7 +45,7 @@ .method public static final a(Ljava/lang/String;)I .locals 3 - invoke-static {p0}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->injectId(Ljava/lang/String;)I + invoke-static {p0}, Lru/vtosters/lite/hooks/DockBarInjector;->injectId(Ljava/lang/String;)I move-result v0 diff --git a/smali/smali_classes3/com/vk/navigation/NavigationDelegateBottom.smali b/smali/smali_classes3/com/vk/navigation/NavigationDelegateBottom.smali index 99235e161..04bb3f4fa 100644 --- a/smali/smali_classes3/com/vk/navigation/NavigationDelegateBottom.smali +++ b/smali/smali_classes3/com/vk/navigation/NavigationDelegateBottom.smali @@ -295,7 +295,7 @@ move-result-object v0 - invoke-static {}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->injectMap()Ljava/util/Map; + invoke-static {}, Lru/vtosters/lite/hooks/DockBarInjector;->injectMap()Ljava/util/Map; move-result-object v0 @@ -1719,7 +1719,7 @@ :cond_0 iget-object v5, p0, Lcom/vk/navigation/NavigationDelegateBottom;->U:Lcom/vk/navigation/right/RightMenu; - invoke-static {p1, v5}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->interceptClick(ILcom/vk/navigation/right/RightMenu;)Ljava/lang/Class; + invoke-static {p1, v5}, Lru/vtosters/lite/hooks/DockBarInjector;->interceptClick(ILcom/vk/navigation/right/RightMenu;)Ljava/lang/Class; move-result-object p1 @@ -2083,7 +2083,7 @@ iput-object v3, p0, Lcom/vk/navigation/NavigationDelegateBottom;->H:Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationView; - invoke-static {v3}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->inject(Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationView;)V + invoke-static {v3}, Lru/vtosters/lite/hooks/DockBarInjector;->inject(Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationView;)V .line 11 invoke-virtual {p0}, Lcom/vk/navigation/NavigationDelegate;->c()Landroid/app/Activity; @@ -2827,7 +2827,7 @@ .method private final f(Lcom/vk/core/fragments/FragmentImpl;)Z .locals 1 - invoke-static {p1}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->isDockOpenAllowed(Lcom/vk/core/fragments/FragmentImpl;)Z + invoke-static {p1}, Lru/vtosters/lite/hooks/DockBarInjector;->isDockOpenAllowed(Lcom/vk/core/fragments/FragmentImpl;)Z move-result v0 @@ -3925,7 +3925,7 @@ .method public a(Lcom/vk/core/fragments/FragmentImpl;)Z .locals 1 - invoke-static {p1}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->isDockOpenAllowed(Lcom/vk/core/fragments/FragmentImpl;)Z + invoke-static {p1}, Lru/vtosters/lite/hooks/DockBarInjector;->isDockOpenAllowed(Lcom/vk/core/fragments/FragmentImpl;)Z move-result p1 @@ -5428,7 +5428,7 @@ if-eqz v2, :cond_0 - invoke-static {v1, v2}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->setCounter(ILcom/vtosters/lite/ui/bottomnavigation/BottomNavigationView;)V + invoke-static {v1, v2}, Lru/vtosters/lite/hooks/DockBarInjector;->setCounter(ILcom/vtosters/lite/ui/bottomnavigation/BottomNavigationView;)V goto :goto_0 diff --git a/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView.smali b/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView.smali deleted file mode 100644 index 136b1cefb..000000000 --- a/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView.smali +++ /dev/null @@ -1,1327 +0,0 @@ -.class public Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView; -.super Landroid/widget/FrameLayout; -.source "BottomNavigationItemView.java" - -# interfaces -.implements Landroidx/appcompat/view/menu/MenuView$ItemView; - - -# static fields -.field private static final J:[I - - -# instance fields -.field private final B:Landroid/widget/TextView; - -.field private final C:Landroid/widget/TextView; - -.field private final D:Landroid/view/View; - -.field private final E:Landroid/widget/TextView; - -.field private final F:Landroid/view/View; - -.field private G:I - -.field private H:Landroidx/appcompat/view/menu/MenuItemImpl; - -.field private I:Landroid/content/res/ColorStateList; - -.field private final a:I - -.field private final b:I - -.field private final c:F - -.field private final d:F - -.field private e:Z - -.field private f:Z - -.field private g:Landroid/widget/ImageView; - -.field private h:Landroid/widget/ImageView; - - -# direct methods -.method static constructor ()V - .locals 3 - - const/4 v0, 0x1 - - new-array v0, v0, [I - - const/4 v1, 0x0 - - const v2, 0x10100a0 - - aput v2, v0, v1 - - .line 1 - sput-object v0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->J:[I - - return-void -.end method - -.method public constructor (Landroid/content/Context;)V - .locals 1 - .param p1 # Landroid/content/Context; - .annotation build Landroidx/annotation/NonNull; - .end annotation - .end param - - const/4 v0, 0x0 - - .line 1 - invoke-direct {p0, p1, v0}, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V - - return-void -.end method - -.method public constructor (Landroid/content/Context;Landroid/util/AttributeSet;)V - .locals 1 - .param p1 # Landroid/content/Context; - .annotation build Landroidx/annotation/NonNull; - .end annotation - .end param - - const/4 v0, 0x0 - - .line 2 - invoke-direct {p0, p1, p2, v0}, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V - - return-void -.end method - -.method public constructor (Landroid/content/Context;Landroid/util/AttributeSet;I)V - .locals 2 - - .line 3 - invoke-direct {p0, p1, p2, p3}, Landroid/widget/FrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V - - const/4 p2, -0x1 - - .line 4 - iput p2, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->G:I - - .line 5 - invoke-virtual {p0}, Landroid/widget/FrameLayout;->getResources()Landroid/content/res/Resources; - - move-result-object p2 - - const p3, 0x7f0700b7 - - .line 6 - invoke-virtual {p2, p3}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I - - move-result p3 - - const v0, 0x7f0700af - - .line 7 - invoke-virtual {p2, v0}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I - - move-result v0 - - const v1, 0x7f0700b5 - - .line 8 - invoke-virtual {p2, v1}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I - - move-result p2 - - iput p2, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->a:I - - sub-int p2, p3, v0 - - .line 9 - iput p2, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->b:I - - int-to-float p2, v0 - - const/high16 v0, 0x3f800000 # 1.0f - - mul-float v1, p2, v0 - - int-to-float p3, p3 - - div-float/2addr v1, p3 - - .line 10 - iput v1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->c:F - - mul-float p3, p3, v0 - - div-float/2addr p3, p2 - - .line 11 - iput p3, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->d:F - - .line 12 - invoke-static {p1}, Landroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater; - - move-result-object p1 - - const/4 p2, 0x1 - - const p3, 0x7f0d016f - - invoke-virtual {p1, p3, p0, p2}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View; - - const p1, 0x7f08029e - - .line 13 - invoke-virtual {p0, p1}, Landroid/widget/FrameLayout;->setBackgroundResource(I)V - - const p1, 0x7f0a0541 - - .line 14 - invoke-virtual {p0, p1}, Landroid/widget/FrameLayout;->findViewById(I)Landroid/view/View; - - move-result-object p1 - - check-cast p1, Landroid/widget/ImageView; - - iput-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - .line 15 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {p1}, Landroid/widget/ImageView;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; - - move-result-object p1 - - const/high16 p3, 0x41e00000 # 28.0f - - invoke-static {p3}, Lme/grishka/appkit/utils/V;->a(F)I - - move-result v0 - - iput v0, p1, Landroid/view/ViewGroup$LayoutParams;->width:I - - .line 16 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {p1}, Landroid/widget/ImageView;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; - - move-result-object p1 - - invoke-static {p3}, Lme/grishka/appkit/utils/V;->a(F)I - - move-result p3 - - iput p3, p1, Landroid/view/ViewGroup$LayoutParams;->height:I - - const p1, 0x7f0a0c41 - - .line 17 - invoke-virtual {p0, p1}, Landroid/widget/FrameLayout;->findViewById(I)Landroid/view/View; - - move-result-object p1 - - check-cast p1, Landroid/widget/TextView; - - iput-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - const p1, 0x7f0a0644 - - .line 18 - invoke-virtual {p0, p1}, Landroid/widget/FrameLayout;->findViewById(I)Landroid/view/View; - - move-result-object p1 - - check-cast p1, Landroid/widget/TextView; - - iput-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - .line 19 - invoke-virtual {p0}, Landroid/widget/FrameLayout;->getContext()Landroid/content/Context; - - move-result-object p1 - - invoke-static {p1}, Landroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater; - - move-result-object p1 - - const p3, 0x7f0d03c9 - - invoke-virtual {p1, p3, p0, p2}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View; - - const p1, 0x7f0a02e6 - - .line 20 - invoke-virtual {p0, p1}, Landroid/widget/FrameLayout;->findViewById(I)Landroid/view/View; - - move-result-object p1 - - iput-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - const p1, 0x7f0a02e5 - - .line 21 - invoke-virtual {p0, p1}, Landroid/widget/FrameLayout;->findViewById(I)Landroid/view/View; - - move-result-object p1 - - check-cast p1, Landroid/widget/TextView; - - iput-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->E:Landroid/widget/TextView; - - const p1, 0x7f0a0376 - - .line 22 - invoke-virtual {p0, p1}, Landroid/widget/FrameLayout;->findViewById(I)Landroid/view/View; - - move-result-object p1 - - iput-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->F:Landroid/view/View; - - .line 23 - invoke-virtual {p0}, Landroid/widget/FrameLayout;->getContext()Landroid/content/Context; - - move-result-object p1 - - invoke-static {p1}, Landroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater; - - move-result-object p1 - - const p3, 0x7f0d03c8 - - invoke-virtual {p1, p3, p0, p2}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View; - - const p1, 0x7f0a004c - - .line 24 - invoke-virtual {p0, p1}, Landroid/widget/FrameLayout;->findViewById(I)Landroid/view/View; - - move-result-object p1 - - check-cast p1, Landroid/widget/ImageView; - - iput-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->h:Landroid/widget/ImageView; - - .line 25 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->h:Landroid/widget/ImageView; - - sget-object p2, Landroid/graphics/PorterDuff$Mode;->MULTIPLY:Landroid/graphics/PorterDuff$Mode; - - const p3, 0x7f040565 - - invoke-static {p1, p3, p2}, Lcom/vk/core/ui/themes/VKThemeHelper;->a(Landroid/widget/ImageView;ILandroid/graphics/PorterDuff$Mode;)V - - return-void -.end method - - -# virtual methods -.method public a()V - .locals 2 - - .line 1 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->h:Landroid/widget/ImageView; - - const/16 v1, 0x8 - - invoke-virtual {v0, v1}, Landroid/widget/ImageView;->setVisibility(I)V - - return-void -.end method - -.method public b()V - .locals 2 - - .line 1 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->h:Landroid/widget/ImageView; - - const/4 v1, 0x0 - - invoke-virtual {v0, v1}, Landroid/widget/ImageView;->setVisibility(I)V - - return-void -.end method - -.method public getItemData()Landroidx/appcompat/view/menu/MenuItemImpl; - .locals 1 - - .line 1 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->H:Landroidx/appcompat/view/menu/MenuItemImpl; - - return-object v0 -.end method - -.method public getItemPosition()I - .locals 1 - - .line 1 - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->G:I - - return v0 -.end method - -.method public initialize(Landroidx/appcompat/view/menu/MenuItemImpl;I)V - .locals 0 - - .line 1 - iput-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->H:Landroidx/appcompat/view/menu/MenuItemImpl; - - .line 2 - invoke-virtual {p1}, Landroidx/appcompat/view/menu/MenuItemImpl;->isCheckable()Z - - move-result p2 - - invoke-virtual {p0, p2}, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->setCheckable(Z)V - - .line 3 - invoke-virtual {p1}, Landroidx/appcompat/view/menu/MenuItemImpl;->isChecked()Z - - move-result p2 - - invoke-virtual {p0, p2}, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->setChecked(Z)V - - .line 4 - invoke-virtual {p1}, Landroidx/appcompat/view/menu/MenuItemImpl;->isEnabled()Z - - move-result p2 - - invoke-virtual {p0, p2}, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->setEnabled(Z)V - - .line 5 - invoke-virtual {p1}, Landroidx/appcompat/view/menu/MenuItemImpl;->getIcon()Landroid/graphics/drawable/Drawable; - - move-result-object p2 - - invoke-virtual {p0, p2}, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->setIcon(Landroid/graphics/drawable/Drawable;)V - - .line 6 - invoke-virtual {p1}, Landroidx/appcompat/view/menu/MenuItemImpl;->getTitle()Ljava/lang/CharSequence; - - move-result-object p2 - - invoke-virtual {p0, p2}, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->setTitle(Ljava/lang/CharSequence;)V - - .line 7 - invoke-virtual {p1}, Landroidx/appcompat/view/menu/MenuItemImpl;->getItemId()I - - move-result p2 - - invoke-virtual {p0, p2}, Landroid/widget/FrameLayout;->setId(I)V - - .line 8 - invoke-virtual {p1}, Landroidx/appcompat/view/menu/MenuItemImpl;->getTitle()Ljava/lang/CharSequence; - - move-result-object p1 - - invoke-virtual {p0, p1}, Landroid/widget/FrameLayout;->setContentDescription(Ljava/lang/CharSequence;)V - - return-void -.end method - -.method public onCreateDrawableState(I)[I - .locals 1 - - add-int/lit8 p1, p1, 0x1 - - .line 1 - invoke-super {p0, p1}, Landroid/widget/FrameLayout;->onCreateDrawableState(I)[I - - move-result-object p1 - - .line 2 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->H:Landroidx/appcompat/view/menu/MenuItemImpl; - - if-eqz v0, :cond_0 - - invoke-virtual {v0}, Landroidx/appcompat/view/menu/MenuItemImpl;->isCheckable()Z - - move-result v0 - - if-eqz v0, :cond_0 - - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->H:Landroidx/appcompat/view/menu/MenuItemImpl; - - invoke-virtual {v0}, Landroidx/appcompat/view/menu/MenuItemImpl;->isChecked()Z - - move-result v0 - - if-eqz v0, :cond_0 - - .line 3 - sget-object v0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->J:[I - - invoke-static {p1, v0}, Landroid/widget/FrameLayout;->mergeDrawableStates([I[I)[I - - :cond_0 - return-object p1 -.end method - -.method protected onLayout(ZIIII)V - .locals 0 - - .line 1 - invoke-super/range {p0 .. p5}, Landroid/widget/FrameLayout;->onLayout(ZIIII)V - - .line 2 - iget-boolean p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->e:Z - - if-eqz p1, :cond_0 - - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {p1}, Landroid/view/View;->getVisibility()I - - move-result p1 - - const/16 p2, 0x8 - - if-eq p1, p2, :cond_0 - - .line 3 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {p1}, Landroid/view/View;->getMeasuredWidth()I - - move-result p1 - - div-int/lit8 p1, p1, 0x2 - - const/high16 p2, 0x40800000 # 4.0f - - invoke-static {p2}, Lme/grishka/appkit/utils/V;->a(F)I - - move-result p3 - - add-int/2addr p1, p3 - - .line 4 - invoke-virtual {p0}, Landroid/widget/FrameLayout;->getMeasuredWidth()I - - move-result p3 - - div-int/lit8 p3, p3, 0x2 - - iget-object p4, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {p4}, Landroid/view/View;->getWidth()I - - move-result p4 - - sub-int/2addr p3, p4 - - invoke-static {p2}, Lme/grishka/appkit/utils/V;->a(F)I - - move-result p2 - - sub-int/2addr p3, p2 - - const/4 p2, 0x0 - - invoke-static {p3, p2}, Ljava/lang/Math;->min(II)I - - move-result p2 - - add-int/2addr p1, p2 - - .line 5 - iget-object p2, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {p2}, Landroid/view/View;->getLeft()I - - move-result p3 - - add-int/2addr p3, p1 - - iget-object p4, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {p4}, Landroid/view/View;->getTop()I - - move-result p4 - - iget-object p5, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - .line 6 - invoke-virtual {p5}, Landroid/view/View;->getRight()I - - move-result p5 - - add-int/2addr p5, p1 - - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {p1}, Landroid/view/View;->getBottom()I - - move-result p1 - - .line 7 - invoke-virtual {p2, p3, p4, p5, p1}, Landroid/view/View;->layout(IIII)V - - :cond_0 - return-void -.end method - -.method public prefersCondensedTitle()Z - .locals 1 - - const/4 v0, 0x0 - - return v0 -.end method - -.method public setCheckable(Z)V - .locals 0 - - .line 1 - invoke-virtual {p0}, Landroid/widget/FrameLayout;->refreshDrawableState()V - - return-void -.end method - -.method public setChecked(Z)V - .locals 8 - - .line 1 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->H:Landroidx/appcompat/view/menu/MenuItemImpl; - - invoke-virtual {v0, p1}, Landroidx/appcompat/view/menu/MenuItemImpl;->setChecked(Z)Landroid/view/MenuItem; - - .line 2 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-virtual {v0}, Landroid/widget/TextView;->getWidth()I - - move-result v1 - - div-int/lit8 v1, v1, 0x2 - - int-to-float v1, v1 - - invoke-static {v0, v1}, Landroidx/core/view/ViewCompat;->setPivotX(Landroid/view/View;F)V - - .line 3 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-virtual {v0}, Landroid/widget/TextView;->getBaseline()I - - move-result v1 - - int-to-float v1, v1 - - invoke-static {v0, v1}, Landroidx/core/view/ViewCompat;->setPivotY(Landroid/view/View;F)V - - .line 4 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - invoke-virtual {v0}, Landroid/widget/TextView;->getWidth()I - - move-result v1 - - div-int/lit8 v1, v1, 0x2 - - int-to-float v1, v1 - - invoke-static {v0, v1}, Landroidx/core/view/ViewCompat;->setPivotX(Landroid/view/View;F)V - - .line 5 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - invoke-virtual {v0}, Landroid/widget/TextView;->getBaseline()I - - move-result v1 - - int-to-float v1, v1 - - invoke-static {v0, v1}, Landroidx/core/view/ViewCompat;->setPivotY(Landroid/view/View;F)V - - .line 6 - iget-boolean v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->f:Z - - const/high16 v1, 0x40b00000 # 5.5f - - const/16 v2, 0x11 - - const/4 v3, 0x0 - - const/high16 v4, 0x3fc00000 # 1.5f - - if-eqz v0, :cond_0 - - .line 7 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {p1}, Landroid/widget/ImageView;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; - - move-result-object p1 - - check-cast p1, Landroid/widget/FrameLayout$LayoutParams; - - .line 8 - iput v2, p1, Landroid/widget/FrameLayout$LayoutParams;->gravity:I - - .line 9 - iput v3, p1, Landroid/widget/FrameLayout$LayoutParams;->topMargin:I - - .line 10 - iput v3, p1, Landroid/widget/FrameLayout$LayoutParams;->bottomMargin:I - - .line 11 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {v0, p1}, Landroid/widget/ImageView;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V - - .line 12 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {p1}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; - - move-result-object p1 - - check-cast p1, Landroid/widget/FrameLayout$LayoutParams; - - .line 13 - iput v2, p1, Landroid/widget/FrameLayout$LayoutParams;->gravity:I - - .line 14 - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->a:I - - invoke-static {v4}, Lme/grishka/appkit/utils/V;->a(F)I - - move-result v2 - - add-int/2addr v0, v2 - - iput v0, p1, Landroid/widget/FrameLayout$LayoutParams;->topMargin:I - - .line 15 - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->a:I - - invoke-static {v4}, Lme/grishka/appkit/utils/V;->a(F)I - - move-result v2 - - add-int/2addr v0, v2 - - iput v0, p1, Landroid/widget/FrameLayout$LayoutParams;->bottomMargin:I - - .line 16 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {v0, p1}, Landroid/view/View;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V - - .line 17 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-static {v1}, Lme/grishka/appkit/utils/V;->a(F)I - - move-result v0 - - neg-int v0, v0 - - int-to-float v0, v0 - - invoke-virtual {p1, v0}, Landroid/view/View;->setTranslationY(F)V - - .line 18 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - const/16 v0, 0x8 - - invoke-virtual {p1, v0}, Landroid/widget/TextView;->setVisibility(I)V - - .line 19 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - invoke-virtual {p1, v0}, Landroid/widget/TextView;->setVisibility(I)V - - goto/16 :goto_1 - - .line 20 - :cond_0 - iget-boolean v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->e:Z - - const/4 v5, 0x4 - - const/16 v6, 0x31 - - const/high16 v7, 0x3f800000 # 1.0f - - if-eqz v0, :cond_2 - - if-eqz p1, :cond_1 - - .line 21 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {p1}, Landroid/widget/ImageView;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; - - move-result-object p1 - - check-cast p1, Landroid/widget/FrameLayout$LayoutParams; - - .line 22 - iput v6, p1, Landroid/widget/FrameLayout$LayoutParams;->gravity:I - - .line 23 - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->a:I - - iput v0, p1, Landroid/widget/FrameLayout$LayoutParams;->topMargin:I - - .line 24 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {v0, p1}, Landroid/widget/ImageView;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V - - .line 25 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {p1}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; - - move-result-object p1 - - check-cast p1, Landroid/widget/FrameLayout$LayoutParams; - - .line 26 - iput v6, p1, Landroid/widget/FrameLayout$LayoutParams;->gravity:I - - .line 27 - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->a:I - - invoke-static {v4}, Lme/grishka/appkit/utils/V;->a(F)I - - move-result v2 - - add-int/2addr v0, v2 - - iput v0, p1, Landroid/widget/FrameLayout$LayoutParams;->topMargin:I - - .line 28 - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->a:I - - invoke-static {v4}, Lme/grishka/appkit/utils/V;->a(F)I - - move-result v2 - - add-int/2addr v0, v2 - - iput v0, p1, Landroid/widget/FrameLayout$LayoutParams;->bottomMargin:I - - .line 29 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {v0, p1}, Landroid/view/View;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V - - .line 30 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-static {v1}, Lme/grishka/appkit/utils/V;->a(F)I - - move-result v0 - - neg-int v0, v0 - - int-to-float v0, v0 - - invoke-virtual {p1, v0}, Landroid/view/View;->setTranslationY(F)V - - .line 31 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-virtual {p1, v3}, Landroid/widget/TextView;->setVisibility(I)V - - .line 32 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-static {p1, v7}, Landroidx/core/view/ViewCompat;->setScaleX(Landroid/view/View;F)V - - .line 33 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-static {p1, v7}, Landroidx/core/view/ViewCompat;->setScaleY(Landroid/view/View;F)V - - goto :goto_0 - - .line 34 - :cond_1 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {p1}, Landroid/widget/ImageView;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; - - move-result-object p1 - - check-cast p1, Landroid/widget/FrameLayout$LayoutParams; - - .line 35 - iput v2, p1, Landroid/widget/FrameLayout$LayoutParams;->gravity:I - - .line 36 - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->a:I - - iput v0, p1, Landroid/widget/FrameLayout$LayoutParams;->topMargin:I - - .line 37 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {v0, p1}, Landroid/widget/ImageView;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V - - .line 38 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {p1}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; - - move-result-object p1 - - check-cast p1, Landroid/widget/FrameLayout$LayoutParams; - - .line 39 - iput v2, p1, Landroid/widget/FrameLayout$LayoutParams;->gravity:I - - .line 40 - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->a:I - - invoke-static {v4}, Lme/grishka/appkit/utils/V;->a(F)I - - move-result v2 - - add-int/2addr v0, v2 - - iput v0, p1, Landroid/widget/FrameLayout$LayoutParams;->topMargin:I - - .line 41 - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->a:I - - invoke-static {v4}, Lme/grishka/appkit/utils/V;->a(F)I - - move-result v2 - - add-int/2addr v0, v2 - - iput v0, p1, Landroid/widget/FrameLayout$LayoutParams;->bottomMargin:I - - .line 42 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {v0, p1}, Landroid/view/View;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V - - .line 43 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-static {v1}, Lme/grishka/appkit/utils/V;->a(F)I - - move-result v0 - - neg-int v0, v0 - - int-to-float v0, v0 - - invoke-virtual {p1, v0}, Landroid/view/View;->setTranslationY(F)V - - .line 44 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-virtual {p1, v5}, Landroid/widget/TextView;->setVisibility(I)V - - .line 45 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - const/high16 v0, 0x3f000000 # 0.5f - - invoke-static {p1, v0}, Landroidx/core/view/ViewCompat;->setScaleX(Landroid/view/View;F)V - - .line 46 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-static {p1, v0}, Landroidx/core/view/ViewCompat;->setScaleY(Landroid/view/View;F)V - - .line 47 - :goto_0 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - invoke-virtual {p1, v5}, Landroid/widget/TextView;->setVisibility(I)V - - goto :goto_1 - - :cond_2 - if-eqz p1, :cond_3 - - .line 48 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {p1}, Landroid/widget/ImageView;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; - - move-result-object p1 - - check-cast p1, Landroid/widget/FrameLayout$LayoutParams; - - .line 49 - iput v6, p1, Landroid/widget/FrameLayout$LayoutParams;->gravity:I - - .line 50 - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->a:I - - iget v1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->b:I - - add-int/2addr v0, v1 - - iput v0, p1, Landroid/widget/FrameLayout$LayoutParams;->topMargin:I - - .line 51 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {v0, p1}, Landroid/widget/ImageView;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V - - .line 52 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-virtual {p1, v3}, Landroid/widget/TextView;->setVisibility(I)V - - .line 53 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - invoke-virtual {p1, v5}, Landroid/widget/TextView;->setVisibility(I)V - - .line 54 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-static {p1, v7}, Landroidx/core/view/ViewCompat;->setScaleX(Landroid/view/View;F)V - - .line 55 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-static {p1, v7}, Landroidx/core/view/ViewCompat;->setScaleY(Landroid/view/View;F)V - - .line 56 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->c:F - - invoke-static {p1, v0}, Landroidx/core/view/ViewCompat;->setScaleX(Landroid/view/View;F)V - - .line 57 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->c:F - - invoke-static {p1, v0}, Landroidx/core/view/ViewCompat;->setScaleY(Landroid/view/View;F)V - - goto :goto_1 - - .line 58 - :cond_3 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {p1}, Landroid/widget/ImageView;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; - - move-result-object p1 - - check-cast p1, Landroid/widget/FrameLayout$LayoutParams; - - .line 59 - iput v6, p1, Landroid/widget/FrameLayout$LayoutParams;->gravity:I - - .line 60 - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->a:I - - iput v0, p1, Landroid/widget/FrameLayout$LayoutParams;->topMargin:I - - .line 61 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {v0, p1}, Landroid/widget/ImageView;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V - - .line 62 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-virtual {p1, v5}, Landroid/widget/TextView;->setVisibility(I)V - - .line 63 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - invoke-virtual {p1, v3}, Landroid/widget/TextView;->setVisibility(I)V - - .line 64 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->d:F - - invoke-static {p1, v0}, Landroidx/core/view/ViewCompat;->setScaleX(Landroid/view/View;F)V - - .line 65 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - iget v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->d:F - - invoke-static {p1, v0}, Landroidx/core/view/ViewCompat;->setScaleY(Landroid/view/View;F)V - - .line 66 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - invoke-static {p1, v7}, Landroidx/core/view/ViewCompat;->setScaleX(Landroid/view/View;F)V - - .line 67 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - invoke-static {p1, v7}, Landroidx/core/view/ViewCompat;->setScaleY(Landroid/view/View;F)V - - .line 68 - :goto_1 - invoke-virtual {p0}, Landroid/widget/FrameLayout;->refreshDrawableState()V - - return-void -.end method - -.method public setCounterText(Ljava/lang/CharSequence;)V - .locals 2 - .param p1 # Ljava/lang/CharSequence; - .annotation build Landroidx/annotation/Nullable; - .end annotation - .end param - - .line 1 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->E:Landroid/widget/TextView; - - invoke-virtual {v0, p1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V - - const/16 v0, 0x8 - - if-nez p1, :cond_0 - - .line 2 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {p1, v0}, Landroid/view/View;->setVisibility(I)V - - goto :goto_0 - - .line 3 - :cond_0 - invoke-static {p1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z - - move-result p1 - - const/4 v1, 0x0 - - if-eqz p1, :cond_1 - - .line 4 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {p1, v1}, Landroid/view/View;->setVisibility(I)V - - .line 5 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->E:Landroid/widget/TextView; - - invoke-virtual {p1, v0}, Landroid/widget/TextView;->setVisibility(I)V - - .line 6 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->F:Landroid/view/View; - - invoke-virtual {p1, v1}, Landroid/view/View;->setVisibility(I)V - - goto :goto_0 - - .line 7 - :cond_1 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->D:Landroid/view/View; - - invoke-virtual {p1, v1}, Landroid/view/View;->setVisibility(I)V - - .line 8 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->E:Landroid/widget/TextView; - - invoke-virtual {p1, v1}, Landroid/widget/TextView;->setVisibility(I)V - - .line 9 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->F:Landroid/view/View; - - invoke-virtual {p1, v0}, Landroid/view/View;->setVisibility(I)V - - :goto_0 - return-void -.end method - -.method public setEnabled(Z)V - .locals 1 - - .line 1 - invoke-super {p0, p1}, Landroid/widget/FrameLayout;->setEnabled(Z)V - - .line 2 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - invoke-virtual {v0, p1}, Landroid/widget/TextView;->setEnabled(Z)V - - .line 3 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-virtual {v0, p1}, Landroid/widget/TextView;->setEnabled(Z)V - - .line 4 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {v0, p1}, Landroid/widget/ImageView;->setEnabled(Z)V - - return-void -.end method - -.method public setIcon(Landroid/graphics/drawable/Drawable;)V - .locals 1 - - if-eqz p1, :cond_1 - - .line 1 - invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; - - move-result-object v0 - - if-nez v0, :cond_0 - - goto :goto_0 - - .line 2 - :cond_0 - invoke-virtual {v0}, Landroid/graphics/drawable/Drawable$ConstantState;->newDrawable()Landroid/graphics/drawable/Drawable; - - move-result-object p1 - - :goto_0 - invoke-static {p1}, Landroidx/core/graphics/drawable/DrawableCompat;->wrap(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable; - - move-result-object p1 - - invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->mutate()Landroid/graphics/drawable/Drawable; - - move-result-object p1 - - .line 3 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->I:Landroid/content/res/ColorStateList; - - invoke-static {p1, v0}, Landroidx/core/graphics/drawable/DrawableCompat;->setTintList(Landroid/graphics/drawable/Drawable;Landroid/content/res/ColorStateList;)V - - .line 4 - :cond_1 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->g:Landroid/widget/ImageView; - - invoke-virtual {v0, p1}, Landroid/widget/ImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V - - return-void -.end method - -.method public setIconTintList(Landroid/content/res/ColorStateList;)V - .locals 0 - - .line 1 - iput-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->I:Landroid/content/res/ColorStateList; - - .line 2 - iget-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->H:Landroidx/appcompat/view/menu/MenuItemImpl; - - if-eqz p1, :cond_0 - - .line 3 - invoke-virtual {p1}, Landroidx/appcompat/view/menu/MenuItemImpl;->getIcon()Landroid/graphics/drawable/Drawable; - - move-result-object p1 - - invoke-virtual {p0, p1}, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->setIcon(Landroid/graphics/drawable/Drawable;)V - - :cond_0 - return-void -.end method - -.method public setIconsMode(Z)V - .locals 0 - - .line 1 - iput-boolean p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->f:Z - - return-void -.end method - -.method public setItemBackground(I)V - .locals 1 - - if-nez p1, :cond_0 - - const/4 p1, 0x0 - - goto :goto_0 - - .line 1 - :cond_0 - invoke-virtual {p0}, Landroid/widget/FrameLayout;->getContext()Landroid/content/Context; - - move-result-object v0 - - invoke-static {v0, p1}, Landroidx/core/content/ContextCompat;->getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; - - move-result-object p1 - - .line 2 - :goto_0 - invoke-static {p0, p1}, Landroidx/core/view/ViewCompat;->setBackground(Landroid/view/View;Landroid/graphics/drawable/Drawable;)V - - return-void -.end method - -.method public setItemPosition(I)V - .locals 0 - - .line 1 - iput p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->G:I - - return-void -.end method - -.method public setShiftingMode(Z)V - .locals 0 - - .line 1 - iput-boolean p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->e:Z - - return-void -.end method - -.method public setShortcut(ZC)V - .locals 0 - - return-void -.end method - -.method public setTextColor(Landroid/content/res/ColorStateList;)V - .locals 1 - - .line 1 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - invoke-virtual {v0, p1}, Landroid/widget/TextView;->setTextColor(Landroid/content/res/ColorStateList;)V - - .line 2 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-virtual {v0, p1}, Landroid/widget/TextView;->setTextColor(Landroid/content/res/ColorStateList;)V - - return-void -.end method - -.method public setTitle(Ljava/lang/CharSequence;)V - .locals 1 - - .line 1 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->B:Landroid/widget/TextView; - - invoke-virtual {v0, p1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V - - .line 2 - iget-object v0, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView;->C:Landroid/widget/TextView; - - invoke-virtual {v0, p1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V - - return-void -.end method - -.method public showsIcon()Z - .locals 1 - - const/4 v0, 0x1 - - return v0 -.end method diff --git a/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationMenuView.smali b/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationMenuView.smali index 64f383d59..df9cb7773 100644 --- a/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationMenuView.smali +++ b/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationMenuView.smali @@ -59,7 +59,7 @@ .line 1 new-instance v0, Landroidx/core/util/Pools$SynchronizedPool; - invoke-static {}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->getItemCount()I + invoke-static {}, Lru/vtosters/lite/hooks/DockBarInjector;->getItemCount()I move-result v1 @@ -176,7 +176,7 @@ iput-object p1, p0, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationMenuView;->e:Landroid/view/View$OnClickListener; - invoke-static {}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->getItemCount()I + invoke-static {}, Lru/vtosters/lite/hooks/DockBarInjector;->getItemCount()I move-result p1 diff --git a/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationView.smali b/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationView.smali index e11ec86df..8fdef97a0 100644 --- a/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationView.smali +++ b/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationView.smali @@ -686,7 +686,7 @@ .method public getMaxItemCount()I .locals 1 - invoke-static {}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->getItemCount()I + invoke-static {}, Lru/vtosters/lite/hooks/DockBarInjector;->getItemCount()I move-result v0