Skip to content

Commit 47c5bcc

Browse files
committed
style(file-list-actions): use m3 buttons instead of linear layout
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent a3da2c4 commit 47c5bcc

3 files changed

Lines changed: 225 additions & 309 deletions

File tree

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

Lines changed: 75 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,13 @@ package com.owncloud.android.ui.fragment
99

1010
import android.os.Build
1111
import android.os.Bundle
12+
import android.view.ContextThemeWrapper
13+
import android.view.Gravity
1214
import android.view.View
15+
import android.widget.LinearLayout
16+
import androidx.core.content.ContextCompat
1317
import com.google.android.material.bottomsheet.BottomSheetDialog
18+
import com.google.android.material.button.MaterialButton
1419
import com.google.gson.Gson
1520
import com.nextcloud.android.common.ui.theme.utils.ColorRole
1621
import com.nextcloud.client.account.User
@@ -21,7 +26,6 @@ import com.nextcloud.utils.BuildHelper.isFlavourGPlay
2126
import com.nextcloud.utils.EditorUtils
2227
import com.owncloud.android.MainApp
2328
import com.owncloud.android.R
24-
import com.owncloud.android.databinding.FileListActionsBottomSheetCreatorBinding
2529
import com.owncloud.android.databinding.FileListActionsBottomSheetFragmentBinding
2630
import com.owncloud.android.datamodel.ArbitraryDataProvider
2731
import com.owncloud.android.datamodel.ArbitraryDataProviderImpl
@@ -81,24 +85,35 @@ class OCFileListBottomSheetDialog(
8185

8286
if (!hasPermission) {
8387
binding.menuUploadFiles.visibility = View.GONE
84-
binding.uploadContentFromOtherApps.text = context.getString(R.string.upload_files)
88+
binding.menuUploadFromApp.text = context.getString(R.string.upload_files)
8589
}
8690
}
8791
}
8892

8993
private fun applyBranding() {
90-
viewThemeUtils.platform.run {
94+
viewThemeUtils.material.run {
9195
binding.run {
92-
colorImageView(menuIconUploadFiles, ColorRole.PRIMARY)
93-
colorImageView(menuIconUploadFromApp, ColorRole.PRIMARY)
94-
colorImageView(menuIconDirectCameraUpload, ColorRole.PRIMARY)
95-
colorImageView(menuIconScanDocUpload, ColorRole.PRIMARY)
96-
colorImageView(menuIconMkdir, ColorRole.PRIMARY)
97-
colorImageView(menuIconAddFolderInfo, ColorRole.PRIMARY)
98-
99-
colorViewBackground(binding.bottomSheet, ColorRole.SURFACE)
96+
colorMaterialButtonContent(menuUploadFiles, ColorRole.PRIMARY)
97+
colorMaterialButtonContent(menuUploadFromApp, ColorRole.PRIMARY)
98+
colorMaterialButtonContent(menuDirectCameraUpload, ColorRole.PRIMARY)
99+
colorMaterialButtonContent(menuScanDocUpload, ColorRole.PRIMARY)
100+
colorMaterialButtonContent(menuMkdir, ColorRole.PRIMARY)
101+
colorMaterialButtonContent(menuCreateRichWorkspace, ColorRole.PRIMARY)
100102
}
101103
}
104+
105+
viewThemeUtils.platform.colorViewBackground(binding.bottomSheet, ColorRole.SURFACE)
106+
107+
val textColor = ContextCompat.getColor(context, R.color.text_color)
108+
109+
binding.run {
110+
menuUploadFiles.setTextColor(textColor)
111+
menuUploadFromApp.setTextColor(textColor)
112+
menuDirectCameraUpload.setTextColor(textColor)
113+
menuScanDocUpload.setTextColor(textColor)
114+
menuMkdir.setTextColor(textColor)
115+
menuCreateRichWorkspace.setTextColor(textColor)
116+
}
102117
}
103118

104119
@Suppress("ComplexCondition")
@@ -110,50 +125,79 @@ class OCFileListBottomSheetDialog(
110125
capability.richDocumentsTemplatesAvailable.isTrue &&
111126
!file.isEncrypted
112127
) {
113-
binding.templates.visibility = View.VISIBLE
128+
binding.menuNewDocument.visibility = View.VISIBLE
129+
binding.menuNewSpreadsheet.visibility = View.VISIBLE
130+
binding.menuNewPresentation.visibility = View.VISIBLE
114131
}
115132
}
116133

117-
@Suppress("DEPRECATION")
134+
@Suppress("DEPRECATION", "LongMethod", "MagicNumber")
118135
private fun initCreatorContainer() {
119136
val json = ArbitraryDataProviderImpl(context)
120137
.getValue(user, ArbitraryDataProvider.DIRECT_EDITING)
121138

122-
if (!json.isEmpty() && !file.isEncrypted) {
139+
if (json.isNotEmpty() && !file.isEncrypted) {
123140
val directEditing = Gson().fromJson(json, DirectEditing::class.java)
124141
if (directEditing.creators.isEmpty()) {
125142
return
126143
}
127144

128145
binding.creatorsContainer.visibility = View.VISIBLE
146+
binding.creators.removeAllViews()
147+
148+
val itemHeight = context.resources.getDimensionPixelSize(R.dimen.bottom_sheet_item_height)
149+
val standardPadding = context.resources.getDimensionPixelSize(R.dimen.standard_padding)
150+
val iconSize = context.resources.getDimensionPixelSize(R.dimen.iconized_single_line_item_icon_size)
151+
val startPadding = context.resources.getDimensionPixelSize(R.dimen.creator_container_start_padding)
129152

130153
for (creator in directEditing.creators.values) {
131-
val creatorViewBinding =
132-
FileListActionsBottomSheetCreatorBinding.inflate(layoutInflater)
154+
val creatorButton = MaterialButton(
155+
ContextThemeWrapper(
156+
context,
157+
com.google.android.material.R.style.Widget_Material3_Button_IconButton
158+
),
159+
null,
160+
com.google.android.material.R.attr.materialButtonStyle
161+
).apply {
162+
id = View.generateViewId()
163+
layoutParams = LinearLayout.LayoutParams(
164+
LinearLayout.LayoutParams.MATCH_PARENT,
165+
itemHeight
166+
)
133167

134-
val creatorView: View = creatorViewBinding.getRoot()
168+
gravity = Gravity.START or Gravity.CENTER_VERTICAL
169+
setPaddingRelative(startPadding, 0, standardPadding, 0)
170+
insetTop = 0
171+
insetBottom = 0
135172

136-
creatorViewBinding.creatorName.text = String.format(
137-
fileActivity.getString(R.string.editor_placeholder),
138-
fileActivity.getString(R.string.create_new),
139-
creator.name
140-
)
173+
val buttonText = String.format(
174+
fileActivity.getString(R.string.editor_placeholder),
175+
fileActivity.getString(R.string.create_new),
176+
creator.name
177+
)
178+
text = buttonText
179+
setTextColor(ContextCompat.getColor(context, R.color.text_color))
180+
textSize = 16f
181+
isAllCaps = false
141182

142-
creatorViewBinding.creatorThumbnail.setImageDrawable(
143-
MimeTypeUtil.getFileTypeIcon(
183+
icon = MimeTypeUtil.getFileTypeIcon(
144184
creator.mimetype,
145185
creator.extension,
146-
creatorViewBinding.creatorThumbnail.context,
186+
context,
147187
viewThemeUtils
148188
)
149-
)
150-
151-
creatorView.setOnClickListener {
152-
actions.showTemplate(creator, creatorViewBinding.creatorName.text.toString())
153-
dismiss()
189+
this.iconSize = iconSize
190+
this.iconPadding = standardPadding
191+
iconGravity = MaterialButton.ICON_GRAVITY_START
192+
iconTint = null
193+
194+
setOnClickListener {
195+
actions.showTemplate(creator, buttonText)
196+
dismiss()
197+
}
154198
}
155199

156-
binding.creators.addView(creatorView)
200+
binding.creators.addView(creatorButton)
157201
}
158202
}
159203
}

0 commit comments

Comments
 (0)