From b5fe0acd8900f42e904a3a59e57783abefb1b8f7 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Wed, 29 Mar 2017 21:13:15 +0200 Subject: [PATCH] Cleanup. --- .../com/b44t/messenger/MessageObject.java | 3 +- .../b44t/ui/Adapters/DrawerLayoutAdapter.java | 69 +- .../main/java/com/b44t/ui/ChatActivity.java | 2 +- .../java/com/b44t/ui/DialogsActivity.java | 11 - .../main/java/com/b44t/ui/LaunchActivity.java | 685 +++++++++--------- .../java/com/b44t/ui/WallpapersActivity.java | 2 +- 6 files changed, 381 insertions(+), 391 deletions(-) diff --git a/MessengerProj/src/main/java/com/b44t/messenger/MessageObject.java b/MessengerProj/src/main/java/com/b44t/messenger/MessageObject.java index 17487a62d..1dd768ada 100644 --- a/MessengerProj/src/main/java/com/b44t/messenger/MessageObject.java +++ b/MessengerProj/src/main/java/com/b44t/messenger/MessageObject.java @@ -795,11 +795,10 @@ public class MessageObject { } } - // EDIT BY MR: we use the attachPath for the normal images + // we use the attachPath for the normal images (bp) if( (mediaExists || attachPathExists) && messageOwner.created_by_mr ) { attachPathExists = true; mediaExists = true; } - // /EDIT BY MR } } diff --git a/MessengerProj/src/main/java/com/b44t/ui/Adapters/DrawerLayoutAdapter.java b/MessengerProj/src/main/java/com/b44t/ui/Adapters/DrawerLayoutAdapter.java index 9ca253ccc..ff9223c21 100644 --- a/MessengerProj/src/main/java/com/b44t/ui/Adapters/DrawerLayoutAdapter.java +++ b/MessengerProj/src/main/java/com/b44t/ui/Adapters/DrawerLayoutAdapter.java @@ -40,21 +40,22 @@ public class DrawerLayoutAdapter extends BaseAdapter { private Context mContext; - public final static int iProfile = 0; - public final static int iEmptyBelowProfile = 1; - public final static int iNewChat = 2; - public final static int iNewGroup = 3; - public final static int iDivider = 4; - public final static int iSettings = 5; - public final static int iInviteMenuEntry = 6; - public final static int iDeaddrop = 7; - public final static int iFaq = 8; - public final static int iCount = 9; + public final static int ROW_PROFILE = 0; + public final static int ROW_EMPTY_BELOW_PROFILE = 1; + public final static int ROW_NEW_CHAT = 2; + public final static int ROW_NEW_GROUP = 3; + public final static int ROW_DIVIDER = 4; + public final static int ROW_SETTINGS = 5; + public final static int ROW_INVITE = 6; + public final static int ROW_DEADDROP = 7; + public final static int ROW_FAQ = 8; + public final static int ROW_COUNT = 9; - public final static int typeProfile = 0; - public final static int typeEmpty = 1; - public final static int typeDivider = 2; - public final static int typeButton = 3; + private final static int TYPE_PROFILE = 0; + private final static int TYPE_EMPTY = 1; + private final static int TYPE_DIVIDER = 2; + private final static int TYPE_BUTTON = 3; + private final static int TYPE_COUNT = 4; public DrawerLayoutAdapter(Context context) { mContext = context; @@ -67,12 +68,12 @@ public class DrawerLayoutAdapter extends BaseAdapter { @Override public boolean isEnabled(int i) { - return !(i == iProfile || i == iEmptyBelowProfile || i == iDivider); + return !(i == ROW_PROFILE || i == ROW_EMPTY_BELOW_PROFILE || i == ROW_DIVIDER); } @Override public int getCount() { - return iCount; + return ROW_COUNT; } @Override @@ -93,39 +94,39 @@ public class DrawerLayoutAdapter extends BaseAdapter { @Override public View getView(int i, View view, ViewGroup viewGroup) { int type = getItemViewType(i); - if (type == typeProfile) { + if (type == TYPE_PROFILE) { if (view == null) { view = new DrawerProfileCell(mContext); } ((DrawerProfileCell) view).updateUserName(); - } else if (type == typeEmpty) { + } else if (type == TYPE_EMPTY) { if (view == null) { view = new EmptyCell(mContext, AndroidUtilities.dp(8)); } - } else if (type == typeDivider) { + } else if (type == TYPE_DIVIDER) { if (view == null) { view = new DividerCell(mContext); } - } else if (type == typeButton) { + } else if (type == TYPE_BUTTON) { if (view == null) { view = new DrawerActionCell(mContext); } DrawerActionCell actionCell = (DrawerActionCell) view; - if (i == iNewChat) { + if (i == ROW_NEW_CHAT) { actionCell.setTextAndIcon(LocaleController.getString("NewChat", R.string.NewChat), R.drawable.menu_newchat); - } else if (i == iNewGroup) { + } else if (i == ROW_NEW_GROUP) { actionCell.setTextAndIcon(LocaleController.getString("NewGroup", R.string.NewGroup), R.drawable.menu_empty); - } else if (i == iInviteMenuEntry) { + } else if (i == ROW_INVITE) { actionCell.setTextAndIcon(LocaleController.getString("InviteMenuEntry", R.string.InviteMenuEntry), R.drawable.menu_empty); - } else if (i == iDeaddrop) { + } else if (i == ROW_DEADDROP) { actionCell.setTextAndIcon(LocaleController.getString("Deaddrop", R.string.Deaddrop), R.drawable.menu_empty); // we do not want an icon beside the mailbox: // 1. We do not want to give it much attention, // 2. If the mailbox is shown in the chatlist, it gets the chat icon (KISS), but we should not use this icon in the drawer for the mailbox. // 3. Simplicity - we have two sections, "Add" and "Tools" - Mailbox belongs to the latter - } else if (i == iSettings) { + } else if (i == ROW_SETTINGS) { actionCell.setTextAndIcon(LocaleController.getString("Settings", R.string.Settings), R.drawable.menu_settings); - } else if (i == iFaq) { + } else if (i == ROW_FAQ) { actionCell.setTextAndIcon(LocaleController.getString("Help", R.string.Help), R.drawable.menu_empty); } } @@ -135,19 +136,19 @@ public class DrawerLayoutAdapter extends BaseAdapter { @Override public int getItemViewType(int i) { - if (i == iProfile) { - return typeProfile; - } else if (i == iEmptyBelowProfile) { - return typeEmpty; - } else if (i == iDivider) { - return typeDivider; + if (i == ROW_PROFILE) { + return TYPE_PROFILE; + } else if (i == ROW_EMPTY_BELOW_PROFILE) { + return TYPE_EMPTY; + } else if (i == ROW_DIVIDER) { + return TYPE_DIVIDER; } - return typeButton; + return TYPE_BUTTON; } @Override public int getViewTypeCount() { - return 4; + return TYPE_COUNT; } @Override diff --git a/MessengerProj/src/main/java/com/b44t/ui/ChatActivity.java b/MessengerProj/src/main/java/com/b44t/ui/ChatActivity.java index 7e3de7e41..d37efda1c 100644 --- a/MessengerProj/src/main/java/com/b44t/ui/ChatActivity.java +++ b/MessengerProj/src/main/java/com/b44t/ui/ChatActivity.java @@ -1609,7 +1609,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (avatarContainer == null) { return; } - avatarContainer.setTitle(m_mrChat.getName()); // EDIT BY MR -- realize the title from m_hChat + avatarContainer.setTitle(m_mrChat.getName()); // realize the title from m_hChat } private void updateTitleIcons() { diff --git a/MessengerProj/src/main/java/com/b44t/ui/DialogsActivity.java b/MessengerProj/src/main/java/com/b44t/ui/DialogsActivity.java index f6a05dcea..9e423adcc 100644 --- a/MessengerProj/src/main/java/com/b44t/ui/DialogsActivity.java +++ b/MessengerProj/src/main/java/com/b44t/ui/DialogsActivity.java @@ -604,15 +604,6 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } if (listView != null) { try { - /* EDIT BY MR - if (MessagesController.getInstance().loadingDialogs && MessagesController.getInstance().dialogs.isEmpty()) { - searchEmptyView.setVisibility(View.GONE); - emptyView.setVisibility(View.GONE); - listView.setEmptyView(progressView); - } else - */ - { - //progressView.setVisibility(View.GONE); -- EDIT BY MR if (searching && searchWas) { emptyView.setVisibility(View.GONE); listView.setEmptyView(searchEmptyView); @@ -620,9 +611,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. searchEmptyView.setVisibility(View.GONE); listView.setEmptyView(emptyView); } - } } catch (Exception e) { - FileLog.e("messenger", e); //TODO fix it in other way? } } } else if (id == NotificationCenter.emojiDidLoaded) { diff --git a/MessengerProj/src/main/java/com/b44t/ui/LaunchActivity.java b/MessengerProj/src/main/java/com/b44t/ui/LaunchActivity.java index decb7025a..340b3e526 100644 --- a/MessengerProj/src/main/java/com/b44t/ui/LaunchActivity.java +++ b/MessengerProj/src/main/java/com/b44t/ui/LaunchActivity.java @@ -273,7 +273,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); Point screenSize = AndroidUtilities.getRealScreenSize(); - /* EDIT BY MR: Set the width of the drawer -- was: dp(320) */ + // Set the width of the drawer layoutParams.width = AndroidUtilities.isTablet() ? AndroidUtilities.dp(285) : Math.min( AndroidUtilities.dp(285), Math.min(screenSize.x,screenSize.y)-AndroidUtilities.dp(56) ); @@ -284,19 +284,19 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - if (position == DrawerLayoutAdapter.iNewChat) { + if (position == DrawerLayoutAdapter.ROW_NEW_CHAT) { Bundle args = new Bundle(); args.putInt("do_what", ContactsActivity.SELECT_CONTACT_FOR_NEW_CHAT); presentFragment(new ContactsActivity(args)); drawerLayoutContainer.closeDrawer(false); } - else if (position == DrawerLayoutAdapter.iNewGroup) { + else if (position == DrawerLayoutAdapter.ROW_NEW_GROUP) { Bundle args = new Bundle(); args.putInt("do_what", ContactsActivity.SELECT_CONTACTS_FOR_NEW_GROUP); presentFragment(new ContactsActivity(args)); drawerLayoutContainer.closeDrawer(false); } - else if (position == DrawerLayoutAdapter.iInviteMenuEntry) { + else if (position == DrawerLayoutAdapter.ROW_INVITE) { try { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); @@ -307,17 +307,17 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } drawerLayoutContainer.closeDrawer(false); } - else if (position == DrawerLayoutAdapter.iDeaddrop) { + else if (position == DrawerLayoutAdapter.ROW_DEADDROP) { Bundle args = new Bundle(); args.putInt("chat_id", MrChat.MR_CHAT_ID_DEADDROP); presentFragment(new ChatActivity(args)); drawerLayoutContainer.closeDrawer(false); } - else if (position == DrawerLayoutAdapter.iSettings) { + else if (position == DrawerLayoutAdapter.ROW_SETTINGS) { presentFragment(new SettingsActivity()); drawerLayoutContainer.closeDrawer(false); } - else if (position == DrawerLayoutAdapter.iFaq) { + else if (position == DrawerLayoutAdapter.ROW_FAQ) { Browser.openUrl(LaunchActivity.this, "https://getdelta.org/help"); drawerLayoutContainer.closeDrawer(false); } @@ -461,263 +461,124 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } private boolean handleIntent(Intent intent, boolean isNew, boolean restore, boolean fromPassword) { - int flags = intent.getFlags(); + if (!fromPassword && (AndroidUtilities.needShowPasscode(true) || UserConfig.isWaitingForPasscodeEnter)) { showPasscodeActivity(); passcodeSaveIntent = intent; passcodeSaveIntentIsNew = isNew; passcodeSaveIntentIsRestore = restore; UserConfig.saveConfig(); - } else { - boolean pushOpened = false; + return false; + } - Integer push_chat_id = 0; - long dialogId = intent != null && intent.getExtras() != null ? intent.getExtras().getLong("dialogId", 0) : 0; - boolean showDialogsList = false; + int flags = intent.getFlags(); + boolean pushOpened = false; - photoPathsArray = null; - videoPath = null; - sendingText = null; - documentsPathsArray = null; - documentsOriginalPathsArray = null; - documentsMimeType = null; - documentsUrisArray = null; - contactsToSend = null; + Integer push_chat_id = 0; + long dialogId = intent != null && intent.getExtras() != null ? intent.getExtras().getLong("dialogId", 0) : 0; + boolean showDialogsList = false; - if ( (flags & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) { - if (intent != null && intent.getAction() != null && !restore) { - if (Intent.ACTION_SEND.equals(intent.getAction())) { - boolean error = false; - String type = intent.getType(); - if (type != null && type.equals(ContactsContract.Contacts.CONTENT_VCARD_TYPE)) { - try { - Uri uri = (Uri) intent.getExtras().get(Intent.EXTRA_STREAM); - if (uri != null) { - ContentResolver cr = getContentResolver(); - InputStream stream = cr.openInputStream(uri); - ArrayList vcardDatas = new ArrayList<>(); - VcardData currentData = null; + photoPathsArray = null; + videoPath = null; + sendingText = null; + documentsPathsArray = null; + documentsOriginalPathsArray = null; + documentsMimeType = null; + documentsUrisArray = null; + contactsToSend = null; - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream, "UTF-8")); - String line; - while ((line = bufferedReader.readLine()) != null) { - FileLog.e("messenger", line); - String[] args = line.split(":"); - if (args.length != 2) { - continue; - } - if (args[0].equals("BEGIN") && args[1].equals("VCARD")) { - vcardDatas.add(currentData = new VcardData()); - } else if (args[0].equals("END") && args[1].equals("VCARD")) { - currentData = null; - } - if (currentData == null) { - continue; - } - if (args[0].startsWith("FN") || args[0].startsWith("ORG") && TextUtils.isEmpty(currentData.name)) { - String nameEncoding = null; - String nameCharset = null; - String[] params = args[0].split(";"); - for (String param : params) { - String[] args2 = param.split("="); - if (args2.length != 2) { - continue; - } - if (args2[0].equals("CHARSET")) { - nameCharset = args2[1]; - } else if (args2[0].equals("ENCODING")) { - nameEncoding = args2[1]; - } - } - currentData.name = args[1]; - if (nameEncoding != null && nameEncoding.equalsIgnoreCase("QUOTED-PRINTABLE")) { - while (currentData.name.endsWith("=") && nameEncoding != null) { - currentData.name = currentData.name.substring(0, currentData.name.length() - 1); - line = bufferedReader.readLine(); - if (line == null) { - break; - } - currentData.name += line; - } - byte[] bytes = AndroidUtilities.decodeQuotedPrintable(currentData.name.getBytes()); - if (bytes != null && bytes.length != 0) { - String decodedName = new String(bytes, nameCharset); - if (decodedName != null) { - currentData.name = decodedName; - } - } - } - } else if (args[0].startsWith("EMAIL")) { - String email = args[1]; - if (email.length() > 0) { - currentData.emails.add(email); - } - } - } - try { - bufferedReader.close(); - stream.close(); - } catch (Exception e) { - FileLog.e("messenger", e); - } - for (int a = 0; a < vcardDatas.size(); a++) { - VcardData vcardData = vcardDatas.get(a); - if (vcardData.name != null && !vcardData.emails.isEmpty()) { - if (contactsToSend == null) { - contactsToSend = new ArrayList<>(); - } - - for (int b = 0; b < vcardData.emails.size(); b++) { - int contact_to_send_id = MrMailbox.createContact(vcardData.name, vcardData.emails.get(b)); - contactsToSend.add(contact_to_send_id); - } - } - } - if( contactsToSend==null ) { - Toast.makeText(this, ApplicationLoader.applicationContext.getString(R.string.BadEmailAddress), Toast.LENGTH_SHORT).show();; - } - } else { - error = true; - } - } catch (Exception e) { - FileLog.e("messenger", e); - error = true; - } - } else { - String text = intent.getStringExtra(Intent.EXTRA_TEXT); - if (text == null) { - CharSequence textSequence = intent.getCharSequenceExtra(Intent.EXTRA_TEXT); - if (textSequence != null) { - text = textSequence.toString(); - } - } - if( text == null ) - { - // added by MR, the Telegram-FOSS crashes on selecing an image in the gallery - why? - Toast.makeText(this, LocaleController.getString("NotYetImplemented", R.string.NotYetImplemented), Toast.LENGTH_SHORT).show(); - } - else { - String subject = intent.getStringExtra(Intent.EXTRA_SUBJECT); - if (text != null && text.length() != 0) { - if ((text.startsWith("http://") || text.startsWith("https://")) && subject != null && subject.length() != 0) { - text = subject + "\n" + text; - } - sendingText = text; - } else if (subject != null && subject.length() > 0) { - sendingText = subject; - } - - Parcelable parcelable = intent.getParcelableExtra(Intent.EXTRA_STREAM); - if (parcelable != null) { - String path; - if (!(parcelable instanceof Uri)) { - parcelable = Uri.parse(parcelable.toString()); - } - Uri uri = (Uri) parcelable; - if (uri != null) { - if (AndroidUtilities.isInternalUri(uri)) { - error = true; - } - } - if (!error) { - if (uri != null && (type != null && type.startsWith("image/") || uri.toString().toLowerCase().endsWith(".jpg"))) { - if (photoPathsArray == null) { - photoPathsArray = new ArrayList<>(); - } - photoPathsArray.add(uri); - } else { - path = AndroidUtilities.getPath(uri); - if (path != null) { - if (path.startsWith("file:")) { - path = path.replace("file://", ""); - } - if (type != null && type.startsWith("video/")) { - videoPath = path; - } else { - if (documentsPathsArray == null) { - documentsPathsArray = new ArrayList<>(); - documentsOriginalPathsArray = new ArrayList<>(); - } - documentsPathsArray.add(path); - documentsOriginalPathsArray.add(uri.toString()); - } - } else { - if (documentsUrisArray == null) { - documentsUrisArray = new ArrayList<>(); - } - documentsUrisArray.add(uri); - documentsMimeType = type; - } - } - } - } else if (sendingText == null) { - error = true; - } - } - } - if (error) { - Toast.makeText(this, "Unsupported content", Toast.LENGTH_SHORT).show(); - } - } else if (intent.getAction().equals(Intent.ACTION_SEND_MULTIPLE)) { - boolean error = false; + if ( (flags & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) { + if (intent != null && intent.getAction() != null && !restore) { + if (Intent.ACTION_SEND.equals(intent.getAction())) { + boolean error = false; + String type = intent.getType(); + if (type != null && type.equals(ContactsContract.Contacts.CONTENT_VCARD_TYPE)) { try { - ArrayList uris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); - String type = intent.getType(); - if (uris != null) { - for (int a = 0; a < uris.size(); a++) { - Parcelable parcelable = uris.get(a); - if (!(parcelable instanceof Uri)) { - parcelable = Uri.parse(parcelable.toString()); + Uri uri = (Uri) intent.getExtras().get(Intent.EXTRA_STREAM); + if (uri != null) { + ContentResolver cr = getContentResolver(); + InputStream stream = cr.openInputStream(uri); + ArrayList vcardDatas = new ArrayList<>(); + VcardData currentData = null; + + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream, "UTF-8")); + String line; + while ((line = bufferedReader.readLine()) != null) { + FileLog.e("messenger", line); + String[] args = line.split(":"); + if (args.length != 2) { + continue; } - Uri uri = (Uri) parcelable; - if (uri != null) { - if (AndroidUtilities.isInternalUri(uri)) { - uris.remove(a); - a--; + if (args[0].equals("BEGIN") && args[1].equals("VCARD")) { + vcardDatas.add(currentData = new VcardData()); + } else if (args[0].equals("END") && args[1].equals("VCARD")) { + currentData = null; + } + if (currentData == null) { + continue; + } + if (args[0].startsWith("FN") || args[0].startsWith("ORG") && TextUtils.isEmpty(currentData.name)) { + String nameEncoding = null; + String nameCharset = null; + String[] params = args[0].split(";"); + for (String param : params) { + String[] args2 = param.split("="); + if (args2.length != 2) { + continue; + } + if (args2[0].equals("CHARSET")) { + nameCharset = args2[1]; + } else if (args2[0].equals("ENCODING")) { + nameEncoding = args2[1]; + } + } + currentData.name = args[1]; + if (nameEncoding != null && nameEncoding.equalsIgnoreCase("QUOTED-PRINTABLE")) { + while (currentData.name.endsWith("=") && nameEncoding != null) { + currentData.name = currentData.name.substring(0, currentData.name.length() - 1); + line = bufferedReader.readLine(); + if (line == null) { + break; + } + currentData.name += line; + } + byte[] bytes = AndroidUtilities.decodeQuotedPrintable(currentData.name.getBytes()); + if (bytes != null && bytes.length != 0) { + String decodedName = new String(bytes, nameCharset); + if (decodedName != null) { + currentData.name = decodedName; + } + } + } + } else if (args[0].startsWith("EMAIL")) { + String email = args[1]; + if (email.length() > 0) { + currentData.emails.add(email); } } } - if (uris.isEmpty()) { - uris = null; + try { + bufferedReader.close(); + stream.close(); + } catch (Exception e) { + FileLog.e("messenger", e); } - } - if (uris != null) { - if (type != null && type.startsWith("image/")) { - for (int a = 0; a < uris.size(); a++) { - Parcelable parcelable = uris.get(a); - if (!(parcelable instanceof Uri)) { - parcelable = Uri.parse(parcelable.toString()); + for (int a = 0; a < vcardDatas.size(); a++) { + VcardData vcardData = vcardDatas.get(a); + if (vcardData.name != null && !vcardData.emails.isEmpty()) { + if (contactsToSend == null) { + contactsToSend = new ArrayList<>(); } - Uri uri = (Uri) parcelable; - if (photoPathsArray == null) { - photoPathsArray = new ArrayList<>(); - } - photoPathsArray.add(uri); - } - } else { - for (int a = 0; a < uris.size(); a++) { - Parcelable parcelable = uris.get(a); - if (!(parcelable instanceof Uri)) { - parcelable = Uri.parse(parcelable.toString()); - } - String path = AndroidUtilities.getPath((Uri) parcelable); - String originalPath = parcelable.toString(); - if (originalPath == null) { - originalPath = path; - } - if (path != null) { - if (path.startsWith("file:")) { - path = path.replace("file://", ""); - } - if (documentsPathsArray == null) { - documentsPathsArray = new ArrayList<>(); - documentsOriginalPathsArray = new ArrayList<>(); - } - documentsPathsArray.add(path); - documentsOriginalPathsArray.add(originalPath); + + for (int b = 0; b < vcardData.emails.size(); b++) { + int contact_to_send_id = MrMailbox.createContact(vcardData.name, vcardData.emails.get(b)); + contactsToSend.add(contact_to_send_id); } } } + if( contactsToSend==null ) { + Toast.makeText(this, ApplicationLoader.applicationContext.getString(R.string.BadEmailAddress), Toast.LENGTH_SHORT).show();; + } } else { error = true; } @@ -725,128 +586,268 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa FileLog.e("messenger", e); error = true; } - if (error) { - Toast.makeText(this, "Unsupported content", Toast.LENGTH_SHORT).show(); + } else { + String text = intent.getStringExtra(Intent.EXTRA_TEXT); + if (text == null) { + CharSequence textSequence = intent.getCharSequenceExtra(Intent.EXTRA_TEXT); + if (textSequence != null) { + text = textSequence.toString(); + } } - } else if (Intent.ACTION_VIEW.equals(intent.getAction())) { - Uri data = intent.getData(); - if (data != null) { - String scheme = data.getScheme(); - if (scheme != null) { - if ((scheme.equals("http") || scheme.equals("https"))) { - + if( text == null ) + { + // added by MR, the Telegram-FOSS crashes on selecing an image in the gallery - why? + Toast.makeText(this, LocaleController.getString("NotYetImplemented", R.string.NotYetImplemented), Toast.LENGTH_SHORT).show(); + } + else { + String subject = intent.getStringExtra(Intent.EXTRA_SUBJECT); + if (text != null && text.length() != 0) { + if ((text.startsWith("http://") || text.startsWith("https://")) && subject != null && subject.length() != 0) { + text = subject + "\n" + text; } + sendingText = text; + } else if (subject != null && subject.length() > 0) { + sendingText = subject; + } + + Parcelable parcelable = intent.getParcelableExtra(Intent.EXTRA_STREAM); + if (parcelable != null) { + String path; + if (!(parcelable instanceof Uri)) { + parcelable = Uri.parse(parcelable.toString()); + } + Uri uri = (Uri) parcelable; + if (uri != null) { + if (AndroidUtilities.isInternalUri(uri)) { + error = true; + } + } + if (!error) { + if (uri != null && (type != null && type.startsWith("image/") || uri.toString().toLowerCase().endsWith(".jpg"))) { + if (photoPathsArray == null) { + photoPathsArray = new ArrayList<>(); + } + photoPathsArray.add(uri); + } else { + path = AndroidUtilities.getPath(uri); + if (path != null) { + if (path.startsWith("file:")) { + path = path.replace("file://", ""); + } + if (type != null && type.startsWith("video/")) { + videoPath = path; + } else { + if (documentsPathsArray == null) { + documentsPathsArray = new ArrayList<>(); + documentsOriginalPathsArray = new ArrayList<>(); + } + documentsPathsArray.add(path); + documentsOriginalPathsArray.add(uri.toString()); + } + } else { + if (documentsUrisArray == null) { + documentsUrisArray = new ArrayList<>(); + } + documentsUrisArray.add(uri); + documentsMimeType = type; + } + } + } + } else if (sendingText == null) { + error = true; } } } - else if (intent.getAction().startsWith("com.b44t.messenger.openchat")) { - String temp = intent.getAction().substring(27); - int chatId = 0; - try { - chatId = Integer.parseInt(temp, 10); - } catch(Exception e) { + if (error) { + Toast.makeText(this, "Unsupported content", Toast.LENGTH_SHORT).show(); + } + } else if (intent.getAction().equals(Intent.ACTION_SEND_MULTIPLE)) { + boolean error = false; + try { + ArrayList uris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); + String type = intent.getType(); + if (uris != null) { + for (int a = 0; a < uris.size(); a++) { + Parcelable parcelable = uris.get(a); + if (!(parcelable instanceof Uri)) { + parcelable = Uri.parse(parcelable.toString()); + } + Uri uri = (Uri) parcelable; + if (uri != null) { + if (AndroidUtilities.isInternalUri(uri)) { + uris.remove(a); + a--; + } + } + } + if (uris.isEmpty()) { + uris = null; + } } - - if (chatId != 0) { - NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats); - push_chat_id = chatId; + if (uris != null) { + if (type != null && type.startsWith("image/")) { + for (int a = 0; a < uris.size(); a++) { + Parcelable parcelable = uris.get(a); + if (!(parcelable instanceof Uri)) { + parcelable = Uri.parse(parcelable.toString()); + } + Uri uri = (Uri) parcelable; + if (photoPathsArray == null) { + photoPathsArray = new ArrayList<>(); + } + photoPathsArray.add(uri); + } + } else { + for (int a = 0; a < uris.size(); a++) { + Parcelable parcelable = uris.get(a); + if (!(parcelable instanceof Uri)) { + parcelable = Uri.parse(parcelable.toString()); + } + String path = AndroidUtilities.getPath((Uri) parcelable); + String originalPath = parcelable.toString(); + if (originalPath == null) { + originalPath = path; + } + if (path != null) { + if (path.startsWith("file:")) { + path = path.replace("file://", ""); + } + if (documentsPathsArray == null) { + documentsPathsArray = new ArrayList<>(); + documentsOriginalPathsArray = new ArrayList<>(); + } + documentsPathsArray.add(path); + documentsOriginalPathsArray.add(originalPath); + } + } + } } else { - showDialogsList = true; + error = true; } + } catch (Exception e) { + FileLog.e("messenger", e); + error = true; } - } - } + if (error) { + Toast.makeText(this, "Unsupported content", Toast.LENGTH_SHORT).show(); + } + } else if (Intent.ACTION_VIEW.equals(intent.getAction())) { + Uri data = intent.getData(); + if (data != null) { + String scheme = data.getScheme(); + if (scheme != null) { + if ((scheme.equals("http") || scheme.equals("https"))) { - /*if (push_user_id != 0) { - Bundle args = new Bundle(); - args.putInt("user_id", push_user_id); - if (mainFragmentsStack.isEmpty() || MessagesController.checkCanOpenChat(args, mainFragmentsStack.get(mainFragmentsStack.size() - 1))) { - ChatActivity fragment = new ChatActivity(args); - if (actionBarLayout.presentFragment(fragment, false, true, true)) { - pushOpened = true; - } - } - } else*/ if (push_chat_id != 0) { - Bundle args = new Bundle(); - args.putInt("chat_id", push_chat_id); - //if (mainFragmentsStack.isEmpty() || MessagesController.checkCanOpenChat(args, mainFragmentsStack.get(mainFragmentsStack.size() - 1))) { - ChatActivity fragment = new ChatActivity(args); - if (actionBarLayout.presentFragment(fragment, false, true, true)) { - pushOpened = true; - } - //} - } else if (showDialogsList) { - if (!AndroidUtilities.isTablet()) { - actionBarLayout.removeAllFragments(); - } else { - if (!layersActionBarLayout.fragmentsStack.isEmpty()) { - for (int a = 0; a < layersActionBarLayout.fragmentsStack.size() - 1; a++) { - layersActionBarLayout.removeFragmentFromStack(layersActionBarLayout.fragmentsStack.get(0)); - a--; + } } - layersActionBarLayout.closeLastFragment(false); } } - pushOpened = false; - isNew = false; - } - else if (videoPath != null || photoPathsArray != null || sendingText != null || documentsPathsArray != null || contactsToSend != null || documentsUrisArray != null) { - if (!AndroidUtilities.isTablet()) { - NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats); - } - if (dialogId == 0) { - Bundle args = new Bundle(); - args.putBoolean("onlySelect", true); - args.putString("selectAlertString", LocaleController.getString("SendMessagesTo", R.string.SendMessagesTo)); - DialogsActivity fragment = new DialogsActivity(args); - fragment.setDelegate(this); - boolean removeLast; - if (AndroidUtilities.isTablet()) { - removeLast = layersActionBarLayout.fragmentsStack.size() > 0 && layersActionBarLayout.fragmentsStack.get(layersActionBarLayout.fragmentsStack.size() - 1) instanceof DialogsActivity; + else if (intent.getAction().startsWith("com.b44t.messenger.openchat")) { + String temp = intent.getAction().substring(27); + int chatId = 0; + try { + chatId = Integer.parseInt(temp, 10); + } catch(Exception e) { + } + + if (chatId != 0) { + NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats); + push_chat_id = chatId; } else { - removeLast = actionBarLayout.fragmentsStack.size() > 1 && actionBarLayout.fragmentsStack.get(actionBarLayout.fragmentsStack.size() - 1) instanceof DialogsActivity; + showDialogsList = true; } - actionBarLayout.presentFragment(fragment, removeLast, true, true); + } + } + } + + /*if (push_user_id != 0) { + Bundle args = new Bundle(); + args.putInt("user_id", push_user_id); + if (mainFragmentsStack.isEmpty() || MessagesController.checkCanOpenChat(args, mainFragmentsStack.get(mainFragmentsStack.size() - 1))) { + ChatActivity fragment = new ChatActivity(args); + if (actionBarLayout.presentFragment(fragment, false, true, true)) { pushOpened = true; - if (PhotoViewer.getInstance().isVisible()) { - PhotoViewer.getInstance().closePhoto(false, true); + } + } + } else*/ if (push_chat_id != 0) { + Bundle args = new Bundle(); + args.putInt("chat_id", push_chat_id); + //if (mainFragmentsStack.isEmpty() || MessagesController.checkCanOpenChat(args, mainFragmentsStack.get(mainFragmentsStack.size() - 1))) { + ChatActivity fragment = new ChatActivity(args); + if (actionBarLayout.presentFragment(fragment, false, true, true)) { + pushOpened = true; + } + //} + } else if (showDialogsList) { + if (!AndroidUtilities.isTablet()) { + actionBarLayout.removeAllFragments(); + } else { + if (!layersActionBarLayout.fragmentsStack.isEmpty()) { + for (int a = 0; a < layersActionBarLayout.fragmentsStack.size() - 1; a++) { + layersActionBarLayout.removeFragmentFromStack(layersActionBarLayout.fragmentsStack.get(0)); + a--; } + layersActionBarLayout.closeLastFragment(false); + } + } + pushOpened = false; + isNew = false; + } + else if (videoPath != null || photoPathsArray != null || sendingText != null || documentsPathsArray != null || contactsToSend != null || documentsUrisArray != null) { + if (!AndroidUtilities.isTablet()) { + NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats); + } + if (dialogId == 0) { + Bundle args = new Bundle(); + args.putBoolean("onlySelect", true); + args.putString("selectAlertString", LocaleController.getString("SendMessagesTo", R.string.SendMessagesTo)); + DialogsActivity fragment = new DialogsActivity(args); + fragment.setDelegate(this); + boolean removeLast; + if (AndroidUtilities.isTablet()) { + removeLast = layersActionBarLayout.fragmentsStack.size() > 0 && layersActionBarLayout.fragmentsStack.get(layersActionBarLayout.fragmentsStack.size() - 1) instanceof DialogsActivity; + } else { + removeLast = actionBarLayout.fragmentsStack.size() > 1 && actionBarLayout.fragmentsStack.get(actionBarLayout.fragmentsStack.size() - 1) instanceof DialogsActivity; + } + actionBarLayout.presentFragment(fragment, removeLast, true, true); + pushOpened = true; + if (PhotoViewer.getInstance().isVisible()) { + PhotoViewer.getInstance().closePhoto(false, true); + } - drawerLayoutContainer.setAllowOpenDrawer(false, false); - if (AndroidUtilities.isTablet()) { - actionBarLayout.showLastFragment(); - rightActionBarLayout.showLastFragment(); - } else { + drawerLayoutContainer.setAllowOpenDrawer(false, false); + if (AndroidUtilities.isTablet()) { + actionBarLayout.showLastFragment(); + rightActionBarLayout.showLastFragment(); + } else { + drawerLayoutContainer.setAllowOpenDrawer(true, false); + } + } else { + didSelectDialog(null, dialogId, false); + } + } + + if (!pushOpened && !isNew) { + if (AndroidUtilities.isTablet()) { + if (actionBarLayout.fragmentsStack.isEmpty()) { + actionBarLayout.addFragmentToStack(new DialogsActivity(null)); drawerLayoutContainer.setAllowOpenDrawer(true, false); } - } else { - didSelectDialog(null, dialogId, false); + } else { + if (actionBarLayout.fragmentsStack.isEmpty()) { + actionBarLayout.addFragmentToStack(new DialogsActivity(null)); + drawerLayoutContainer.setAllowOpenDrawer(true, false); } } - - if (!pushOpened && !isNew) { - if (AndroidUtilities.isTablet()) { - if (actionBarLayout.fragmentsStack.isEmpty()) { - actionBarLayout.addFragmentToStack(new DialogsActivity(null)); - drawerLayoutContainer.setAllowOpenDrawer(true, false); - } - } else { - if (actionBarLayout.fragmentsStack.isEmpty()) { - actionBarLayout.addFragmentToStack(new DialogsActivity(null)); - drawerLayoutContainer.setAllowOpenDrawer(true, false); - } - } - actionBarLayout.showLastFragment(); - if (AndroidUtilities.isTablet()) { - layersActionBarLayout.showLastFragment(); - rightActionBarLayout.showLastFragment(); - } + actionBarLayout.showLastFragment(); + if (AndroidUtilities.isTablet()) { + layersActionBarLayout.showLastFragment(); + rightActionBarLayout.showLastFragment(); } - - intent.setAction(null); - return pushOpened; } - return false; + + intent.setAction(null); + return pushOpened; } @Override diff --git a/MessengerProj/src/main/java/com/b44t/ui/WallpapersActivity.java b/MessengerProj/src/main/java/com/b44t/ui/WallpapersActivity.java index f888f8dbe..db09de379 100644 --- a/MessengerProj/src/main/java/com/b44t/ui/WallpapersActivity.java +++ b/MessengerProj/src/main/java/com/b44t/ui/WallpapersActivity.java @@ -22,7 +22,7 @@ /* - * EDIT BY MR: some hints: + * some hints: * - the default wallpaper has the ID 1000001 * - the original flow: MessagesStorage..getWallpapers(); -> wallpapersDidLoaded -> loadWallpapers() -> TLRPC.TL_account_getWallPapers() */