Skip to content

Commit 2d9da23

Browse files
style(sheets): Extend updated button styling and use to all bottom sheets where applicable
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
1 parent d29b199 commit 2d9da23

8 files changed

Lines changed: 158 additions & 198 deletions

app/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingMenuBottomSheetDialog.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import android.os.Bundle;
1414
import android.view.View;
1515
import android.view.ViewGroup;
16+
import androidx.core.content.ContextCompat;
17+
import com.owncloud.android.R;
1618

1719
import com.google.android.material.bottomsheet.BottomSheetBehavior;
1820
import com.google.android.material.bottomsheet.BottomSheetDialog;
@@ -59,10 +61,15 @@ protected void onCreate(Bundle savedInstanceState) {
5961

6062
viewThemeUtils.platform.themeDialog(binding.getRoot());
6163

62-
viewThemeUtils.platform.colorImageView(binding.menuIconAdvancedPermissions, ColorRole.PRIMARY);
63-
viewThemeUtils.platform.colorImageView(binding.menuIconSendLink, ColorRole.PRIMARY);
64-
viewThemeUtils.platform.colorImageView(binding.menuIconUnshare, ColorRole.PRIMARY);
65-
viewThemeUtils.platform.colorImageView(binding.menuIconSendNewEmail, ColorRole.PRIMARY);
64+
int textColor = ContextCompat.getColor(getContext(), R.color.text_color);
65+
viewThemeUtils.material.colorMaterialButtonContent(binding.menuShareAdvancedPermissions, ColorRole.PRIMARY);
66+
viewThemeUtils.material.colorMaterialButtonContent(binding.menuShareSendNewEmail, ColorRole.PRIMARY);
67+
viewThemeUtils.material.colorMaterialButtonContent(binding.menuShareSendLink, ColorRole.PRIMARY);
68+
viewThemeUtils.material.colorMaterialButtonContent(binding.menuShareUnshare, ColorRole.PRIMARY);
69+
binding.menuShareAdvancedPermissions.setTextColor(textColor);
70+
binding.menuShareSendNewEmail.setTextColor(textColor);
71+
binding.menuShareSendLink.setTextColor(textColor);
72+
binding.menuShareUnshare.setTextColor(textColor);
6673

6774
updateUI();
6875

app/src/main/java/com/owncloud/android/ui/fragment/ProfileBottomSheetDialog.kt

Lines changed: 60 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,33 @@ package com.owncloud.android.ui.fragment
99
import android.content.ActivityNotFoundException
1010
import android.content.DialogInterface
1111
import android.content.Intent
12+
import android.content.res.ColorStateList
1213
import android.graphics.drawable.Drawable
1314
import android.os.Bundle
15+
import android.view.ContextThemeWrapper
16+
import android.view.Gravity
1417
import android.view.View
1518
import android.view.ViewGroup
1619
import android.widget.ImageView
20+
import android.widget.LinearLayout
21+
import androidx.compose.ui.graphics.toArgb
22+
import androidx.core.content.ContextCompat
1723
import androidx.core.content.res.ResourcesCompat
1824
import androidx.core.net.toUri
1925
import androidx.fragment.app.FragmentActivity
2026
import com.google.android.material.bottomsheet.BottomSheetBehavior
2127
import com.google.android.material.bottomsheet.BottomSheetDialog
28+
import com.google.android.material.button.MaterialButton
2229
import com.nextcloud.android.lib.resources.profile.Action
2330
import com.nextcloud.android.lib.resources.profile.HoverCard
2431
import com.nextcloud.client.account.User
2532
import com.owncloud.android.R
26-
import com.owncloud.android.databinding.ProfileBottomSheetActionBinding
2733
import com.owncloud.android.databinding.ProfileBottomSheetFragmentBinding
2834
import com.owncloud.android.utils.DisplayUtils
2935
import com.owncloud.android.utils.theme.ViewThemeUtils
3036

37+
private const val TEXT_SIZE = 16f
38+
3139
/**
3240
* Show actions of an user
3341
*/
@@ -67,39 +75,34 @@ class ProfileBottomSheetDialog(
6775

6876
binding.displayName.text = hoverCard.displayName
6977

70-
for (action in hoverCard.actions) {
71-
val actionBinding = ProfileBottomSheetActionBinding.inflate(
72-
layoutInflater
73-
)
74-
val creatorView: View = actionBinding.root
78+
val itemHeight = context.resources.getDimensionPixelSize(R.dimen.bottom_sheet_item_height)
79+
val standardPadding = context.resources.getDimensionPixelSize(R.dimen.standard_padding)
80+
val iconSize = context.resources.getDimensionPixelSize(R.dimen.iconized_single_line_item_icon_size)
81+
val primaryColor = viewThemeUtils.getColorScheme(context).primary.toArgb()
82+
val textColor = ContextCompat.getColor(context, R.color.text_color)
7583

84+
for (action in hoverCard.actions) {
7685
if (action.appId == "email") {
7786
action.hyperlink = action.title
7887
action.title = context.resources.getString(R.string.write_email)
7988
}
8089

81-
actionBinding.name.text = action.title
82-
83-
val icon = when (action.appId) {
90+
val iconRes = when (action.appId) {
8491
"profile" -> R.drawable.ic_user_outline
8592
"email" -> R.drawable.ic_email
8693
"spreed" -> R.drawable.ic_talk
8794
else -> R.drawable.ic_edit
8895
}
89-
actionBinding.icon.setImageDrawable(
90-
ResourcesCompat.getDrawable(
91-
context.resources,
92-
icon,
93-
null
94-
)
95-
)
96-
viewThemeUtils.platform.tintPrimaryDrawable(context, actionBinding.icon.drawable)
9796

98-
creatorView.setOnClickListener { v: View? ->
99-
send(hoverCard.userId, action)
100-
dismiss()
101-
}
102-
binding.creators.addView(creatorView)
97+
val config = ProfileButtonConfig(
98+
itemHeight = itemHeight,
99+
standardPadding = standardPadding,
100+
textColor = textColor,
101+
iconRes = iconRes,
102+
iconSize = iconSize,
103+
primaryColor = primaryColor
104+
)
105+
binding.creators.addView(createProfileButton(config, action))
103106
}
104107

105108
setOnShowListener { d: DialogInterface? ->
@@ -108,6 +111,32 @@ class ProfileBottomSheetDialog(
108111
}
109112
}
110113

114+
private fun createProfileButton(config: ProfileButtonConfig, action: Action): MaterialButton = MaterialButton(
115+
ContextThemeWrapper(context, R.style.ThemeOverlay_App_Button_BottomSheetItem),
116+
null,
117+
com.google.android.material.R.attr.materialButtonStyle
118+
).apply {
119+
layoutParams = LinearLayout.LayoutParams(
120+
LinearLayout.LayoutParams.MATCH_PARENT,
121+
config.itemHeight
122+
)
123+
gravity = Gravity.START or Gravity.CENTER_VERTICAL
124+
setPaddingRelative(config.standardPadding, 0, config.standardPadding, 0)
125+
text = action.title
126+
setTextColor(config.textColor)
127+
textSize = TEXT_SIZE
128+
isAllCaps = false
129+
icon = ResourcesCompat.getDrawable(context.resources, config.iconRes, null)
130+
this.iconSize = config.iconSize
131+
this.iconPadding = config.standardPadding
132+
iconGravity = MaterialButton.ICON_GRAVITY_START
133+
iconTint = ColorStateList.valueOf(config.primaryColor)
134+
setOnClickListener {
135+
send(hoverCard.userId, action)
136+
dismiss()
137+
}
138+
}
139+
111140
private fun send(userId: String, action: Action) {
112141
when (action.appId) {
113142
"profile" -> openWebsite(action.hyperlink)
@@ -162,4 +191,13 @@ class ProfileBottomSheetDialog(
162191
}
163192
return false
164193
}
194+
195+
private data class ProfileButtonConfig(
196+
val itemHeight: Int,
197+
val standardPadding: Int,
198+
val textColor: Int,
199+
val iconRes: Int,
200+
val iconSize: Int,
201+
val primaryColor: Int
202+
)
165203
}

app/src/main/res/layout/file_details_sharing_menu_bottom_sheet_fragment.xml

Lines changed: 65 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -13,138 +13,85 @@
1313
android:layout_width="match_parent"
1414
android:layout_height="wrap_content"
1515
android:orientation="vertical"
16-
android:paddingTop="@dimen/dialog_padding"
16+
android:paddingTop="@dimen/standard_padding"
1717
android:background="@color/bg_default">
1818

19-
<LinearLayout
19+
<com.google.android.material.bottomsheet.BottomSheetDragHandleView
20+
android:layout_width="match_parent"
21+
android:layout_height="wrap_content" />
22+
23+
<com.google.android.material.button.MaterialButton
2024
android:id="@+id/menu_share_advanced_permissions"
25+
style="@style/Widget.App.Button.BottomSheetItem"
2126
android:layout_width="match_parent"
2227
android:layout_height="@dimen/bottom_sheet_item_height"
23-
android:background="?android:attr/selectableItemBackground"
24-
android:orientation="horizontal"
25-
android:layout_gravity="center_vertical"
26-
android:paddingLeft="@dimen/standard_padding"
27-
android:paddingTop="@dimen/standard_half_padding"
28-
android:paddingRight="@dimen/standard_padding"
29-
android:paddingBottom="@dimen/standard_half_padding"
30-
tools:ignore="UseCompoundDrawables">
31-
32-
<ImageView
33-
android:id="@+id/menu_icon_advanced_permissions"
34-
android:layout_width="wrap_content"
35-
android:layout_height="wrap_content"
36-
android:layout_gravity="center_vertical"
37-
android:contentDescription="@null"
38-
android:src="@drawable/ic_edit"
39-
app:tint="@color/primary" />
40-
41-
<TextView
42-
android:layout_width="wrap_content"
43-
android:layout_height="wrap_content"
44-
android:layout_gravity="center_vertical"
45-
android:layout_marginStart="@dimen/bottom_sheet_text_start_margin"
46-
android:text="@string/share_settings"
47-
android:textColor="@color/text_color"
48-
android:textSize="@dimen/bottom_sheet_text_size" />
49-
50-
</LinearLayout>
51-
52-
<LinearLayout
28+
android:contentDescription="@string/share_settings"
29+
android:gravity="start|center_vertical"
30+
android:paddingStart="@dimen/standard_padding"
31+
android:paddingEnd="@dimen/standard_padding"
32+
android:text="@string/share_settings"
33+
android:textColor="@color/text_color"
34+
android:textSize="@dimen/bottom_sheet_text_size"
35+
app:icon="@drawable/ic_edit"
36+
app:iconGravity="start"
37+
app:iconPadding="@dimen/standard_padding"
38+
app:iconSize="@dimen/iconized_single_line_item_icon_size"
39+
app:iconTint="@color/primary" />
40+
41+
<com.google.android.material.button.MaterialButton
5342
android:id="@+id/menu_share_send_new_email"
43+
style="@style/Widget.App.Button.BottomSheetItem"
5444
android:layout_width="match_parent"
5545
android:layout_height="@dimen/bottom_sheet_item_height"
56-
android:background="?android:attr/selectableItemBackground"
57-
android:orientation="horizontal"
58-
android:paddingLeft="@dimen/standard_padding"
59-
android:paddingTop="@dimen/standard_half_padding"
60-
android:paddingRight="@dimen/standard_padding"
61-
android:paddingBottom="@dimen/standard_half_padding"
62-
tools:ignore="UseCompoundDrawables">
63-
64-
<ImageView
65-
android:id="@+id/menu_icon_send_new_email"
66-
android:layout_width="wrap_content"
67-
android:layout_height="wrap_content"
68-
android:layout_gravity="center_vertical"
69-
android:contentDescription="@null"
70-
android:src="@drawable/ic_email"
71-
app:tint="@color/primary" />
72-
73-
<TextView
74-
android:layout_width="wrap_content"
75-
android:layout_height="wrap_content"
76-
android:layout_gravity="center_vertical"
77-
android:layout_marginStart="@dimen/bottom_sheet_text_start_margin"
78-
android:text="@string/share_send_new_email"
79-
android:textColor="@color/text_color"
80-
android:textSize="@dimen/bottom_sheet_text_size" />
81-
82-
</LinearLayout>
83-
84-
<LinearLayout
46+
android:contentDescription="@string/share_send_new_email"
47+
android:gravity="start|center_vertical"
48+
android:paddingStart="@dimen/standard_padding"
49+
android:paddingEnd="@dimen/standard_padding"
50+
android:text="@string/share_send_new_email"
51+
android:textColor="@color/text_color"
52+
android:textSize="@dimen/bottom_sheet_text_size"
53+
app:icon="@drawable/ic_email"
54+
app:iconGravity="start"
55+
app:iconPadding="@dimen/standard_padding"
56+
app:iconSize="@dimen/iconized_single_line_item_icon_size"
57+
app:iconTint="@color/primary" />
58+
59+
<com.google.android.material.button.MaterialButton
8560
android:id="@+id/menu_share_send_link"
61+
style="@style/Widget.App.Button.BottomSheetItem"
8662
android:layout_width="match_parent"
8763
android:layout_height="@dimen/bottom_sheet_item_height"
88-
android:background="?android:attr/selectableItemBackground"
89-
android:orientation="horizontal"
90-
android:paddingLeft="@dimen/standard_padding"
91-
android:paddingTop="@dimen/standard_half_padding"
92-
android:paddingRight="@dimen/standard_padding"
93-
android:paddingBottom="@dimen/standard_half_padding"
64+
android:contentDescription="@string/share_via_link_send_link_label"
65+
android:gravity="start|center_vertical"
66+
android:paddingStart="@dimen/standard_padding"
67+
android:paddingEnd="@dimen/standard_padding"
68+
android:text="@string/share_via_link_send_link_label"
69+
android:textColor="@color/text_color"
70+
android:textSize="@dimen/bottom_sheet_text_size"
9471
android:visibility="gone"
95-
tools:ignore="UseCompoundDrawables"
96-
tools:visibility="visible">
97-
98-
<ImageView
99-
android:id="@+id/menu_icon_send_link"
100-
android:layout_width="wrap_content"
101-
android:layout_height="wrap_content"
102-
android:layout_gravity="center_vertical"
103-
android:contentDescription="@null"
104-
android:src="@drawable/ic_link"
105-
app:tint="@color/primary" />
106-
107-
<TextView
108-
android:layout_width="wrap_content"
109-
android:layout_height="wrap_content"
110-
android:layout_gravity="center_vertical"
111-
android:layout_marginStart="@dimen/bottom_sheet_text_start_margin"
112-
android:text="@string/share_via_link_send_link_label"
113-
android:textColor="@color/text_color"
114-
android:textSize="@dimen/bottom_sheet_text_size" />
115-
116-
</LinearLayout>
117-
118-
<LinearLayout
72+
app:icon="@drawable/ic_link"
73+
app:iconGravity="start"
74+
app:iconPadding="@dimen/standard_padding"
75+
app:iconSize="@dimen/iconized_single_line_item_icon_size"
76+
app:iconTint="@color/primary"
77+
tools:visibility="visible" />
78+
79+
<com.google.android.material.button.MaterialButton
11980
android:id="@+id/menu_share_unshare"
81+
style="@style/Widget.App.Button.BottomSheetItem"
12082
android:layout_width="match_parent"
12183
android:layout_height="@dimen/bottom_sheet_item_height"
122-
android:background="?android:attr/selectableItemBackground"
123-
android:orientation="horizontal"
124-
android:paddingLeft="@dimen/standard_padding"
125-
android:paddingTop="@dimen/standard_half_padding"
126-
android:paddingRight="@dimen/standard_padding"
127-
android:paddingBottom="@dimen/standard_half_padding"
128-
tools:ignore="UseCompoundDrawables">
129-
130-
<ImageView
131-
android:id="@+id/menu_icon_unshare"
132-
android:layout_width="wrap_content"
133-
android:layout_height="wrap_content"
134-
android:layout_gravity="center_vertical"
135-
android:contentDescription="@null"
136-
android:src="@drawable/ic_delete"
137-
app:tint="@color/primary" />
138-
139-
<TextView
140-
android:layout_width="wrap_content"
141-
android:layout_height="wrap_content"
142-
android:layout_gravity="center_vertical"
143-
android:layout_marginStart="@dimen/bottom_sheet_text_start_margin"
144-
android:text="@string/delete_link"
145-
android:textColor="@color/text_color"
146-
android:textSize="@dimen/bottom_sheet_text_size" />
147-
148-
</LinearLayout>
84+
android:contentDescription="@string/delete_link"
85+
android:gravity="start|center_vertical"
86+
android:paddingStart="@dimen/standard_padding"
87+
android:paddingEnd="@dimen/standard_padding"
88+
android:text="@string/delete_link"
89+
android:textColor="@color/text_color"
90+
android:textSize="@dimen/bottom_sheet_text_size"
91+
app:icon="@drawable/ic_delete"
92+
app:iconGravity="start"
93+
app:iconPadding="@dimen/standard_padding"
94+
app:iconSize="@dimen/iconized_single_line_item_icon_size"
95+
app:iconTint="@color/primary" />
14996

15097
</LinearLayout>

app/src/main/res/layout/fragment_gallery_bottom_sheet.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@
4242
android:id="@+id/btn_hide_images"
4343
style="@style/Widget.Material3.Button.IconButton"
4444
android:layout_width="wrap_content"
45+
android:layout_height="wrap_content"
4546
android:layout_weight="8"
4647
android:gravity="start"
47-
android:layout_height="wrap_content"
4848
android:text="@string/show_images"
49-
app:iconPadding="@dimen/standard_half_padding"
5049
android:textSize="@dimen/bottom_sheet_text_size"
51-
app:icon="@drawable/ic_camera" />
50+
app:icon="@drawable/ic_camera"
51+
app:iconPadding="@dimen/standard_half_padding" />
5252

5353
<View
5454
android:layout_width="0dp"

0 commit comments

Comments
 (0)