Skip to content

Commit 4d75631

Browse files
committed
simplify
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent 41d28e8 commit 4d75631

4 files changed

Lines changed: 70 additions & 39 deletions

File tree

app/src/main/java/com/nextcloud/ui/fileInfo/FileInfoFragment.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ class FileInfoFragment :
4646
file?.let { imageDetailInfo.init(it, binding) }
4747
}
4848

49-
5049
val governanceDetailInfo = GovernanceDetailInfo(binding, viewThemeUtils, this)
5150
governanceDetailInfo.init()
5251

app/src/main/java/com/nextcloud/ui/fileInfo/GovernanceDetailInfo.kt

Lines changed: 58 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ import android.view.ViewGroup
1212
import android.widget.ArrayAdapter
1313
import android.widget.TextView
1414
import androidx.core.content.ContextCompat
15+
import com.google.android.material.textfield.MaterialAutoCompleteTextView
16+
import com.google.android.material.textfield.TextInputLayout
1517
import com.nextcloud.android.common.ui.theme.utils.ColorRole
16-
import com.nextcloud.ui.fileInfo.model.SensitivityLabel
18+
import com.nextcloud.ui.fileInfo.model.GovernanceLabel
1719
import com.owncloud.android.R
1820
import com.owncloud.android.databinding.FileInfoFragmentBinding
1921
import com.owncloud.android.utils.theme.ViewThemeUtils
@@ -23,56 +25,75 @@ class GovernanceDetailInfo(
2325
private val viewThemeUtils: ViewThemeUtils,
2426
private val fragment: FileInfoFragment
2527
) {
28+
private val context get() = fragment.requireContext()
2629

2730
fun init() {
2831
viewThemeUtils.material.themeCardView(binding.governanceLayout)
32+
initSensitivityLabel()
33+
initFileDetentionLabel()
34+
}
35+
36+
private fun initSensitivityLabel() {
37+
initDropdown(
38+
textInputLayout = binding.sensitivityLabel,
39+
autoComplete = binding.sensitivityLabelAutoComplete,
40+
items = listOf(
41+
GovernanceLabel("Sharing restricted", R.drawable.ic_share),
42+
GovernanceLabel("Download restricted", R.drawable.ic_download_grey600),
43+
GovernanceLabel("Upload restricted", R.drawable.uploads)
44+
)
45+
)
46+
}
2947

30-
val items = listOf(
31-
SensitivityLabel("Option 1", R.drawable.outline_camera_24),
32-
SensitivityLabel("Option 2", R.drawable.outline_image_24),
33-
SensitivityLabel("Option 3", R.drawable.ic_information_outline)
48+
private fun initFileDetentionLabel() {
49+
initDropdown(
50+
textInputLayout = binding.fileDetentionLabel,
51+
autoComplete = binding.fileDetentionAutoComplete,
52+
items = listOf(
53+
GovernanceLabel("Public", R.drawable.file_link),
54+
GovernanceLabel("Internal use only", R.drawable.ic_group),
55+
GovernanceLabel("Restricted", R.drawable.ic_cancel)
56+
)
3457
)
58+
}
59+
60+
private fun initDropdown(
61+
textInputLayout: TextInputLayout,
62+
autoComplete: MaterialAutoCompleteTextView,
63+
items: List<GovernanceLabel>
64+
) {
65+
viewThemeUtils.material.colorTextInputLayout(textInputLayout)
66+
viewThemeUtils.files.themeAutoCompleteTextView(autoComplete)
67+
68+
autoComplete.setAdapter(buildAdapter(items))
69+
70+
items.firstOrNull()?.let { applySelection(autoComplete, it) }
3571

36-
val adapter = object :
37-
ArrayAdapter<SensitivityLabel>(fragment.requireContext(), R.layout.item_dropdown_with_icon, items) {
72+
autoComplete.setOnItemClickListener { _, _, position, _ ->
73+
applySelection(autoComplete, items[position])
74+
}
75+
}
76+
77+
private fun buildAdapter(items: List<GovernanceLabel>) =
78+
object : ArrayAdapter<GovernanceLabel>(context, R.layout.item_dropdown_with_icon, items) {
3879
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
3980
val view = super.getView(position, convertView, parent) as TextView
40-
val item = getItem(position)
41-
if (item != null) {
81+
getItem(position)?.let { item ->
4282
view.text = item.text
43-
val drawable = ContextCompat.getDrawable(context, item.iconRes)?.mutate()
44-
drawable?.let {
45-
viewThemeUtils.platform.tintDrawable(fragment.requireContext(), it, ColorRole.ON_SURFACE)
46-
}
47-
view.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)
83+
view.setCompoundDrawablesWithIntrinsicBounds(tintedDrawable(item), null, null, null)
4884
}
4985
return view
5086
}
5187
}
52-
binding.sensitivityLabelAutoComplete.setAdapter(adapter)
5388

54-
val defaultSelectedItem = items.firstOrNull()
55-
if (defaultSelectedItem != null) {
56-
binding.sensitivityLabelAutoComplete.setText(defaultSelectedItem.text, false)
57-
val drawable = ContextCompat.getDrawable(fragment.requireContext(), defaultSelectedItem.iconRes)?.mutate()
58-
drawable?.let {
59-
viewThemeUtils.platform.tintDrawable(fragment.requireContext(), it, ColorRole.ON_SURFACE)
60-
}
61-
binding.sensitivityLabelAutoComplete.setCompoundDrawablesRelativeWithIntrinsicBounds(drawable, null, null, null)
62-
binding.sensitivityLabelAutoComplete.compoundDrawablePadding =
63-
fragment.resources.getDimensionPixelSize(R.dimen.standard_padding)
64-
}
89+
private fun applySelection(autoComplete: MaterialAutoCompleteTextView, item: GovernanceLabel) {
90+
autoComplete.setText(item.text, false)
91+
autoComplete.setCompoundDrawablesRelativeWithIntrinsicBounds(tintedDrawable(item), null, null, null)
92+
autoComplete.compoundDrawablePadding = fragment.resources.getDimensionPixelSize(R.dimen.standard_padding)
93+
}
6594

66-
binding.sensitivityLabelAutoComplete.setOnItemClickListener { _, _, position, _ ->
67-
val selected = items[position]
68-
binding.sensitivityLabelAutoComplete.setText(selected.text, false)
69-
val drawable = ContextCompat.getDrawable(fragment.requireContext(), selected.iconRes)?.mutate()
70-
binding.sensitivityLabelAutoComplete.setCompoundDrawablesRelativeWithIntrinsicBounds(drawable, null, null, null)
71-
binding.sensitivityLabelAutoComplete.compoundDrawablePadding =
72-
fragment.resources.getDimensionPixelSize(R.dimen.standard_padding)
95+
private fun tintedDrawable(item: GovernanceLabel) =
96+
ContextCompat.getDrawable(context, item.iconRes)?.mutate()?.also {
97+
viewThemeUtils.platform.tintDrawable(context, it, ColorRole.ON_SURFACE)
7398
}
74-
75-
viewThemeUtils.material.colorTextInputLayout(binding.sensitivityLabel)
76-
viewThemeUtils.material.colorTextInputLayout(binding.fileDetentionLabel)
77-
}
7899
}

app/src/main/java/com/nextcloud/ui/fileInfo/model/SensitivityLabel.kt renamed to app/src/main/java/com/nextcloud/ui/fileInfo/model/GovernanceLabel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77

88
package com.nextcloud.ui.fileInfo.model
99

10-
data class SensitivityLabel(val text: String, val iconRes: Int)
10+
data class GovernanceLabel(val text: String, val iconRes: Int)

app/src/main/java/com/owncloud/android/utils/theme/FilesSpecificViewThemeUtils.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import androidx.appcompat.widget.SearchView
2828
import androidx.core.content.res.ResourcesCompat
2929
import com.google.android.material.card.MaterialCardView
3030
import com.google.android.material.navigation.NavigationView
31+
import com.google.android.material.textfield.MaterialAutoCompleteTextView
3132
import com.nextcloud.android.common.ui.color.ColorUtil
3233
import com.nextcloud.android.common.ui.theme.MaterialSchemes
3334
import com.nextcloud.android.common.ui.theme.ViewThemeUtilsBase
@@ -312,6 +313,16 @@ class FilesSpecificViewThemeUtils @Inject constructor(
312313
}
313314
}
314315

316+
fun themeAutoCompleteTextView(autoCompleteTextView: MaterialAutoCompleteTextView) {
317+
withScheme(autoCompleteTextView) { scheme ->
318+
autoCompleteTextView.setTextColor(dynamicColor.onSurface().getArgb(scheme))
319+
autoCompleteTextView.setHintTextColor(dynamicColor.onSurfaceVariant().getArgb(scheme))
320+
autoCompleteTextView.setDropDownBackgroundTintList(
321+
ColorStateList.valueOf(dynamicColor.surfaceContainer().getArgb(scheme))
322+
)
323+
}
324+
}
325+
315326
companion object {
316327
private val TAG = FilesSpecificViewThemeUtils::class.simpleName
317328

0 commit comments

Comments
 (0)