@@ -9,8 +9,13 @@ package com.owncloud.android.ui.fragment
99
1010import android.os.Build
1111import android.os.Bundle
12+ import android.view.ContextThemeWrapper
13+ import android.view.Gravity
1214import android.view.View
15+ import android.widget.LinearLayout
16+ import androidx.core.content.ContextCompat
1317import com.google.android.material.bottomsheet.BottomSheetDialog
18+ import com.google.android.material.button.MaterialButton
1419import com.google.gson.Gson
1520import com.nextcloud.android.common.ui.theme.utils.ColorRole
1621import com.nextcloud.client.account.User
@@ -21,7 +26,6 @@ import com.nextcloud.utils.BuildHelper.isFlavourGPlay
2126import com.nextcloud.utils.EditorUtils
2227import com.owncloud.android.MainApp
2328import com.owncloud.android.R
24- import com.owncloud.android.databinding.FileListActionsBottomSheetCreatorBinding
2529import com.owncloud.android.databinding.FileListActionsBottomSheetFragmentBinding
2630import com.owncloud.android.datamodel.ArbitraryDataProvider
2731import 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