diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-06-16 10:53:42 +0300 |
---|---|---|
committer | Niedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com> | 2020-06-16 11:01:55 +0300 |
commit | 7a2909629220c4b18842e59d8da12168f1c1d5ce (patch) | |
tree | a21a20522a431c74b9943f5d1408fe6d31080421 | |
parent | 8519a8264d3f349e2c85d1687ac4ec4e576be392 (diff) |
Enhance account switchers
Display username and host in separate lines
8 files changed, 70 insertions, 49 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherDialog.java b/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherDialog.java index 249d2c3d..78f20984 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherDialog.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherDialog.java @@ -61,7 +61,8 @@ public class AccountSwitcherDialog extends BrandedDialogFragment { binding = DialogAccountSwitcherBinding.inflate(requireActivity().getLayoutInflater()); LocalAccount currentLocalAccount = db.getAccount(currentAccountId); - binding.accountItemLabel.setText(currentLocalAccount.getAccountName()); + binding.accountName.setText(currentLocalAccount.getUserName()); + binding.accountHost.setText(Uri.parse(currentLocalAccount.getUrl()).getHost()); Glide.with(requireContext()) .load(currentLocalAccount.getUrl() + "/index.php/avatar/" + Uri.encode(currentLocalAccount.getUserName()) + "/64") .error(R.drawable.ic_account_circle_grey_24dp) diff --git a/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherViewHolder.java b/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherViewHolder.java index 7093e651..0b7c17a0 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherViewHolder.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherViewHolder.java @@ -24,7 +24,8 @@ public class AccountSwitcherViewHolder extends RecyclerView.ViewHolder { } public void bind(@NonNull LocalAccount localAccount, @NonNull Consumer<LocalAccount> onAccountClick) { - binding.accountItemLabel.setText(localAccount.getAccountName()); + binding.accountName.setText(localAccount.getUserName()); + binding.accountHost.setText(Uri.parse(localAccount.getUrl()).getHost()); Glide.with(itemView.getContext()) .load(localAccount.getUrl() + "/index.php/avatar/" + Uri.encode(localAccount.getUserName()) + "/64") .error(R.drawable.ic_account_circle_grey_24dp) diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/AccountChooserAdapter.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/AccountChooserAdapter.java index e071d318..bf7e3b0e 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/AccountChooserAdapter.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/AccountChooserAdapter.java @@ -29,14 +29,11 @@ public class AccountChooserAdapter extends RecyclerView.Adapter<AccountChooserVi private final List<LocalAccount> localAccounts; @NonNull private final MoveAccountListener moveAccountListener; - @NonNull - private final Context context; - AccountChooserAdapter(@NonNull List<LocalAccount> localAccounts, @NonNull MoveAccountListener moveAccountListener, @NonNull Context context) { + AccountChooserAdapter(@NonNull List<LocalAccount> localAccounts, @NonNull MoveAccountListener moveAccountListener) { super(); this.localAccounts = localAccounts; this.moveAccountListener = moveAccountListener; - this.context = context; } @NonNull @@ -48,17 +45,7 @@ public class AccountChooserAdapter extends RecyclerView.Adapter<AccountChooserVi @Override public void onBindViewHolder(@NonNull AccountChooserViewHolder holder, int position) { - LocalAccount localAccount = localAccounts.get(position); - holder.getAccountLayout().setOnClickListener((v) -> moveAccountListener.moveToAccount(localAccount)); - - Glide - .with(context) - .load(localAccount.getUrl() + "/index.php/avatar/" + Uri.encode(localAccount.getUserName()) + "/64") - .error(R.drawable.ic_account_circle_grey_24dp) - .apply(RequestOptions.circleCropTransform()) - .into(holder.getAvatar()); - - holder.getUsername().setText(localAccount.getAccountName()); + holder.bind(localAccounts.get(position), moveAccountListener); } @Override @@ -74,16 +61,17 @@ public class AccountChooserAdapter extends RecyclerView.Adapter<AccountChooserVi binding = ItemAccountChooseBinding.bind(view); } - private LinearLayout getAccountLayout() { - return binding.accountLayout; - } - - private ImageView getAvatar() { - return binding.accountItemAvatar; - } - - private TextView getUsername() { - return binding.accountItemLabel; + public void bind(LocalAccount localAccount, MoveAccountListener moveAccountListener) { + Glide + .with(binding.accountItemAvatar.getContext()) + .load(localAccount.getUrl() + "/index.php/avatar/" + Uri.encode(localAccount.getUserName()) + "/64") + .error(R.drawable.ic_account_circle_grey_24dp) + .apply(RequestOptions.circleCropTransform()) + .into(binding.accountItemAvatar); + + binding.accountLayout.setOnClickListener((v) -> moveAccountListener.moveToAccount(localAccount)); + binding.accountName.setText(localAccount.getUserName()); + binding.accountHost.setText(Uri.parse(localAccount.getUrl()).getHost()); } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/MoveAccountDialogFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/MoveAccountDialogFragment.java index 50b56c1c..2b959c4b 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/MoveAccountDialogFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/MoveAccountDialogFragment.java @@ -53,7 +53,7 @@ public class MoveAccountDialogFragment extends AppCompatDialogFragment implement NotesDatabase db = NotesDatabase.getInstance(getActivity()); List<LocalAccount> accountsList = db.getAccounts(); - RecyclerView.Adapter<AccountChooserViewHolder> adapter = new AccountChooserAdapter(accountsList, this, requireActivity()); + RecyclerView.Adapter<AccountChooserViewHolder> adapter = new AccountChooserAdapter(accountsList, this); binding.accountsList.setAdapter(adapter); return new BrandedAlertDialogBuilder(requireActivity()) diff --git a/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java b/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java index df56fba5..e22f4b57 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java @@ -30,7 +30,8 @@ public class ManageAccountViewHolder extends RecyclerView.ViewHolder { } public void bind(@NonNull LocalAccount localAccount, @NonNull Consumer<LocalAccount> onAccountClick, @Nullable Consumer<LocalAccount> onAccountDelete, boolean isCurrentAccount) { - binding.accountItemLabel.setText(localAccount.getAccountName()); + binding.accountName.setText(localAccount.getUserName()); + binding.accountHost.setText(Uri.parse(localAccount.getUrl()).getHost()); Glide.with(itemView.getContext()) .load(localAccount.getUrl() + "/index.php/avatar/" + Uri.encode(localAccount.getUserName()) + "/64") .error(R.drawable.ic_account_circle_grey_24dp) diff --git a/app/src/main/res/layout/dialog_account_switcher.xml b/app/src/main/res/layout/dialog_account_switcher.xml index cccdf1c9..f3f0814e 100644 --- a/app/src/main/res/layout/dialog_account_switcher.xml +++ b/app/src/main/res/layout/dialog_account_switcher.xml @@ -11,31 +11,46 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/selectableItemBackground" + android:gravity="center_vertical" android:orientation="horizontal" android:padding="@dimen/spacer_3x"> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/currentAccountItemAvatar" - android:layout_width="36dp" - android:layout_height="36dp" + android:layout_width="@dimen/avatar_size" + android:layout_height="@dimen/avatar_size" android:contentDescription="@null" android:focusable="false" android:scaleType="center" app:srcCompat="@drawable/ic_account_circle_grey_24dp" /> - <TextView - android:id="@+id/accountItemLabel" + + <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_gravity="center" android:layout_marginStart="@dimen/spacer_2x" android:layout_marginEnd="@dimen/spacer_2x" android:layout_weight="1" - android:ellipsize="middle" - android:singleLine="true" - android:textAppearance="@style/TextAppearance.AppCompat.Widget.TextView.SpinnerItem" - android:textColor="?android:textColorPrimary" - tools:text="@tools:sample/full_names" /> + android:orientation="vertical"> + + <TextView + android:id="@+id/accountName" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:ellipsize="middle" + android:singleLine="true" + android:textAppearance="?attr/textAppearanceListItem" + tools:text="@tools:sample/full_names" /> + + <TextView + android:id="@+id/accountHost" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:ellipsize="middle" + android:singleLine="true" + android:textAppearance="?attr/textAppearanceListItemSecondary" + tools:text="@tools:sample/full_names" /> + </LinearLayout> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/check" diff --git a/app/src/main/res/layout/item_account_choose.xml b/app/src/main/res/layout/item_account_choose.xml index b9a88984..910b25a0 100644 --- a/app/src/main/res/layout/item_account_choose.xml +++ b/app/src/main/res/layout/item_account_choose.xml @@ -6,6 +6,7 @@ android:layout_height="wrap_content" android:background="?attr/selectableItemBackground" android:orientation="horizontal" + android:gravity="center" android:padding="@dimen/spacer_3x"> <FrameLayout @@ -15,8 +16,8 @@ <androidx.appcompat.widget.AppCompatImageView android:id="@+id/accountItemAvatar" - android:layout_width="36dp" - android:layout_height="36dp" + android:layout_width="@dimen/avatar_size" + android:layout_height="@dimen/avatar_size" android:contentDescription="@null" android:focusable="false" android:scaleType="center" @@ -32,20 +33,32 @@ tools:visibility="visible" /> </FrameLayout> - <TextView - android:id="@+id/accountItemLabel" + <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_gravity="center" android:layout_marginStart="@dimen/spacer_2x" android:layout_marginEnd="@dimen/spacer_2x" android:layout_weight="1" - android:ellipsize="middle" - android:singleLine="true" - android:textAppearance="@style/TextAppearance.AppCompat.Widget.TextView.SpinnerItem" - android:textColor="?android:textColorPrimary" - tools:text="@tools:sample/full_names" /> + android:orientation="vertical"> + <TextView + android:id="@+id/accountName" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:ellipsize="middle" + android:singleLine="true" + android:textAppearance="?attr/textAppearanceListItem" + tools:text="@tools:sample/full_names" /> + + <TextView + android:id="@+id/accountHost" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:ellipsize="middle" + android:singleLine="true" + android:textAppearance="?attr/textAppearanceListItemSecondary" + tools:text="@tools:sample/full_names" /> + </LinearLayout> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/delete" diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index d2eccead..bf616e26 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -9,6 +9,8 @@ <dimen name="spacer_5x">40dp</dimen> <dimen name="spacer_6x">48dp</dimen> + <dimen name="avatar_size">36dp</dimen> + <!-- Drawer header --> <dimen name="drawer_header_height">100dp</dimen> <dimen name="drawer_header_logo_size">42dp</dimen> |