diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ff2ea1a1..b71d75c6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ Types of changes can be: Added/Changed/Deprecated/Removed/Fixed/Security ### Changed - improve conversation list design and dark/light theming (@AndyScherzinger) - introduce new dark/light toolbar/searchbar design (@AndyScherzinger) +- improve content/toolbar alignments (@AndyScherzinger) ### Fixed - @ in username is allowed for phonebook sync diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt index b0033aa46..d2cb185ad 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt @@ -30,7 +30,6 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import android.widget.ProgressBar -import android.widget.TextView import androidx.appcompat.widget.SwitchCompat import androidx.emoji.widget.EmojiTextView import androidx.recyclerview.widget.RecyclerView @@ -70,10 +69,13 @@ import com.nextcloud.talk.utils.DateUtils import com.nextcloud.talk.utils.DisplayUtils import com.nextcloud.talk.utils.bundle.BundleKeys import com.nextcloud.talk.utils.preferences.preferencestorage.DatabaseStorageModule -import com.nextcloud.talk.utils.ui.MaterialPreferenceCategoryWithRightLink import com.yarolegovich.lovelydialog.LovelySaveStateHandler import com.yarolegovich.lovelydialog.LovelyStandardDialog -import com.yarolegovich.mp.* +import com.yarolegovich.mp.MaterialChoicePreference +import com.yarolegovich.mp.MaterialPreferenceCategory +import com.yarolegovich.mp.MaterialPreferenceScreen +import com.yarolegovich.mp.MaterialStandardPreference +import com.yarolegovich.mp.MaterialSwitchPreference import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager import eu.davidea.flexibleadapter.items.AbstractFlexibleItem @@ -110,7 +112,9 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA @BindView(R.id.display_name_text) lateinit var conversationDisplayName: EmojiTextView @BindView(R.id.participants_list_category) - lateinit var participantsListCategory: MaterialPreferenceCategoryWithRightLink + lateinit var participantsListCategory: MaterialPreferenceCategory + @BindView(R.id.addParticipantsAction) + lateinit var addParticipantsAction: MaterialStandardPreference; @BindView(R.id.recycler_view) lateinit var recyclerView: RecyclerView @BindView(R.id.deleteConversationAction) @@ -121,9 +125,6 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA lateinit var ownOptionsCategory: MaterialPreferenceCategory @BindView(R.id.muteCalls) lateinit var muteCalls: MaterialSwitchPreference - @BindView(R.id.mpc_action) - lateinit var actionTextView: TextView; - @set:Inject lateinit var ncApi: NcApi @set:Inject @@ -200,7 +201,7 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA saveStateHandler = LovelySaveStateHandler() } - actionTextView.visibility = View.GONE + addParticipantsAction.visibility = View.GONE } private fun setupWebinaryView() { @@ -350,24 +351,6 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA recyclerView.adapter = adapter adapter!!.addListener(this) - actionTextView.setOnClickListener { - val bundle = Bundle() - val existingParticipantsId = arrayListOf() - - recyclerViewItems.forEach { - val userItem = it as UserItem - existingParticipantsId.add(userItem.model.userId) - } - - bundle.putBoolean(BundleKeys.KEY_ADD_PARTICIPANTS, true); - bundle.putStringArrayList(BundleKeys.KEY_EXISTING_PARTICIPANTS, existingParticipantsId) - bundle.putString(BundleKeys.KEY_TOKEN, conversation!!.token) - - getRouter().pushController((RouterTransaction.with(ContactsController(bundle)) - .pushChangeHandler(HorizontalChangeHandler()) - .popChangeHandler(HorizontalChangeHandler()))); - - } } } @@ -430,6 +413,25 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA } + @OnClick(R.id.addParticipantsAction) + internal fun addParticipants() { + val bundle = Bundle() + val existingParticipantsId = arrayListOf() + + recyclerViewItems.forEach { + val userItem = it as UserItem + existingParticipantsId.add(userItem.model.userId) + } + + bundle.putBoolean(BundleKeys.KEY_ADD_PARTICIPANTS, true); + bundle.putStringArrayList(BundleKeys.KEY_EXISTING_PARTICIPANTS, existingParticipantsId) + bundle.putString(BundleKeys.KEY_TOKEN, conversation!!.token) + + getRouter().pushController((RouterTransaction.with(ContactsController(bundle)) + .pushChangeHandler(HorizontalChangeHandler()) + .popChangeHandler(HorizontalChangeHandler()))) + } + @OnClick(R.id.leaveConversationAction) internal fun leaveConversation() { workerData?.let { @@ -475,9 +477,9 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA val conversationCopy = conversation if (conversationCopy!!.canModerate(conversationUser)) { - actionTextView.visibility = View.VISIBLE + addParticipantsAction.visibility = View.VISIBLE } else { - actionTextView.visibility = View.GONE + addParticipantsAction.visibility = View.GONE } if (isAttached && (!isBeingDestroyed || !isDestroyed)) { diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.java b/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.java index 62b2a9b72..80417ddf3 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.java @@ -297,6 +297,11 @@ public class ProfileController extends BaseController { }); } + @Override + protected String getTitle() { + return getResources().getString(R.string.nc_profile_personal_info_title); + } + private void showUserProfile() { if (getActivity() == null) { return; diff --git a/app/src/main/java/com/nextcloud/talk/utils/ui/MaterialPreferenceCategoryWithRightLink.java b/app/src/main/java/com/nextcloud/talk/utils/ui/MaterialPreferenceCategoryWithRightLink.java deleted file mode 100644 index 4e4f4996b..000000000 --- a/app/src/main/java/com/nextcloud/talk/utils/ui/MaterialPreferenceCategoryWithRightLink.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Nextcloud Talk application - * - * @author Mario Danic - * Copyright (C) 2017-2019 Mario Danic - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nextcloud.talk.utils.ui; - -import android.content.Context; -import android.content.res.TypedArray; -import android.text.TextUtils; -import android.util.AttributeSet; -import android.view.View; -import android.view.ViewGroup; -import android.widget.FrameLayout; -import android.widget.TextView; - -import com.nextcloud.talk.R; -import com.yarolegovich.mp.util.Utils; - -import androidx.annotation.ColorInt; -import androidx.annotation.ColorRes; -import androidx.cardview.widget.CardView; -import androidx.core.content.ContextCompat; - -public class MaterialPreferenceCategoryWithRightLink extends CardView { - - private ViewGroup container; - private TextView title; - private TextView action; - - public MaterialPreferenceCategoryWithRightLink(Context context) { - super(context); - init(null); - } - - public MaterialPreferenceCategoryWithRightLink(Context context, AttributeSet attrs) { - super(context, attrs); - init(attrs); - } - - public MaterialPreferenceCategoryWithRightLink(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(attrs); - } - - private void init(AttributeSet attrs) { - int titleColor = -1; - String titleText = ""; - String actionText = ""; - if (attrs != null) { - TypedArray ta = getContext().obtainStyledAttributes(attrs, R.styleable.MaterialPreferenceCategory); - try { - if (ta.hasValue(R.styleable.MaterialPreferenceCategory_mpc_title)) { - titleText = ta.getString(R.styleable.MaterialPreferenceCategory_mpc_title); - } - - if (ta.hasValue(R.styleable.MaterialPreferenceCategory_mpc_action)) { - actionText = ta.getString(R.styleable.MaterialPreferenceCategory_mpc_action); - } - - titleColor = ta.getColor(R.styleable.MaterialPreferenceCategory_mpc_title_color, -1); - } finally { - ta.recycle(); - } - } - - inflate(getContext(), R.layout.category_with_right_action, this); - - FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT); - params.setMargins(0, 0, 0, Utils.dpToPixels(getContext(), 4)); - - setUseCompatPadding(true); - - setRadius(0); - - container = (ViewGroup) findViewById(R.id.mpc_container); - title = (TextView) findViewById(R.id.mpc_title); - action = findViewById(R.id.mpc_action); - - if (!TextUtils.isEmpty(titleText)) { - title.setVisibility(View.VISIBLE); - title.setText(titleText); - } - - if (!TextUtils.isEmpty(actionText)) { - action.setVisibility(View.VISIBLE); - action.setText(actionText); - } - - if (titleColor != -1) { - title.setTextColor(titleColor); - } - } - - public void setAction(String actionText) { - action.setText(actionText); - } - - public void setTitle(String titleText) { - title.setVisibility(View.VISIBLE); - title.setText(titleText); - } - - public void setTitleColor(@ColorInt int color) { - title.setTextColor(color); - } - - public void setTitleColorRes(@ColorRes int colorRes) { - title.setTextColor(ContextCompat.getColor(getContext(), colorRes)); - } - - @Override - public void addView(View child) { - if (container != null) { - container.addView(child); - } else { - super.addView(child); - } - } - - @Override - public void addView(View child, int index) { - if (container != null) { - container.addView(child, index); - } else { - super.addView(child, index); - } - } - - @Override - public void addView(View child, ViewGroup.LayoutParams params) { - if (container != null) { - container.addView(child, params); - } else { - super.addView(child, params); - } - } - - @Override - public void addView(View child, int index, ViewGroup.LayoutParams params) { - if (container != null) { - container.addView(child, index, params); - } else { - super.addView(child, index, params); - } - } - -} diff --git a/app/src/main/res/drawable/ic_account_plus.xml b/app/src/main/res/drawable/ic_account_plus.xml new file mode 100644 index 000000000..101291a7f --- /dev/null +++ b/app/src/main/res/drawable/ic_account_plus.xml @@ -0,0 +1,30 @@ + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 7b110651c..0f5474204 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -50,7 +50,6 @@ android:layout_height="?attr/actionBarSize" android:background="@color/appbar" android:theme="?attr/actionBarPopupTheme" - app:contentInsetStartWithNavigation="16dp" app:layout_scrollFlags="enterAlwaysCollapsed|noScroll" app:navigationIconTint="@color/fontAppbar" app:popupTheme="@style/appActionBarPopupMenu" diff --git a/app/src/main/res/layout/category_with_right_action.xml b/app/src/main/res/layout/category_with_right_action.xml deleted file mode 100644 index 39072a674..000000000 --- a/app/src/main/res/layout/category_with_right_action.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/controller_conversation_info.xml b/app/src/main/res/layout/controller_conversation_info.xml index 023ffdaf5..a8a89b44c 100644 --- a/app/src/main/res/layout/controller_conversation_info.xml +++ b/app/src/main/res/layout/controller_conversation_info.xml @@ -2,6 +2,8 @@ ~ Nextcloud Talk application ~ ~ @author Mario Danic + ~ @author Andy Scherzinger + ~ Copyright (C) 2021 Andy Scherzinger ~ Copyright (C) 2017-2018 Mario Danic ~ ~ This program is free software: you can redistribute it and/or modify @@ -51,7 +53,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:animateLayoutChanges="true" - android:visibility="gone"> + android:visibility="gone" + apc:cardBackgroundColor="@color/bg_default" + apc:cardElevation="0dp" + tools:visibility="visible"> + android:layout_marginTop="@dimen/margin_between_elements" + tools:text="Jane Doe" /> + android:visibility="gone" + apc:cardBackgroundColor="@color/bg_default" + apc:cardElevation="0dp" + tools:visibility="visible"> - + tools:ignore="UnknownIdInLayout" + tools:visibility="visible"> + + - + + android:visibility="gone" + apc:cardBackgroundColor="@color/bg_default" + apc:cardElevation="0dp" + tools:visibility="visible"> + android:visibility="gone" + tools:visibility="gone" /> + android:visibility="gone" + tools:visibility="visible" /> diff --git a/app/src/main/res/layout/controller_settings.xml b/app/src/main/res/layout/controller_settings.xml index 4f3df1037..728c4f73e 100644 --- a/app/src/main/res/layout/controller_settings.xml +++ b/app/src/main/res/layout/controller_settings.xml @@ -2,6 +2,8 @@ ~ Nextcloud Talk application ~ ~ @author Mario Danic + ~ @author Andy Scherzinger + ~ Copyright (C) 2021 Andy Scherzinger ~ Copyright (C) 2017 Mario Danic ~ ~ This program is free software: you can redistribute it and/or modify @@ -28,7 +30,9 @@ android:id="@+id/message_view" android:layout_width="match_parent" android:layout_height="wrap_content" - android:animateLayoutChanges="true"> + android:animateLayoutChanges="true" + apc:cardBackgroundColor="@color/bg_default" + apc:cardElevation="0dp"> + android:animateLayoutChanges="true" + apc:cardBackgroundColor="@color/bg_default" + apc:cardElevation="0dp"> + apc:cardBackgroundColor="@color/bg_default" + apc:cardElevation="0dp" + apc:mpc_title="@string/nc_settings_appearance"> + apc:cardBackgroundColor="@color/bg_default" + apc:cardElevation="0dp" + apc:mpc_title="@string/nc_settings_notification_sounds"> + apc:cardBackgroundColor="@color/bg_default" + apc:cardElevation="0dp" + apc:mpc_title="@string/nc_settings_privacy"> - + - + + apc:cardBackgroundColor="@color/bg_default" + apc:cardElevation="0dp" + apc:mpc_title="@string/nc_settings_proxy_title"> + apc:mp_title="@string/nc_settings_proxy_type_title" /> + apc:cardBackgroundColor="@color/bg_default" + apc:cardElevation="0dp" + apc:mpc_title="@string/nc_about"> + apc:mp_title="@string/nc_get_source_code" /> + apc:mp_title="@string/nc_license_title" /> + apc:mp_title="@string/nc_app_name" /> diff --git a/app/src/main/res/layout/conversation_privacy_toggle.xml b/app/src/main/res/layout/conversation_privacy_toggle.xml index ec9a2b762..a089e3069 100644 --- a/app/src/main/res/layout/conversation_privacy_toggle.xml +++ b/app/src/main/res/layout/conversation_privacy_toggle.xml @@ -2,6 +2,8 @@ ~ Nextcloud Talk application ~ ~ @author Mario Danic + ~ @author Andy Scherzinger + ~ Copyright (C) 2021 Andy Scherzinger ~ Copyright (C) 2017-2018 Mario Danic ~ ~ This program is free software: you can redistribute it and/or modify @@ -19,11 +21,15 @@ --> + app:tint="@color/colorPrimary" /> @@ -60,7 +66,8 @@ android:layout_height="wrap_content" android:layout_centerInParent="true" android:minHeight="@dimen/small_item_height" - android:visibility="gone"> + android:visibility="gone" + tools:visibility="gone"> diff --git a/app/src/main/res/layout/join_conversation_via_link.xml b/app/src/main/res/layout/join_conversation_via_link.xml index 5ed10adfb..4efc6cba9 100644 --- a/app/src/main/res/layout/join_conversation_via_link.xml +++ b/app/src/main/res/layout/join_conversation_via_link.xml @@ -2,6 +2,8 @@ ~ Nextcloud Talk application ~ ~ @author Mario Danic + ~ @author Andy Scherzinger + ~ Copyright (C) 2021 Andy Scherzinger ~ Copyright (C) 2017-2018 Mario Danic ~ ~ This program is free software: you can redistribute it and/or modify @@ -19,22 +21,25 @@ --> + app:tint="@color/colorPrimary" /> + android:textAppearance="@style/ListItem" /> diff --git a/app/src/main/res/layout/notification_settings_item.xml b/app/src/main/res/layout/notification_settings_item.xml index 62f2074b5..85e4a7c3f 100644 --- a/app/src/main/res/layout/notification_settings_item.xml +++ b/app/src/main/res/layout/notification_settings_item.xml @@ -2,6 +2,8 @@ ~ Nextcloud Talk application ~ ~ @author Mario Danic + ~ @author Andy Scherzinger + ~ Copyright (C) 2021 Andy Scherzinger ~ Copyright (C) 2017-2018 Mario Danic ~ ~ This program is free software: you can redistribute it and/or modify @@ -24,13 +26,13 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - + apc:cardBackgroundColor="@color/bg_default" + apc:cardElevation="0dp" + apc:mpc_title="@string/nc_notification_settings"> + apc:mp_title="@string/nc_plain_old_messages" /> + app:tint="@color/colorPrimary" /> + tools:text="Jane Doe" /> diff --git a/app/src/main/res/layout/rv_item_conversation.xml b/app/src/main/res/layout/rv_item_conversation.xml index afd1b174f..a737817fb 100644 --- a/app/src/main/res/layout/rv_item_conversation.xml +++ b/app/src/main/res/layout/rv_item_conversation.xml @@ -4,7 +4,7 @@ ~ @author Mario Danic ~ @author Andy Scherzinger ~ Copyright (C) 2017 Mario Danic - ~ Copyright (C) 2017 Andy Scherzinger + ~ Copyright (C) 2017-2021 Andy Scherzinger ~ ~ This program is free software: you can redistribute it and/or modify ~ it under the terms of the GNU General Public License as published by @@ -23,9 +23,8 @@ - + android:layout_height="72dp" + android:layout_margin="@dimen/standard_margin"> diff --git a/app/src/main/res/layout/rv_item_notification_sound.xml b/app/src/main/res/layout/rv_item_notification_sound.xml index baa319c6e..e3c9a4d8a 100644 --- a/app/src/main/res/layout/rv_item_notification_sound.xml +++ b/app/src/main/res/layout/rv_item_notification_sound.xml @@ -2,6 +2,8 @@ ~ Nextcloud Talk application ~ ~ @author Mario Danic + ~ @author Andy Scherzinger + ~ Copyright (C) 2021 Andy Scherzinger ~ Copyright (C) 2017-2018 Mario Danic ~ ~ This program is free software: you can redistribute it and/or modify @@ -20,21 +22,26 @@ - + app:tint="@color/colorPrimary" /> + android:lines="1" + android:textAppearance="@style/ListItem" + tools:text="Ringy Gone" /> diff --git a/app/src/main/res/layout/rv_item_title_header.xml b/app/src/main/res/layout/rv_item_title_header.xml index cb47ef68c..51c67471e 100644 --- a/app/src/main/res/layout/rv_item_title_header.xml +++ b/app/src/main/res/layout/rv_item_title_header.xml @@ -2,6 +2,8 @@ ~ Nextcloud Talk application ~ ~ @author Mario Danic + ~ @author Andy Scherzinger + ~ Copyright (C) 2021 Andy Scherzinger ~ Copyright (C) 2017-2018 Mario Danic ~ ~ This program is free software: you can redistribute it and/or modify @@ -22,17 +24,19 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@color/bg_default" android:orientation="vertical"> ~ Copyright (C) 2017-2019 Mario Danic ~ ~ This program is free software: you can redistribute it and/or modify @@ -20,18 +22,19 @@ - + apc:cardBackgroundColor="@color/bg_default" + apc:cardElevation="0dp" + apc:mpc_title="@string/nc_webinar"> + apc:mp_title="@string/nc_start_time" + tools:visibility="visible" /> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index e40165663..eb5a34292 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -24,7 +24,6 @@ 72dp 48dp - 48dp 8dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9fe5df158..8b5016a75 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -153,6 +153,8 @@ Select an account + Personal Info + Start a conversation Configure conversation @@ -287,6 +289,7 @@ %s characters limit has been hit Groups Participants + Add participants Owner Moderator @@ -389,4 +392,5 @@ 999+ Open main menu Failed to save %1$s + selected diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 360edf86b..3f56951b6 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -44,7 +44,8 @@