mirror of
https://github.com/DrKLO/Telegram.git
synced 2024-12-22 06:25:14 +01:00
Update to 7.1.0 (2092)
This commit is contained in:
parent
1139e12ef1
commit
2eeca37bb4
21 changed files with 185 additions and 114 deletions
|
@ -284,7 +284,7 @@ android {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultConfig.versionCode = 2090
|
defaultConfig.versionCode = 2092
|
||||||
|
|
||||||
applicationVariants.all { variant ->
|
applicationVariants.all { variant ->
|
||||||
variant.outputs.all { output ->
|
variant.outputs.all { output ->
|
||||||
|
|
|
@ -288,7 +288,7 @@ public class AndroidUtilities {
|
||||||
x = staticLayout.getPrimaryHorizontal(startHighlightedIndex + 1) - availableWidth * 0.3f;
|
x = staticLayout.getPrimaryHorizontal(startHighlightedIndex + 1) - availableWidth * 0.3f;
|
||||||
sub = str.subSequence(staticLayout.getOffsetForHorizontal(0, x), str.length());
|
sub = str.subSequence(staticLayout.getOffsetForHorizontal(0, x), str.length());
|
||||||
} else {
|
} else {
|
||||||
if (Character.isWhitespace(str.charAt(charOf))) {
|
if (charOf > 0 && charOf < str.length() - 1 && Character.isWhitespace(str.charAt(charOf))) {
|
||||||
charOf--;
|
charOf--;
|
||||||
}
|
}
|
||||||
sub = str.subSequence(charOf, str.length());
|
sub = str.subSequence(charOf, str.length());
|
||||||
|
|
|
@ -18,7 +18,7 @@ public class BuildVars {
|
||||||
public static boolean LOGS_ENABLED = false;
|
public static boolean LOGS_ENABLED = false;
|
||||||
public static boolean USE_CLOUD_STRINGS = true;
|
public static boolean USE_CLOUD_STRINGS = true;
|
||||||
public static boolean CHECK_UPDATES = true;
|
public static boolean CHECK_UPDATES = true;
|
||||||
public static int BUILD_VERSION = 2090;
|
public static int BUILD_VERSION = 2092;
|
||||||
public static String BUILD_VERSION_STRING = "7.1.0";
|
public static String BUILD_VERSION_STRING = "7.1.0";
|
||||||
public static int APP_ID = 4;
|
public static int APP_ID = 4;
|
||||||
public static String APP_HASH = "014b35b6184100b085b0d0572f9b5103";
|
public static String APP_HASH = "014b35b6184100b085b0d0572f9b5103";
|
||||||
|
|
|
@ -1951,7 +1951,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
|
||||||
loadingPlaylist = true;
|
loadingPlaylist = true;
|
||||||
ConnectionsManager.getInstance(currentAccount).sendRequest(request, (response, error) -> {
|
ConnectionsManager.getInstance(currentAccount).sendRequest(request, (response, error) -> {
|
||||||
AndroidUtilities.runOnUIThread(() -> {
|
AndroidUtilities.runOnUIThread(() -> {
|
||||||
if (playlistClassGuid != finalPlaylistGuid || playlistGlobalSearchParams == null) {
|
if (playlistClassGuid != finalPlaylistGuid || playlistGlobalSearchParams == null || playingMessageObject == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (error != null) {
|
if (error != null) {
|
||||||
|
|
|
@ -5580,10 +5580,10 @@ public class MessageObject {
|
||||||
if (startIndex < 0) {
|
if (startIndex < 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
int l = Math.max(currentQuery.length(), word.length());
|
||||||
if (startIndex != 0) {
|
if (startIndex != 0) {
|
||||||
word = word.substring(startIndex);
|
word = word.substring(startIndex);
|
||||||
}
|
}
|
||||||
int l = Math.max(currentQuery.length(), word.length());
|
|
||||||
int min = Math.min(currentQuery.length(), word.length());
|
int min = Math.min(currentQuery.length(), word.length());
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (int j = 0; j < min; j++) {
|
for (int j = 0; j < min; j++) {
|
||||||
|
|
|
@ -10771,7 +10771,7 @@ public class MessagesStorage extends BaseController {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void localSearch(int dialogsType, String query, ArrayList<TLObject> resultArray, ArrayList<CharSequence> resultArrayNames, ArrayList<TLRPC.User> encUsers) {
|
public void localSearch(int dialogsType, String query, ArrayList<TLObject> resultArray, ArrayList<CharSequence> resultArrayNames, ArrayList<TLRPC.User> encUsers, int folderId) {
|
||||||
int selfUserId = UserConfig.getInstance(currentAccount).getClientUserId();
|
int selfUserId = UserConfig.getInstance(currentAccount).getClientUserId();
|
||||||
try {
|
try {
|
||||||
String savedMessages = LocaleController.getString("SavedMessages", R.string.SavedMessages).toLowerCase();
|
String savedMessages = LocaleController.getString("SavedMessages", R.string.SavedMessages).toLowerCase();
|
||||||
|
@ -10792,7 +10792,12 @@ public class MessagesStorage extends BaseController {
|
||||||
int resultCount = 0;
|
int resultCount = 0;
|
||||||
|
|
||||||
LongSparseArray<DialogsSearchAdapter.DialogSearchResult> dialogsResult = new LongSparseArray<>();
|
LongSparseArray<DialogsSearchAdapter.DialogSearchResult> dialogsResult = new LongSparseArray<>();
|
||||||
SQLiteCursor cursor = getDatabase().queryFinalized("SELECT did, date FROM dialogs ORDER BY date DESC LIMIT 600");
|
SQLiteCursor cursor = null;
|
||||||
|
if (folderId >= 0) {
|
||||||
|
cursor = getDatabase().queryFinalized("SELECT did, date FROM dialogs WHERE folder_id = ? ORDER BY date DESC LIMIT 600", folderId);
|
||||||
|
} else {
|
||||||
|
cursor = getDatabase().queryFinalized("SELECT did, date FROM dialogs ORDER BY date DESC LIMIT 600");
|
||||||
|
}
|
||||||
while (cursor.next()) {
|
while (cursor.next()) {
|
||||||
long id = cursor.longValue(0);
|
long id = cursor.longValue(0);
|
||||||
DialogsSearchAdapter.DialogSearchResult dialogSearchResult = new DialogsSearchAdapter.DialogSearchResult();
|
DialogsSearchAdapter.DialogSearchResult dialogSearchResult = new DialogsSearchAdapter.DialogSearchResult();
|
||||||
|
|
|
@ -1384,9 +1384,8 @@ public class NotificationsController extends BaseController {
|
||||||
return messageObject.messageOwner.message;
|
return messageObject.messageOwner.message;
|
||||||
}
|
}
|
||||||
if (fromId == 0) {
|
if (fromId == 0) {
|
||||||
if (messageObject.isFromUser() || messageObject.getId() < 0) {
|
fromId = messageObject.getFromChatId();
|
||||||
fromId = messageObject.getFromChatId();
|
if (fromId == 0) {
|
||||||
} else {
|
|
||||||
fromId = -chat_id;
|
fromId = -chat_id;
|
||||||
}
|
}
|
||||||
} else if (fromId == getUserConfig().getClientUserId()) {
|
} else if (fromId == getUserConfig().getClientUserId()) {
|
||||||
|
@ -1823,9 +1822,8 @@ public class NotificationsController extends BaseController {
|
||||||
}
|
}
|
||||||
int selfUsedId = getUserConfig().getClientUserId();
|
int selfUsedId = getUserConfig().getClientUserId();
|
||||||
if (from_id == 0) {
|
if (from_id == 0) {
|
||||||
if (messageObject.isFromUser() || messageObject.getId() < 0) {
|
from_id = messageObject.getFromChatId();
|
||||||
from_id = messageObject.getFromChatId();
|
if (from_id == 0) {
|
||||||
} else {
|
|
||||||
from_id = -chat_id;
|
from_id = -chat_id;
|
||||||
}
|
}
|
||||||
} else if (from_id == selfUsedId) {
|
} else if (from_id == selfUsedId) {
|
||||||
|
|
|
@ -102,7 +102,7 @@ public class ActionBar extends FrameLayout {
|
||||||
protected BaseFragment parentFragment;
|
protected BaseFragment parentFragment;
|
||||||
public ActionBarMenuOnItemClick actionBarMenuOnItemClick;
|
public ActionBarMenuOnItemClick actionBarMenuOnItemClick;
|
||||||
private int titleColorToSet = 0;
|
private int titleColorToSet = 0;
|
||||||
private boolean ovelayTitleAnimation = true;
|
private boolean overlayTitleAnimation;
|
||||||
private boolean titleAnimationRunning;
|
private boolean titleAnimationRunning;
|
||||||
private boolean fromBottom;
|
private boolean fromBottom;
|
||||||
|
|
||||||
|
@ -285,6 +285,7 @@ public class ActionBar extends FrameLayout {
|
||||||
}
|
}
|
||||||
if (subtitleTextView != null) {
|
if (subtitleTextView != null) {
|
||||||
subtitleTextView.setVisibility(!TextUtils.isEmpty(value) && !isSearchFieldVisible ? VISIBLE : GONE);
|
subtitleTextView.setVisibility(!TextUtils.isEmpty(value) && !isSearchFieldVisible ? VISIBLE : GONE);
|
||||||
|
subtitleTextView.setAlpha(1f);
|
||||||
subtitleTextView.setText(value);
|
subtitleTextView.setText(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -317,6 +318,7 @@ public class ActionBar extends FrameLayout {
|
||||||
titleTextView[0].setVisibility(value != null && !isSearchFieldVisible ? VISIBLE : INVISIBLE);
|
titleTextView[0].setVisibility(value != null && !isSearchFieldVisible ? VISIBLE : INVISIBLE);
|
||||||
titleTextView[0].setText(value);
|
titleTextView[0].setText(value);
|
||||||
}
|
}
|
||||||
|
fromBottom = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTitleColor(int color) {
|
public void setTitleColor(int color) {
|
||||||
|
@ -779,7 +781,7 @@ public class ActionBar extends FrameLayout {
|
||||||
if (titleTextView[0] != null && titleTextView[0].getVisibility() != GONE || subtitleTextView != null && subtitleTextView.getVisibility() != GONE) {
|
if (titleTextView[0] != null && titleTextView[0].getVisibility() != GONE || subtitleTextView != null && subtitleTextView.getVisibility() != GONE) {
|
||||||
int availableWidth = width - (menu != null ? menu.getMeasuredWidth() : 0) - AndroidUtilities.dp(16) - textLeft - titleRightMargin;
|
int availableWidth = width - (menu != null ? menu.getMeasuredWidth() : 0) - AndroidUtilities.dp(16) - textLeft - titleRightMargin;
|
||||||
|
|
||||||
if (((fromBottom && i == 0) || (!fromBottom && i == 1)) && ovelayTitleAnimation && titleAnimationRunning) {
|
if (((fromBottom && i == 0) || (!fromBottom && i == 1)) && overlayTitleAnimation && titleAnimationRunning) {
|
||||||
titleTextView[i].setTextSize(!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 18 : 20);
|
titleTextView[i].setTextSize(!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 18 : 20);
|
||||||
} else {
|
} else {
|
||||||
if (titleTextView[0] != null && titleTextView[0].getVisibility() != GONE && subtitleTextView != null && subtitleTextView.getVisibility() != GONE) {
|
if (titleTextView[0] != null && titleTextView[0].getVisibility() != GONE && subtitleTextView != null && subtitleTextView.getVisibility() != GONE) {
|
||||||
|
@ -839,7 +841,7 @@ public class ActionBar extends FrameLayout {
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
if (titleTextView[i] != null && titleTextView[i].getVisibility() != GONE) {
|
if (titleTextView[i] != null && titleTextView[i].getVisibility() != GONE) {
|
||||||
int textTop;
|
int textTop;
|
||||||
if (((fromBottom && i == 0) || (!fromBottom && i == 1)) && ovelayTitleAnimation && titleAnimationRunning) {
|
if (((fromBottom && i == 0) || (!fromBottom && i == 1)) && overlayTitleAnimation && titleAnimationRunning) {
|
||||||
textTop = (getCurrentActionBarHeight() - titleTextView[i].getTextHeight()) / 2;
|
textTop = (getCurrentActionBarHeight() - titleTextView[i].getTextHeight()) / 2;
|
||||||
} else {
|
} else {
|
||||||
if ((subtitleTextView != null && subtitleTextView.getVisibility() != GONE)) {
|
if ((subtitleTextView != null && subtitleTextView.getVisibility() != GONE)) {
|
||||||
|
@ -1107,12 +1109,11 @@ public class ActionBar extends FrameLayout {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTitleAnimated(CharSequence title, boolean fromBottom, long duration) {
|
public void setTitleAnimated(CharSequence title, boolean fromBottom, long duration) {
|
||||||
if (titleTextView[0] == null) {
|
if (titleTextView[0] == null || title == null) {
|
||||||
setTitle(title);
|
setTitle(title);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.fromBottom = fromBottom;
|
boolean crossfade = overlayTitleAnimation && !TextUtils.isEmpty(subtitleTextView.getText());
|
||||||
boolean crossfade = ovelayTitleAnimation && !TextUtils.isEmpty(subtitleTextView.getText());
|
|
||||||
if (crossfade) {
|
if (crossfade) {
|
||||||
if (subtitleTextView.getVisibility() != View.VISIBLE) {
|
if (subtitleTextView.getVisibility() != View.VISIBLE) {
|
||||||
subtitleTextView.setVisibility(View.VISIBLE);
|
subtitleTextView.setVisibility(View.VISIBLE);
|
||||||
|
@ -1130,6 +1131,7 @@ public class ActionBar extends FrameLayout {
|
||||||
titleTextView[1] = titleTextView[0];
|
titleTextView[1] = titleTextView[0];
|
||||||
titleTextView[0] = null;
|
titleTextView[0] = null;
|
||||||
setTitle(title);
|
setTitle(title);
|
||||||
|
this.fromBottom = fromBottom;
|
||||||
titleTextView[0].setAlpha(0);
|
titleTextView[0].setAlpha(0);
|
||||||
if (!crossfade) {
|
if (!crossfade) {
|
||||||
titleTextView[0].setTranslationY(fromBottom ? AndroidUtilities.dp(20) : -AndroidUtilities.dp(20));
|
titleTextView[0].setTranslationY(fromBottom ? AndroidUtilities.dp(20) : -AndroidUtilities.dp(20));
|
||||||
|
@ -1181,4 +1183,8 @@ public class ActionBar extends FrameLayout {
|
||||||
public ActionBarMenu getActionMode() {
|
public ActionBarMenu getActionMode() {
|
||||||
return actionMode;
|
return actionMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setOverlayTitleAnimation(boolean ovelayTitleAnimation) {
|
||||||
|
this.overlayTitleAnimation = ovelayTitleAnimation;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -621,6 +621,7 @@ public class ActionBarMenuItem extends FrameLayout {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
searchContainer.setVisibility(VISIBLE);
|
searchContainer.setVisibility(VISIBLE);
|
||||||
|
searchContainer.setAlpha(1f);
|
||||||
setVisibility(GONE);
|
setVisibility(GONE);
|
||||||
searchField.setText("");
|
searchField.setText("");
|
||||||
searchField.requestFocus();
|
searchField.requestFocus();
|
||||||
|
|
|
@ -541,7 +541,7 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter {
|
||||||
ArrayList<TLObject> resultArray = new ArrayList<>();
|
ArrayList<TLObject> resultArray = new ArrayList<>();
|
||||||
ArrayList<CharSequence> resultArrayNames = new ArrayList<>();
|
ArrayList<CharSequence> resultArrayNames = new ArrayList<>();
|
||||||
ArrayList<TLRPC.User> encUsers = new ArrayList<>();
|
ArrayList<TLRPC.User> encUsers = new ArrayList<>();
|
||||||
MessagesStorage.getInstance(currentAccount).localSearch(dialogsType, q, resultArray, resultArrayNames, encUsers);
|
MessagesStorage.getInstance(currentAccount).localSearch(dialogsType, q, resultArray, resultArrayNames, encUsers, -1);
|
||||||
updateSearchResults(resultArray, resultArrayNames, encUsers, searchId);
|
updateSearchResults(resultArray, resultArrayNames, encUsers, searchId);
|
||||||
FiltersView.fillTipDates(q, localTipDates);
|
FiltersView.fillTipDates(q, localTipDates);
|
||||||
AndroidUtilities.runOnUIThread(() -> {
|
AndroidUtilities.runOnUIThread(() -> {
|
||||||
|
|
|
@ -264,14 +264,8 @@ public class FiltersView extends RecyclerListView {
|
||||||
private final static Pattern shortDate = Pattern.compile("^([0-9]{1,4})(\\.| |\\\\)([0-9]{1,4})$");
|
private final static Pattern shortDate = Pattern.compile("^([0-9]{1,4})(\\.| |\\\\)([0-9]{1,4})$");
|
||||||
private final static Pattern longDate = Pattern.compile("^([0-9]{1,2})(\\.| |\\\\)([0-9]{1,2})(\\.| |\\\\)([0-9]{1,4})$");
|
private final static Pattern longDate = Pattern.compile("^([0-9]{1,2})(\\.| |\\\\)([0-9]{1,2})(\\.| |\\\\)([0-9]{1,4})$");
|
||||||
|
|
||||||
private final static String formatter[] = new String[]{
|
|
||||||
"dd.MM.yyyy",
|
|
||||||
"dd/MM/yyyy",
|
|
||||||
"dd MM yyyy",
|
|
||||||
};
|
|
||||||
|
|
||||||
|
private final static int[] numberOfDaysEachMonth = new int[]{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
||||||
private final static int[] numberOfDaysEachMonth = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
|
||||||
|
|
||||||
public static void fillTipDates(String query, ArrayList<DateData> dates) {
|
public static void fillTipDates(String query, ArrayList<DateData> dates) {
|
||||||
dates.clear();
|
dates.clear();
|
||||||
|
@ -282,7 +276,7 @@ public class FiltersView extends RecyclerListView {
|
||||||
if (q.length() < 3) {
|
if (q.length() < 3) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (LocaleController.getString("SearchTipToday", R.string.SearchTipToday).toLowerCase().startsWith(q)) {
|
if (LocaleController.getString("SearchTipToday", R.string.SearchTipToday).toLowerCase().startsWith(q) || "today".startsWith(q)) {
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
int year = calendar.get(Calendar.YEAR);
|
int year = calendar.get(Calendar.YEAR);
|
||||||
int month = calendar.get(Calendar.MONTH);
|
int month = calendar.get(Calendar.MONTH);
|
||||||
|
@ -294,6 +288,19 @@ public class FiltersView extends RecyclerListView {
|
||||||
dates.add(new DateData(LocaleController.getString("SearchTipToday", R.string.SearchTipToday), minDate, maxDate));
|
dates.add(new DateData(LocaleController.getString("SearchTipToday", R.string.SearchTipToday), minDate, maxDate));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (LocaleController.getString("SearchTipYesterday", R.string.SearchTipYesterday).toLowerCase().startsWith(q) || "yesterday".startsWith(q)) {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
int year = calendar.get(Calendar.YEAR);
|
||||||
|
int month = calendar.get(Calendar.MONTH);
|
||||||
|
int day = calendar.get(Calendar.DAY_OF_MONTH);
|
||||||
|
calendar.set(year, month, day, 0, 0, 0);
|
||||||
|
long minDate = calendar.getTimeInMillis() - 86400000L;
|
||||||
|
calendar.set(year, month, day + 1, 0, 0, 0);
|
||||||
|
long maxDate = calendar.getTimeInMillis() - 86400001L;
|
||||||
|
dates.add(new DateData(LocaleController.getString("SearchTipYesterday", R.string.SearchTipYesterday), minDate, maxDate));
|
||||||
|
return;
|
||||||
|
}
|
||||||
Matcher matcher;
|
Matcher matcher;
|
||||||
|
|
||||||
int dayOfWeek = getDayOfWeek(q);
|
int dayOfWeek = getDayOfWeek(q);
|
||||||
|
@ -346,17 +353,17 @@ public class FiltersView extends RecyclerListView {
|
||||||
if (!matcher.group(2).equals(matcher.group(4))) {
|
if (!matcher.group(2).equals(matcher.group(4))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int day = Integer.parseInt(g1) - 1;
|
int day = Integer.parseInt(g1);
|
||||||
int month = Integer.parseInt(g2) - 1;
|
int month = Integer.parseInt(g2) - 1;
|
||||||
int year = Integer.parseInt(g3);
|
int year = Integer.parseInt(g3);
|
||||||
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
|
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
|
||||||
if (validDateForMont(day, month + 1) && year >= minYear && year <= currentYear) {
|
if (validDateForMont(day - 1, month) && year >= minYear && year <= currentYear) {
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
calendar.set(year, month, day, 0, 0, 0);
|
calendar.set(year, month, day, 0, 0, 0);
|
||||||
long minDate = calendar.getTimeInMillis();
|
long minDate = calendar.getTimeInMillis();
|
||||||
calendar.set(year, month, day + 1, 0, 0, 0);
|
calendar.set(year, month, day + 1, 0, 0, 0);
|
||||||
long maxDate = calendar.getTimeInMillis() - 1;
|
long maxDate = calendar.getTimeInMillis() - 1;
|
||||||
dates.add(new DateData(LocaleController.getInstance().formatterYearMax.format(calendar.getTime()), minDate, maxDate));
|
dates.add(new DateData(LocaleController.getInstance().formatterYearMax.format(minDate), minDate, maxDate));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,17 +376,17 @@ public class FiltersView extends RecyclerListView {
|
||||||
selectedYear = minYear;
|
selectedYear = minYear;
|
||||||
for (int i = currentYear; i >= selectedYear; i--) {
|
for (int i = currentYear; i >= selectedYear; i--) {
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
calendar.set(i, 0, 0, 0, 0, 0);
|
calendar.set(i, 0, 1, 0, 0, 0);
|
||||||
long minDate = calendar.getTimeInMillis();
|
long minDate = calendar.getTimeInMillis();
|
||||||
calendar.set(i + 1, 0, 0, 0, 0, 0);
|
calendar.set(i + 1, 0, 1, 0, 0, 0);
|
||||||
long maxDate = calendar.getTimeInMillis() - 1;
|
long maxDate = calendar.getTimeInMillis() - 1;
|
||||||
dates.add(new DateData(Integer.toString(i), minDate, maxDate));
|
dates.add(new DateData(Integer.toString(i), minDate, maxDate));
|
||||||
}
|
}
|
||||||
} else if (selectedYear <= currentYear) {
|
} else if (selectedYear <= currentYear) {
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
calendar.set(selectedYear, 0, 0, 0, 0, 0);
|
calendar.set(selectedYear, 0, 1, 0, 0, 0);
|
||||||
long minDate = calendar.getTimeInMillis();
|
long minDate = calendar.getTimeInMillis();
|
||||||
calendar.set(selectedYear + 1, 0, 0, 0, 0, 0);
|
calendar.set(selectedYear + 1, 0, 1, 0, 0, 0);
|
||||||
long maxDate = calendar.getTimeInMillis() - 1;
|
long maxDate = calendar.getTimeInMillis() - 1;
|
||||||
dates.add(new DateData(Integer.toString(selectedYear), minDate, maxDate));
|
dates.add(new DateData(Integer.toString(selectedYear), minDate, maxDate));
|
||||||
}
|
}
|
||||||
|
@ -421,41 +428,22 @@ public class FiltersView extends RecyclerListView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < formatter.length; i++) {
|
|
||||||
try {
|
|
||||||
if (isValidFormat(formatter[i], q, Locale.ENGLISH)) {
|
|
||||||
Date date = new SimpleDateFormat(formatter[i]).parse(q);
|
|
||||||
if (date != null) {
|
|
||||||
Calendar calendar = Calendar.getInstance();
|
|
||||||
calendar.setTime(date);
|
|
||||||
int year = calendar.get(Calendar.YEAR);
|
|
||||||
if (year < minYear) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
long minDate = date.getTime();
|
|
||||||
long maxDate = minDate + 86400000L - 1;
|
|
||||||
dates.add(new DateData(LocaleController.getInstance().formatterYearMax.format(date), minDate, maxDate));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (ParseException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!TextUtils.isEmpty(q) && q.length() > 2) {
|
if (!TextUtils.isEmpty(q) && q.length() > 2) {
|
||||||
int month = getMonth(q);
|
int month = getMonth(q);
|
||||||
|
long today = Calendar.getInstance().getTimeInMillis();
|
||||||
if (month >= 0) {
|
if (month >= 0) {
|
||||||
int selectedYear = minYear;
|
int selectedYear = minYear;
|
||||||
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
|
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
|
||||||
for (int j = currentYear; j >= selectedYear; j--) {
|
for (int j = currentYear; j >= selectedYear; j--) {
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
calendar.set(j, month, 0, 0, 0, 0);
|
calendar.set(j, month, 1, 0, 0, 0);
|
||||||
long minDate = calendar.getTimeInMillis();
|
long minDate = calendar.getTimeInMillis();
|
||||||
calendar.set(j, month + 1, 0, 0, 0, 0);
|
if (minDate > today) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
calendar.add(Calendar.MONTH, 1);
|
||||||
long maxDate = calendar.getTimeInMillis() - 1;
|
long maxDate = calendar.getTimeInMillis() - 1;
|
||||||
dates.add(new DateData(LocaleController.getInstance().formatterMonthYear.format(maxDate), minDate, maxDate));
|
dates.add(new DateData(LocaleController.getInstance().formatterMonthYear.format(minDate), minDate, maxDate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -463,33 +451,41 @@ public class FiltersView extends RecyclerListView {
|
||||||
|
|
||||||
private static void createForMonthYear(ArrayList<DateData> dates, int month, int selectedYear) {
|
private static void createForMonthYear(ArrayList<DateData> dates, int month, int selectedYear) {
|
||||||
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
|
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
|
||||||
|
long today = Calendar.getInstance().getTimeInMillis();
|
||||||
if (selectedYear >= minYear && selectedYear <= currentYear) {
|
if (selectedYear >= minYear && selectedYear <= currentYear) {
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
calendar.set(selectedYear, month, 0, 0, 0, 0);
|
calendar.set(selectedYear, month, 1, 0, 0, 0);
|
||||||
long minDate = calendar.getTimeInMillis();
|
long minDate = calendar.getTimeInMillis();
|
||||||
calendar.set(selectedYear, month + 1, 0, 0, 0, 0);
|
if (minDate > today) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
calendar.add(Calendar.MONTH, 1);
|
||||||
long maxDate = calendar.getTimeInMillis() - 1;
|
long maxDate = calendar.getTimeInMillis() - 1;
|
||||||
dates.add(new DateData(LocaleController.getInstance().formatterMonthYear.format(maxDate), minDate, maxDate));
|
dates.add(new DateData(LocaleController.getInstance().formatterMonthYear.format(minDate), minDate, maxDate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void createForDayMonth(ArrayList<DateData> dates, int day, int month) {
|
private static void createForDayMonth(ArrayList<DateData> dates, int day, int month) {
|
||||||
if (validDateForMont(day, month)) {
|
if (validDateForMont(day, month)) {
|
||||||
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
|
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
|
||||||
|
long today = Calendar.getInstance().getTimeInMillis();
|
||||||
GregorianCalendar georgianCal = (GregorianCalendar) GregorianCalendar.getInstance();
|
GregorianCalendar georgianCal = (GregorianCalendar) GregorianCalendar.getInstance();
|
||||||
for (int i = currentYear; i >= minYear; i--) {
|
for (int i = currentYear; i >= minYear; i--) {
|
||||||
if (month == 1 && day == 28 && !georgianCal.isLeapYear(i)) {
|
if (month == 1 && day == 28 && !georgianCal.isLeapYear(i)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
calendar.set(i, month, day, 0, 0, 0);
|
|
||||||
long minDate = calendar.getTimeInMillis();
|
|
||||||
calendar.set(i, month, day + 1, 0, 0, 0);
|
calendar.set(i, month, day + 1, 0, 0, 0);
|
||||||
|
long minDate = calendar.getTimeInMillis();
|
||||||
|
if (minDate > today) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
calendar.set(i, month, day + 2, 0, 0, 0);
|
||||||
long maxDate = calendar.getTimeInMillis() - 1;
|
long maxDate = calendar.getTimeInMillis() - 1;
|
||||||
if (i == currentYear) {
|
if (i == currentYear) {
|
||||||
dates.add(new DateData(LocaleController.getInstance().formatterDayMonth.format(maxDate), minDate, maxDate));
|
dates.add(new DateData(LocaleController.getInstance().formatterDayMonth.format(minDate), minDate, maxDate));
|
||||||
} else {
|
} else {
|
||||||
dates.add(new DateData(LocaleController.getInstance().formatterYearMax.format(maxDate), minDate, maxDate));
|
dates.add(new DateData(LocaleController.getInstance().formatterYearMax.format(minDate), minDate, maxDate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -540,9 +536,10 @@ public class FiltersView extends RecyclerListView {
|
||||||
|
|
||||||
String[] monthsEng = new String[12];
|
String[] monthsEng = new String[12];
|
||||||
Calendar c = Calendar.getInstance();
|
Calendar c = Calendar.getInstance();
|
||||||
for (int i = 0; i < 12; i++) {
|
for (int i = 1; i <= 12; i++) {
|
||||||
|
c.set(0, 0, 0, 0, 0, 0);
|
||||||
c.set(Calendar.MONTH, i);
|
c.set(Calendar.MONTH, i);
|
||||||
monthsEng[i] = c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH).toLowerCase();
|
monthsEng[i - 1] = c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH).toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6739,9 +6739,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
boolean imageDrawn = false;
|
boolean imageDrawn = false;
|
||||||
if (currentMessageObject.type == 0) {
|
if (currentMessageObject.type == 0) {
|
||||||
if (currentMessageObject.isOutOwner()) {
|
if (currentMessageObject.isOutOwner()) {
|
||||||
textX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(11) + getExtraTextX();
|
textX = getCurrentBackgroundLeft() + AndroidUtilities.dp(11) + getExtraTextX();
|
||||||
} else {
|
} else {
|
||||||
textX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(!mediaBackground && drawPinnedBottom ? 11 : 17) + getExtraTextX();
|
textX = getCurrentBackgroundLeft() + AndroidUtilities.dp(!mediaBackground && drawPinnedBottom ? 11 : 17) + getExtraTextX();
|
||||||
}
|
}
|
||||||
if (hasGamePreview) {
|
if (hasGamePreview) {
|
||||||
textX += AndroidUtilities.dp(11);
|
textX += AndroidUtilities.dp(11);
|
||||||
|
@ -7547,7 +7547,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
bottom = (int) (parentHeight - getY());
|
bottom = (int) (parentHeight - getY());
|
||||||
}
|
}
|
||||||
rect.set(
|
rect.set(
|
||||||
currentBackgroundDrawable.getBounds().left, top,
|
getCurrentBackgroundLeft(), top,
|
||||||
currentBackgroundDrawable.getBounds().right, bottom
|
currentBackgroundDrawable.getBounds().right, bottom
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
@ -9473,6 +9473,11 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
setDrawableBoundsInner(currentBackgroundShadowDrawable, backgroundDrawableLeft, backgroundDrawableTop, backgroundDrawableRight, backgroundHeight);
|
setDrawableBoundsInner(currentBackgroundShadowDrawable, backgroundDrawableLeft, backgroundDrawableTop, backgroundDrawableRight, backgroundHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!currentMessageObject.isOutOwner() && transitionParams.changePinnedBottomProgress != 1 && (!mediaBackground && !drawPinnedBottom)) {
|
||||||
|
backgroundDrawableLeft -= AndroidUtilities.dp(6);
|
||||||
|
backgroundDrawableRight += AndroidUtilities.dp(6);
|
||||||
|
}
|
||||||
|
|
||||||
if (hasPsaHint) {
|
if (hasPsaHint) {
|
||||||
int x;
|
int x;
|
||||||
if (currentPosition == null || (currentPosition.flags & MessageObject.POSITION_FLAG_RIGHT) != 0) {
|
if (currentPosition == null || (currentPosition.flags & MessageObject.POSITION_FLAG_RIGHT) != 0) {
|
||||||
|
@ -9690,7 +9695,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (currentMessageObject.isOutOwner()) {
|
if (currentMessageObject.isOutOwner()) {
|
||||||
sideStartX = currentBackgroundDrawable.getBounds().left - AndroidUtilities.dp(8 + 32);
|
sideStartX = getCurrentBackgroundLeft() - AndroidUtilities.dp(8 + 32);
|
||||||
if (currentMessagesGroup != null) {
|
if (currentMessagesGroup != null) {
|
||||||
sideStartX += currentMessagesGroup.transitionParams.offsetLeft - animationOffsetX;
|
sideStartX += currentMessagesGroup.transitionParams.offsetLeft - animationOffsetX;
|
||||||
}
|
}
|
||||||
|
@ -10295,7 +10300,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
h2 = 0;
|
h2 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int buttonX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(currentMessageObject.isOutOwner() || mediaBackground || drawPinnedBottom ? 2 : 8);
|
int buttonX = getCurrentBackgroundLeft() + AndroidUtilities.dp(currentMessageObject.isOutOwner() || mediaBackground || drawPinnedBottom ? 2 : 8);
|
||||||
float buttonY = layoutHeight - AndroidUtilities.dp(45.1f - h2);
|
float buttonY = layoutHeight - AndroidUtilities.dp(45.1f - h2);
|
||||||
if (currentPosition != null && (currentPosition.flags & MessageObject.POSITION_FLAG_LEFT) == 0 && !currentMessagesGroup.hasSibling) {
|
if (currentPosition != null && (currentPosition.flags & MessageObject.POSITION_FLAG_LEFT) == 0 && !currentMessagesGroup.hasSibling) {
|
||||||
endX += AndroidUtilities.dp(14);
|
endX += AndroidUtilities.dp(14);
|
||||||
|
@ -11276,7 +11281,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
if (docTitleOffsetX < 0 || docTitleOffsetX == 0 && docTitleLayout.getLineLeft(0) == 0) {
|
if (docTitleOffsetX < 0 || docTitleOffsetX == 0 && docTitleLayout.getLineLeft(0) == 0) {
|
||||||
pollHintX = currentBackgroundDrawable.getBounds().right - drawable.getIntrinsicWidth() - AndroidUtilities.dp(currentMessageObject.isOutOwner() ? 17 : 11);
|
pollHintX = currentBackgroundDrawable.getBounds().right - drawable.getIntrinsicWidth() - AndroidUtilities.dp(currentMessageObject.isOutOwner() ? 17 : 11);
|
||||||
} else {
|
} else {
|
||||||
pollHintX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(11);
|
pollHintX = getCurrentBackgroundLeft() + AndroidUtilities.dp(11);
|
||||||
}
|
}
|
||||||
pollHintY = y - AndroidUtilities.dp(6);
|
pollHintY = y - AndroidUtilities.dp(6);
|
||||||
int cx = pollHintX + drawable.getIntrinsicWidth() / 2;
|
int cx = pollHintX + drawable.getIntrinsicWidth() / 2;
|
||||||
|
@ -11486,7 +11491,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (drawInstantView) {
|
if (drawInstantView) {
|
||||||
int textX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(currentMessageObject.isOutOwner() || mediaBackground || drawPinnedBottom ? 2 : 8);
|
int textX = getCurrentBackgroundLeft() + AndroidUtilities.dp(currentMessageObject.isOutOwner() || mediaBackground || drawPinnedBottom ? 2 : 8);
|
||||||
int instantY = lastVoteY + AndroidUtilities.dp(13);
|
int instantY = lastVoteY + AndroidUtilities.dp(13);
|
||||||
if (currentMessageObject.isOutOwner()) {
|
if (currentMessageObject.isOutOwner()) {
|
||||||
Theme.chat_instantViewPaint.setColor(Theme.getColor(Theme.key_chat_outPreviewInstantText));
|
Theme.chat_instantViewPaint.setColor(Theme.getColor(Theme.key_chat_outPreviewInstantText));
|
||||||
|
@ -12370,6 +12375,14 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getCurrentBackgroundLeft() {
|
||||||
|
int left = currentBackgroundDrawable.getBounds().left;
|
||||||
|
if (!currentMessageObject.isOutOwner() && transitionParams.changePinnedBottomProgress != 1 && (!mediaBackground && !drawPinnedBottom)) {
|
||||||
|
left -= AndroidUtilities.dp(6);
|
||||||
|
}
|
||||||
|
return left;
|
||||||
|
}
|
||||||
|
|
||||||
public TransitionParams getTransitionParams() {
|
public TransitionParams getTransitionParams() {
|
||||||
return transitionParams;
|
return transitionParams;
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,6 +53,11 @@ public class SharedPhotoVideoCell extends FrameLayout {
|
||||||
private boolean ignoreLayout;
|
private boolean ignoreLayout;
|
||||||
private Paint backgroundPaint = new Paint();
|
private Paint backgroundPaint = new Paint();
|
||||||
|
|
||||||
|
public final static int VIEW_TYPE_DEFAULT = 0;
|
||||||
|
public final static int VIEW_TYPE_GLOBAL_SEARCH = 1;
|
||||||
|
|
||||||
|
private int type;
|
||||||
|
|
||||||
private int currentAccount = UserConfig.selectedAccount;
|
private int currentAccount = UserConfig.selectedAccount;
|
||||||
|
|
||||||
public interface SharedPhotoVideoCellDelegate {
|
public interface SharedPhotoVideoCellDelegate {
|
||||||
|
@ -235,7 +240,11 @@ public class SharedPhotoVideoCell extends FrameLayout {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SharedPhotoVideoCell(Context context) {
|
public SharedPhotoVideoCell(Context context) {
|
||||||
|
this(context, VIEW_TYPE_DEFAULT);
|
||||||
|
}
|
||||||
|
public SharedPhotoVideoCell(Context context, int type) {
|
||||||
super(context);
|
super(context);
|
||||||
|
this.type = type;
|
||||||
|
|
||||||
backgroundPaint.setColor(Theme.getColor(Theme.key_sharedMedia_photoPlaceholder));
|
backgroundPaint.setColor(Theme.getColor(Theme.key_sharedMedia_photoPlaceholder));
|
||||||
messageObjects = new MessageObject[6];
|
messageObjects = new MessageObject[6];
|
||||||
|
@ -344,7 +353,12 @@ public class SharedPhotoVideoCell extends FrameLayout {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||||
final int itemWidth = getItemSize(itemsCount);
|
int itemWidth;
|
||||||
|
if (type == VIEW_TYPE_GLOBAL_SEARCH) {
|
||||||
|
itemWidth = (MeasureSpec.getSize(widthMeasureSpec) - (itemsCount - 1) * AndroidUtilities.dp(2)) / itemsCount;
|
||||||
|
} else {
|
||||||
|
itemWidth = getItemSize(itemsCount);
|
||||||
|
}
|
||||||
|
|
||||||
ignoreLayout = true;
|
ignoreLayout = true;
|
||||||
for (int a = 0; a < itemsCount; a++) {
|
for (int a = 0; a < itemsCount; a++) {
|
||||||
|
|
|
@ -148,7 +148,7 @@ public class SharingLiveLocationCell extends FrameLayout {
|
||||||
fromId = -messageObject.messageOwner.fwd_from.from_id.channel_id;
|
fromId = -messageObject.messageOwner.fwd_from.from_id.channel_id;
|
||||||
} else if (messageObject.messageOwner.fwd_from.from_id instanceof TLRPC.TL_peerChat) {
|
} else if (messageObject.messageOwner.fwd_from.from_id instanceof TLRPC.TL_peerChat) {
|
||||||
fromId = -messageObject.messageOwner.fwd_from.from_id.chat_id;
|
fromId = -messageObject.messageOwner.fwd_from.from_id.chat_id;
|
||||||
} else {
|
} else if (messageObject.messageOwner.fwd_from.from_id instanceof TLRPC.TL_peerUser) {
|
||||||
fromId = messageObject.messageOwner.fwd_from.from_id.user_id;
|
fromId = messageObject.messageOwner.fwd_from.from_id.user_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2009,8 +2009,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
actionModeViews.clear();
|
actionModeViews.clear();
|
||||||
|
|
||||||
if (inPreviewMode) {
|
if (inPreviewMode) {
|
||||||
headerItem.setAlpha(0.0f);
|
if (headerItem != null) {
|
||||||
attachItem.setAlpha(0.0f);
|
headerItem.setAlpha(0.0f);
|
||||||
|
}
|
||||||
|
if (attachItem != null) {
|
||||||
|
attachItem.setAlpha(0.0f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final ActionBarMenu actionMode = actionBar.createActionMode();
|
final ActionBarMenu actionMode = actionBar.createActionMode();
|
||||||
|
@ -2744,6 +2748,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
}
|
}
|
||||||
} else if (child == instantCameraView || child == overlayView || child == animatingImageView) {
|
} else if (child == instantCameraView || child == overlayView || child == animatingImageView) {
|
||||||
childTop = 0;
|
childTop = 0;
|
||||||
|
} else if (child == textSelectionHelper.getOverlayView(context)) {
|
||||||
|
if (SharedConfig.smoothKeyboard) {
|
||||||
|
childTop -= paddingBottom;
|
||||||
|
}
|
||||||
|
if (keyboardSize > AndroidUtilities.dp(20) && getLayoutParams().height < 0) {
|
||||||
|
childTop -= keyboardSize;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
child.layout(childLeft, childTop, childLeft + width, childTop + height);
|
child.layout(childLeft, childTop, childLeft + width, childTop + height);
|
||||||
}
|
}
|
||||||
|
@ -12222,7 +12233,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
boolean hasChatInBack = false;
|
boolean hasChatInBack = false;
|
||||||
boolean updatedReplies = false;
|
boolean updatedReplies = false;
|
||||||
|
|
||||||
if (threadMessageObject != null) {
|
if (threadMessageObject != null && parentLayout != null) {
|
||||||
for (int a = 0, N = parentLayout.fragmentsStack.size() - 1; a < N; a++) {
|
for (int a = 0, N = parentLayout.fragmentsStack.size() - 1; a < N; a++) {
|
||||||
BaseFragment fragment = parentLayout.fragmentsStack.get(a);
|
BaseFragment fragment = parentLayout.fragmentsStack.get(a);
|
||||||
if (fragment != this && fragment instanceof ChatActivity) {
|
if (fragment != this && fragment instanceof ChatActivity) {
|
||||||
|
@ -13259,7 +13270,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
SparseArray<TLRPC.TL_messageReplies> array = channelReplies.get((int) dialog_id);
|
SparseArray<TLRPC.TL_messageReplies> array = channelReplies.get((int) dialog_id);
|
||||||
boolean hasChatInBack = false;
|
boolean hasChatInBack = false;
|
||||||
|
|
||||||
if (threadMessageObject != null) {
|
if (threadMessageObject != null && parentLayout != null) {
|
||||||
for (int a = 0, N = parentLayout.fragmentsStack.size() - 1; a < N; a++) {
|
for (int a = 0, N = parentLayout.fragmentsStack.size() - 1; a < N; a++) {
|
||||||
BaseFragment fragment = parentLayout.fragmentsStack.get(a);
|
BaseFragment fragment = parentLayout.fragmentsStack.get(a);
|
||||||
if (fragment != this && fragment instanceof ChatActivity) {
|
if (fragment != this && fragment instanceof ChatActivity) {
|
||||||
|
@ -13306,7 +13317,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
}
|
}
|
||||||
newGroups.put(groupedMessages.groupId, groupedMessages);
|
newGroups.put(groupedMessages.groupId, groupedMessages);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (chatAdapter != null) {
|
||||||
int row = messages.indexOf(messageObject);
|
int row = messages.indexOf(messageObject);
|
||||||
if (row >= 0) {
|
if (row >= 0) {
|
||||||
if (updatedRows == null) {
|
if (updatedRows == null) {
|
||||||
|
@ -14605,9 +14616,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
if (fwd_from.from_id instanceof TLRPC.TL_peerUser) {
|
if (fwd_from.from_id instanceof TLRPC.TL_peerUser) {
|
||||||
user = messagesController.getUser(fwd_from.from_id.user_id);
|
user = messagesController.getUser(fwd_from.from_id.user_id);
|
||||||
} else if (fwd_from.from_id instanceof TLRPC.TL_peerChat) {
|
} else if (fwd_from.from_id instanceof TLRPC.TL_peerChat) {
|
||||||
user = messagesController.getUser(fwd_from.from_id.user_id);
|
chat = messagesController.getChat(fwd_from.from_id.chat_id);
|
||||||
} else if (fwd_from.from_id instanceof TLRPC.TL_peerChannel) {
|
} else if (fwd_from.from_id instanceof TLRPC.TL_peerChannel) {
|
||||||
user = messagesController.getUser(fwd_from.from_id.user_id);
|
chat = messagesController.getChat(fwd_from.from_id.channel_id);
|
||||||
} else {
|
} else {
|
||||||
chat = messagesController.getChat(fwd_from.saved_from_peer.chat_id);
|
chat = messagesController.getChat(fwd_from.saved_from_peer.chat_id);
|
||||||
}
|
}
|
||||||
|
@ -16922,7 +16933,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
MessageObject message = selectedObject;
|
MessageObject message = selectedObject;
|
||||||
MessageObject.GroupedMessages group = selectedObjectGroup;
|
MessageObject.GroupedMessages group = selectedObjectGroup;
|
||||||
AlertsCreator.createScheduleDatePickerDialog(getParentActivity(), dialog_id, message.messageOwner.date, (notify, scheduleDate) -> {
|
AlertsCreator.createScheduleDatePickerDialog(getParentActivity(), dialog_id, message.messageOwner.date, (notify, scheduleDate) -> {
|
||||||
if (group != null) {
|
if (group != null && !group.messages.isEmpty()) {
|
||||||
SendMessagesHelper.getInstance(currentAccount).editMessage(group.messages.get(0), null, false, ChatActivity.this, null, scheduleDate, null);
|
SendMessagesHelper.getInstance(currentAccount).editMessage(group.messages.get(0), null, false, ChatActivity.this, null, scheduleDate, null);
|
||||||
} else {
|
} else {
|
||||||
SendMessagesHelper.getInstance(currentAccount).editMessage(message, null, false, ChatActivity.this, null, scheduleDate, null);
|
SendMessagesHelper.getInstance(currentAccount).editMessage(message, null, false, ChatActivity.this, null, scheduleDate, null);
|
||||||
|
@ -18159,7 +18170,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
public boolean shouldDrawThreadProgress(ChatMessageCell cell) {
|
public boolean shouldDrawThreadProgress(ChatMessageCell cell) {
|
||||||
MessageObject.GroupedMessages group = cell.getCurrentMessagesGroup();
|
MessageObject.GroupedMessages group = cell.getCurrentMessagesGroup();
|
||||||
MessageObject message;
|
MessageObject message;
|
||||||
if (group != null) {
|
if (group != null && !group.messages.isEmpty()) {
|
||||||
message = group.messages.get(0);
|
message = group.messages.get(0);
|
||||||
} else {
|
} else {
|
||||||
message = cell.getMessageObject();
|
message = cell.getMessageObject();
|
||||||
|
@ -18658,7 +18669,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
public void didPressCommentButton(ChatMessageCell cell) {
|
public void didPressCommentButton(ChatMessageCell cell) {
|
||||||
MessageObject.GroupedMessages group = cell.getCurrentMessagesGroup();
|
MessageObject.GroupedMessages group = cell.getCurrentMessagesGroup();
|
||||||
MessageObject message;
|
MessageObject message;
|
||||||
if (group != null) {
|
if (group != null && !group.messages.isEmpty()) {
|
||||||
message = group.messages.get(0);
|
message = group.messages.get(0);
|
||||||
} else {
|
} else {
|
||||||
message = cell.getMessageObject();
|
message = cell.getMessageObject();
|
||||||
|
|
|
@ -47,7 +47,7 @@ public class AvatarDrawable extends Drawable {
|
||||||
public static final int AVATAR_TYPE_SAVED = 1;
|
public static final int AVATAR_TYPE_SAVED = 1;
|
||||||
public static final int AVATAR_TYPE_ARCHIVED = 2;
|
public static final int AVATAR_TYPE_ARCHIVED = 2;
|
||||||
public static final int AVATAR_TYPE_SHARES = 3;
|
public static final int AVATAR_TYPE_SHARES = 3;
|
||||||
public static final int AVATAR_TYPE_REPLIES = 4;
|
public static final int AVATAR_TYPE_REPLIES = 12;
|
||||||
|
|
||||||
public static final int AVATAR_TYPE_FILTER_CONTACTS = 4;
|
public static final int AVATAR_TYPE_FILTER_CONTACTS = 4;
|
||||||
public static final int AVATAR_TYPE_FILTER_NON_CONTACTS = 5;
|
public static final int AVATAR_TYPE_FILTER_NON_CONTACTS = 5;
|
||||||
|
|
|
@ -213,7 +213,9 @@ public final class Bulletin {
|
||||||
layout.onExitTransitionStart();
|
layout.onExitTransitionStart();
|
||||||
layout.onExitTransitionEnd();
|
layout.onExitTransitionEnd();
|
||||||
layout.onHide();
|
layout.onHide();
|
||||||
containerLayout.removeView(parentLayout);
|
if (containerLayout != null) {
|
||||||
|
containerLayout.removeView(parentLayout);
|
||||||
|
}
|
||||||
layout.onDetach();
|
layout.onDetach();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -556,12 +556,6 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
||||||
}
|
}
|
||||||
} else if (!inPreviewMode) {
|
} else if (!inPreviewMode) {
|
||||||
if (progressToActionMode > 0) {
|
if (progressToActionMode > 0) {
|
||||||
int n = actionBar.getChildCount();
|
|
||||||
for (int i = 0; i < n; i++) {
|
|
||||||
if (actionBar.getChildAt(i) != actionBar.getActionMode() && actionBar.getChildAt(i) != actionBar.getBackButton()) {
|
|
||||||
actionBar.getChildAt(i).setAlpha(1f - progressToActionMode);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
actionBarSearchPaint.setColor(ColorUtils.blendARGB(Theme.getColor(folderId == 0 ? Theme.key_actionBarDefault : Theme.key_actionBarDefaultArchived), Theme.getColor(Theme.key_windowBackgroundWhite), progressToActionMode));
|
actionBarSearchPaint.setColor(ColorUtils.blendARGB(Theme.getColor(folderId == 0 ? Theme.key_actionBarDefault : Theme.key_actionBarDefaultArchived), Theme.getColor(Theme.key_windowBackgroundWhite), progressToActionMode));
|
||||||
canvas.drawRect(0, top, getMeasuredWidth(), top + actionBarHeight, actionBarSearchPaint);
|
canvas.drawRect(0, top, getMeasuredWidth(), top + actionBarHeight, actionBarSearchPaint);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1692,7 +1686,9 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
||||||
if (viewPages[0] != null) {
|
if (viewPages[0] != null) {
|
||||||
if (searchString != null) {
|
if (searchString != null) {
|
||||||
viewPages[0].listView.hide();
|
viewPages[0].listView.hide();
|
||||||
searchViewPager.searchListView.show();
|
if (searchViewPager != null) {
|
||||||
|
searchViewPager.searchListView.show();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!onlySelect) {
|
if (!onlySelect) {
|
||||||
floatingButtonContainer.setVisibility(View.GONE);
|
floatingButtonContainer.setVisibility(View.GONE);
|
||||||
|
@ -3771,6 +3767,8 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
||||||
}
|
}
|
||||||
searchWasFullyShowed = false;
|
searchWasFullyShowed = false;
|
||||||
fragmentView.requestLayout();
|
fragmentView.requestLayout();
|
||||||
|
searchItem.getSearchContainer().setAlpha(1f);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
viewPages[0].listView.setVerticalScrollBarEnabled(true);
|
viewPages[0].listView.setVerticalScrollBarEnabled(true);
|
||||||
|
@ -3810,6 +3808,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
||||||
filtersView.setAlpha(show ? 1.0f : 0.0f);
|
filtersView.setAlpha(show ? 1.0f : 0.0f);
|
||||||
searchViewPager.setScaleX(show ? 1.0f : 1.1f);
|
searchViewPager.setScaleX(show ? 1.0f : 1.1f);
|
||||||
searchViewPager.setScaleY(show ? 1.0f : 1.1f);
|
searchViewPager.setScaleY(show ? 1.0f : 1.1f);
|
||||||
|
searchItem.getSearchContainer().setAlpha(show ? 1f : 0);
|
||||||
if (filterTabsView != null && filterTabsView.getVisibility() == View.VISIBLE) {
|
if (filterTabsView != null && filterTabsView.getVisibility() == View.VISIBLE) {
|
||||||
filterTabsView.setTranslationY(show ? -AndroidUtilities.dp(44) : 0);
|
filterTabsView.setTranslationY(show ? -AndroidUtilities.dp(44) : 0);
|
||||||
filterTabsView.getTabsContainer().setAlpha(show ? 0.0f : 1.0f);
|
filterTabsView.getTabsContainer().setAlpha(show ? 0.0f : 1.0f);
|
||||||
|
@ -4348,6 +4347,11 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
||||||
actionBarColorAnimator = ValueAnimator.ofFloat(progressToActionMode, 0);
|
actionBarColorAnimator = ValueAnimator.ofFloat(progressToActionMode, 0);
|
||||||
actionBarColorAnimator.addUpdateListener(valueAnimator -> {
|
actionBarColorAnimator.addUpdateListener(valueAnimator -> {
|
||||||
progressToActionMode = (float) valueAnimator.getAnimatedValue();
|
progressToActionMode = (float) valueAnimator.getAnimatedValue();
|
||||||
|
for (int i = 0; i < actionBar.getChildCount(); i++) {
|
||||||
|
if (actionBar.getChildAt(i).getVisibility() == View.VISIBLE && actionBar.getChildAt(i) != actionBar.getActionMode() && actionBar.getChildAt(i) != actionBar.getBackButton()) {
|
||||||
|
actionBar.getChildAt(i).setAlpha(1f - progressToActionMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
fragmentView.invalidate();
|
fragmentView.invalidate();
|
||||||
});
|
});
|
||||||
actionBarColorAnimator.setInterpolator(CubicBezierInterpolator.DEFAULT);
|
actionBarColorAnimator.setInterpolator(CubicBezierInterpolator.DEFAULT);
|
||||||
|
@ -5046,6 +5050,11 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
||||||
actionBarColorAnimator = ValueAnimator.ofFloat(progressToActionMode, 1f);
|
actionBarColorAnimator = ValueAnimator.ofFloat(progressToActionMode, 1f);
|
||||||
actionBarColorAnimator.addUpdateListener(valueAnimator -> {
|
actionBarColorAnimator.addUpdateListener(valueAnimator -> {
|
||||||
progressToActionMode = (float) valueAnimator.getAnimatedValue();
|
progressToActionMode = (float) valueAnimator.getAnimatedValue();
|
||||||
|
for (int i = 0; i < actionBar.getChildCount(); i++) {
|
||||||
|
if (actionBar.getChildAt(i).getVisibility() == View.VISIBLE && actionBar.getChildAt(i) != actionBar.getActionMode() && actionBar.getChildAt(i) != actionBar.getBackButton()) {
|
||||||
|
actionBar.getChildAt(i).setAlpha(1f - progressToActionMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
fragmentView.invalidate();
|
fragmentView.invalidate();
|
||||||
});
|
});
|
||||||
actionBarColorAnimator.setInterpolator(CubicBezierInterpolator.DEFAULT);
|
actionBarColorAnimator.setInterpolator(CubicBezierInterpolator.DEFAULT);
|
||||||
|
@ -5846,6 +5855,9 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
||||||
for (int b = 0; b < 3; b++) {
|
for (int b = 0; b < 3; b++) {
|
||||||
RecyclerListView list;
|
RecyclerListView list;
|
||||||
if (b == 2) {
|
if (b == 2) {
|
||||||
|
if (searchViewPager == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
list = searchViewPager.searchListView;
|
list = searchViewPager.searchListView;
|
||||||
} else if (viewPages != null) {
|
} else if (viewPages != null) {
|
||||||
list = b < viewPages.length ? viewPages[b].listView : null;
|
list = b < viewPages.length ? viewPages[b].listView : null;
|
||||||
|
@ -5867,7 +5879,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (searchViewPager.dialogsSearchAdapter != null) {
|
if (searchViewPager != null && searchViewPager.dialogsSearchAdapter != null) {
|
||||||
RecyclerListView recyclerListView = searchViewPager.dialogsSearchAdapter.getInnerListView();
|
RecyclerListView recyclerListView = searchViewPager.dialogsSearchAdapter.getInnerListView();
|
||||||
if (recyclerListView != null) {
|
if (recyclerListView != null) {
|
||||||
int count = recyclerListView.getChildCount();
|
int count = recyclerListView.getChildCount();
|
||||||
|
@ -5920,21 +5932,25 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
||||||
if (filtersView != null) {
|
if (filtersView != null) {
|
||||||
filtersView.updateColors();
|
filtersView.updateColors();
|
||||||
}
|
}
|
||||||
searchViewPager.updateColors();
|
if (searchViewPager != null) {
|
||||||
|
searchViewPager.updateColors();
|
||||||
|
}
|
||||||
if (searchTabsView != null) {
|
if (searchTabsView != null) {
|
||||||
searchTabsView.updateColors();
|
searchTabsView.updateColors();
|
||||||
}
|
}
|
||||||
EditTextBoldCursor editText = searchItem.getSearchField();
|
if (searchItem != null) {
|
||||||
if (whiteActionBar) {
|
EditTextBoldCursor editText = searchItem.getSearchField();
|
||||||
editText.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
|
if (whiteActionBar) {
|
||||||
editText.setHintTextColor(Theme.getColor(Theme.key_player_time));
|
editText.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
|
||||||
editText.setCursorColor(Theme.getColor(Theme.key_chat_messagePanelCursor));
|
editText.setHintTextColor(Theme.getColor(Theme.key_player_time));
|
||||||
} else {
|
editText.setCursorColor(Theme.getColor(Theme.key_chat_messagePanelCursor));
|
||||||
editText.setCursorColor(Theme.getColor(Theme.key_actionBarDefaultSearch));
|
} else {
|
||||||
editText.setHintTextColor(Theme.getColor(Theme.key_actionBarDefaultSearchPlaceholder));
|
editText.setCursorColor(Theme.getColor(Theme.key_actionBarDefaultSearch));
|
||||||
editText.setTextColor(Theme.getColor(Theme.key_actionBarDefaultSearch));
|
editText.setHintTextColor(Theme.getColor(Theme.key_actionBarDefaultSearchPlaceholder));
|
||||||
|
editText.setTextColor(Theme.getColor(Theme.key_actionBarDefaultSearch));
|
||||||
|
}
|
||||||
|
searchItem.updateColor();
|
||||||
}
|
}
|
||||||
searchItem.updateColor();
|
|
||||||
setSearchAnimationProgress(searchAnimationProgress);
|
setSearchAnimationProgress(searchAnimationProgress);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -327,10 +327,14 @@ public class FilteredSearchView extends FrameLayout implements NotificationCente
|
||||||
addView(loadingView = new LoadingView(context) {
|
addView(loadingView = new LoadingView(context) {
|
||||||
@Override
|
@Override
|
||||||
int getType() {
|
int getType() {
|
||||||
if (currentSearchFilter == null || !TextUtils.isEmpty(currentSearchString)) {
|
if (currentSearchFilter == null) {
|
||||||
return 1;
|
return 1;
|
||||||
} else if (currentSearchFilter.filterType == FiltersView.FILTER_TYPE_MEDIA) {
|
} else if (currentSearchFilter.filterType == FiltersView.FILTER_TYPE_MEDIA) {
|
||||||
return 2;
|
if (!TextUtils.isEmpty(currentSearchString)) {
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
} else if (currentSearchFilter.filterType == FiltersView.FILTER_TYPE_FILES) {
|
} else if (currentSearchFilter.filterType == FiltersView.FILTER_TYPE_FILES) {
|
||||||
return 3;
|
return 3;
|
||||||
} else if (currentSearchFilter.filterType == FiltersView.FILTER_TYPE_MUSIC || currentSearchFilter.filterType == FiltersView.FILTER_TYPE_VOICE) {
|
} else if (currentSearchFilter.filterType == FiltersView.FILTER_TYPE_MUSIC || currentSearchFilter.filterType == FiltersView.FILTER_TYPE_VOICE) {
|
||||||
|
@ -502,6 +506,8 @@ public class FilteredSearchView extends FrameLayout implements NotificationCente
|
||||||
requestIndex++;
|
requestIndex++;
|
||||||
final int requestId = requestIndex;
|
final int requestId = requestIndex;
|
||||||
|
|
||||||
|
final int folderId = uiCallback.getFolderId();
|
||||||
|
|
||||||
AndroidUtilities.runOnUIThread(searchRunnable = () -> {
|
AndroidUtilities.runOnUIThread(searchRunnable = () -> {
|
||||||
TLObject request;
|
TLObject request;
|
||||||
|
|
||||||
|
@ -530,7 +536,7 @@ public class FilteredSearchView extends FrameLayout implements NotificationCente
|
||||||
resultArray = new ArrayList<>();
|
resultArray = new ArrayList<>();
|
||||||
ArrayList<CharSequence> resultArrayNames = new ArrayList<>();
|
ArrayList<CharSequence> resultArrayNames = new ArrayList<>();
|
||||||
ArrayList<TLRPC.User> encUsers = new ArrayList<>();
|
ArrayList<TLRPC.User> encUsers = new ArrayList<>();
|
||||||
MessagesStorage.getInstance(currentAccount).localSearch(0, query, resultArray, resultArrayNames, encUsers);
|
MessagesStorage.getInstance(currentAccount).localSearch(0, query, resultArray, resultArrayNames, encUsers, folderId);
|
||||||
}
|
}
|
||||||
|
|
||||||
final TLRPC.TL_messages_searchGlobal req = new TLRPC.TL_messages_searchGlobal();
|
final TLRPC.TL_messages_searchGlobal req = new TLRPC.TL_messages_searchGlobal();
|
||||||
|
@ -825,7 +831,7 @@ public class FilteredSearchView extends FrameLayout implements NotificationCente
|
||||||
View view;
|
View view;
|
||||||
switch (viewType) {
|
switch (viewType) {
|
||||||
case 0:
|
case 0:
|
||||||
view = new SharedPhotoVideoCell(mContext);
|
view = new SharedPhotoVideoCell(mContext, SharedPhotoVideoCell.VIEW_TYPE_GLOBAL_SEARCH) ;
|
||||||
SharedPhotoVideoCell cell = (SharedPhotoVideoCell) view;
|
SharedPhotoVideoCell cell = (SharedPhotoVideoCell) view;
|
||||||
cell.setDelegate(new SharedPhotoVideoCell.SharedPhotoVideoCellDelegate() {
|
cell.setDelegate(new SharedPhotoVideoCell.SharedPhotoVideoCellDelegate() {
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -3293,6 +3293,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
containerView.invalidate();
|
containerView.invalidate();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
actionBar.setOverlayTitleAnimation(true);
|
||||||
actionBar.setTitleColor(0xffffffff);
|
actionBar.setTitleColor(0xffffffff);
|
||||||
actionBar.setSubtitleColor(0xffffffff);
|
actionBar.setSubtitleColor(0xffffffff);
|
||||||
actionBar.setBackgroundColor(Theme.ACTION_BAR_PHOTO_VIEWER_COLOR);
|
actionBar.setBackgroundColor(Theme.ACTION_BAR_PHOTO_VIEWER_COLOR);
|
||||||
|
|
|
@ -3766,4 +3766,5 @@
|
||||||
<string name="RemindDayAt">\'Remind on\' MMM d \'at\' HH:mm</string>
|
<string name="RemindDayAt">\'Remind on\' MMM d \'at\' HH:mm</string>
|
||||||
<string name="RemindDayYearAt">\'Remind on\' MMM d yyyy \'at\' HH:mm</string>
|
<string name="RemindDayYearAt">\'Remind on\' MMM d yyyy \'at\' HH:mm</string>
|
||||||
<string name="SearchTipToday">Today</string>
|
<string name="SearchTipToday">Today</string>
|
||||||
|
<string name="SearchTipYesterday">Yesterday</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Reference in a new issue