mirror of https://github.com/NekoX-Dev/NekoX.git
135 lines
4.3 KiB
Java
135 lines
4.3 KiB
Java
package org.telegram.ui.Cells;
|
|
|
|
import android.content.Context;
|
|
import android.database.DataSetObserver;
|
|
import android.os.Parcelable;
|
|
import android.view.Gravity;
|
|
import android.view.MotionEvent;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.FrameLayout;
|
|
|
|
import org.telegram.messenger.AndroidUtilities;
|
|
import org.telegram.ui.ActionBar.Theme;
|
|
import org.telegram.ui.Components.BottomPagesView;
|
|
import org.telegram.ui.Components.LayoutHelper;
|
|
|
|
import androidx.viewpager.widget.PagerAdapter;
|
|
import androidx.viewpager.widget.ViewPager;
|
|
|
|
public class ArchiveHintCell extends FrameLayout {
|
|
|
|
private BottomPagesView bottomPages;
|
|
private ViewPager viewPager;
|
|
|
|
public ArchiveHintCell(Context context) {
|
|
super(context);
|
|
|
|
viewPager = new ViewPager(context) {
|
|
@Override
|
|
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
|
if (getParent() != null) {
|
|
getParent().requestDisallowInterceptTouchEvent(true);
|
|
}
|
|
return super.onInterceptTouchEvent(ev);
|
|
}
|
|
|
|
@Override
|
|
protected void onAttachedToWindow() {
|
|
super.onAttachedToWindow();
|
|
requestLayout();
|
|
}
|
|
};
|
|
AndroidUtilities.setViewPagerEdgeEffectColor(viewPager, Theme.getColor(Theme.key_actionBarDefaultArchived));
|
|
viewPager.setAdapter(new Adapter());
|
|
viewPager.setPageMargin(0);
|
|
viewPager.setOffscreenPageLimit(1);
|
|
addView(viewPager, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
|
|
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
|
@Override
|
|
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
|
bottomPages.setPageOffset(position, positionOffset);
|
|
}
|
|
|
|
@Override
|
|
public void onPageSelected(int i) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onPageScrollStateChanged(int i) {
|
|
|
|
}
|
|
});
|
|
|
|
bottomPages = new BottomPagesView(context, viewPager, 3);
|
|
bottomPages.setColor(Theme.key_chats_unreadCounterMuted, Theme.key_chats_actionBackground);
|
|
addView(bottomPages, LayoutHelper.createFrame(33, 5, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0, 0, 19));
|
|
}
|
|
|
|
@Override
|
|
public void invalidate() {
|
|
super.invalidate();
|
|
bottomPages.invalidate();
|
|
}
|
|
|
|
public ViewPager getViewPager() {
|
|
return viewPager;
|
|
}
|
|
|
|
@Override
|
|
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
|
super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(204), MeasureSpec.EXACTLY));
|
|
}
|
|
|
|
private class Adapter extends PagerAdapter {
|
|
@Override
|
|
public int getCount() {
|
|
return 3;
|
|
}
|
|
|
|
@Override
|
|
public Object instantiateItem(ViewGroup container, int position) {
|
|
ArchiveHintInnerCell innerCell = new ArchiveHintInnerCell(container.getContext(), position);
|
|
if (innerCell.getParent() != null) {
|
|
ViewGroup parent = (ViewGroup) innerCell.getParent();
|
|
parent.removeView(innerCell);
|
|
}
|
|
container.addView(innerCell, 0);
|
|
return innerCell;
|
|
}
|
|
|
|
@Override
|
|
public void destroyItem(ViewGroup container, int position, Object object) {
|
|
container.removeView((View) object);
|
|
}
|
|
|
|
@Override
|
|
public void setPrimaryItem(ViewGroup container, int position, Object object) {
|
|
super.setPrimaryItem(container, position, object);
|
|
bottomPages.setCurrentPage(position);
|
|
}
|
|
|
|
@Override
|
|
public boolean isViewFromObject(View view, Object object) {
|
|
return view.equals(object);
|
|
}
|
|
|
|
@Override
|
|
public void restoreState(Parcelable arg0, ClassLoader arg1) {
|
|
}
|
|
|
|
@Override
|
|
public Parcelable saveState() {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void unregisterDataSetObserver(DataSetObserver observer) {
|
|
if (observer != null) {
|
|
super.unregisterDataSetObserver(observer);
|
|
}
|
|
}
|
|
}
|
|
}
|