From 480f18449b8da6619efc7dd8c7e26e5757c9648d Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 27 Jan 2019 21:25:46 +0100 Subject: show sub menu fabs for create group chats --- .../messenger/ui/StartConversationActivity.java | 69 ++++++++++++++------- src/main/res/drawable-hdpi/ic_close_white_24dp.png | Bin 0 -> 277 bytes src/main/res/drawable-hdpi/ic_input_white_24dp.png | Bin 0 -> 263 bytes src/main/res/drawable-mdpi/ic_close_white_24dp.png | Bin 0 -> 243 bytes src/main/res/drawable-mdpi/ic_input_white_24dp.png | Bin 0 -> 239 bytes .../res/drawable-xhdpi/ic_close_white_24dp.png | Bin 0 -> 431 bytes .../res/drawable-xhdpi/ic_input_white_24dp.png | Bin 0 -> 417 bytes .../res/drawable-xxhdpi/ic_close_white_24dp.png | Bin 0 -> 457 bytes .../res/drawable-xxhdpi/ic_input_white_24dp.png | Bin 0 -> 513 bytes .../res/drawable-xxxhdpi/ic_close_white_24dp.png | Bin 0 -> 1189 bytes .../res/drawable-xxxhdpi/ic_input_white_24dp.png | Bin 0 -> 1121 bytes .../res/layout/activity_start_conversation.xml | 19 ++++-- src/main/res/menu/start_conversation.xml | 5 +- src/main/res/menu/start_conversation_group_fab.xml | 11 ++++ src/main/res/values/attrs.xml | 1 + src/main/res/values/colors.xml | 32 +++++----- src/main/res/values/defaults.xml | 1 + src/main/res/values/strings.xml | 2 + src/main/res/values/themes.xml | 10 ++- 19 files changed, 102 insertions(+), 48 deletions(-) create mode 100644 src/main/res/drawable-hdpi/ic_close_white_24dp.png create mode 100644 src/main/res/drawable-hdpi/ic_input_white_24dp.png create mode 100644 src/main/res/drawable-mdpi/ic_close_white_24dp.png create mode 100644 src/main/res/drawable-mdpi/ic_input_white_24dp.png create mode 100644 src/main/res/drawable-xhdpi/ic_close_white_24dp.png create mode 100644 src/main/res/drawable-xhdpi/ic_input_white_24dp.png create mode 100644 src/main/res/drawable-xxhdpi/ic_close_white_24dp.png create mode 100644 src/main/res/drawable-xxhdpi/ic_input_white_24dp.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_close_white_24dp.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_input_white_24dp.png create mode 100644 src/main/res/menu/start_conversation_group_fab.xml (limited to 'src/main') diff --git a/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java b/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java index 9900c7b9b..2621d2322 100644 --- a/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java @@ -20,6 +20,7 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.app.ListFragment; +import android.support.v4.content.ContextCompat; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; @@ -48,6 +49,8 @@ import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; +import com.leinardi.android.speeddial.SpeedDialView; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -64,6 +67,7 @@ import de.pixart.messenger.entities.Conversation; import de.pixart.messenger.entities.ListItem; import de.pixart.messenger.entities.Presence; import de.pixart.messenger.services.EmojiService; +import de.pixart.messenger.services.QuickConversationsService; import de.pixart.messenger.services.XmppConnectionService; import de.pixart.messenger.services.XmppConnectionService.OnRosterUpdate; import de.pixart.messenger.ui.adapter.ListItemAdapter; @@ -115,7 +119,9 @@ public class StartConversationActivity extends XmppActivity implements XmppConne imm.showSoftInput(mSearchEditText, InputMethodManager.SHOW_IMPLICIT); } }); - + if (binding.speedDial.isOpen()) { + binding.speedDial.close(); + } return true; } @@ -265,23 +271,29 @@ public class StartConversationActivity extends XmppActivity implements XmppConne Toolbar toolbar = (Toolbar) binding.toolbar; setSupportActionBar(toolbar); configureActionBar(getSupportActionBar()); - this.binding.fab.setOnClickListener((v) -> { - if (binding.startConversationViewPager.getCurrentItem() == 0) { - String searchString = mSearchEditText != null ? mSearchEditText.getText().toString() : null; - if (searchString != null && !searchString.trim().isEmpty()) { - try { - Jid jid = Jid.of(searchString); - if (jid.getLocal() != null && jid.isBareJid() && jid.getDomain().contains(".")) { - showCreateContactDialog(jid.toString(), null); - return; + this.binding.speedDial.setOnChangeListener(new SpeedDialView.OnChangeListener() { + @Override + public boolean onMainActionSelected() { + if (binding.startConversationViewPager.getCurrentItem() == 0) { + String searchString = mSearchEditText != null ? mSearchEditText.getText().toString() : null; + if (searchString != null && !searchString.trim().isEmpty()) { + try { + Jid jid = Jid.of(searchString); + if (jid.getLocal() != null && jid.isBareJid() && jid.getDomain().contains(".")) { + showCreateContactDialog(jid.toString(), null); + return false; + } + } catch (IllegalArgumentException ignored) { + //ignore and fall through } - } catch (IllegalArgumentException ignored) { - //ignore and fall through } + showCreateContactDialog(null, null); } - showCreateContactDialog(null, null); - } else { - showCreateConferenceDialog(); + return false; + } + + @Override + public void onToggleChanged(boolean isOpen) { } }); binding.tabLayout.setupWithViewPager(binding.startConversationViewPager); @@ -294,7 +306,7 @@ public class StartConversationActivity extends XmppActivity implements XmppConne mContactsAdapter.setOnTagClickedListener(this.mOnTagClickedListener); final SharedPreferences preferences = getPreferences(); - this.mHideOfflineContacts = preferences.getBoolean("hide_offline", false); + this.mHideOfflineContacts = QuickConversationsService.isConversations() && preferences.getBoolean("hide_offline", false); final boolean startSearching = preferences.getBoolean("start_searching", getResources().getBoolean(R.bool.start_searching)); @@ -317,6 +329,18 @@ public class StartConversationActivity extends XmppActivity implements XmppConne } else if (startSearching && mInitialSearchValue.peek() == null) { mInitialSearchValue.push(""); } + mRequestedContactsPermission.set(savedInstanceState != null && savedInstanceState.getBoolean("requested_contacts_permission", false)); + binding.speedDial.setOnActionSelectedListener(actionItem -> { + switch (actionItem.getId()) { + case R.id.enter: + showJoinConferenceDialog(null); + break; + case R.id.create: + showCreateConferenceDialog(); + break; + } + return false; + }); } @Override @@ -597,9 +621,7 @@ public class StartConversationActivity extends XmppActivity implements XmppConne } else { menuActionAccounts.setTitle(R.string.action_accounts); } - MenuItem joinGroupChat = menu.findItem(R.id.action_join_conference); MenuItem qrCodeScanMenuItem = menu.findItem(R.id.action_scan_qr_code); - joinGroupChat.setVisible(binding.startConversationViewPager.getCurrentItem() == 1); qrCodeScanMenuItem.setVisible(isCameraFeatureAvailable()); menuHideOffline.setChecked(this.mHideOfflineContacts); mMenuSearchView = menu.findItem(R.id.action_search); @@ -627,9 +649,6 @@ public class StartConversationActivity extends XmppActivity implements XmppConne case android.R.id.home: navigateBack(); return true; - case R.id.action_join_conference: - showJoinConferenceDialog(null); - return true; case R.id.action_scan_qr_code: UriHandlerActivity.scan(this); return true; @@ -904,10 +923,12 @@ public class StartConversationActivity extends XmppActivity implements XmppConne @DrawableRes final int fabDrawable; if (binding.startConversationViewPager.getCurrentItem() == 0) { fabDrawable = R.drawable.ic_person_add_white_24dp; + binding.speedDial.clearActionItems(); } else { fabDrawable = R.drawable.ic_group_add_white_24dp; + binding.speedDial.inflate(R.menu.start_conversation_group_fab); } - binding.fab.setImageResource(fabDrawable); + binding.speedDial.setMainFabClosedDrawable(ContextCompat.getDrawable(this, fabDrawable)); invalidateOptionsMenu(); } @@ -926,6 +947,10 @@ public class StartConversationActivity extends XmppActivity implements XmppConne @Override public void onBackPressed() { + if (binding.speedDial.isOpen()) { + binding.speedDial.close(); + return; + } navigateBack(); } diff --git a/src/main/res/drawable-hdpi/ic_close_white_24dp.png b/src/main/res/drawable-hdpi/ic_close_white_24dp.png new file mode 100644 index 000000000..bb58afd97 Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_close_white_24dp.png differ diff --git a/src/main/res/drawable-hdpi/ic_input_white_24dp.png b/src/main/res/drawable-hdpi/ic_input_white_24dp.png new file mode 100644 index 000000000..d8249d985 Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_input_white_24dp.png differ diff --git a/src/main/res/drawable-mdpi/ic_close_white_24dp.png b/src/main/res/drawable-mdpi/ic_close_white_24dp.png new file mode 100644 index 000000000..27c293b2e Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_close_white_24dp.png differ diff --git a/src/main/res/drawable-mdpi/ic_input_white_24dp.png b/src/main/res/drawable-mdpi/ic_input_white_24dp.png new file mode 100644 index 000000000..5bcfac74c Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_input_white_24dp.png differ diff --git a/src/main/res/drawable-xhdpi/ic_close_white_24dp.png b/src/main/res/drawable-xhdpi/ic_close_white_24dp.png new file mode 100644 index 000000000..79a80c2a0 Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_close_white_24dp.png differ diff --git a/src/main/res/drawable-xhdpi/ic_input_white_24dp.png b/src/main/res/drawable-xhdpi/ic_input_white_24dp.png new file mode 100644 index 000000000..f39c9a39f Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_input_white_24dp.png differ diff --git a/src/main/res/drawable-xxhdpi/ic_close_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_close_white_24dp.png new file mode 100644 index 000000000..8c82a4fed Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_close_white_24dp.png differ diff --git a/src/main/res/drawable-xxhdpi/ic_input_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_input_white_24dp.png new file mode 100644 index 000000000..b0f0de9e3 Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_input_white_24dp.png differ diff --git a/src/main/res/drawable-xxxhdpi/ic_close_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_close_white_24dp.png new file mode 100644 index 000000000..773ae970c Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_close_white_24dp.png differ diff --git a/src/main/res/drawable-xxxhdpi/ic_input_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_input_white_24dp.png new file mode 100644 index 000000000..29168165a Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_input_white_24dp.png differ diff --git a/src/main/res/layout/activity_start_conversation.xml b/src/main/res/layout/activity_start_conversation.xml index 7681cbc9b..f5ca18b5a 100644 --- a/src/main/res/layout/activity_start_conversation.xml +++ b/src/main/res/layout/activity_start_conversation.xml @@ -31,14 +31,25 @@ android:layout_below="@id/tab_layout" android:background="?attr/color_background_secondary" /> - + + + app:backgroundTint="?attr/colorAccent" + app:sdMainFabClosedBackgroundColor="?attr/colorAccent" + app:sdMainFabClosedSrc="@drawable/ic_person_add_white_24dp" + app:sdMainFabOpenedBackgroundColor="?attr/colorAccent" + app:sdMainFabOpenedSrc="@drawable/ic_close_white_24dp" + app:sdOverlayLayout="@id/overlay" /> \ No newline at end of file diff --git a/src/main/res/menu/start_conversation.xml b/src/main/res/menu/start_conversation.xml index 554131c8d..86ebe732a 100644 --- a/src/main/res/menu/start_conversation.xml +++ b/src/main/res/menu/start_conversation.xml @@ -8,10 +8,7 @@ android:title="@string/search" app:actionLayout="@layout/actionview_search" app:showAsAction="collapseActionView|always" /> - + + + + + \ No newline at end of file diff --git a/src/main/res/values/attrs.xml b/src/main/res/values/attrs.xml index ecf8eccd1..5a5bbc62a 100644 --- a/src/main/res/values/attrs.xml +++ b/src/main/res/values/attrs.xml @@ -20,6 +20,7 @@ + diff --git a/src/main/res/values/colors.xml b/src/main/res/values/colors.xml index 936c5b36c..1d4c78b78 100644 --- a/src/main/res/values/colors.xml +++ b/src/main/res/values/colors.xml @@ -1,8 +1,8 @@ - #388e3c - #0D47A1 - #1A237E + #ff388e3c + #ff0D47A1 + #ff1A237E #ff0091ea #de000309 #8a000309 @@ -18,36 +18,38 @@ #b2e2e7f1 #deffffff #ff4CAF50 - #fafafa + #fffafafa #ffeeeeee #ffe0e0e0 + #66e0e0e0 #ff9e9e9e #ff616161 #ff424242 - #212121 + #ff212121 + #66212121 #ffc62828 #fff44336 - #d32f2f + #ffd32f2f #ffff9800 - #37474f + #ff37474f #ffffffff #fafafa #bbdefb - #ffcdd2 - #c8e6c9 + #ffffcdd2 + #ffc8e6c9 #ff424242 - #37474f - #b71c1c - #1b5e20 + #ff37474f + #ffb71c1c + #ff1b5e20 - #388e3c + #ff388e3c #ffff9800 #fff44336 #ffcdd2 - #C62828 + #ffC62828 - #4caf50 + #ff4caf50 diff --git a/src/main/res/values/defaults.xml b/src/main/res/values/defaults.xml index 4645b2a4e..fadf26bbd 100644 --- a/src/main/res/values/defaults.xml +++ b/src/main/res/values/defaults.xml @@ -54,6 +54,7 @@ \n\nhttps://www.openstreetmap.org/\n(Open Database License) \n\nhttp://xmpp.rocks/\n(The MIT License (MIT)) \n\nhttps://github.com/drakeet/ToastCompat/\n(Apache License, Version 2.0) + \n\nhttps://github.com/leinardi/FloatingActionButtonSpeedDial/\n(Apache License, Version 2.0) Phone diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 3920b7eeb..63255228a 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -872,4 +872,6 @@ Prefer XMPP avatar View members Group chat members + Join group chat + Create group chat diff --git a/src/main/res/values/themes.xml b/src/main/res/values/themes.xml index 8060687ac..6f9898a75 100644 --- a/src/main/res/values/themes.xml +++ b/src/main/res/values/themes.xml @@ -13,6 +13,7 @@ @color/grey50 @color/grey200 @color/grey300 + @color/grey300_40 @color/red700 @color/green500 @color/red800 @@ -66,7 +67,8 @@ @drawable/ic_send_voice_offline - @drawable/ic_description_black_48dp + @drawable/ic_description_black_48dp + @drawable/ic_mic_black_48dp @drawable/ic_headset_black_48dp @drawable/ic_room_black_48dp @@ -121,7 +123,7 @@ 0.70 @drawable/ic_attach_camera - @drawable/ic_attach_videocam + @drawable/ic_attach_videocam @drawable/ic_attach_document @drawable/ic_attach_location @drawable/ic_attach_photo @@ -167,6 +169,7 @@ @color/grey700 @color/grey800 @color/grey900 + @color/grey900_40 @color/red700 @color/green500 @color/red500 @@ -240,7 +243,8 @@ 24dp 16dp - @drawable/ic_description_white_48dp + @drawable/ic_description_white_48dp + @drawable/ic_mic_white_48dp @drawable/ic_headset_white_48dp @drawable/ic_room_white_48dp -- cgit v1.2.3