Commit ad863779 authored by DrKLO's avatar DrKLO

Different improvements

parent 22a0c2ac
...@@ -80,7 +80,7 @@ android { ...@@ -80,7 +80,7 @@ android {
defaultConfig { defaultConfig {
minSdkVersion 8 minSdkVersion 8
targetSdkVersion 19 targetSdkVersion 19
versionCode 355 versionCode 357
versionName "1.9.4" versionName "1.9.5"
} }
} }
...@@ -831,6 +831,10 @@ public class ImageLoader { ...@@ -831,6 +831,10 @@ public class ImageLoader {
}); });
} }
public void putImageToCache(BitmapDrawable bitmap, String key) {
memCache.put(key, bitmap);
}
public void loadImage(final TLRPC.FileLocation fileLocation, final String httpUrl, final ImageReceiver imageView, final int size, final boolean cacheOnly) { public void loadImage(final TLRPC.FileLocation fileLocation, final String httpUrl, final ImageReceiver imageView, final int size, final boolean cacheOnly) {
if ((fileLocation == null && httpUrl == null) || imageView == null || (fileLocation != null && !(fileLocation instanceof TLRPC.TL_fileLocation) && !(fileLocation instanceof TLRPC.TL_fileEncryptedLocation))) { if ((fileLocation == null && httpUrl == null) || imageView == null || (fileLocation != null && !(fileLocation instanceof TLRPC.TL_fileLocation) && !(fileLocation instanceof TLRPC.TL_fileEncryptedLocation))) {
return; return;
......
...@@ -616,7 +616,7 @@ public class MessageObject { ...@@ -616,7 +616,7 @@ public class MessageObject {
} }
public boolean isSecretMedia() { public boolean isSecretMedia() {
return messageOwner.media instanceof TLRPC.TL_messageMediaPhoto && messageOwner.ttl != 0; return messageOwner.media instanceof TLRPC.TL_messageMediaPhoto && messageOwner.ttl != 0 && messageOwner.ttl <= 60;
} }
public static void setIsUnread(TLRPC.Message message, boolean unread) { public static void setIsUnread(TLRPC.Message message, boolean unread) {
...@@ -672,12 +672,8 @@ public class MessageObject { ...@@ -672,12 +672,8 @@ public class MessageObject {
String str; String str;
if (secondsLeft < 60) { if (secondsLeft < 60) {
str = secondsLeft + "s"; str = secondsLeft + "s";
} else if (secondsLeft < 60 * 60) {
str = secondsLeft / 60 + "m";
} else if (secondsLeft < 60 * 60 * 24) {
str = secondsLeft / 60 / 60 + "h";
} else { } else {
str = secondsLeft / 60 / 60 / 24 + "d"; str = secondsLeft / 60 + "m";
} }
return str; return str;
} }
......
...@@ -17,6 +17,7 @@ import android.content.SharedPreferences; ...@@ -17,6 +17,7 @@ import android.content.SharedPreferences;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.os.Build; import android.os.Build;
import android.text.Html; import android.text.Html;
import android.util.SparseArray;
import org.telegram.messenger.BuffersStorage; import org.telegram.messenger.BuffersStorage;
import org.telegram.messenger.ByteBufferDesc; import org.telegram.messenger.ByteBufferDesc;
...@@ -502,7 +503,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter ...@@ -502,7 +503,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
} }
} }
public void didAddedNewTask(final int minDate) { public void didAddedNewTask(final int minDate, final SparseArray<ArrayList<Integer>> mids) {
Utilities.stageQueue.postRunnable(new Runnable() { Utilities.stageQueue.postRunnable(new Runnable() {
@Override @Override
public void run() { public void run() {
...@@ -511,6 +512,12 @@ public class MessagesController implements NotificationCenter.NotificationCenter ...@@ -511,6 +512,12 @@ public class MessagesController implements NotificationCenter.NotificationCenter
} }
} }
}); });
AndroidUtilities.RunOnUIThread(new Runnable() {
@Override
public void run() {
NotificationCenter.getInstance().postNotificationName(NotificationCenter.didCreatedNewDeleteTask, mids);
}
});
} }
public void getNewDeleteTask(final ArrayList<Integer> oldTask) { public void getNewDeleteTask(final ArrayList<Integer> oldTask) {
...@@ -3552,7 +3559,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter ...@@ -3552,7 +3559,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
newMessage.media.photo.date = newMessage.date; newMessage.media.photo.date = newMessage.date;
newMessage.media.photo.caption = ""; newMessage.media.photo.caption = "";
newMessage.media.photo.geo = new TLRPC.TL_geoPointEmpty(); newMessage.media.photo.geo = new TLRPC.TL_geoPointEmpty();
if (decryptedMessage.media.thumb.length != 0 && decryptedMessage.media.thumb.length <= 5000 && decryptedMessage.media.thumb_w < 100 && decryptedMessage.media.thumb_h < 100) { if (decryptedMessage.media.thumb.length != 0 && decryptedMessage.media.thumb.length <= 6000 && decryptedMessage.media.thumb_w <= 100 && decryptedMessage.media.thumb_h <= 100) {
TLRPC.TL_photoCachedSize small = new TLRPC.TL_photoCachedSize(); TLRPC.TL_photoCachedSize small = new TLRPC.TL_photoCachedSize();
small.w = decryptedMessage.media.thumb_w; small.w = decryptedMessage.media.thumb_w;
small.h = decryptedMessage.media.thumb_h; small.h = decryptedMessage.media.thumb_h;
...@@ -3581,7 +3588,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter ...@@ -3581,7 +3588,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
} }
newMessage.media = new TLRPC.TL_messageMediaVideo(); newMessage.media = new TLRPC.TL_messageMediaVideo();
newMessage.media.video = new TLRPC.TL_videoEncrypted(); newMessage.media.video = new TLRPC.TL_videoEncrypted();
if (decryptedMessage.media.thumb.length != 0 && decryptedMessage.media.thumb.length <= 5000 && decryptedMessage.media.thumb_w < 100 && decryptedMessage.media.thumb_h < 100) { if (decryptedMessage.media.thumb.length != 0 && decryptedMessage.media.thumb.length <= 6000 && decryptedMessage.media.thumb_w <= 100 && decryptedMessage.media.thumb_h <= 100) {
newMessage.media.video.thumb = new TLRPC.TL_photoCachedSize(); newMessage.media.video.thumb = new TLRPC.TL_photoCachedSize();
newMessage.media.video.thumb.bytes = decryptedMessage.media.thumb; newMessage.media.video.thumb.bytes = decryptedMessage.media.thumb;
newMessage.media.video.thumb.w = decryptedMessage.media.thumb_w; newMessage.media.video.thumb.w = decryptedMessage.media.thumb_w;
...@@ -3623,7 +3630,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter ...@@ -3623,7 +3630,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
newMessage.media.document.size = message.file.size; newMessage.media.document.size = message.file.size;
newMessage.media.document.key = decryptedMessage.media.key; newMessage.media.document.key = decryptedMessage.media.key;
newMessage.media.document.iv = decryptedMessage.media.iv; newMessage.media.document.iv = decryptedMessage.media.iv;
if (decryptedMessage.media.thumb.length != 0 && decryptedMessage.media.thumb.length <= 5000 && decryptedMessage.media.thumb_w < 100 && decryptedMessage.media.thumb_h < 100) { if (decryptedMessage.media.thumb.length != 0 && decryptedMessage.media.thumb.length <= 6000 && decryptedMessage.media.thumb_w <= 100 && decryptedMessage.media.thumb_h <= 100) {
newMessage.media.document.thumb = new TLRPC.TL_photoCachedSize(); newMessage.media.document.thumb = new TLRPC.TL_photoCachedSize();
newMessage.media.document.thumb.bytes = decryptedMessage.media.thumb; newMessage.media.document.thumb.bytes = decryptedMessage.media.thumb;
newMessage.media.document.thumb.w = decryptedMessage.media.thumb_w; newMessage.media.document.thumb.w = decryptedMessage.media.thumb_w;
......
...@@ -882,7 +882,7 @@ public class MessagesStorage { ...@@ -882,7 +882,7 @@ public class MessagesStorage {
state.dispose(); state.dispose();
database.commitTransaction(); database.commitTransaction();
database.executeFast(String.format(Locale.US, "UPDATE messages SET ttl = 0 WHERE mid IN(%s)", mids.toString())).stepThis().dispose(); database.executeFast(String.format(Locale.US, "UPDATE messages SET ttl = 0 WHERE mid IN(%s)", mids.toString())).stepThis().dispose();
MessagesController.getInstance().didAddedNewTask(minDate); MessagesController.getInstance().didAddedNewTask(minDate, messages);
} }
} catch (Exception e) { } catch (Exception e) {
FileLog.e("tmessages", e); FileLog.e("tmessages", e);
...@@ -2432,15 +2432,10 @@ public class MessagesStorage { ...@@ -2432,15 +2432,10 @@ public class MessagesStorage {
} }
private int getMessageMediaType(TLRPC.Message message) { private int getMessageMediaType(TLRPC.Message message) {
if (message.media == null) { if (message.media instanceof TLRPC.TL_messageMediaPhoto && message.ttl != 0 && message.ttl <= 60) {
return 0;
} else if (message.media instanceof TLRPC.TL_messageMediaPhoto) {
return 1; return 1;
} else if (message.media instanceof TLRPC.TL_messageMediaVideo) {
return 2;
} else {
return 0;
} }
return 0;
} }
private void putMessagesInternal(final ArrayList<TLRPC.Message> messages, final boolean withTransaction, final boolean isBroadcast, final int downloadMask) { private void putMessagesInternal(final ArrayList<TLRPC.Message> messages, final boolean withTransaction, final boolean isBroadcast, final int downloadMask) {
...@@ -2478,7 +2473,7 @@ public class MessagesStorage { ...@@ -2478,7 +2473,7 @@ public class MessagesStorage {
messagesIdsMap.put(message.id, dialog_id); messagesIdsMap.put(message.id, dialog_id);
} }
if (message.ttl == 0 && (message.media instanceof TLRPC.TL_messageMediaVideo || message.media instanceof TLRPC.TL_messageMediaPhoto)) { if (message.media instanceof TLRPC.TL_messageMediaVideo || message.media instanceof TLRPC.TL_messageMediaPhoto && (message.ttl == 0 || message.ttl > 60)) {
if (messageMediaIds.length() > 0) { if (messageMediaIds.length() > 0) {
messageMediaIds.append(","); messageMediaIds.append(",");
} }
...@@ -2562,7 +2557,7 @@ public class MessagesStorage { ...@@ -2562,7 +2557,7 @@ public class MessagesStorage {
state3.step(); state3.step();
} }
if (message.ttl == 0 && (message.media instanceof TLRPC.TL_messageMediaVideo || message.media instanceof TLRPC.TL_messageMediaPhoto)) { if (message.media instanceof TLRPC.TL_messageMediaVideo || message.media instanceof TLRPC.TL_messageMediaPhoto && (message.ttl == 0 || message.ttl > 60)) {
state2.requery(); state2.requery();
state2.bindInteger(1, messageId); state2.bindInteger(1, messageId);
state2.bindLong(2, dialog_id); state2.bindLong(2, dialog_id);
......
...@@ -41,6 +41,7 @@ public class NotificationCenter { ...@@ -41,6 +41,7 @@ public class NotificationCenter {
public static final int openedChatChanged = 29; public static final int openedChatChanged = 29;
public static final int hideEmojiKeyboard = 30; public static final int hideEmojiKeyboard = 30;
public static final int stopEncodingService = 31; public static final int stopEncodingService = 31;
public static final int didCreatedNewDeleteTask = 32;
public static final int wallpapersDidLoaded = 171; public static final int wallpapersDidLoaded = 171;
public static final int closeOtherAppActivities = 702; public static final int closeOtherAppActivities = 702;
......
...@@ -9333,6 +9333,7 @@ public class TLRPC { ...@@ -9333,6 +9333,7 @@ public class TLRPC {
public byte[] auth_key; public byte[] auth_key;
public int user_id; public int user_id;
public int ttl; public int ttl;
public int layer;
} }
public static class FileLocation extends TLObject { public static class FileLocation extends TLObject {
......
...@@ -118,6 +118,7 @@ public class ChatBaseCell extends BaseCell { ...@@ -118,6 +118,7 @@ public class ChatBaseCell extends BaseCell {
private CheckForTap pendingCheckForTap = null; private CheckForTap pendingCheckForTap = null;
private int last_send_state = 0; private int last_send_state = 0;
private int last_delete_date = 0;
private final class CheckForTap implements Runnable { private final class CheckForTap implements Runnable {
public void run() { public void run() {
...@@ -219,6 +220,9 @@ public class ChatBaseCell extends BaseCell { ...@@ -219,6 +220,9 @@ public class ChatBaseCell extends BaseCell {
if (last_send_state != currentMessageObject.messageOwner.send_state) { if (last_send_state != currentMessageObject.messageOwner.send_state) {
return true; return true;
} }
if (last_delete_date != currentMessageObject.messageOwner.destroyTime) {
return true;
}
TLRPC.User newUser = MessagesController.getInstance().getUser(currentMessageObject.messageOwner.from_id); TLRPC.User newUser = MessagesController.getInstance().getUser(currentMessageObject.messageOwner.from_id);
TLRPC.FileLocation newPhoto = null; TLRPC.FileLocation newPhoto = null;
...@@ -251,6 +255,7 @@ public class ChatBaseCell extends BaseCell { ...@@ -251,6 +255,7 @@ public class ChatBaseCell extends BaseCell {
public void setMessageObject(MessageObject messageObject) { public void setMessageObject(MessageObject messageObject) {
currentMessageObject = messageObject; currentMessageObject = messageObject;
last_send_state = messageObject.messageOwner.send_state; last_send_state = messageObject.messageOwner.send_state;
last_delete_date = messageObject.messageOwner.destroyTime;
isPressed = false; isPressed = false;
isCheckPressed = true; isCheckPressed = true;
isAvatarVisible = false; isAvatarVisible = false;
......
...@@ -42,8 +42,6 @@ import java.util.Locale; ...@@ -42,8 +42,6 @@ import java.util.Locale;
public class ChatMediaCell extends ChatBaseCell implements MediaController.FileDownloadProgressListener { public class ChatMediaCell extends ChatBaseCell implements MediaController.FileDownloadProgressListener {
public static interface ChatMediaCellDelegate { public static interface ChatMediaCellDelegate {
public abstract boolean didPressedImage(ChatMediaCell cell);
public abstract void didUnpressedImage(ChatMediaCell cell);
public abstract void didClickedImage(ChatMediaCell cell); public abstract void didClickedImage(ChatMediaCell cell);
public abstract void didPressedOther(ChatMediaCell cell); public abstract void didPressedOther(ChatMediaCell cell);
} }
...@@ -85,7 +83,6 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD ...@@ -85,7 +83,6 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD
private boolean otherPressed = false; private boolean otherPressed = false;
private int buttonX; private int buttonX;
private int buttonY; private int buttonY;
private boolean listenForUnpressed = false;
private StaticLayout infoLayout; private StaticLayout infoLayout;
private int infoWidth; private int infoWidth;
...@@ -212,10 +209,8 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD ...@@ -212,10 +209,8 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD
} }
} }
} }
listenForUnpressed = false; if (imagePressed && currentMessageObject.isSecretMedia()) {
if (imagePressed && mediaDelegate != null && mediaDelegate.didPressedImage(this)) {
imagePressed = false; imagePressed = false;
listenForUnpressed = true;
} else if (result) { } else if (result) {
startCheckLongPress(); startCheckLongPress();
} }
...@@ -242,8 +237,10 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD ...@@ -242,8 +237,10 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD
} else if (imagePressed) { } else if (imagePressed) {
if (event.getAction() == MotionEvent.ACTION_UP) { if (event.getAction() == MotionEvent.ACTION_UP) {
imagePressed = false; imagePressed = false;
if (buttonState == -1 || buttonState == 2 || buttonState == 3) {
playSoundEffect(SoundEffectConstants.CLICK); playSoundEffect(SoundEffectConstants.CLICK);
didClickedImage(); didClickedImage();
}
invalidate(); invalidate();
} else if (event.getAction() == MotionEvent.ACTION_CANCEL) { } else if (event.getAction() == MotionEvent.ACTION_CANCEL) {
imagePressed = false; imagePressed = false;
...@@ -277,14 +274,6 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD ...@@ -277,14 +274,6 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD
} }
} }
} }
} else if (listenForUnpressed) {
if (event.getAction() == MotionEvent.ACTION_POINTER_UP || event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) {
if (listenForUnpressed && mediaDelegate != null) {
mediaDelegate.didUnpressedImage(this);
}
listenForUnpressed = false;
}
result = true;
} }
} }
if (!result) { if (!result) {
...@@ -575,6 +564,10 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD ...@@ -575,6 +564,10 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD
w = timeWidthTotal; w = timeWidthTotal;
} }
if (currentMessageObject.isSecretMedia()) {
w = h = (int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.5f);
}
photoWidth = w; photoWidth = w;
photoHeight = h; photoHeight = h;
backgroundWidth = w + AndroidUtilities.dp(12); backgroundWidth = w + AndroidUtilities.dp(12);
...@@ -785,7 +778,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD ...@@ -785,7 +778,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD
} }
private void updateSecretTimeText() { private void updateSecretTimeText() {
if (currentMessageObject == null) { if (currentMessageObject == null || currentMessageObject.isOut()) {
return; return;
} }
String str = currentMessageObject.getSecretTimeString(); String str = currentMessageObject.getSecretTimeString();
......
...@@ -234,7 +234,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat ...@@ -234,7 +234,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
public int getSelectedCount(); public int getSelectedCount();
} }
private static class FrameLayoutTouchListener extends FrameLayout { private class FrameLayoutTouchListener extends FrameLayout {
public FrameLayoutTouchListener(Context context) { public FrameLayoutTouchListener(Context context) {
super(context); super(context);
} }
...@@ -251,7 +251,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat ...@@ -251,7 +251,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
} }
} }
private static class FrameLayoutDrawer extends FrameLayout { private class FrameLayoutDrawer extends FrameLayout {
public FrameLayoutDrawer(Context context) { public FrameLayoutDrawer(Context context) {
super(context); super(context);
setWillNotDraw(false); setWillNotDraw(false);
......
...@@ -10,11 +10,17 @@ package org.telegram.ui.Views; ...@@ -10,11 +10,17 @@ package org.telegram.ui.Views;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.widget.ListView; import android.widget.ListView;
public class LayoutListView extends ListView { public class LayoutListView extends ListView {
public static interface OnInterceptTouchEventListener {
public abstract boolean onInterceptTouchEvent(MotionEvent event);
}
private OnInterceptTouchEventListener onInterceptTouchEventListener;
private int height = -1; private int height = -1;
public LayoutListView(Context context) { public LayoutListView(Context context) {
...@@ -29,6 +35,18 @@ public class LayoutListView extends ListView { ...@@ -29,6 +35,18 @@ public class LayoutListView extends ListView {
super(context, attrs, defStyle); super(context, attrs, defStyle);
} }
public void setOnInterceptTouchEventListener(OnInterceptTouchEventListener listener) {
onInterceptTouchEventListener = listener;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (onInterceptTouchEventListener != null) {
return onInterceptTouchEventListener.onInterceptTouchEvent(ev);
}
return super.onInterceptTouchEvent(ev);
}
@Override @Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) { protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
View v = getChildAt(getChildCount() - 1); View v = getChildAt(getChildCount() - 1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment