From 4453ad71ac87962d79785b16d65bfca4ea36959c Mon Sep 17 00:00:00 2001 From: kosyak Date: Sun, 14 Jul 2024 15:01:05 +0200 Subject: [PATCH] support navigation via nav bar --- .../ui/ManageAccountActivity.java | 55 +++++++++- .../ui/ConversationFragment.java | 8 ++ .../ui/ConversationsActivity.java | 52 +++++++++ .../ui/ConversationsOverviewFragment.java | 25 +++++ .../ui/StartConversationActivity.java | 62 ++++++++++- src/main/res/animator/fade_in.xml | 8 ++ src/main/res/animator/fade_left_in.xml | 15 +++ src/main/res/animator/fade_left_out.xml | 15 +++ src/main/res/animator/fade_out.xml | 8 ++ src/main/res/animator/fade_right_in.xml | 15 +++ src/main/res/animator/fade_right_out.xml | 15 +++ .../drawable/accounts_selected_black_24.xml | 5 + .../drawable/accounts_selected_white_24.xml | 5 + .../res/drawable/chat_selected_black_24.xml | 5 + .../res/drawable/chat_selected_white_24.xml | 5 + .../res/drawable/ic_account_black_24dp.xml | 6 ++ .../res/drawable/ic_account_white_24dp.xml | 6 ++ .../drawable/ic_group_selected_black_24.xml | 5 + .../drawable/ic_group_selected_white_24.xml | 5 + .../res/drawable/outline_chat_black_24.xml | 5 + .../res/drawable/outline_chat_white_24.xml | 5 + .../res/drawable/outline_group_black_24dp.xml | 5 + .../res/drawable/outline_group_white_24.xml | 5 + .../layout-w945dp/activity_conversations.xml | 63 +++++++---- .../res/layout/activity_conversations.xml | 40 +++++-- .../res/layout/activity_manage_accounts.xml | 46 +++++--- .../layout/activity_start_conversation.xml | 100 ++++++++++-------- .../menu/bottom_navigation_menu_accounts.xml | 15 +++ .../res/menu/bottom_navigation_menu_chat.xml | 15 +++ .../menu/bottom_navigation_menu_contacts.xml | 15 +++ src/main/res/values/attrs.xml | 7 ++ src/main/res/values/defaults.xml | 1 + src/main/res/values/dimens.xml | 1 + src/main/res/values/strings.xml | 4 + src/main/res/values/themes.xml | 14 +++ src/main/res/xml/preferences.xml | 5 + 36 files changed, 573 insertions(+), 93 deletions(-) create mode 100644 src/main/res/animator/fade_in.xml create mode 100644 src/main/res/animator/fade_left_in.xml create mode 100644 src/main/res/animator/fade_left_out.xml create mode 100644 src/main/res/animator/fade_out.xml create mode 100644 src/main/res/animator/fade_right_in.xml create mode 100644 src/main/res/animator/fade_right_out.xml create mode 100644 src/main/res/drawable/accounts_selected_black_24.xml create mode 100644 src/main/res/drawable/accounts_selected_white_24.xml create mode 100644 src/main/res/drawable/chat_selected_black_24.xml create mode 100644 src/main/res/drawable/chat_selected_white_24.xml create mode 100644 src/main/res/drawable/ic_account_black_24dp.xml create mode 100644 src/main/res/drawable/ic_account_white_24dp.xml create mode 100644 src/main/res/drawable/ic_group_selected_black_24.xml create mode 100644 src/main/res/drawable/ic_group_selected_white_24.xml create mode 100644 src/main/res/drawable/outline_chat_black_24.xml create mode 100644 src/main/res/drawable/outline_chat_white_24.xml create mode 100644 src/main/res/drawable/outline_group_black_24dp.xml create mode 100644 src/main/res/drawable/outline_group_white_24.xml create mode 100644 src/main/res/menu/bottom_navigation_menu_accounts.xml create mode 100644 src/main/res/menu/bottom_navigation_menu_chat.xml create mode 100644 src/main/res/menu/bottom_navigation_menu_contacts.xml diff --git a/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java b/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java index 22e208b90..aab32220d 100644 --- a/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java +++ b/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java @@ -1,5 +1,7 @@ package eu.siacs.conversations.ui; +import static android.view.View.VISIBLE; + import android.content.ActivityNotFoundException; import android.content.Intent; import android.os.Bundle; @@ -40,6 +42,9 @@ import eu.siacs.conversations.xmpp.XmppConnection; import static eu.siacs.conversations.utils.PermissionUtils.allGranted; import static eu.siacs.conversations.utils.PermissionUtils.writeGranted; +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.android.material.navigation.NavigationBarView; + public class ManageAccountActivity extends XmppActivity implements OnAccountUpdate, KeyChainAliasCallback, XmppConnectionService.OnAccountCreated, AccountAdapter.OnTglAccountState { private final String STATE_SELECTED_ACCOUNT = "selected_account"; @@ -68,9 +73,10 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda accountList.addAll(xmppConnectionService.getAccounts()); } ActionBar actionBar = getSupportActionBar(); + boolean showNavBar = findViewById(R.id.bottom_navigation).getVisibility() == VISIBLE; if (actionBar != null) { - actionBar.setHomeButtonEnabled(this.accountList.size() > 0); - actionBar.setDisplayHomeAsUpEnabled(this.accountList.size() > 0); + actionBar.setHomeButtonEnabled(this.accountList.size() > 0 && !showNavBar); + actionBar.setDisplayHomeAsUpEnabled(this.accountList.size() > 0 && !showNavBar); } invalidateOptionsMenu(); mAccountAdapter.notifyDataSetChanged(); @@ -100,6 +106,30 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda accountListView.setAdapter(this.mAccountAdapter); accountListView.setOnItemClickListener((arg0, view, position, arg3) -> switchToAccount(accountList.get(position))); registerForContextMenu(accountListView); + + BottomNavigationView bottomNavigationView=findViewById(R.id.bottom_navigation); + bottomNavigationView.setOnItemSelectedListener(item -> { + + switch (item.getItemId()) { + case R.id.chats -> { + startActivity(new Intent(getApplicationContext(), ConversationsActivity.class)); + overridePendingTransition(R.animator.fade_in, R.animator.fade_out); + return true; + } + case R.id.contactslist -> { + Intent i = new Intent(getApplicationContext(), StartConversationActivity.class); + i.putExtra("show_nav_bar", true); + startActivity(i); + overridePendingTransition(R.animator.fade_in, R.animator.fade_out); + return true; + } + case R.id.manageaccounts -> { + return true; + } + default -> + throw new IllegalStateException("Unexpected value: " + item.getItemId()); + } + }); } @Override @@ -109,6 +139,15 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda if (this.mTheme != theme) { recreate(); } + + BottomNavigationView bottomNavigationView=findViewById(R.id.bottom_navigation); + bottomNavigationView.setSelectedItemId(R.id.manageaccounts); + + if (getBooleanPreference("show_nav_bar", R.bool.show_nav_bar) && getIntent().getBooleanExtra("show_nav_bar", false)) { + bottomNavigationView.setVisibility(VISIBLE); + } else { + bottomNavigationView.setVisibility(View.GONE); + } } @Override @@ -147,6 +186,18 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda menu.setHeaderTitle(this.selectedAccount.getJid().asBareJid().toEscapedString()); } + @Override + public void onBackPressed() { + if (findViewById(R.id.bottom_navigation).getVisibility() == VISIBLE) { + Intent intent = new Intent(this, ConversationsActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + startActivity(intent); + overridePendingTransition(R.animator.fade_in, R.animator.fade_out); + } + + super.onBackPressed(); + } + @Override void onBackendConnected() { if (selectedAccountJid != null) { diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index d426ddecc..0b24f9439 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -1418,6 +1418,14 @@ public class ConversationFragment extends XmppFragment menuTogglePinned.setTitle(R.string.add_to_favorites); } } + + Fragment secondaryFragment = activity.getFragmentManager().findFragmentById(R.id.secondary_fragment); + if (secondaryFragment instanceof ConversationFragment) { + activity.showNavigationBar(); + } else { + activity.hideNavigationBar(); + } + super.onCreateOptionsMenu(menu, menuInflater); } diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java index 1836ed157..b225d8404 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java @@ -31,6 +31,7 @@ package eu.siacs.conversations.ui; import static eu.siacs.conversations.ui.ConversationFragment.REQUEST_DECRYPT_PGP; +import static eu.siacs.conversations.utils.AccountUtils.MANAGE_ACCOUNT_ACTIVITY; import android.Manifest; import android.annotation.SuppressLint; @@ -61,6 +62,9 @@ import androidx.appcompat.app.AlertDialog; import androidx.core.app.ActivityCompat; import androidx.databinding.DataBindingUtil; +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.android.material.navigation.NavigationBarView; + import org.openintents.openpgp.util.OpenPgpApi; import java.util.Arrays; @@ -397,6 +401,33 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio pendingViewIntent.push(intent); setIntent(createLauncherIntent(this)); } + + BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation); + bottomNavigationView.setOnItemSelectedListener(item -> { + + switch (item.getItemId()) { + case R.id.chats -> { + return true; + } + case R.id.contactslist -> { + Intent i = new Intent(getApplicationContext(), StartConversationActivity.class); + i.putExtra("show_nav_bar", true); + startActivity(i); + + overridePendingTransition(R.animator.fade_in, R.animator.fade_out); + return true; + } + case R.id.manageaccounts -> { + Intent i = new Intent(getApplicationContext(), MANAGE_ACCOUNT_ACTIVITY); + i.putExtra("show_nav_bar", true); + startActivity(i); + overridePendingTransition(R.animator.fade_in, R.animator.fade_out); + return true; + } + default -> + throw new IllegalStateException("Unexpected value: " + item.getItemId()); + } + }); } @Override @@ -432,6 +463,24 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio } } + public boolean navigationBarVisible() { + return findViewById(R.id.bottom_navigation).getVisibility() == View.VISIBLE; + } + + public boolean showNavigationBar() { + if (!getBooleanPreference("show_nav_bar", R.bool.show_nav_bar)) { + findViewById(R.id.bottom_navigation).setVisibility(View.GONE); + return false; + } + + findViewById(R.id.bottom_navigation).setVisibility(View.VISIBLE); + return true; + } + + public void hideNavigationBar() { + findViewById(R.id.bottom_navigation).setVisibility(View.GONE); + } + @Nullable public View getFragmentHostView() { if (binding.secondaryFragment != null) { @@ -611,6 +660,9 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio this.mSkipBackgroundBinding = false; } mRedirectInProcess.set(false); + + BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation); + bottomNavigationView.setSelectedItemId(R.id.chats); } @Override diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationsOverviewFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationsOverviewFragment.java index c36f839e0..69b01888a 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationsOverviewFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationsOverviewFragment.java @@ -422,6 +422,21 @@ public class ConversationsOverviewFragment extends XmppFragment { } } + @Override + public void onPrepareOptionsMenu(Menu menu) { + super.onPrepareOptionsMenu(menu); + + boolean navBarVisible = activity instanceof ConversationsActivity && ((ConversationsActivity) activity).navigationBarVisible(); + MenuItem manageAccount = menu.findItem(R.id.action_account); + MenuItem manageAccounts = menu.findItem(R.id.action_accounts); + if (navBarVisible) { + manageAccount.setVisible(false); + manageAccounts.setVisible(false); + } else { + AccountUtils.showHideMenuItems(menu); + } + } + @Override public void onStart() { super.onStart(); @@ -429,6 +444,16 @@ public class ConversationsOverviewFragment extends XmppFragment { if (activity.xmppConnectionService != null) { refresh(); } + + if (activity instanceof ConversationsActivity) { + boolean showed = ((ConversationsActivity) activity).showNavigationBar(); + + if (showed) { + this.binding.fab.setVisibility(View.GONE); + } else { + this.binding.fab.setVisibility(View.VISIBLE); + } + } } @Override diff --git a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java index f119dfb76..4a1439e84 100644 --- a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java @@ -1,5 +1,9 @@ package eu.siacs.conversations.ui; +import static android.view.View.VISIBLE; + +import static eu.siacs.conversations.utils.AccountUtils.MANAGE_ACCOUNT_ACTIVITY; + import android.Manifest; import android.annotation.SuppressLint; import android.app.Dialog; @@ -63,6 +67,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; +import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.android.material.textfield.TextInputLayout; import com.leinardi.android.speeddial.SpeedDialActionItem; import com.leinardi.android.speeddial.SpeedDialView; @@ -374,6 +379,30 @@ public class StartConversationActivity extends XmppActivity implements XmppConne } return false; }); + + BottomNavigationView bottomNavigationView=findViewById(R.id.bottom_navigation); + bottomNavigationView.setOnItemSelectedListener(item -> { + + switch (item.getItemId()) { + case R.id.chats -> { + startActivity(new Intent(getApplicationContext(), ConversationsActivity.class)); + overridePendingTransition(R.animator.fade_in, R.animator.fade_out); + return true; + } + case R.id.contactslist -> { + return true; + } + case R.id.manageaccounts -> { + Intent i = new Intent(getApplicationContext(), MANAGE_ACCOUNT_ACTIVITY); + i.putExtra("show_nav_bar", true); + startActivity(i); + overridePendingTransition(R.animator.fade_in, R.animator.fade_out); + return true; + } + default -> + throw new IllegalStateException("Unexpected value: " + item.getItemId()); + } + }); } private void inflateFab(final SpeedDialView speedDialView, final @MenuRes int menuRes) { @@ -430,6 +459,15 @@ public class StartConversationActivity extends XmppActivity implements XmppConne } mConferenceAdapter.refreshSettings(); mContactsAdapter.refreshSettings(); + + BottomNavigationView bottomNavigationView=findViewById(R.id.bottom_navigation); + bottomNavigationView.setSelectedItemId(R.id.contactslist); + + if (getBooleanPreference("show_nav_bar", R.bool.show_nav_bar) && getIntent().getBooleanExtra("show_nav_bar", false)) { + bottomNavigationView.setVisibility(VISIBLE); + } else { + bottomNavigationView.setVisibility(View.GONE); + } } @Override @@ -769,6 +807,22 @@ public class StartConversationActivity extends XmppActivity implements XmppConne return super.onCreateOptionsMenu(menu); } + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + boolean res = super.onPrepareOptionsMenu(menu); + boolean navBarVisible = binding.bottomNavigation.getVisibility() == VISIBLE; + MenuItem manageAccount = menu.findItem(R.id.action_account); + MenuItem manageAccounts = menu.findItem(R.id.action_accounts); + if (navBarVisible) { + manageAccount.setVisible(false); + manageAccounts.setVisible(false); + } else { + AccountUtils.showHideMenuItems(menu); + } + + return res; + } + @Override public boolean onOptionsItemSelected(MenuItem item) { if (MenuDoubleTabUtil.shouldIgnoreTap()) { @@ -916,8 +970,9 @@ public class StartConversationActivity extends XmppActivity implements XmppConne return; } boolean openConversations = !createdByViewIntent && !xmppConnectionService.isConversationsListEmpty(null); - actionBar.setDisplayHomeAsUpEnabled(openConversations); - actionBar.setDisplayHomeAsUpEnabled(openConversations); + boolean showNavBar = binding.bottomNavigation.getVisibility() == VISIBLE; + actionBar.setDisplayHomeAsUpEnabled(openConversations && !showNavBar); + actionBar.setDisplayHomeAsUpEnabled(openConversations && !showNavBar); } @@ -1149,6 +1204,9 @@ public class StartConversationActivity extends XmppActivity implements XmppConne Intent intent = new Intent(this, ConversationsActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); startActivity(intent); + if (binding.bottomNavigation.getVisibility() == VISIBLE) { + overridePendingTransition(R.animator.fade_in, R.animator.fade_out); + } } finish(); } diff --git a/src/main/res/animator/fade_in.xml b/src/main/res/animator/fade_in.xml new file mode 100644 index 000000000..8307c7835 --- /dev/null +++ b/src/main/res/animator/fade_in.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/src/main/res/animator/fade_left_in.xml b/src/main/res/animator/fade_left_in.xml new file mode 100644 index 000000000..fa53b49c7 --- /dev/null +++ b/src/main/res/animator/fade_left_in.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/animator/fade_left_out.xml b/src/main/res/animator/fade_left_out.xml new file mode 100644 index 000000000..af002f57d --- /dev/null +++ b/src/main/res/animator/fade_left_out.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/animator/fade_out.xml b/src/main/res/animator/fade_out.xml new file mode 100644 index 000000000..d5912c116 --- /dev/null +++ b/src/main/res/animator/fade_out.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/src/main/res/animator/fade_right_in.xml b/src/main/res/animator/fade_right_in.xml new file mode 100644 index 000000000..497ebb465 --- /dev/null +++ b/src/main/res/animator/fade_right_in.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/animator/fade_right_out.xml b/src/main/res/animator/fade_right_out.xml new file mode 100644 index 000000000..3d83be942 --- /dev/null +++ b/src/main/res/animator/fade_right_out.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/accounts_selected_black_24.xml b/src/main/res/drawable/accounts_selected_black_24.xml new file mode 100644 index 000000000..93ce2502a --- /dev/null +++ b/src/main/res/drawable/accounts_selected_black_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/src/main/res/drawable/accounts_selected_white_24.xml b/src/main/res/drawable/accounts_selected_white_24.xml new file mode 100644 index 000000000..d92f742e3 --- /dev/null +++ b/src/main/res/drawable/accounts_selected_white_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/src/main/res/drawable/chat_selected_black_24.xml b/src/main/res/drawable/chat_selected_black_24.xml new file mode 100644 index 000000000..956385a9b --- /dev/null +++ b/src/main/res/drawable/chat_selected_black_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/src/main/res/drawable/chat_selected_white_24.xml b/src/main/res/drawable/chat_selected_white_24.xml new file mode 100644 index 000000000..42714253f --- /dev/null +++ b/src/main/res/drawable/chat_selected_white_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/src/main/res/drawable/ic_account_black_24dp.xml b/src/main/res/drawable/ic_account_black_24dp.xml new file mode 100644 index 000000000..cc5644715 --- /dev/null +++ b/src/main/res/drawable/ic_account_black_24dp.xml @@ -0,0 +1,6 @@ + + + + diff --git a/src/main/res/drawable/ic_account_white_24dp.xml b/src/main/res/drawable/ic_account_white_24dp.xml new file mode 100644 index 000000000..c2b7658ea --- /dev/null +++ b/src/main/res/drawable/ic_account_white_24dp.xml @@ -0,0 +1,6 @@ + + + + diff --git a/src/main/res/drawable/ic_group_selected_black_24.xml b/src/main/res/drawable/ic_group_selected_black_24.xml new file mode 100644 index 000000000..a3ccd7111 --- /dev/null +++ b/src/main/res/drawable/ic_group_selected_black_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/src/main/res/drawable/ic_group_selected_white_24.xml b/src/main/res/drawable/ic_group_selected_white_24.xml new file mode 100644 index 000000000..6fc325a4a --- /dev/null +++ b/src/main/res/drawable/ic_group_selected_white_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/src/main/res/drawable/outline_chat_black_24.xml b/src/main/res/drawable/outline_chat_black_24.xml new file mode 100644 index 000000000..026f085fd --- /dev/null +++ b/src/main/res/drawable/outline_chat_black_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/src/main/res/drawable/outline_chat_white_24.xml b/src/main/res/drawable/outline_chat_white_24.xml new file mode 100644 index 000000000..318e6101e --- /dev/null +++ b/src/main/res/drawable/outline_chat_white_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/src/main/res/drawable/outline_group_black_24dp.xml b/src/main/res/drawable/outline_group_black_24dp.xml new file mode 100644 index 000000000..f5b3fc4d3 --- /dev/null +++ b/src/main/res/drawable/outline_group_black_24dp.xml @@ -0,0 +1,5 @@ + + + diff --git a/src/main/res/drawable/outline_group_white_24.xml b/src/main/res/drawable/outline_group_white_24.xml new file mode 100644 index 000000000..9babb6400 --- /dev/null +++ b/src/main/res/drawable/outline_group_white_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/src/main/res/layout-w945dp/activity_conversations.xml b/src/main/res/layout-w945dp/activity_conversations.xml index ce2817e55..9f39e65fb 100644 --- a/src/main/res/layout-w945dp/activity_conversations.xml +++ b/src/main/res/layout-w945dp/activity_conversations.xml @@ -1,28 +1,49 @@ - + - - - - + android:layout_height="match_parent"> + android:layout_height="match_parent" + android:layout_above="@id/bottom_navigation" + android:orientation="vertical"> - + - + + + + + + + - - + + + + + \ No newline at end of file diff --git a/src/main/res/layout/activity_conversations.xml b/src/main/res/layout/activity_conversations.xml index a62d0306b..fae1b137b 100644 --- a/src/main/res/layout/activity_conversations.xml +++ b/src/main/res/layout/activity_conversations.xml @@ -27,19 +27,37 @@ ~ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ~ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --> - + - + android:layout_height="match_parent"> - - - - + android:layout_height="match_parent" + android:layout_above="@id/bottom_navigation" + android:orientation="vertical"> + + + + + + + + diff --git a/src/main/res/layout/activity_manage_accounts.xml b/src/main/res/layout/activity_manage_accounts.xml index 8ea0bc31e..d3dc5d757 100644 --- a/src/main/res/layout/activity_manage_accounts.xml +++ b/src/main/res/layout/activity_manage_accounts.xml @@ -1,18 +1,36 @@ - + - - - - + android:layout_height="fill_parent" + android:background="?attr/color_background_primary" + android:layout_above="@id/bottom_navigation" + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/layout/activity_start_conversation.xml b/src/main/res/layout/activity_start_conversation.xml index d4c2f5b57..18cfd554f 100644 --- a/src/main/res/layout/activity_start_conversation.xml +++ b/src/main/res/layout/activity_start_conversation.xml @@ -5,55 +5,69 @@ - - - - - - + android:layout_above="@id/bottom_navigation"> + + + + + + - + - + + + + + + - - - + android:background="?attr/color_background_secondary" + app:labelVisibilityMode="labeled" + app:menu="@menu/bottom_navigation_menu_contacts" /> diff --git a/src/main/res/menu/bottom_navigation_menu_accounts.xml b/src/main/res/menu/bottom_navigation_menu_accounts.xml new file mode 100644 index 000000000..1d49b367c --- /dev/null +++ b/src/main/res/menu/bottom_navigation_menu_accounts.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/src/main/res/menu/bottom_navigation_menu_chat.xml b/src/main/res/menu/bottom_navigation_menu_chat.xml new file mode 100644 index 000000000..9691b9baa --- /dev/null +++ b/src/main/res/menu/bottom_navigation_menu_chat.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/src/main/res/menu/bottom_navigation_menu_contacts.xml b/src/main/res/menu/bottom_navigation_menu_contacts.xml new file mode 100644 index 000000000..bf2301a80 --- /dev/null +++ b/src/main/res/menu/bottom_navigation_menu_contacts.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/src/main/res/values/attrs.xml b/src/main/res/values/attrs.xml index 03ac528a7..d7f05cccb 100644 --- a/src/main/res/values/attrs.xml +++ b/src/main/res/values/attrs.xml @@ -124,6 +124,13 @@ + + + + + + + diff --git a/src/main/res/values/defaults.xml b/src/main/res/values/defaults.xml index 322f21f8a..e1a5e3b14 100644 --- a/src/main/res/values/defaults.xml +++ b/src/main/res/values/defaults.xml @@ -20,6 +20,7 @@ 524288 auto true + false recent false false diff --git a/src/main/res/values/dimens.xml b/src/main/res/values/dimens.xml index 5d0c4597a..f1e1b4ede 100644 --- a/src/main/res/values/dimens.xml +++ b/src/main/res/values/dimens.xml @@ -56,6 +56,7 @@ 98dp 180dp 40dp + 56dp 1dp 2dp diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 804e6a697..ecb3638e6 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -597,6 +597,8 @@ Automatic Light Dark + Show navigation bar + Use alternative navigation way via navigation bar on the bottom of the screen Green Background Use green background for received messages Show full timestamps @@ -1086,4 +1088,6 @@ %1$s (%2$d) Refresh Feature Discovery Do you really want to retract this message? + Chats + Accounts diff --git a/src/main/res/values/themes.xml b/src/main/res/values/themes.xml index b99a853a5..84bb05ce2 100644 --- a/src/main/res/values/themes.xml +++ b/src/main/res/values/themes.xml @@ -143,6 +143,13 @@ @drawable/ic_content_copy_white_24dp @drawable/content_copy_12dp + @drawable/outline_chat_black_24 + @drawable/chat_selected_black_24 + @drawable/ic_account_black_24dp + @drawable/accounts_selected_black_24 + @drawable/outline_group_black_24dp + @drawable/ic_group_selected_black_24 + @drawable/ic_notifications_black_24dp @@ -310,6 +317,13 @@ @drawable/ic_content_copy_white_24dp @drawable/content_copy_12dp_white + @drawable/outline_chat_white_24 + @drawable/chat_selected_white_24 + @drawable/ic_account_white_24dp + @drawable/accounts_selected_white_24 + @drawable/outline_group_white_24 + @drawable/ic_group_selected_white_24 + @drawable/ic_notifications_white_24dp diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml index 8570cd1d7..0a5cb1b37 100644 --- a/src/main/res/xml/preferences.xml +++ b/src/main/res/xml/preferences.xml @@ -178,6 +178,11 @@ android:title="@string/pref_accept_all_files_if_wifi" /> +