2019-08-22 01:53:26 +02:00
|
|
|
package org.telegram.ui;
|
|
|
|
|
|
|
|
import android.animation.Animator;
|
|
|
|
import android.animation.AnimatorListenerAdapter;
|
|
|
|
import android.animation.AnimatorSet;
|
|
|
|
import android.animation.ObjectAnimator;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.graphics.Canvas;
|
|
|
|
import android.graphics.Paint;
|
|
|
|
import android.graphics.drawable.Drawable;
|
|
|
|
import android.view.Gravity;
|
|
|
|
import android.view.MotionEvent;
|
|
|
|
import android.view.VelocityTracker;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.ViewConfiguration;
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
import android.view.WindowManager;
|
|
|
|
import android.view.animation.Interpolator;
|
|
|
|
import android.widget.EditText;
|
|
|
|
import android.widget.FrameLayout;
|
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
|
|
import org.telegram.messenger.AndroidUtilities;
|
|
|
|
import org.telegram.messenger.LocaleController;
|
|
|
|
import org.telegram.messenger.R;
|
2020-02-13 19:26:53 +01:00
|
|
|
import org.telegram.messenger.SharedConfig;
|
2019-08-22 01:53:26 +02:00
|
|
|
import org.telegram.ui.ActionBar.ActionBar;
|
|
|
|
import org.telegram.ui.ActionBar.ActionBarMenu;
|
|
|
|
import org.telegram.ui.ActionBar.ActionBarMenuItem;
|
|
|
|
import org.telegram.ui.ActionBar.BaseFragment;
|
|
|
|
import org.telegram.ui.ActionBar.Theme;
|
|
|
|
import org.telegram.ui.ActionBar.ThemeDescription;
|
|
|
|
import org.telegram.ui.Components.EditTextBoldCursor;
|
2019-09-10 12:56:11 +02:00
|
|
|
import org.telegram.ui.Components.EditTextEmoji;
|
2019-08-22 01:53:26 +02:00
|
|
|
import org.telegram.ui.Components.LayoutHelper;
|
|
|
|
import org.telegram.ui.Components.RecyclerListView;
|
|
|
|
import org.telegram.ui.Components.ScrollSlidingTextTabStrip;
|
2019-09-10 12:56:11 +02:00
|
|
|
import org.telegram.ui.Components.SizeNotifierFrameLayout;
|
2019-08-22 01:53:26 +02:00
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
|
|
|
|
|
|
public class PhotoPickerSearchActivity extends BaseFragment {
|
|
|
|
|
2020-03-30 14:00:09 +02:00
|
|
|
private static class ViewPage extends FrameLayout {
|
2019-08-22 01:53:26 +02:00
|
|
|
private BaseFragment parentFragment;
|
|
|
|
private FrameLayout fragmentView;
|
|
|
|
private ActionBar actionBar;
|
|
|
|
private RecyclerListView listView;
|
|
|
|
private int selectedType;
|
|
|
|
|
|
|
|
public ViewPage(Context context) {
|
|
|
|
super(context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private PhotoPickerActivity imagesSearch;
|
|
|
|
private PhotoPickerActivity gifsSearch;
|
|
|
|
private ActionBarMenuItem searchItem;
|
2019-09-10 12:56:11 +02:00
|
|
|
private EditTextEmoji commentTextView;
|
2019-08-22 01:53:26 +02:00
|
|
|
|
|
|
|
private boolean sendPressed;
|
|
|
|
private int selectPhotoType;
|
|
|
|
private ChatActivity chatActivity;
|
|
|
|
|
2020-02-13 19:26:53 +01:00
|
|
|
private boolean swipeBackEnabled = true;
|
|
|
|
|
2019-08-22 01:53:26 +02:00
|
|
|
private final static int search_button = 0;
|
|
|
|
|
|
|
|
private Paint backgroundPaint = new Paint();
|
|
|
|
private ScrollSlidingTextTabStrip scrollSlidingTextTabStrip;
|
|
|
|
private ViewPage[] viewPages = new ViewPage[2];
|
|
|
|
private AnimatorSet tabsAnimation;
|
|
|
|
private boolean tabsAnimationInProgress;
|
|
|
|
private boolean animatingForward;
|
|
|
|
private boolean backAnimation;
|
|
|
|
private int maximumVelocity;
|
|
|
|
private static final Interpolator interpolator = t -> {
|
|
|
|
--t;
|
|
|
|
return t * t * t * t * t + 1.0F;
|
|
|
|
};
|
|
|
|
|
2019-12-31 14:08:08 +01:00
|
|
|
public PhotoPickerSearchActivity(HashMap<Object, Object> selectedPhotos, ArrayList<Object> selectedPhotosOrder, int selectPhotoType, boolean allowCaption, ChatActivity chatActivity) {
|
2019-08-22 01:53:26 +02:00
|
|
|
super();
|
|
|
|
|
2019-12-31 14:08:08 +01:00
|
|
|
imagesSearch = new PhotoPickerActivity(0, null, selectedPhotos, selectedPhotosOrder, selectPhotoType, allowCaption, chatActivity);
|
|
|
|
gifsSearch = new PhotoPickerActivity(1, null, selectedPhotos, selectedPhotosOrder, selectPhotoType, allowCaption, chatActivity);
|
2019-08-22 01:53:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public View createView(Context context) {
|
|
|
|
actionBar.setBackgroundColor(Theme.getColor(Theme.key_dialogBackground));
|
|
|
|
actionBar.setTitleColor(Theme.getColor(Theme.key_dialogTextBlack));
|
|
|
|
actionBar.setItemsColor(Theme.getColor(Theme.key_dialogTextBlack), false);
|
|
|
|
actionBar.setItemsBackgroundColor(Theme.getColor(Theme.key_dialogButtonSelector), false);
|
|
|
|
actionBar.setBackButtonImage(R.drawable.ic_ab_back);
|
|
|
|
if (AndroidUtilities.isTablet()) {
|
|
|
|
actionBar.setOccupyStatusBar(false);
|
|
|
|
}
|
|
|
|
actionBar.setExtraHeight(AndroidUtilities.dp(44));
|
|
|
|
actionBar.setAllowOverlayTitle(false);
|
|
|
|
actionBar.setAddToContainer(false);
|
|
|
|
actionBar.setClipContent(true);
|
|
|
|
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
|
|
|
@Override
|
|
|
|
public void onItemClick(int id) {
|
|
|
|
if (id == -1) {
|
|
|
|
finishFragment();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
hasOwnBackground = true;
|
|
|
|
|
|
|
|
ActionBarMenu menu = actionBar.createMenu();
|
|
|
|
searchItem = menu.addItem(search_button, R.drawable.ic_ab_search).setIsSearchField(true).setActionBarMenuItemSearchListener(new ActionBarMenuItem.ActionBarMenuItemSearchListener() {
|
|
|
|
@Override
|
|
|
|
public void onSearchExpand() {
|
|
|
|
imagesSearch.getActionBar().openSearchField("", false);
|
|
|
|
gifsSearch.getActionBar().openSearchField("", false);
|
|
|
|
searchItem.getSearchField().requestFocus();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean canCollapseSearch() {
|
|
|
|
finishFragment();
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onTextChanged(EditText editText) {
|
|
|
|
imagesSearch.getActionBar().setSearchFieldText(editText.getText().toString());
|
|
|
|
gifsSearch.getActionBar().setSearchFieldText(editText.getText().toString());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSearchPressed(EditText editText) {
|
|
|
|
imagesSearch.getActionBar().onSearchPressed();
|
|
|
|
gifsSearch.getActionBar().onSearchPressed();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
searchItem.setSearchFieldHint(LocaleController.getString("SearchImagesTitle", R.string.SearchImagesTitle));
|
|
|
|
EditTextBoldCursor editText = searchItem.getSearchField();
|
|
|
|
editText.setTextColor(Theme.getColor(Theme.key_dialogTextBlack));
|
|
|
|
editText.setCursorColor(Theme.getColor(Theme.key_dialogTextBlack));
|
|
|
|
editText.setHintTextColor(Theme.getColor(Theme.key_chat_messagePanelHint));
|
|
|
|
|
|
|
|
scrollSlidingTextTabStrip = new ScrollSlidingTextTabStrip(context);
|
|
|
|
scrollSlidingTextTabStrip.setUseSameWidth(true);
|
|
|
|
scrollSlidingTextTabStrip.setColors(Theme.key_chat_attachActiveTab, Theme.key_chat_attachActiveTab, Theme.key_chat_attachUnactiveTab, Theme.key_dialogButtonSelector);
|
|
|
|
actionBar.addView(scrollSlidingTextTabStrip, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 44, Gravity.LEFT | Gravity.BOTTOM));
|
|
|
|
scrollSlidingTextTabStrip.setDelegate(new ScrollSlidingTextTabStrip.ScrollSlidingTabStripDelegate() {
|
|
|
|
@Override
|
|
|
|
public void onPageSelected(int id, boolean forward) {
|
|
|
|
if (viewPages[0].selectedType == id) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
swipeBackEnabled = id == scrollSlidingTextTabStrip.getFirstTabId();
|
|
|
|
viewPages[1].selectedType = id;
|
|
|
|
viewPages[1].setVisibility(View.VISIBLE);
|
|
|
|
switchToCurrentSelectedMode(true);
|
|
|
|
animatingForward = forward;
|
|
|
|
if (id == 0) {
|
|
|
|
searchItem.setSearchFieldHint(LocaleController.getString("SearchImagesTitle", R.string.SearchImagesTitle));
|
|
|
|
} else {
|
|
|
|
searchItem.setSearchFieldHint(LocaleController.getString("SearchGifsTitle", R.string.SearchGifsTitle));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onPageScrolled(float progress) {
|
|
|
|
if (progress == 1 && viewPages[1].getVisibility() != View.VISIBLE) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (animatingForward) {
|
|
|
|
viewPages[0].setTranslationX(-progress * viewPages[0].getMeasuredWidth());
|
|
|
|
viewPages[1].setTranslationX(viewPages[0].getMeasuredWidth() - progress * viewPages[0].getMeasuredWidth());
|
|
|
|
} else {
|
|
|
|
viewPages[0].setTranslationX(progress * viewPages[0].getMeasuredWidth());
|
|
|
|
viewPages[1].setTranslationX(progress * viewPages[0].getMeasuredWidth() - viewPages[0].getMeasuredWidth());
|
|
|
|
}
|
|
|
|
if (progress == 1) {
|
|
|
|
ViewPage tempPage = viewPages[0];
|
|
|
|
viewPages[0] = viewPages[1];
|
|
|
|
viewPages[1] = tempPage;
|
|
|
|
viewPages[1].setVisibility(View.GONE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
ViewConfiguration configuration = ViewConfiguration.get(context);
|
|
|
|
maximumVelocity = configuration.getScaledMaximumFlingVelocity();
|
|
|
|
|
2019-09-10 12:56:11 +02:00
|
|
|
SizeNotifierFrameLayout sizeNotifierFrameLayout;
|
2020-09-30 15:48:47 +02:00
|
|
|
fragmentView = sizeNotifierFrameLayout = new SizeNotifierFrameLayout(context) {
|
2019-08-22 01:53:26 +02:00
|
|
|
|
|
|
|
private int startedTrackingPointerId;
|
|
|
|
private boolean startedTracking;
|
|
|
|
private boolean maybeStartTracking;
|
|
|
|
private int startedTrackingX;
|
|
|
|
private int startedTrackingY;
|
|
|
|
private VelocityTracker velocityTracker;
|
|
|
|
private boolean globalIgnoreLayout;
|
|
|
|
|
|
|
|
private boolean prepareForMoving(MotionEvent ev, boolean forward) {
|
|
|
|
int id = scrollSlidingTextTabStrip.getNextPageId(forward);
|
|
|
|
if (id < 0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
getParent().requestDisallowInterceptTouchEvent(true);
|
|
|
|
maybeStartTracking = false;
|
|
|
|
startedTracking = true;
|
|
|
|
startedTrackingX = (int) ev.getX();
|
|
|
|
actionBar.setEnabled(false);
|
|
|
|
scrollSlidingTextTabStrip.setEnabled(false);
|
|
|
|
viewPages[1].selectedType = id;
|
|
|
|
viewPages[1].setVisibility(View.VISIBLE);
|
|
|
|
animatingForward = forward;
|
|
|
|
switchToCurrentSelectedMode(true);
|
|
|
|
if (forward) {
|
|
|
|
viewPages[1].setTranslationX(viewPages[0].getMeasuredWidth());
|
|
|
|
} else {
|
|
|
|
viewPages[1].setTranslationX(-viewPages[0].getMeasuredWidth());
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void forceHasOverlappingRendering(boolean hasOverlappingRendering) {
|
|
|
|
super.forceHasOverlappingRendering(hasOverlappingRendering);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
|
|
|
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
|
|
|
|
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
|
|
|
|
|
|
|
|
setMeasuredDimension(widthSize, heightSize);
|
|
|
|
|
|
|
|
measureChildWithMargins(actionBar, widthMeasureSpec, 0, heightMeasureSpec, 0);
|
2020-06-04 18:47:15 +02:00
|
|
|
int keyboardSize = SharedConfig.smoothKeyboard ? 0 : measureKeyboardHeight();
|
2019-09-10 12:56:11 +02:00
|
|
|
if (keyboardSize <= AndroidUtilities.dp(20)) {
|
|
|
|
if (!AndroidUtilities.isInMultiwindow) {
|
|
|
|
heightSize -= commentTextView.getEmojiPadding();
|
|
|
|
heightMeasureSpec = MeasureSpec.makeMeasureSpec(heightSize, MeasureSpec.EXACTLY);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
globalIgnoreLayout = true;
|
|
|
|
commentTextView.hideEmojiView();
|
|
|
|
globalIgnoreLayout = false;
|
|
|
|
}
|
|
|
|
|
2019-08-22 01:53:26 +02:00
|
|
|
int actionBarHeight = actionBar.getMeasuredHeight();
|
|
|
|
globalIgnoreLayout = true;
|
|
|
|
for (int a = 0; a < viewPages.length; a++) {
|
|
|
|
if (viewPages[a] == null) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
if (viewPages[a].listView != null) {
|
|
|
|
viewPages[a].listView.setPadding(AndroidUtilities.dp(4), actionBarHeight + AndroidUtilities.dp(4), AndroidUtilities.dp(4), AndroidUtilities.dp(4));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
globalIgnoreLayout = false;
|
|
|
|
|
|
|
|
int childCount = getChildCount();
|
|
|
|
for (int i = 0; i < childCount; i++) {
|
|
|
|
View child = getChildAt(i);
|
|
|
|
if (child == null || child.getVisibility() == GONE || child == actionBar) {
|
|
|
|
continue;
|
|
|
|
}
|
2019-09-10 12:56:11 +02:00
|
|
|
if (commentTextView != null && commentTextView.isPopupView(child)) {
|
|
|
|
if (AndroidUtilities.isInMultiwindow || AndroidUtilities.isTablet()) {
|
|
|
|
if (AndroidUtilities.isTablet()) {
|
|
|
|
child.measure(MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(Math.min(AndroidUtilities.dp(AndroidUtilities.isTablet() ? 200 : 320), heightSize - AndroidUtilities.statusBarHeight + getPaddingTop()), MeasureSpec.EXACTLY));
|
|
|
|
} else {
|
|
|
|
child.measure(MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(heightSize - AndroidUtilities.statusBarHeight + getPaddingTop(), MeasureSpec.EXACTLY));
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
child.measure(MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(child.getLayoutParams().height, MeasureSpec.EXACTLY));
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
measureChildWithMargins(child, widthMeasureSpec, 0, heightMeasureSpec, 0);
|
|
|
|
}
|
2019-08-22 01:53:26 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-09-10 12:56:11 +02:00
|
|
|
@Override
|
|
|
|
protected void onLayout(boolean changed, int l, int t, int r, int b) {
|
|
|
|
final int count = getChildCount();
|
|
|
|
|
2020-06-04 18:47:15 +02:00
|
|
|
int keyboardSize = SharedConfig.smoothKeyboard ? 0 : measureKeyboardHeight();
|
2020-02-13 19:26:53 +01:00
|
|
|
int paddingBottom = keyboardSize <= AndroidUtilities.dp(20) && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isTablet() ? commentTextView.getEmojiPadding() : 0;
|
2019-09-10 12:56:11 +02:00
|
|
|
setBottomClip(paddingBottom);
|
|
|
|
|
|
|
|
for (int i = 0; i < count; i++) {
|
|
|
|
final View child = getChildAt(i);
|
|
|
|
if (child.getVisibility() == GONE) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
final LayoutParams lp = (LayoutParams) child.getLayoutParams();
|
|
|
|
|
|
|
|
final int width = child.getMeasuredWidth();
|
|
|
|
final int height = child.getMeasuredHeight();
|
|
|
|
|
|
|
|
int childLeft;
|
|
|
|
int childTop;
|
|
|
|
|
|
|
|
int gravity = lp.gravity;
|
|
|
|
if (gravity == -1) {
|
|
|
|
gravity = Gravity.TOP | Gravity.LEFT;
|
|
|
|
}
|
|
|
|
|
|
|
|
final int absoluteGravity = gravity & Gravity.HORIZONTAL_GRAVITY_MASK;
|
|
|
|
final int verticalGravity = gravity & Gravity.VERTICAL_GRAVITY_MASK;
|
|
|
|
|
|
|
|
switch (absoluteGravity & Gravity.HORIZONTAL_GRAVITY_MASK) {
|
|
|
|
case Gravity.CENTER_HORIZONTAL:
|
|
|
|
childLeft = (r - l - width) / 2 + lp.leftMargin - lp.rightMargin;
|
|
|
|
break;
|
|
|
|
case Gravity.RIGHT:
|
|
|
|
childLeft = (r - l) - width - lp.rightMargin - getPaddingRight();
|
|
|
|
break;
|
|
|
|
case Gravity.LEFT:
|
|
|
|
default:
|
|
|
|
childLeft = lp.leftMargin + getPaddingLeft();
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (verticalGravity) {
|
|
|
|
case Gravity.TOP:
|
|
|
|
childTop = lp.topMargin + getPaddingTop();
|
|
|
|
break;
|
|
|
|
case Gravity.CENTER_VERTICAL:
|
|
|
|
childTop = ((b - paddingBottom) - t - height) / 2 + lp.topMargin - lp.bottomMargin;
|
|
|
|
break;
|
|
|
|
case Gravity.BOTTOM:
|
|
|
|
childTop = ((b - paddingBottom) - t) - height - lp.bottomMargin;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
childTop = lp.topMargin;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (commentTextView != null && commentTextView.isPopupView(child)) {
|
|
|
|
if (AndroidUtilities.isTablet()) {
|
|
|
|
childTop = getMeasuredHeight() - child.getMeasuredHeight();
|
|
|
|
} else {
|
2020-02-13 19:26:53 +01:00
|
|
|
childTop = getMeasuredHeight() + keyboardSize - child.getMeasuredHeight();
|
2019-09-10 12:56:11 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
child.layout(childLeft, childTop, childLeft + width, childTop + height);
|
|
|
|
}
|
|
|
|
|
|
|
|
notifyHeightChanged();
|
|
|
|
}
|
|
|
|
|
2019-08-22 01:53:26 +02:00
|
|
|
@Override
|
|
|
|
protected void dispatchDraw(Canvas canvas) {
|
|
|
|
super.dispatchDraw(canvas);
|
|
|
|
if (parentLayout != null) {
|
|
|
|
parentLayout.drawHeaderShadow(canvas, actionBar.getMeasuredHeight() + (int) actionBar.getTranslationY());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void requestLayout() {
|
|
|
|
if (globalIgnoreLayout) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
super.requestLayout();
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean checkTabsAnimationInProgress() {
|
|
|
|
if (tabsAnimationInProgress) {
|
|
|
|
boolean cancel = false;
|
|
|
|
if (backAnimation) {
|
|
|
|
if (Math.abs(viewPages[0].getTranslationX()) < 1) {
|
|
|
|
viewPages[0].setTranslationX(0);
|
|
|
|
viewPages[1].setTranslationX(viewPages[0].getMeasuredWidth() * (animatingForward ? 1 : -1));
|
|
|
|
cancel = true;
|
|
|
|
}
|
|
|
|
} else if (Math.abs(viewPages[1].getTranslationX()) < 1) {
|
|
|
|
viewPages[0].setTranslationX(viewPages[0].getMeasuredWidth() * (animatingForward ? -1 : 1));
|
|
|
|
viewPages[1].setTranslationX(0);
|
|
|
|
cancel = true;
|
|
|
|
}
|
|
|
|
if (cancel) {
|
|
|
|
if (tabsAnimation != null) {
|
|
|
|
tabsAnimation.cancel();
|
|
|
|
tabsAnimation = null;
|
|
|
|
}
|
|
|
|
tabsAnimationInProgress = false;
|
|
|
|
}
|
|
|
|
return tabsAnimationInProgress;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
|
|
|
return checkTabsAnimationInProgress() || scrollSlidingTextTabStrip.isAnimatingIndicator() || onTouchEvent(ev);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void onDraw(Canvas canvas) {
|
|
|
|
backgroundPaint.setColor(Theme.getColor(Theme.key_windowBackgroundGray));
|
|
|
|
canvas.drawRect(0, actionBar.getMeasuredHeight() + actionBar.getTranslationY(), getMeasuredWidth(), getMeasuredHeight(), backgroundPaint);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean onTouchEvent(MotionEvent ev) {
|
|
|
|
if (!parentLayout.checkTransitionAnimation() && !checkTabsAnimationInProgress()) {
|
2020-03-30 14:00:09 +02:00
|
|
|
if (ev != null) {
|
|
|
|
if (velocityTracker == null) {
|
|
|
|
velocityTracker = VelocityTracker.obtain();
|
|
|
|
}
|
|
|
|
velocityTracker.addMovement(ev);
|
|
|
|
}
|
2019-08-22 01:53:26 +02:00
|
|
|
if (ev != null && ev.getAction() == MotionEvent.ACTION_DOWN && !startedTracking && !maybeStartTracking) {
|
|
|
|
startedTrackingPointerId = ev.getPointerId(0);
|
|
|
|
maybeStartTracking = true;
|
|
|
|
startedTrackingX = (int) ev.getX();
|
|
|
|
startedTrackingY = (int) ev.getY();
|
2020-03-30 14:00:09 +02:00
|
|
|
velocityTracker.clear();
|
2019-08-22 01:53:26 +02:00
|
|
|
} else if (ev != null && ev.getAction() == MotionEvent.ACTION_MOVE && ev.getPointerId(0) == startedTrackingPointerId) {
|
|
|
|
int dx = (int) (ev.getX() - startedTrackingX);
|
|
|
|
int dy = Math.abs((int) ev.getY() - startedTrackingY);
|
|
|
|
if (startedTracking && (animatingForward && dx > 0 || !animatingForward && dx < 0)) {
|
|
|
|
if (!prepareForMoving(ev, dx < 0)) {
|
|
|
|
maybeStartTracking = true;
|
|
|
|
startedTracking = false;
|
2020-03-30 14:00:09 +02:00
|
|
|
viewPages[0].setTranslationX(0);
|
|
|
|
viewPages[1].setTranslationX(animatingForward ? viewPages[0].getMeasuredWidth() : -viewPages[0].getMeasuredWidth());
|
|
|
|
scrollSlidingTextTabStrip.selectTabWithId(viewPages[1].selectedType, 0);
|
2019-08-22 01:53:26 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if (maybeStartTracking && !startedTracking) {
|
|
|
|
float touchSlop = AndroidUtilities.getPixelsInCM(0.3f, true);
|
2020-03-30 14:00:09 +02:00
|
|
|
if (Math.abs(dx) >= touchSlop && Math.abs(dx) > dy) {
|
2019-08-22 01:53:26 +02:00
|
|
|
prepareForMoving(ev, dx < 0);
|
|
|
|
}
|
|
|
|
} else if (startedTracking) {
|
2020-03-30 14:00:09 +02:00
|
|
|
viewPages[0].setTranslationX(dx);
|
2019-08-22 01:53:26 +02:00
|
|
|
if (animatingForward) {
|
|
|
|
viewPages[1].setTranslationX(viewPages[0].getMeasuredWidth() + dx);
|
|
|
|
} else {
|
|
|
|
viewPages[1].setTranslationX(dx - viewPages[0].getMeasuredWidth());
|
|
|
|
}
|
|
|
|
float scrollProgress = Math.abs(dx) / (float) viewPages[0].getMeasuredWidth();
|
|
|
|
scrollSlidingTextTabStrip.selectTabWithId(viewPages[1].selectedType, scrollProgress);
|
|
|
|
}
|
2020-03-30 14:00:09 +02:00
|
|
|
} else if (ev == null || ev.getPointerId(0) == startedTrackingPointerId && (ev.getAction() == MotionEvent.ACTION_CANCEL || ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_POINTER_UP)) {
|
2019-08-22 01:53:26 +02:00
|
|
|
velocityTracker.computeCurrentVelocity(1000, maximumVelocity);
|
2020-03-30 14:00:09 +02:00
|
|
|
float velX;
|
|
|
|
float velY;
|
|
|
|
if (ev != null && ev.getAction() != MotionEvent.ACTION_CANCEL) {
|
|
|
|
velX = velocityTracker.getXVelocity();
|
|
|
|
velY = velocityTracker.getYVelocity();
|
|
|
|
if (!startedTracking) {
|
|
|
|
if (Math.abs(velX) >= 3000 && Math.abs(velX) > Math.abs(velY)) {
|
|
|
|
prepareForMoving(ev, velX < 0);
|
|
|
|
}
|
2019-08-22 01:53:26 +02:00
|
|
|
}
|
2020-03-30 14:00:09 +02:00
|
|
|
} else {
|
|
|
|
velX = 0;
|
|
|
|
velY = 0;
|
2019-08-22 01:53:26 +02:00
|
|
|
}
|
|
|
|
if (startedTracking) {
|
|
|
|
float x = viewPages[0].getX();
|
|
|
|
tabsAnimation = new AnimatorSet();
|
|
|
|
backAnimation = Math.abs(x) < viewPages[0].getMeasuredWidth() / 3.0f && (Math.abs(velX) < 3500 || Math.abs(velX) < Math.abs(velY));
|
|
|
|
float distToMove;
|
|
|
|
float dx;
|
|
|
|
if (backAnimation) {
|
|
|
|
dx = Math.abs(x);
|
|
|
|
if (animatingForward) {
|
|
|
|
tabsAnimation.playTogether(
|
|
|
|
ObjectAnimator.ofFloat(viewPages[0], View.TRANSLATION_X, 0),
|
|
|
|
ObjectAnimator.ofFloat(viewPages[1], View.TRANSLATION_X, viewPages[1].getMeasuredWidth())
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
tabsAnimation.playTogether(
|
|
|
|
ObjectAnimator.ofFloat(viewPages[0], View.TRANSLATION_X, 0),
|
|
|
|
ObjectAnimator.ofFloat(viewPages[1], View.TRANSLATION_X, -viewPages[1].getMeasuredWidth())
|
|
|
|
);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
dx = viewPages[0].getMeasuredWidth() - Math.abs(x);
|
|
|
|
if (animatingForward) {
|
|
|
|
tabsAnimation.playTogether(
|
|
|
|
ObjectAnimator.ofFloat(viewPages[0], View.TRANSLATION_X, -viewPages[0].getMeasuredWidth()),
|
|
|
|
ObjectAnimator.ofFloat(viewPages[1], View.TRANSLATION_X, 0)
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
tabsAnimation.playTogether(
|
|
|
|
ObjectAnimator.ofFloat(viewPages[0], View.TRANSLATION_X, viewPages[0].getMeasuredWidth()),
|
|
|
|
ObjectAnimator.ofFloat(viewPages[1], View.TRANSLATION_X, 0)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
tabsAnimation.setInterpolator(interpolator);
|
|
|
|
|
|
|
|
int width = getMeasuredWidth();
|
|
|
|
int halfWidth = width / 2;
|
|
|
|
float distanceRatio = Math.min(1.0f, 1.0f * dx / (float) width);
|
|
|
|
float distance = (float) halfWidth + (float) halfWidth * AndroidUtilities.distanceInfluenceForSnapDuration(distanceRatio);
|
|
|
|
velX = Math.abs(velX);
|
|
|
|
int duration;
|
|
|
|
if (velX > 0) {
|
|
|
|
duration = 4 * Math.round(1000.0f * Math.abs(distance / velX));
|
|
|
|
} else {
|
|
|
|
float pageDelta = dx / getMeasuredWidth();
|
|
|
|
duration = (int) ((pageDelta + 1.0f) * 100.0f);
|
|
|
|
}
|
|
|
|
duration = Math.max(150, Math.min(duration, 600));
|
|
|
|
|
|
|
|
tabsAnimation.setDuration(duration);
|
|
|
|
tabsAnimation.addListener(new AnimatorListenerAdapter() {
|
|
|
|
@Override
|
|
|
|
public void onAnimationEnd(Animator animator) {
|
|
|
|
tabsAnimation = null;
|
|
|
|
if (backAnimation) {
|
|
|
|
viewPages[1].setVisibility(View.GONE);
|
|
|
|
} else {
|
|
|
|
ViewPage tempPage = viewPages[0];
|
|
|
|
viewPages[0] = viewPages[1];
|
|
|
|
viewPages[1] = tempPage;
|
|
|
|
viewPages[1].setVisibility(View.GONE);
|
|
|
|
swipeBackEnabled = viewPages[0].selectedType == scrollSlidingTextTabStrip.getFirstTabId();
|
|
|
|
scrollSlidingTextTabStrip.selectTabWithId(viewPages[0].selectedType, 1.0f);
|
|
|
|
}
|
|
|
|
tabsAnimationInProgress = false;
|
|
|
|
maybeStartTracking = false;
|
|
|
|
startedTracking = false;
|
|
|
|
actionBar.setEnabled(true);
|
|
|
|
scrollSlidingTextTabStrip.setEnabled(true);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
tabsAnimation.start();
|
|
|
|
tabsAnimationInProgress = true;
|
2020-03-30 14:00:09 +02:00
|
|
|
startedTracking = false;
|
2019-08-22 01:53:26 +02:00
|
|
|
} else {
|
|
|
|
maybeStartTracking = false;
|
|
|
|
actionBar.setEnabled(true);
|
|
|
|
scrollSlidingTextTabStrip.setEnabled(true);
|
|
|
|
}
|
|
|
|
if (velocityTracker != null) {
|
|
|
|
velocityTracker.recycle();
|
|
|
|
velocityTracker = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return startedTracking;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
};
|
2019-09-10 12:56:11 +02:00
|
|
|
sizeNotifierFrameLayout.setWillNotDraw(false);
|
2019-08-22 01:53:26 +02:00
|
|
|
|
|
|
|
imagesSearch.setParentFragment(this);
|
2019-09-10 12:56:11 +02:00
|
|
|
commentTextView = imagesSearch.commentTextView;
|
|
|
|
commentTextView.setSizeNotifierLayout(sizeNotifierFrameLayout);
|
|
|
|
for (int a = 0; a < 4; a++) {
|
|
|
|
View view;
|
|
|
|
switch (a) {
|
|
|
|
case 0:
|
|
|
|
view = imagesSearch.frameLayout2;
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
view = imagesSearch.writeButtonContainer;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
view = imagesSearch.selectedCountView;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
default:
|
|
|
|
view = imagesSearch.shadow;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
ViewGroup parent = (ViewGroup) view.getParent();
|
|
|
|
parent.removeView(view);
|
|
|
|
}
|
|
|
|
gifsSearch.setLayoutViews(imagesSearch.frameLayout2, imagesSearch.writeButtonContainer, imagesSearch.selectedCountView, imagesSearch.shadow, imagesSearch.commentTextView );
|
2019-08-22 01:53:26 +02:00
|
|
|
gifsSearch.setParentFragment(this);
|
|
|
|
|
|
|
|
for (int a = 0; a < viewPages.length; a++) {
|
|
|
|
viewPages[a] = new ViewPage(context) {
|
|
|
|
@Override
|
|
|
|
public void setTranslationX(float translationX) {
|
|
|
|
super.setTranslationX(translationX);
|
|
|
|
if (tabsAnimationInProgress) {
|
|
|
|
if (viewPages[0] == this) {
|
|
|
|
float scrollProgress = Math.abs(viewPages[0].getTranslationX()) / (float) viewPages[0].getMeasuredWidth();
|
|
|
|
scrollSlidingTextTabStrip.selectTabWithId(viewPages[1].selectedType, scrollProgress);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
2019-09-10 12:56:11 +02:00
|
|
|
sizeNotifierFrameLayout.addView(viewPages[a], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
|
2019-08-22 01:53:26 +02:00
|
|
|
if (a == 0) {
|
|
|
|
viewPages[a].parentFragment = imagesSearch;
|
|
|
|
viewPages[a].listView = imagesSearch.getListView();
|
|
|
|
} else if (a == 1) {
|
|
|
|
viewPages[a].parentFragment = gifsSearch;
|
|
|
|
viewPages[a].listView = gifsSearch.getListView();
|
|
|
|
viewPages[a].setVisibility(View.GONE);
|
|
|
|
}
|
2020-03-30 14:00:09 +02:00
|
|
|
viewPages[a].listView.setScrollingTouchSlop(RecyclerView.TOUCH_SLOP_PAGING);
|
2019-08-22 01:53:26 +02:00
|
|
|
viewPages[a].fragmentView = (FrameLayout) viewPages[a].parentFragment.getFragmentView();
|
|
|
|
viewPages[a].listView.setClipToPadding(false);
|
|
|
|
viewPages[a].actionBar = viewPages[a].parentFragment.getActionBar();
|
|
|
|
viewPages[a].addView(viewPages[a].fragmentView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
|
|
|
|
viewPages[a].addView(viewPages[a].actionBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
|
|
|
|
viewPages[a].actionBar.setVisibility(View.GONE);
|
|
|
|
|
|
|
|
RecyclerView.OnScrollListener onScrollListener = viewPages[a].listView.getOnScrollListener();
|
|
|
|
viewPages[a].listView.setOnScrollListener(new RecyclerView.OnScrollListener() {
|
|
|
|
@Override
|
|
|
|
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
|
|
|
|
onScrollListener.onScrollStateChanged(recyclerView, newState);
|
|
|
|
if (newState != RecyclerView.SCROLL_STATE_DRAGGING) {
|
|
|
|
int scrollY = (int) -actionBar.getTranslationY();
|
|
|
|
int actionBarHeight = ActionBar.getCurrentActionBarHeight();
|
|
|
|
if (scrollY != 0 && scrollY != actionBarHeight) {
|
|
|
|
if (scrollY < actionBarHeight / 2) {
|
|
|
|
viewPages[0].listView.smoothScrollBy(0, -scrollY);
|
|
|
|
} else {
|
|
|
|
viewPages[0].listView.smoothScrollBy(0, actionBarHeight - scrollY);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
|
|
|
|
onScrollListener.onScrolled(recyclerView, dx, dy);
|
|
|
|
if (recyclerView == viewPages[0].listView) {
|
|
|
|
float currentTranslation = actionBar.getTranslationY();
|
|
|
|
float newTranslation = currentTranslation - dy;
|
|
|
|
if (newTranslation < -ActionBar.getCurrentActionBarHeight()) {
|
|
|
|
newTranslation = -ActionBar.getCurrentActionBarHeight();
|
|
|
|
} else if (newTranslation > 0) {
|
|
|
|
newTranslation = 0;
|
|
|
|
}
|
|
|
|
if (newTranslation != currentTranslation) {
|
|
|
|
setScrollY(newTranslation);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2019-09-10 12:56:11 +02:00
|
|
|
sizeNotifierFrameLayout.addView(actionBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
|
2019-08-22 01:53:26 +02:00
|
|
|
|
2019-09-10 12:56:11 +02:00
|
|
|
sizeNotifierFrameLayout.addView(imagesSearch.shadow, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 3, Gravity.BOTTOM | Gravity.LEFT, 0, 0, 0, 48));
|
|
|
|
sizeNotifierFrameLayout.addView(imagesSearch.frameLayout2, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.BOTTOM));
|
2019-12-31 14:08:08 +01:00
|
|
|
sizeNotifierFrameLayout.addView(imagesSearch.writeButtonContainer, LayoutHelper.createFrame(60, 60, Gravity.RIGHT | Gravity.BOTTOM, 0, 0, 12, 10));
|
|
|
|
sizeNotifierFrameLayout.addView(imagesSearch.selectedCountView, LayoutHelper.createFrame(42, 24, Gravity.RIGHT | Gravity.BOTTOM, 0, 0, -2, 9));
|
2019-08-22 01:53:26 +02:00
|
|
|
|
|
|
|
updateTabs();
|
|
|
|
switchToCurrentSelectedMode(false);
|
|
|
|
swipeBackEnabled = scrollSlidingTextTabStrip.getCurrentTabId() == scrollSlidingTextTabStrip.getFirstTabId();
|
|
|
|
|
|
|
|
return fragmentView;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onResume() {
|
|
|
|
super.onResume();
|
|
|
|
if (searchItem != null) {
|
|
|
|
searchItem.openSearch(true);
|
2020-02-13 19:26:53 +01:00
|
|
|
getParentActivity().getWindow().setSoftInputMode(SharedConfig.smoothKeyboard ? WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN : WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
|
2019-08-22 01:53:26 +02:00
|
|
|
}
|
|
|
|
if (imagesSearch != null) {
|
|
|
|
imagesSearch.onResume();
|
|
|
|
}
|
|
|
|
if (gifsSearch != null) {
|
|
|
|
gifsSearch.onResume();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-09-10 12:56:11 +02:00
|
|
|
public void setCaption(CharSequence text) {
|
|
|
|
if (imagesSearch != null) {
|
|
|
|
imagesSearch.setCaption(text);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-08-22 01:53:26 +02:00
|
|
|
@Override
|
|
|
|
public void onPause() {
|
|
|
|
super.onPause();
|
|
|
|
if (imagesSearch != null) {
|
|
|
|
imagesSearch.onPause();
|
|
|
|
}
|
|
|
|
if (gifsSearch != null) {
|
|
|
|
gifsSearch.onPause();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-02-13 19:26:53 +01:00
|
|
|
@Override
|
|
|
|
public boolean isSwipeBackEnabled(MotionEvent event) {
|
|
|
|
return swipeBackEnabled;
|
|
|
|
}
|
|
|
|
|
2019-08-22 01:53:26 +02:00
|
|
|
@Override
|
|
|
|
public void onFragmentDestroy() {
|
|
|
|
if (imagesSearch != null) {
|
|
|
|
imagesSearch.onFragmentDestroy();
|
|
|
|
}
|
|
|
|
if (gifsSearch != null) {
|
|
|
|
gifsSearch.onFragmentDestroy();
|
|
|
|
}
|
|
|
|
super.onFragmentDestroy();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onConfigurationChanged(android.content.res.Configuration newConfig) {
|
|
|
|
super.onConfigurationChanged(newConfig);
|
|
|
|
if (imagesSearch != null) {
|
|
|
|
imagesSearch.onConfigurationChanged(newConfig);
|
|
|
|
}
|
|
|
|
if (gifsSearch != null) {
|
|
|
|
gifsSearch.onConfigurationChanged(newConfig);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private void setScrollY(float value) {
|
|
|
|
actionBar.setTranslationY(value);
|
|
|
|
for (int a = 0; a < viewPages.length; a++) {
|
|
|
|
viewPages[a].listView.setPinnedSectionOffsetY((int) value);
|
|
|
|
}
|
|
|
|
fragmentView.invalidate();
|
|
|
|
}
|
|
|
|
|
2019-12-31 14:08:08 +01:00
|
|
|
private void searchText(String text) {
|
|
|
|
searchItem.getSearchField().setText(text);
|
|
|
|
searchItem.getSearchField().setSelection(text.length());
|
|
|
|
actionBar.onSearchPressed();
|
|
|
|
}
|
|
|
|
|
2019-08-22 01:53:26 +02:00
|
|
|
public void setDelegate(PhotoPickerActivity.PhotoPickerActivityDelegate delegate) {
|
|
|
|
imagesSearch.setDelegate(delegate);
|
|
|
|
gifsSearch.setDelegate(delegate);
|
2019-12-31 14:08:08 +01:00
|
|
|
imagesSearch.setSearchDelegate(new PhotoPickerActivity.PhotoPickerActivitySearchDelegate() {
|
|
|
|
@Override
|
|
|
|
public void shouldSearchText(String text) {
|
|
|
|
searchText(text);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void shouldClearRecentSearch() {
|
|
|
|
imagesSearch.clearRecentSearch();
|
|
|
|
gifsSearch.clearRecentSearch();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
gifsSearch.setSearchDelegate(new PhotoPickerActivity.PhotoPickerActivitySearchDelegate() {
|
|
|
|
@Override
|
|
|
|
public void shouldSearchText(String text) {
|
|
|
|
searchText(text);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void shouldClearRecentSearch() {
|
|
|
|
imagesSearch.clearRecentSearch();
|
|
|
|
gifsSearch.clearRecentSearch();
|
|
|
|
}
|
|
|
|
});
|
2019-08-22 01:53:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setMaxSelectedPhotos(int value, boolean order) {
|
|
|
|
imagesSearch.setMaxSelectedPhotos(value, order);
|
|
|
|
gifsSearch.setMaxSelectedPhotos(value, order);
|
|
|
|
}
|
|
|
|
|
|
|
|
private void updateTabs() {
|
|
|
|
if (scrollSlidingTextTabStrip == null) {
|
|
|
|
return;
|
|
|
|
}
|
2020-02-13 19:26:53 +01:00
|
|
|
scrollSlidingTextTabStrip.addTextTab(0, LocaleController.getString("ImagesTab2", R.string.ImagesTab2));
|
|
|
|
scrollSlidingTextTabStrip.addTextTab(1, LocaleController.getString("GifsTab2", R.string.GifsTab2));
|
2019-08-22 01:53:26 +02:00
|
|
|
scrollSlidingTextTabStrip.setVisibility(View.VISIBLE);
|
|
|
|
actionBar.setExtraHeight(AndroidUtilities.dp(44));
|
|
|
|
int id = scrollSlidingTextTabStrip.getCurrentTabId();
|
|
|
|
if (id >= 0) {
|
|
|
|
viewPages[0].selectedType = id;
|
|
|
|
}
|
|
|
|
scrollSlidingTextTabStrip.finishAddingTabs();
|
|
|
|
}
|
|
|
|
|
|
|
|
private void switchToCurrentSelectedMode(boolean animated) {
|
|
|
|
for (int a = 0; a < viewPages.length; a++) {
|
|
|
|
viewPages[a].listView.stopScroll();
|
|
|
|
}
|
|
|
|
int a = animated ? 1 : 0;
|
|
|
|
RecyclerView.Adapter currentAdapter = viewPages[a].listView.getAdapter();
|
|
|
|
viewPages[a].listView.setPinnedHeaderShadowDrawable(null);
|
|
|
|
if (actionBar.getTranslationY() != 0) {
|
|
|
|
LinearLayoutManager layoutManager = (LinearLayoutManager) viewPages[a].listView.getLayoutManager();
|
|
|
|
layoutManager.scrollToPositionWithOffset(0, (int) actionBar.getTranslationY());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2020-04-24 11:21:58 +02:00
|
|
|
public ArrayList<ThemeDescription> getThemeDescriptions() {
|
2019-08-22 01:53:26 +02:00
|
|
|
ArrayList<ThemeDescription> arrayList = new ArrayList<>();
|
|
|
|
|
|
|
|
arrayList.add(new ThemeDescription(fragmentView, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_dialogBackground));
|
|
|
|
arrayList.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_dialogBackground));
|
|
|
|
arrayList.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_ITEMSCOLOR, null, null, null, null, Theme.key_dialogTextBlack));
|
|
|
|
arrayList.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_TITLECOLOR, null, null, null, null, Theme.key_dialogTextBlack));
|
|
|
|
arrayList.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_SELECTORCOLOR, null, null, null, null, Theme.key_dialogButtonSelector));
|
|
|
|
arrayList.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_SEARCH, null, null, null, null, Theme.key_dialogTextBlack));
|
|
|
|
arrayList.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_SEARCHPLACEHOLDER, null, null, null, null, Theme.key_chat_messagePanelHint));
|
|
|
|
arrayList.add(new ThemeDescription(searchItem.getSearchField(), ThemeDescription.FLAG_CURSORCOLOR, null, null, null, null, Theme.key_dialogTextBlack));
|
|
|
|
|
|
|
|
arrayList.add(new ThemeDescription(scrollSlidingTextTabStrip.getTabsContainer(), ThemeDescription.FLAG_TEXTCOLOR | ThemeDescription.FLAG_CHECKTAG, new Class[]{TextView.class}, null, null, null, Theme.key_chat_attachActiveTab));
|
|
|
|
arrayList.add(new ThemeDescription(scrollSlidingTextTabStrip.getTabsContainer(), ThemeDescription.FLAG_TEXTCOLOR | ThemeDescription.FLAG_CHECKTAG, new Class[]{TextView.class}, null, null, null, Theme.key_chat_attachUnactiveTab));
|
|
|
|
arrayList.add(new ThemeDescription(scrollSlidingTextTabStrip.getTabsContainer(), ThemeDescription.FLAG_BACKGROUNDFILTER | ThemeDescription.FLAG_DRAWABLESELECTEDSTATE, new Class[]{TextView.class}, null, null, null, Theme.key_dialogButtonSelector));
|
|
|
|
arrayList.add(new ThemeDescription(null, 0, null, null, new Drawable[]{scrollSlidingTextTabStrip.getSelectorDrawable()}, null, Theme.key_chat_attachActiveTab));
|
|
|
|
|
2020-04-24 11:21:58 +02:00
|
|
|
arrayList.addAll(imagesSearch.getThemeDescriptions());
|
|
|
|
arrayList.addAll(gifsSearch.getThemeDescriptions());
|
2019-08-22 01:53:26 +02:00
|
|
|
|
2020-04-24 11:21:58 +02:00
|
|
|
return arrayList;
|
2019-08-22 01:53:26 +02:00
|
|
|
}
|
|
|
|
}
|