NekoX/TMessagesProj/src/main/java/org/telegram/ui/Components/FlickerLoadingView.java

508 lines
23 KiB
Java
Raw Normal View History

2020-10-30 11:26:29 +01:00
package org.telegram.ui.Components;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Shader;
import android.os.SystemClock;
import android.view.View;
import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.LocaleController;
2021-01-28 15:15:51 +01:00
import org.telegram.messenger.SharedConfig;
2020-10-30 11:26:29 +01:00
import org.telegram.ui.ActionBar.Theme;
2021-06-25 02:43:10 +02:00
import java.util.Random;
2020-10-30 11:26:29 +01:00
public class FlickerLoadingView extends View {
public final static int DIALOG_TYPE = 1;
public final static int PHOTOS_TYPE = 2;
public final static int FILES_TYPE = 3;
public final static int AUDIO_TYPE = 4;
public final static int LINKS_TYPE = 5;
2020-12-23 08:48:30 +01:00
public final static int USERS_TYPE = 6;
2021-01-28 15:15:51 +01:00
public final static int DIALOG_CELL_TYPE = 7;
public final static int CALL_LOG_TYPE = 8;
public final static int INVITE_LINKS_TYPE = 9;
public final static int USERS2_TYPE = 10;
2021-06-25 02:43:10 +02:00
public final static int BOTS_MENU_TYPE = 11;
2021-07-15 16:24:57 +02:00
public final static int SHARE_ALERT_TYPE = 12;
2020-10-30 11:26:29 +01:00
2020-12-23 08:48:30 +01:00
private int gradientWidth;
private LinearGradient gradient;
private Paint paint = new Paint();
private Paint headerPaint = new Paint();
2020-10-30 11:26:29 +01:00
private long lastUpdateTime;
private int totalTranslation;
private Matrix matrix;
2020-12-23 08:48:30 +01:00
private RectF rectF = new RectF();
private int color0;
private int color1;
private int skipDrawItemsCount;
2020-10-30 11:26:29 +01:00
2020-12-23 08:48:30 +01:00
private boolean showDate = true;
private boolean useHeaderOffset;
2020-10-30 11:26:29 +01:00
private boolean isSingleCell;
2020-12-23 08:48:30 +01:00
private int viewType;
2021-01-28 15:15:51 +01:00
private int paddingTop;
private int paddingLeft;
2020-12-23 08:48:30 +01:00
private String colorKey1 = Theme.key_windowBackgroundWhite;
private String colorKey2 = Theme.key_windowBackgroundGray;
private String colorKey3;
2021-01-28 15:15:51 +01:00
private int itemsCount = 1;
2020-10-30 11:26:29 +01:00
2021-06-25 02:43:10 +02:00
float[] randomParams;
2020-10-30 11:26:29 +01:00
public void setViewType(int type) {
this.viewType = type;
2021-06-25 02:43:10 +02:00
if (viewType == BOTS_MENU_TYPE) {
Random random = new Random();
randomParams = new float[2];
for (int i = 0; i < 2; i++) {
randomParams[i] = Math.abs(random.nextInt() % 1000) / 1000f;
}
}
2020-10-30 11:26:29 +01:00
invalidate();
}
public void setIsSingleCell(boolean b) {
isSingleCell = b;
}
public int getViewType() {
return viewType;
}
public int getColumnsCount() {
return 2;
}
2020-12-23 08:48:30 +01:00
public void setColors(String key1, String key2, String key3) {
colorKey1 = key1;
colorKey2 = key2;
colorKey3 = key3;
invalidate();
}
2020-10-30 11:26:29 +01:00
public FlickerLoadingView(Context context) {
super(context);
matrix = new Matrix();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (isSingleCell) {
2021-01-28 15:15:51 +01:00
if (itemsCount > 1 && MeasureSpec.getSize(heightMeasureSpec) > 0) {
super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(Math.min(MeasureSpec.getSize(heightMeasureSpec), getCellHeight(MeasureSpec.getSize(widthMeasureSpec)) * itemsCount), MeasureSpec.EXACTLY));
} else {
super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(getCellHeight(MeasureSpec.getSize(widthMeasureSpec)), MeasureSpec.EXACTLY));
}
2020-10-30 11:26:29 +01:00
} else {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
@Override
protected void onDraw(Canvas canvas) {
2020-12-23 08:48:30 +01:00
int color0 = Theme.getColor(colorKey1);
int color1 = Theme.getColor(colorKey2);
2020-10-30 11:26:29 +01:00
if (this.color1 != color1 || this.color0 != color0) {
this.color0 = color0;
this.color1 = color1;
if (isSingleCell) {
gradient = new LinearGradient(0, 0, gradientWidth = AndroidUtilities.dp(200), 0, new int[]{color1, color0, color0, color1}, new float[]{0.0f, 0.4f, 0.6f, 1f}, Shader.TileMode.CLAMP);
} else {
gradient = new LinearGradient(0, 0, 0, gradientWidth = AndroidUtilities.dp(600), new int[]{color1, color0, color0, color1}, new float[]{0.0f, 0.4f, 0.6f, 1f}, Shader.TileMode.CLAMP);
}
paint.setShader(gradient);
}
2020-12-23 08:48:30 +01:00
2021-01-28 15:15:51 +01:00
int h = paddingTop;
2020-12-23 08:48:30 +01:00
if (useHeaderOffset) {
h += AndroidUtilities.dp(32);
if (colorKey3 != null) {
headerPaint.setColor(Theme.getColor(colorKey3));
}
canvas.drawRect(0,0, getMeasuredWidth(), AndroidUtilities.dp(32), colorKey3 != null ? headerPaint : paint);
}
2021-01-28 15:15:51 +01:00
if (getViewType() == DIALOG_CELL_TYPE) {
int k = 0;
while (h <= getMeasuredHeight()) {
int childH = getCellHeight(getMeasuredWidth());
int r = AndroidUtilities.dp(28);
canvas.drawCircle(checkRtl(AndroidUtilities.dp(10) + r), h + (childH >> 1), r, paint);
rectF.set(AndroidUtilities.dp(76), h + AndroidUtilities.dp(16), AndroidUtilities.dp(148), h + AndroidUtilities.dp(24));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
rectF.set(AndroidUtilities.dp(76), h + AndroidUtilities.dp(38), AndroidUtilities.dp(268), h + AndroidUtilities.dp(46));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
if (SharedConfig.useThreeLinesLayout) {
rectF.set(AndroidUtilities.dp(76), h + AndroidUtilities.dp(46 + 8), AndroidUtilities.dp(220), h + AndroidUtilities.dp(46 + 8 + 8));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
}
if (showDate) {
rectF.set(getMeasuredWidth() - AndroidUtilities.dp(50), h + AndroidUtilities.dp(16), getMeasuredWidth() - AndroidUtilities.dp(12), h + AndroidUtilities.dp(24));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
}
h += getCellHeight(getMeasuredWidth());
k++;
if (isSingleCell && k >= itemsCount) {
break;
}
}
} else if (getViewType() == DIALOG_TYPE) {
int k = 0;
while (h <= getMeasuredHeight()) {
2020-10-30 11:26:29 +01:00
int r = AndroidUtilities.dp(25);
canvas.drawCircle(checkRtl(AndroidUtilities.dp(9) + r), h + (AndroidUtilities.dp(78) >> 1), r, paint);
rectF.set(AndroidUtilities.dp(68), h + AndroidUtilities.dp(20), AndroidUtilities.dp(140), h + AndroidUtilities.dp(28));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
rectF.set(AndroidUtilities.dp(68), h + AndroidUtilities.dp(42), AndroidUtilities.dp(260), h + AndroidUtilities.dp(50));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
if (showDate) {
rectF.set(getMeasuredWidth() - AndroidUtilities.dp(50), h + AndroidUtilities.dp(20), getMeasuredWidth() - AndroidUtilities.dp(12), h + AndroidUtilities.dp(28));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
}
2020-12-23 08:48:30 +01:00
h += getCellHeight(getMeasuredWidth());
2021-01-28 15:15:51 +01:00
k++;
if (isSingleCell && k >= itemsCount) {
2020-10-30 11:26:29 +01:00
break;
}
}
} else if (getViewType() == PHOTOS_TYPE) {
int photoWidth = (getMeasuredWidth() - (AndroidUtilities.dp(2) * (getColumnsCount() - 1))) / getColumnsCount();
2020-12-23 08:48:30 +01:00
int k = 0;
while (h < getMeasuredHeight() || isSingleCell) {
2020-10-30 11:26:29 +01:00
for (int i = 0; i < getColumnsCount(); i++) {
2020-12-23 08:48:30 +01:00
if (k == 0 && i < skipDrawItemsCount) {
continue;
}
2020-10-30 11:26:29 +01:00
int x = i * (photoWidth + AndroidUtilities.dp(2));
canvas.drawRect(x, h, x + photoWidth, h + photoWidth, paint);
}
h += photoWidth + AndroidUtilities.dp(2);
2020-12-23 08:48:30 +01:00
k++;
if (isSingleCell && k >= 2) {
2020-10-30 11:26:29 +01:00
break;
}
}
} else if (getViewType() == 3) {
2021-01-28 15:15:51 +01:00
int k = 0;
while (h <= getMeasuredHeight()) {
2020-10-30 11:26:29 +01:00
rectF.set(AndroidUtilities.dp(12), h + AndroidUtilities.dp(8), AndroidUtilities.dp(52), h + AndroidUtilities.dp(48));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
rectF.set(AndroidUtilities.dp(68), h + AndroidUtilities.dp(12), AndroidUtilities.dp(140), h + AndroidUtilities.dp(20));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
rectF.set(AndroidUtilities.dp(68), h + AndroidUtilities.dp(34), AndroidUtilities.dp(260), h + AndroidUtilities.dp(42));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
if (showDate) {
rectF.set(getMeasuredWidth() - AndroidUtilities.dp(50), h + AndroidUtilities.dp(12), getMeasuredWidth() - AndroidUtilities.dp(12), h + AndroidUtilities.dp(20));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
}
2020-12-23 08:48:30 +01:00
h += getCellHeight(getMeasuredWidth());
2021-01-28 15:15:51 +01:00
k++;
if (isSingleCell && k >= itemsCount) {
2020-10-30 11:26:29 +01:00
break;
}
}
} else if (getViewType() == 4) {
2021-01-28 15:15:51 +01:00
int k = 0;
while (h <= getMeasuredHeight()) {
2020-10-30 11:26:29 +01:00
int radius = AndroidUtilities.dp(44) >> 1;
canvas.drawCircle(checkRtl(AndroidUtilities.dp(12) + radius), h + AndroidUtilities.dp(6) + radius, radius, paint);
rectF.set(AndroidUtilities.dp(68), h + AndroidUtilities.dp(12), AndroidUtilities.dp(140), h + AndroidUtilities.dp(20));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
rectF.set(AndroidUtilities.dp(68), h + AndroidUtilities.dp(34), AndroidUtilities.dp(260), h + AndroidUtilities.dp(42));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
if (showDate) {
rectF.set(getMeasuredWidth() - AndroidUtilities.dp(50), h + AndroidUtilities.dp(12), getMeasuredWidth() - AndroidUtilities.dp(12), h + AndroidUtilities.dp(20));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
}
2020-12-23 08:48:30 +01:00
h += getCellHeight(getMeasuredWidth());
2021-01-28 15:15:51 +01:00
k++;
if (isSingleCell && k >= itemsCount) {
2020-10-30 11:26:29 +01:00
break;
}
}
} else if (getViewType() == 5) {
2021-01-28 15:15:51 +01:00
int k = 0;
while (h <= getMeasuredHeight()) {
2020-10-30 11:26:29 +01:00
rectF.set(AndroidUtilities.dp(10), h + AndroidUtilities.dp(11), AndroidUtilities.dp(62), h + AndroidUtilities.dp(11 + 52));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
rectF.set(AndroidUtilities.dp(68), h + AndroidUtilities.dp(12), AndroidUtilities.dp(140), h + AndroidUtilities.dp(20));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
rectF.set(AndroidUtilities.dp(68), h + AndroidUtilities.dp(34), AndroidUtilities.dp(268), h + AndroidUtilities.dp(42));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
rectF.set(AndroidUtilities.dp(68), h + AndroidUtilities.dp(34 + 20), AndroidUtilities.dp(120 + 68), h + AndroidUtilities.dp(42 + 20));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
if (showDate) {
rectF.set(getMeasuredWidth() - AndroidUtilities.dp(50), h + AndroidUtilities.dp(12), getMeasuredWidth() - AndroidUtilities.dp(12), h + AndroidUtilities.dp(20));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
}
2020-12-23 08:48:30 +01:00
h += getCellHeight(getMeasuredWidth());
2021-01-28 15:15:51 +01:00
k++;
if (isSingleCell && k >= itemsCount) {
break;
}
}
} else if (getViewType() == 6 || getViewType() == USERS2_TYPE) {
int k = 0;
while (h <= getMeasuredHeight()) {
int r = AndroidUtilities.dp(23);
canvas.drawCircle(checkRtl(paddingLeft + AndroidUtilities.dp(9) + r), h + (AndroidUtilities.dp(64) >> 1), r, paint);
rectF.set(paddingLeft + AndroidUtilities.dp(68), h + AndroidUtilities.dp(17), paddingLeft + AndroidUtilities.dp(260), h + AndroidUtilities.dp(25));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
rectF.set(paddingLeft + AndroidUtilities.dp(68), h + AndroidUtilities.dp(39), paddingLeft + AndroidUtilities.dp(140), h + AndroidUtilities.dp(47));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
if (showDate) {
rectF.set(getMeasuredWidth() - AndroidUtilities.dp(50), h + AndroidUtilities.dp(20), getMeasuredWidth() - AndroidUtilities.dp(12), h + AndroidUtilities.dp(28));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
}
h += getCellHeight(getMeasuredWidth());
k++;
if (isSingleCell && k >= itemsCount) {
2020-12-23 08:48:30 +01:00
break;
}
}
2021-01-28 15:15:51 +01:00
} else if (getViewType() == CALL_LOG_TYPE) {
int k = 0;
while (h <= getMeasuredHeight()) {
2020-12-23 08:48:30 +01:00
int r = AndroidUtilities.dp(23);
2021-01-28 15:15:51 +01:00
canvas.drawCircle(checkRtl(paddingLeft + AndroidUtilities.dp(11) + r), h + (AndroidUtilities.dp(64) >> 1), r, paint);
2020-12-23 08:48:30 +01:00
2021-01-28 15:15:51 +01:00
rectF.set(paddingLeft + AndroidUtilities.dp(68), h + AndroidUtilities.dp(17), paddingLeft + AndroidUtilities.dp(140), h + AndroidUtilities.dp(25));
2020-12-23 08:48:30 +01:00
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
2021-01-28 15:15:51 +01:00
rectF.set(paddingLeft + AndroidUtilities.dp(68), h + AndroidUtilities.dp(39), paddingLeft + AndroidUtilities.dp(260), h + AndroidUtilities.dp(47));
2020-12-23 08:48:30 +01:00
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
if (showDate) {
rectF.set(getMeasuredWidth() - AndroidUtilities.dp(50), h + AndroidUtilities.dp(20), getMeasuredWidth() - AndroidUtilities.dp(12), h + AndroidUtilities.dp(28));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
}
h += getCellHeight(getMeasuredWidth());
2021-01-28 15:15:51 +01:00
k++;
if (isSingleCell && k >= itemsCount) {
break;
}
}
} else if (getViewType() == INVITE_LINKS_TYPE) {
int k = 0;
while (h <= getMeasuredHeight()) {
int childH = getCellHeight(getMeasuredWidth());
int r = AndroidUtilities.dp(32) / 2;
canvas.drawCircle(checkRtl(AndroidUtilities.dp(35)), h + (childH >> 1), r, paint);
rectF.set(AndroidUtilities.dp(72), h + AndroidUtilities.dp(16), AndroidUtilities.dp(268), h + AndroidUtilities.dp(24));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
rectF.set(AndroidUtilities.dp(72), h + AndroidUtilities.dp(38), AndroidUtilities.dp(140), h + AndroidUtilities.dp(46));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
if (showDate) {
rectF.set(getMeasuredWidth() - AndroidUtilities.dp(50), h + AndroidUtilities.dp(16), getMeasuredWidth() - AndroidUtilities.dp(12), h + AndroidUtilities.dp(24));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
}
2021-06-25 02:43:10 +02:00
h += getCellHeight(getMeasuredWidth());
k++;
if (isSingleCell && k >= itemsCount) {
break;
}
}
} else if (getViewType() == BOTS_MENU_TYPE) {
int k = 0;
while (h <= getMeasuredHeight()) {
rectF.set(AndroidUtilities.dp(18), AndroidUtilities.dp((36 - 8) / 2f), getMeasuredWidth() * 0.5f + AndroidUtilities.dp(40 * randomParams[0]), AndroidUtilities.dp((36 - 8) / 2f) + AndroidUtilities.dp(8));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
rectF.set(getMeasuredWidth() - AndroidUtilities.dp(18), AndroidUtilities.dp((36 - 8) / 2f), getMeasuredWidth() - getMeasuredWidth() * 0.2f -AndroidUtilities.dp(20 * randomParams[0]), AndroidUtilities.dp((36 - 8) / 2f) + AndroidUtilities.dp(8));
checkRtl(rectF);
canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
// rectF.set(AndroidUtilities.dp(), AndroidUtilities.dp((36 - 8) / 2), AndroidUtilities.dp(268), AndroidUtilities.dp((36 - 8) / 2) + AndroidUtilities.dp(8));
// checkRtl(rectF);
// canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
2021-01-28 15:15:51 +01:00
h += getCellHeight(getMeasuredWidth());
k++;
if (isSingleCell && k >= itemsCount) {
2020-10-30 11:26:29 +01:00
break;
}
}
2021-07-15 16:24:57 +02:00
} else if (getViewType() == SHARE_ALERT_TYPE) {
int k = 0;
h += AndroidUtilities.dp(14);
while (h <= getMeasuredHeight()) {
int part = getMeasuredWidth() / 4;
for (int i = 0; i < 4; i++) {
float cx = part * i + part / 2f;
float cy = h + AndroidUtilities.dp(7) + AndroidUtilities.dp(56) / 2f;
canvas.drawCircle(cx, cy, AndroidUtilities.dp(56 / 2f), paint);
float y = h + AndroidUtilities.dp(7) + AndroidUtilities.dp(56) + AndroidUtilities.dp(16);
AndroidUtilities.rectTmp.set(cx - AndroidUtilities.dp(24), y - AndroidUtilities.dp(4), cx + AndroidUtilities.dp(24), y + AndroidUtilities.dp(4));
canvas.drawRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint);
}
h += getCellHeight(getMeasuredWidth());
k++;
if (isSingleCell) {
break;
}
}
2020-10-30 11:26:29 +01:00
}
long newUpdateTime = SystemClock.elapsedRealtime();
long dt = Math.abs(lastUpdateTime - newUpdateTime);
if (dt > 17) {
dt = 16;
}
lastUpdateTime = newUpdateTime;
if (isSingleCell) {
totalTranslation += dt * getMeasuredWidth() / 400.0f;
if (totalTranslation >= getMeasuredWidth() * 2) {
totalTranslation = -gradientWidth * 2;
}
matrix.setTranslate(totalTranslation, 0);
} else {
totalTranslation += dt * getMeasuredHeight() / 400.0f;
if (totalTranslation >= getMeasuredHeight() * 2) {
totalTranslation = -gradientWidth * 2;
}
matrix.setTranslate(0, totalTranslation);
}
gradient.setLocalMatrix(matrix);
invalidate();
}
private float checkRtl(float x) {
if (LocaleController.isRTL) {
return getMeasuredWidth() - x;
}
return x;
}
private void checkRtl(RectF rectF) {
if (LocaleController.isRTL) {
rectF.left = getMeasuredWidth() - rectF.left;
rectF.right = getMeasuredWidth() - rectF.right;
}
}
2020-12-23 08:48:30 +01:00
private int getCellHeight(int width) {
2021-01-28 15:15:51 +01:00
if (getViewType() == DIALOG_CELL_TYPE) {
return AndroidUtilities.dp((SharedConfig.useThreeLinesLayout ? 78 : 72) + 1);
} else if (getViewType() == DIALOG_TYPE) {
2020-10-30 11:26:29 +01:00
return AndroidUtilities.dp(78) + 1;
} else if (getViewType() == PHOTOS_TYPE) {
2020-12-23 08:48:30 +01:00
int photoWidth = (width - (AndroidUtilities.dp(2) * (getColumnsCount() - 1))) / getColumnsCount();
2020-10-30 11:26:29 +01:00
return photoWidth + AndroidUtilities.dp(2);
} else if (getViewType() == 3) {
return AndroidUtilities.dp(56) + 1;
} else if (getViewType() == 4) {
return AndroidUtilities.dp(56) + 1;
} else if (getViewType() == 5) {
return AndroidUtilities.dp(80);
2020-12-23 08:48:30 +01:00
} else if (getViewType() == USERS_TYPE) {
return AndroidUtilities.dp(64);
2021-01-28 15:15:51 +01:00
} else if (getViewType() == INVITE_LINKS_TYPE) {
return AndroidUtilities.dp(66);
} else if (getViewType() == USERS2_TYPE) {
return AndroidUtilities.dp(58);
} else if (getViewType() == CALL_LOG_TYPE) {
return AndroidUtilities.dp(61);
2021-06-25 02:43:10 +02:00
} else if (getViewType() == BOTS_MENU_TYPE) {
return AndroidUtilities.dp(36);
2021-07-15 16:24:57 +02:00
} else if (getViewType() == SHARE_ALERT_TYPE) {
return AndroidUtilities.dp(103);
2020-10-30 11:26:29 +01:00
}
return 0;
}
public void showDate(boolean showDate) {
this.showDate = showDate;
}
2020-12-23 08:48:30 +01:00
public void setUseHeaderOffset(boolean useHeaderOffset) {
this.useHeaderOffset = useHeaderOffset;
}
public void skipDrawItemsCount(int i) {
skipDrawItemsCount = i;
}
2021-01-28 15:15:51 +01:00
public void setPaddingTop(int t) {
paddingTop = t;
invalidate();
}
public void setPaddingLeft(int paddingLeft) {
this.paddingLeft = paddingLeft;
invalidate();
}
public void setItemsCount(int i) {
this.itemsCount = i;
}
2020-10-30 11:26:29 +01:00
}