Bug fixes
This commit is contained in:
parent
fdaf4555c5
commit
95de265e1a
@ -80,7 +80,7 @@ android {
|
||||
defaultConfig {
|
||||
minSdkVersion 8
|
||||
targetSdkVersion 21
|
||||
versionCode 395
|
||||
versionName "2.0.4"
|
||||
versionCode 397
|
||||
versionName "2.0.5"
|
||||
}
|
||||
}
|
||||
|
@ -425,7 +425,9 @@ public class NotificationsController {
|
||||
}
|
||||
|
||||
mBuilder.setCategory(NotificationCompat.CATEGORY_MESSAGE);
|
||||
mBuilder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
|
||||
if (chat == null && user != null && user.phone != null && user.phone.length() > 0) {
|
||||
mBuilder.addPerson("tel:+" + user.phone);
|
||||
}
|
||||
/*Bundle bundle = new Bundle();
|
||||
bundle.putString(NotificationCompat.EXTRA_PEOPLE, );
|
||||
mBuilder.setExtras()*/
|
||||
@ -636,6 +638,10 @@ public class NotificationsController {
|
||||
.extend(new NotificationCompat.WearableExtender().addAction(action))
|
||||
.setCategory(NotificationCompat.CATEGORY_MESSAGE);
|
||||
|
||||
if (chat == null && user != null && user.phone != null && user.phone.length() > 0) {
|
||||
builder.addPerson("tel:+" + user.phone);
|
||||
}
|
||||
|
||||
notificationManager.notify(notificationId, builder.build());
|
||||
wearNoticationsIds.put(dialog_id, notificationId);
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ public class ActionBar extends FrameLayout {
|
||||
private ImageView backButtonImageView;
|
||||
private TextView titleTextView;
|
||||
private TextView subTitleTextView;
|
||||
private View actionModeTop;
|
||||
private ActionBarMenu menu;
|
||||
private ActionBarMenu actionMode;
|
||||
private boolean occupyStatusBar = Build.VERSION.SDK_INT >= 21;
|
||||
@ -343,6 +344,19 @@ public class ActionBar extends FrameLayout {
|
||||
layoutParams.gravity = Gravity.RIGHT;
|
||||
actionMode.setLayoutParams(layoutParams);
|
||||
actionMode.setVisibility(GONE);
|
||||
|
||||
if (occupyStatusBar) {
|
||||
actionModeTop = new View(getContext());
|
||||
actionModeTop.setBackgroundColor(0x99000000);
|
||||
addView(actionModeTop);
|
||||
layoutParams = (FrameLayout.LayoutParams)actionModeTop.getLayoutParams();
|
||||
layoutParams.height = AndroidUtilities.statusBarHeight;
|
||||
layoutParams.width = LayoutParams.FILL_PARENT;
|
||||
layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
|
||||
actionModeTop.setLayoutParams(layoutParams);
|
||||
actionModeTop.setVisibility(GONE);
|
||||
}
|
||||
|
||||
return actionMode;
|
||||
}
|
||||
|
||||
@ -351,6 +365,9 @@ public class ActionBar extends FrameLayout {
|
||||
return;
|
||||
}
|
||||
actionMode.setVisibility(VISIBLE);
|
||||
if (actionModeTop != null) {
|
||||
actionModeTop.setVisibility(VISIBLE);
|
||||
}
|
||||
if (titleFrameLayout != null) {
|
||||
titleFrameLayout.setVisibility(INVISIBLE);
|
||||
}
|
||||
@ -364,6 +381,9 @@ public class ActionBar extends FrameLayout {
|
||||
return;
|
||||
}
|
||||
actionMode.setVisibility(GONE);
|
||||
if (actionModeTop != null) {
|
||||
actionModeTop.setVisibility(GONE);
|
||||
}
|
||||
if (titleFrameLayout != null) {
|
||||
titleFrameLayout.setVisibility(VISIBLE);
|
||||
}
|
||||
|
@ -119,7 +119,6 @@ public class BaseFragment {
|
||||
public void onPause() {
|
||||
if (actionBar != null) {
|
||||
actionBar.onPause();
|
||||
actionBar.closeSearchField();
|
||||
}
|
||||
try {
|
||||
if (visibleDialog != null && visibleDialog.isShowing()) {
|
||||
|
@ -9,6 +9,7 @@
|
||||
package org.telegram.ui.Adapters;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
@ -35,6 +36,7 @@ public class ContactsAdapter extends BaseSectionsAdapter {
|
||||
private boolean needPhonebook;
|
||||
private HashMap<Integer, TLRPC.User> ignoreUsers;
|
||||
private HashMap<Integer, ?> checkedMap;
|
||||
private boolean scrolling;
|
||||
|
||||
public ContactsAdapter(Context context, boolean arg1, boolean arg2, HashMap<Integer, TLRPC.User> arg3) {
|
||||
mContext = context;
|
||||
@ -47,6 +49,10 @@ public class ContactsAdapter extends BaseSectionsAdapter {
|
||||
checkedMap = map;
|
||||
}
|
||||
|
||||
public void setIsScrolling(boolean value) {
|
||||
scrolling = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getItem(int section, int position) {
|
||||
if (onlyUsers) {
|
||||
@ -175,7 +181,7 @@ public class ContactsAdapter extends BaseSectionsAdapter {
|
||||
if (type == 4) {
|
||||
if (convertView == null) {
|
||||
convertView = new DividerCell(mContext);
|
||||
convertView.setPadding(AndroidUtilities.dp(LocaleController.isRTL ? 24 : 72), 0, AndroidUtilities.dp(LocaleController.isRTL ? 72 : 24), 0);
|
||||
convertView.setPadding(AndroidUtilities.dp(LocaleController.isRTL ? 28 : 72), 0, AndroidUtilities.dp(LocaleController.isRTL ? 72 : 28), 0);
|
||||
}
|
||||
} else if (type == 3) {
|
||||
if (convertView == null) {
|
||||
@ -220,7 +226,7 @@ public class ContactsAdapter extends BaseSectionsAdapter {
|
||||
TLRPC.User user = MessagesController.getInstance().getUser(arr.get(position).user_id);
|
||||
((UserCell)convertView).setData(user, null, null, 0);
|
||||
if (checkedMap != null) {
|
||||
((UserCell) convertView).setChecked(checkedMap.containsKey(user.id), false);
|
||||
((UserCell) convertView).setChecked(checkedMap.containsKey(user.id), !scrolling && Build.VERSION.SDK_INT > 10);
|
||||
}
|
||||
if (ignoreUsers != null) {
|
||||
if (ignoreUsers.containsKey(user.id)) {
|
||||
|
@ -19,6 +19,7 @@ import android.widget.TextView;
|
||||
import org.telegram.android.AndroidUtilities;
|
||||
import org.telegram.android.LocaleController;
|
||||
import org.telegram.ui.Views.BackupImageView;
|
||||
import org.telegram.ui.Views.CheckBox;
|
||||
|
||||
public class TextDetailDocumentsCell extends FrameLayout {
|
||||
|
||||
@ -26,6 +27,7 @@ public class TextDetailDocumentsCell extends FrameLayout {
|
||||
private TextView valueTextView;
|
||||
private TextView typeTextView;
|
||||
private BackupImageView imageView;
|
||||
private CheckBox checkBox;
|
||||
|
||||
public TextDetailDocumentsCell(Context context) {
|
||||
super(context);
|
||||
@ -90,6 +92,18 @@ public class TextDetailDocumentsCell extends FrameLayout {
|
||||
layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 0);
|
||||
layoutParams.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL;
|
||||
imageView.setLayoutParams(layoutParams);
|
||||
|
||||
checkBox = new CheckBox(context);
|
||||
checkBox.setVisibility(GONE);
|
||||
addView(checkBox);
|
||||
layoutParams = (LayoutParams) checkBox.getLayoutParams();
|
||||
layoutParams.width = AndroidUtilities.dp(22);
|
||||
layoutParams.height = AndroidUtilities.dp(22);
|
||||
layoutParams.topMargin = AndroidUtilities.dp(34);
|
||||
layoutParams.leftMargin = LocaleController.isRTL ? 0 : AndroidUtilities.dp(38);
|
||||
layoutParams.rightMargin = LocaleController.isRTL ? AndroidUtilities.dp(38) : 0;
|
||||
layoutParams.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT);
|
||||
checkBox.setLayoutParams(layoutParams);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -117,4 +131,11 @@ public class TextDetailDocumentsCell extends FrameLayout {
|
||||
imageView.setVisibility(GONE);
|
||||
}
|
||||
}
|
||||
|
||||
public void setChecked(boolean checked, boolean animated) {
|
||||
if (checkBox.getVisibility() != VISIBLE) {
|
||||
checkBox.setVisibility(VISIBLE);
|
||||
}
|
||||
checkBox.setChecked(checked, animated);
|
||||
}
|
||||
}
|
||||
|
@ -572,9 +572,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
DocumentSelectActivity fragment = new DocumentSelectActivity();
|
||||
fragment.setDelegate(new DocumentSelectActivity.DocumentSelectActivityDelegate() {
|
||||
@Override
|
||||
public void didSelectFile(DocumentSelectActivity activity, String path) {
|
||||
public void didSelectFiles(DocumentSelectActivity activity, ArrayList<String> files) {
|
||||
activity.finishFragment();
|
||||
SendMessagesHelper.prepareSendingDocument(path, path, null, null, dialog_id);
|
||||
SendMessagesHelper.prepareSendingDocuments(files, files, null, null, dialog_id);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -440,6 +440,14 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
if (actionBar != null) {
|
||||
actionBar.closeSearchField();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void didReceivedNotification(int id, Object... args) {
|
||||
if (id == NotificationCenter.contactsDidLoaded) {
|
||||
|
@ -16,11 +16,15 @@ import android.content.IntentFilter;
|
||||
import android.os.Build;
|
||||
import android.os.Environment;
|
||||
import android.os.StatFs;
|
||||
import android.text.TextUtils;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
@ -33,6 +37,8 @@ import org.telegram.ui.Adapters.BaseFragmentAdapter;
|
||||
import org.telegram.ui.ActionBar.ActionBar;
|
||||
import org.telegram.ui.ActionBar.ActionBarMenu;
|
||||
import org.telegram.ui.ActionBar.ActionBarMenuItem;
|
||||
import org.telegram.ui.AnimationCompat.AnimatorSetProxy;
|
||||
import org.telegram.ui.AnimationCompat.ObjectAnimatorProxy;
|
||||
import org.telegram.ui.Cells.TextDetailDocumentsCell;
|
||||
import org.telegram.ui.ActionBar.BaseFragment;
|
||||
|
||||
@ -47,19 +53,26 @@ import java.util.HashMap;
|
||||
public class DocumentSelectActivity extends BaseFragment {
|
||||
|
||||
public static abstract interface DocumentSelectActivityDelegate {
|
||||
public void didSelectFile(DocumentSelectActivity activity, String path);
|
||||
public void didSelectFiles(DocumentSelectActivity activity, ArrayList<String> files);
|
||||
public void startDocumentSelectActivity();
|
||||
}
|
||||
|
||||
private ListView listView;
|
||||
private ListAdapter listAdapter;
|
||||
private File currentDir;
|
||||
private TextView selectedMessagesCountTextView;
|
||||
private TextView emptyView;
|
||||
|
||||
private File currentDir;
|
||||
private ArrayList<ListItem> items = new ArrayList<ListItem>();
|
||||
private boolean receiverRegistered = false;
|
||||
private ArrayList<HistoryEntry> history = new ArrayList<HistoryEntry>();
|
||||
private long sizeLimit = 1024 * 1024 * 1024;
|
||||
private DocumentSelectActivityDelegate delegate;
|
||||
private HashMap<String, ListItem> selectedFiles = new HashMap<String, ListItem>();
|
||||
private ArrayList<View> actionModeViews = new ArrayList<View>();
|
||||
private boolean scrolling;
|
||||
|
||||
private final static int done = 3;
|
||||
|
||||
private class ListItem {
|
||||
int icon;
|
||||
@ -144,11 +157,51 @@ public class DocumentSelectActivity extends BaseFragment {
|
||||
delegate.startDocumentSelectActivity();
|
||||
}
|
||||
finishFragment(false);
|
||||
} else if (id == -2) {
|
||||
selectedFiles.clear();
|
||||
actionBar.hideActionMode();
|
||||
listView.invalidateViews();
|
||||
} else if (id == done) {
|
||||
if (delegate != null) {
|
||||
ArrayList<String> files = new ArrayList<String>();
|
||||
files.addAll(selectedFiles.keySet());
|
||||
delegate.didSelectFiles(DocumentSelectActivity.this, files);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
ActionBarMenu menu = actionBar.createMenu();
|
||||
ActionBarMenuItem item = menu.addItem(1, R.drawable.ic_ab_other);
|
||||
final ActionBarMenuItem item = menu.addItem(1, R.drawable.ic_ab_other);
|
||||
|
||||
selectedFiles.clear();
|
||||
actionModeViews.clear();
|
||||
|
||||
final ActionBarMenu actionMode = actionBar.createActionMode();
|
||||
actionModeViews.add(actionMode.addItem(-2, R.drawable.ic_ab_back_grey, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54)));
|
||||
|
||||
selectedMessagesCountTextView = new TextView(actionMode.getContext());
|
||||
selectedMessagesCountTextView.setTextSize(18);
|
||||
selectedMessagesCountTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
selectedMessagesCountTextView.setTextColor(0xff737373);
|
||||
selectedMessagesCountTextView.setSingleLine(true);
|
||||
selectedMessagesCountTextView.setLines(1);
|
||||
selectedMessagesCountTextView.setEllipsize(TextUtils.TruncateAt.END);
|
||||
selectedMessagesCountTextView.setPadding(AndroidUtilities.dp(11), 0, 0, AndroidUtilities.dp(2));
|
||||
selectedMessagesCountTextView.setGravity(Gravity.CENTER_VERTICAL);
|
||||
selectedMessagesCountTextView.setOnTouchListener(new View.OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
actionMode.addView(selectedMessagesCountTextView);
|
||||
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)selectedMessagesCountTextView.getLayoutParams();
|
||||
layoutParams.weight = 1;
|
||||
layoutParams.width = 0;
|
||||
layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT;
|
||||
selectedMessagesCountTextView.setLayoutParams(layoutParams);
|
||||
|
||||
actionModeViews.add(actionMode.addItem(done, R.drawable.ic_ab_done_gray, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54)));
|
||||
|
||||
fragmentView = inflater.inflate(R.layout.document_select_layout, container, false);
|
||||
listAdapter = new ListAdapter(getParentActivity());
|
||||
@ -162,9 +215,75 @@ public class DocumentSelectActivity extends BaseFragment {
|
||||
listView = (ListView)fragmentView.findViewById(R.id.listView);
|
||||
listView.setEmptyView(emptyView);
|
||||
listView.setAdapter(listAdapter);
|
||||
|
||||
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) {
|
||||
scrolling = scrollState != SCROLL_STATE_IDLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
|
||||
@Override
|
||||
public boolean onItemLongClick(AdapterView<?> parent, View view, int i, long id) {
|
||||
if (actionBar.isActionModeShowed() || i < 0 || i >= items.size()) {
|
||||
return false;
|
||||
}
|
||||
ListItem item = items.get(i);
|
||||
File file = item.file;
|
||||
if (file != null && !file.isDirectory()) {
|
||||
if (!file.canRead()) {
|
||||
showErrorBox(LocaleController.getString("AccessError", R.string.AccessError));
|
||||
return false;
|
||||
}
|
||||
if (sizeLimit != 0) {
|
||||
if (file.length() > sizeLimit) {
|
||||
showErrorBox(LocaleController.formatString("FileUploadLimit", R.string.FileUploadLimit, Utilities.formatFileSize(sizeLimit)));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (file.length() == 0) {
|
||||
return false;
|
||||
}
|
||||
selectedFiles.put(file.toString(), item);
|
||||
selectedMessagesCountTextView.setText(String.format("%d", selectedFiles.size()));
|
||||
if (Build.VERSION.SDK_INT >= 11) {
|
||||
AnimatorSetProxy animatorSet = new AnimatorSetProxy();
|
||||
ArrayList<Object> animators = new ArrayList<Object>();
|
||||
for (int a = 0; a < actionModeViews.size(); a++) {
|
||||
View view2 = actionModeViews.get(a);
|
||||
AndroidUtilities.clearDrawableAnimation(view2);
|
||||
if (a < 1) {
|
||||
animators.add(ObjectAnimatorProxy.ofFloat(view2, "translationX", -AndroidUtilities.dp(56), 0));
|
||||
} else {
|
||||
animators.add(ObjectAnimatorProxy.ofFloat(view2, "scaleY", 0.1f, 1.0f));
|
||||
}
|
||||
}
|
||||
animatorSet.playTogether(animators);
|
||||
animatorSet.setDuration(250);
|
||||
animatorSet.start();
|
||||
}
|
||||
scrolling = false;
|
||||
if (view instanceof TextDetailDocumentsCell) {
|
||||
((TextDetailDocumentsCell) view).setChecked(true, true);
|
||||
}
|
||||
actionBar.showActionMode();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
|
||||
if (i < 0 || i >= items.size()) {
|
||||
return;
|
||||
}
|
||||
ListItem item = items.get(i);
|
||||
File file = item.file;
|
||||
if (file == null) {
|
||||
@ -202,8 +321,27 @@ public class DocumentSelectActivity extends BaseFragment {
|
||||
if (file.length() == 0) {
|
||||
return;
|
||||
}
|
||||
if (delegate != null) {
|
||||
delegate.didSelectFile(DocumentSelectActivity.this, file.getAbsolutePath());
|
||||
if (actionBar.isActionModeShowed()) {
|
||||
if (selectedFiles.containsKey(file.toString())) {
|
||||
selectedFiles.remove(file.toString());
|
||||
} else {
|
||||
selectedFiles.put(file.toString(), item);
|
||||
}
|
||||
if (selectedFiles.isEmpty()) {
|
||||
actionBar.hideActionMode();
|
||||
} else {
|
||||
selectedMessagesCountTextView.setText(String.format("%d", selectedFiles.size()));
|
||||
}
|
||||
scrolling = false;
|
||||
if (view instanceof TextDetailDocumentsCell) {
|
||||
((TextDetailDocumentsCell) view).setChecked(selectedFiles.containsKey(item.file.toString()), true);
|
||||
}
|
||||
} else {
|
||||
if (delegate != null) {
|
||||
ArrayList<String> files = new ArrayList<String>();
|
||||
files.add(file.getAbsolutePath());
|
||||
delegate.didSelectFiles(DocumentSelectActivity.this, files);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -263,6 +401,7 @@ public class DocumentSelectActivity extends BaseFragment {
|
||||
emptyView.setText(LocaleController.getString("NotMounted", R.string.NotMounted));
|
||||
}
|
||||
AndroidUtilities.clearDrawableAnimation(listView);
|
||||
scrolling = true;
|
||||
listAdapter.notifyDataSetChanged();
|
||||
return true;
|
||||
}
|
||||
@ -331,6 +470,7 @@ public class DocumentSelectActivity extends BaseFragment {
|
||||
item.file = null;
|
||||
items.add(0, item);
|
||||
AndroidUtilities.clearDrawableAnimation(listView);
|
||||
scrolling = true;
|
||||
listAdapter.notifyDataSetChanged();
|
||||
return true;
|
||||
}
|
||||
@ -421,6 +561,7 @@ public class DocumentSelectActivity extends BaseFragment {
|
||||
}
|
||||
|
||||
AndroidUtilities.clearDrawableAnimation(listView);
|
||||
scrolling = true;
|
||||
listAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@ -477,6 +618,11 @@ public class DocumentSelectActivity extends BaseFragment {
|
||||
String type = item.ext.toUpperCase().substring(0, Math.min(item.ext.length(), 4));
|
||||
((TextDetailDocumentsCell) convertView).setTextAndValueAndTypeAndThumb(item.title, item.subtitle, type, item.thumb, 0);
|
||||
}
|
||||
if (item.file != null && actionBar.isActionModeShowed()) {
|
||||
textDetailCell.setChecked(selectedFiles.containsKey(item.file.toString()), !scrolling);
|
||||
} else {
|
||||
textDetailCell.setChecked(false, !scrolling);
|
||||
}
|
||||
return convertView;
|
||||
}
|
||||
}
|
||||
|
@ -455,6 +455,9 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen
|
||||
if (i == SCROLL_STATE_TOUCH_SCROLL) {
|
||||
AndroidUtilities.hideKeyboard(userSelectEditText);
|
||||
}
|
||||
if (listViewAdapter != null) {
|
||||
listViewAdapter.setIsScrolling(i != SCROLL_STATE_IDLE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -362,6 +362,10 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter
|
||||
}
|
||||
if (message_id != 0) {
|
||||
args.putInt("message_id", message_id);
|
||||
} else {
|
||||
if (actionBar != null) {
|
||||
actionBar.closeSearchField();
|
||||
}
|
||||
}
|
||||
if (AndroidUtilities.isTablet()) {
|
||||
if (openedDialogId == dialog_id) {
|
||||
|
@ -485,10 +485,10 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
} else if (i == 1) {
|
||||
if(Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
|
||||
android.text.ClipboardManager clipboard = (android.text.ClipboardManager)ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
clipboard.setText(user.phone);
|
||||
clipboard.setText("+" + user.phone);
|
||||
} else {
|
||||
android.content.ClipboardManager clipboard = (android.content.ClipboardManager)ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
android.content.ClipData clip = android.content.ClipData.newPlainText("label", user.phone);
|
||||
android.content.ClipData clip = android.content.ClipData.newPlainText("label", "+" + user.phone);
|
||||
clipboard.setPrimaryClip(clip);
|
||||
}
|
||||
}
|
||||
|
@ -148,6 +148,7 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen
|
||||
ViewProxy.setScaleX(sendButton, 0.1f);
|
||||
ViewProxy.setScaleY(sendButton, 0.1f);
|
||||
ViewProxy.setAlpha(sendButton, 0.0f);
|
||||
sendButton.clearAnimation();
|
||||
emojiButton = (ImageView) containerView.findViewById(R.id.chat_smile_button);
|
||||
audioSendButton = (ImageButton) containerView.findViewById(R.id.chat_audio_send_button);
|
||||
recordPanel = containerView.findViewById(R.id.record_panel);
|
||||
|
@ -58,13 +58,23 @@ public class CheckBox extends View {
|
||||
eraser2.setStrokeWidth(AndroidUtilities.dp(28));
|
||||
eraser2.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
|
||||
}
|
||||
drawBitmap = Bitmap.createBitmap(AndroidUtilities.dp(22), AndroidUtilities.dp(22), Bitmap.Config.ARGB_4444);
|
||||
bitmapCanvas = new Canvas(drawBitmap);
|
||||
checkBitmap = Bitmap.createBitmap(AndroidUtilities.dp(22), AndroidUtilities.dp(22), Bitmap.Config.ARGB_4444);
|
||||
checkCanvas = new Canvas(checkBitmap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisibility(int visibility) {
|
||||
super.setVisibility(visibility);
|
||||
if (visibility == VISIBLE && drawBitmap == null) {
|
||||
drawBitmap = Bitmap.createBitmap(AndroidUtilities.dp(22), AndroidUtilities.dp(22), Bitmap.Config.ARGB_4444);
|
||||
bitmapCanvas = new Canvas(drawBitmap);
|
||||
checkBitmap = Bitmap.createBitmap(AndroidUtilities.dp(22), AndroidUtilities.dp(22), Bitmap.Config.ARGB_4444);
|
||||
checkCanvas = new Canvas(checkBitmap);
|
||||
}
|
||||
}
|
||||
|
||||
public void setProgress(float value) {
|
||||
if (progress == value) {
|
||||
return;
|
||||
}
|
||||
progress = value;
|
||||
invalidate();
|
||||
}
|
||||
@ -104,8 +114,10 @@ public class CheckBox extends View {
|
||||
}
|
||||
|
||||
public void setChecked(boolean checked, boolean animated) {
|
||||
if (checked == isChecked) {
|
||||
return;
|
||||
}
|
||||
isChecked = checked;
|
||||
invalidate();
|
||||
|
||||
if (attachedToWindow && animated) {
|
||||
animateToCheckedState(checked);
|
||||
@ -121,6 +133,9 @@ public class CheckBox extends View {
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
if (getVisibility() != VISIBLE) {
|
||||
return;
|
||||
}
|
||||
if (progress != 0) {
|
||||
drawBitmap.eraseColor(0);
|
||||
float rad = getMeasuredWidth() / 2;
|
||||
|
@ -23,6 +23,7 @@ import android.graphics.PorterDuffColorFilter;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.Region;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.view.Gravity;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.VelocityTracker;
|
||||
@ -532,7 +533,7 @@ public class Switch extends CompoundButton {
|
||||
mThumbDrawable.setBounds(thumbLeft, switchTop + offset, thumbRight, switchBottom + offset);
|
||||
|
||||
final Drawable background = getBackground();
|
||||
if (background != null) {
|
||||
if (background != null && Build.VERSION.SDK_INT >= 21) {
|
||||
background.setHotspotBounds(thumbLeft, switchTop, thumbRight, switchBottom);
|
||||
}
|
||||
}
|
||||
|
BIN
TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done_gray.png
Executable file
BIN
TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done_gray.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done_gray.png
Executable file
BIN
TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done_gray.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done_gray.png
Executable file
BIN
TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done_gray.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
BIN
TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done_gray.png
Executable file
BIN
TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done_gray.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
Loading…
Reference in New Issue
Block a user