Skip to content

Commit

Permalink
Customized checkbox and switch UIs.
Browse files Browse the repository at this point in the history
  • Loading branch information
surinder-tsys committed Aug 5, 2024
1 parent 1d6c53c commit 09321b6
Show file tree
Hide file tree
Showing 5 changed files with 278 additions and 5 deletions.
117 changes: 117 additions & 0 deletions app/src/main/java/com/nmc/android/utils/CheckableThemeUtils.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
package com.nmc.android.utils

import android.content.res.ColorStateList
import androidx.appcompat.widget.AppCompatCheckBox
import androidx.appcompat.widget.SwitchCompat
import androidx.core.content.res.ResourcesCompat
import com.owncloud.android.R

object CheckableThemeUtils {
@JvmStatic
fun tintCheckbox(vararg checkBoxes: AppCompatCheckBox) {
for (checkBox in checkBoxes) {
val checkEnabled = ResourcesCompat.getColor(
checkBox.context.resources,
R.color.checkbox_checked_enabled,
checkBox.context.theme
)
val checkDisabled = ResourcesCompat.getColor(
checkBox.context.resources,
R.color.checkbox_checked_disabled,
checkBox.context.theme
)
val uncheckEnabled = ResourcesCompat.getColor(
checkBox.context.resources,
R.color.checkbox_unchecked_enabled,
checkBox.context.theme
)
val uncheckDisabled = ResourcesCompat.getColor(
checkBox.context.resources,
R.color.checkbox_unchecked_disabled,
checkBox.context.theme
)

val states = arrayOf(
intArrayOf(android.R.attr.state_enabled, android.R.attr.state_checked),
intArrayOf(-android.R.attr.state_enabled, android.R.attr.state_checked),
intArrayOf(android.R.attr.state_enabled, -android.R.attr.state_checked),
intArrayOf(-android.R.attr.state_enabled, -android.R.attr.state_checked)
)
val colors = intArrayOf(
checkEnabled,
checkDisabled,
uncheckEnabled,
uncheckDisabled
)
checkBox.buttonTintList = ColorStateList(states, colors)
}
}

@JvmStatic
@JvmOverloads
fun tintSwitch(switchView: SwitchCompat, color: Int = 0, colorText: Boolean = false) {
if (colorText) {
switchView.setTextColor(color)
}

val states = arrayOf(
intArrayOf(android.R.attr.state_enabled, android.R.attr.state_checked),
intArrayOf(android.R.attr.state_enabled, -android.R.attr.state_checked),
intArrayOf(-android.R.attr.state_enabled)
)

val thumbColorCheckedEnabled = ResourcesCompat.getColor(
switchView.context.resources,
R.color.switch_thumb_checked_enabled,
switchView.context.theme
)
val thumbColorUncheckedEnabled =
ResourcesCompat.getColor(
switchView.context.resources,
R.color.switch_thumb_unchecked_enabled,
switchView.context.theme
)
val thumbColorDisabled =
ResourcesCompat.getColor(
switchView.context.resources,
R.color.switch_thumb_disabled,
switchView.context.theme
)

val thumbColors = intArrayOf(
thumbColorCheckedEnabled,
thumbColorUncheckedEnabled,
thumbColorDisabled
)
val thumbColorStateList = ColorStateList(states, thumbColors)

val trackColorCheckedEnabled = ResourcesCompat.getColor(
switchView.context.resources,
R.color.switch_track_checked_enabled,
switchView.context.theme
)
val trackColorUncheckedEnabled =
ResourcesCompat.getColor(
switchView.context.resources,
R.color.switch_track_unchecked_enabled,
switchView.context.theme
)
val trackColorDisabled =
ResourcesCompat.getColor(
switchView.context.resources,
R.color.switch_track_disabled,
switchView.context.theme
)

val trackColors = intArrayOf(
trackColorCheckedEnabled,
trackColorUncheckedEnabled,
trackColorDisabled
)

val trackColorStateList = ColorStateList(states, trackColors)

switchView.thumbTintList = thumbColorStateList
switchView.trackTintList = trackColorStateList
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.nextcloud.client.di.Injectable
import com.nextcloud.client.preferences.SubFolderRule
import com.nextcloud.utils.extensions.getParcelableArgument
import com.nmc.android.utils.CheckableThemeUtils
import com.owncloud.android.R
import com.owncloud.android.databinding.SyncedFoldersSettingsLayoutBinding
import com.owncloud.android.datamodel.MediaFolderType
Expand Down Expand Up @@ -145,9 +146,9 @@ class SyncedFolderPreferencesDialogFragment : DialogFragment(), Injectable {
}

private fun applyUserColor(binding: SyncedFoldersSettingsLayoutBinding) {
viewThemeUtils?.androidx?.colorSwitchCompat(binding.syncEnabled)
CheckableThemeUtils.tintSwitch(binding.syncEnabled)

viewThemeUtils?.platform?.themeCheckbox(
CheckableThemeUtils.tintCheckbox(
binding.settingInstantUploadOnWifiCheckbox,
binding.settingInstantUploadOnChargingCheckbox,
binding.settingInstantUploadExistingCheckbox,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ import com.owncloud.android.utils.PermissionUtil
import com.owncloud.android.utils.PermissionUtil.checkSelfPermission
import com.owncloud.android.utils.theme.ThemeUtils
import com.owncloud.android.utils.theme.ViewThemeUtils
import com.nmc.android.utils.CheckableThemeUtils
import third_parties.daveKoeller.AlphanumComparator
import java.util.Calendar
import java.util.GregorianCalendar
Expand Down Expand Up @@ -221,9 +222,10 @@ class BackupFragment : FileFragment(), OnDateSetListener, Injectable {
}

private fun applyUserColor() {
viewThemeUtils.androidx.colorSwitchCompat(binding.contacts)
viewThemeUtils.androidx.colorSwitchCompat(binding.calendar)
viewThemeUtils.androidx.colorSwitchCompat(binding.dailyBackup)
//NMC Customisation
CheckableThemeUtils.tintSwitch(binding.contacts)
CheckableThemeUtils.tintSwitch(binding.calendar)
CheckableThemeUtils.tintSwitch(binding.dailyBackup)

viewThemeUtils.material.colorMaterialButtonPrimaryFilled(binding.backupNow)
viewThemeUtils.material.colorMaterialButtonPrimaryOutlined(binding.contactsDatepicker)
Expand Down
64 changes: 64 additions & 0 deletions app/src/main/res/values-night/colors.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,68 @@
<!-- App bar -->
<color name="appbar">#1E1E1E</color>
<color name="fontAppbar">@android:color/white</color>

<!-- NMC Colors -->
<color name="icon_color">#FFFFFF</color>
<color name="sort_text_color">@color/grey_30</color>
<color name="list_icon_color">@color/grey_30</color>
<color name="warning_icon_color">#CCCCCC</color>
<color name="divider_color">@color/grey_70</color>
<color name="spinner_bg_color">@color/grey_80</color>
<color name="refresh_layout_bg_color">#2D2D2D</color>
<color name="primary_button_disabled_color">@color/grey_70</color>
<color name="toolbar_divider_color">@color/grey_70</color>

<!-- Snackbar Colors -->
<color name="snackbar_bg_color">@color/grey_80</color>
<color name="snackbar_txt_color">@color/grey_0</color>

<!-- Alert Dialog Colors -->
<color name="alert_bg_color">@color/grey_80</color>
<color name="alert_txt_color">@color/grey_0</color>

<!-- NavigationView colors -->
<color name="nav_selected_bg_color">@color/grey_60</color>
<color name="nav_txt_unselected_color">@color/grey_0</color>
<color name="nav_txt_selected_color">@color/grey_0</color>
<color name="nav_icon_unselected_color">@color/grey_30</color>
<color name="nav_icon_selected_color">#FFFFFF</color>
<color name="nav_divider_color">@color/grey_30</color>
<color name="nav_bg_color">@color/grey_80</color>
<color name="drawer_quota_txt_color">#FFFFFF</color>

<!-- Bottom Sheet Colors -->
<color name="bottom_sheet_bg_color">@color/grey_80</color>
<color name="bottom_sheet_icon_color">@color/grey_30</color>
<color name="bottom_sheet_txt_color">@color/grey_0</color>

<!-- Popup Menu Colors -->
<color name="popup_menu_bg">@color/grey_80</color>
<color name="popup_menu_txt_color">@color/grey_0</color>
<color name="overflow_bg_color">@color/grey_80</color>

<!-- Switch Compat Colors -->
<color name="switch_thumb_disabled">@color/grey_70</color>
<color name="switch_track_disabled">@color/grey_60</color>

<!-- Checkbox Colors -->
<color name="checkbox_checked_disabled">@color/grey_70</color>
<color name="checkbox_unchecked_disabled">@color/grey_70</color>

<!-- Share Colors -->
<color name="share_title_txt_color">#FFFFFF</color>
<color name="share_subtitle_txt_color">@color/grey_30</color>
<color name="share_info_txt_color">@color/grey_0</color>
<color name="share_search_border_color">@color/grey_0</color>
<color name="share_btn_txt_color">@color/grey_0</color>
<color name="share_list_item_txt_color">@color/grey_0</color>
<color name="share_disabled_txt_color">@color/grey_60</color>
<color name="share_txt_color">@color/grey_0</color>
<color name="share_et_divider">#FFFFFF</color>

<!-- Scan Colors -->
<color name="scan_doc_bg_color">#121212</color>
<color name="scan_text_color">@color/grey_0</color>
<color name="scan_edit_bottom_color">@color/grey_80</color>
<color name="scan_count_bg_color">@color/grey_80</color>
</resources>
89 changes: 89 additions & 0 deletions app/src/main/res/values/colors.xml
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,93 @@
<color name="appbar">@android:color/white</color>
<color name="fontAppbar">#666666</color>
<color name="fontSecondaryAppbar">#A5A5A5</color>

<!-- NMC Colors -->
<color name="icon_color">#191919</color>
<color name="sort_text_color">@color/primary</color>
<color name="list_icon_color">#191919</color>
<color name="warning_icon_color">#191919</color>
<color name="divider_color">@color/grey_30</color>
<color name="spinner_bg_color">@android:color/white</color>
<color name="refresh_layout_bg_color">#FFFFFF</color>
<color name="primary_button_disabled_color">@color/grey_0</color>
<color name="toolbar_divider_color">#CCCCCC</color>
<color name="et_highlight_color">#77c4ff</color>
<color name="white_trans_70">#B3FFFFFF</color>
<color name="progress_bar_background">@color/grey_10</color>

<!-- Grey Colors -->
<color name="dark_grey">#101010</color>
<color name="grey_0">#F2F2F2</color>
<color name="grey_10">#E5E5E5</color>
<color name="grey_30">#B2B2B2</color>
<color name="grey_60">#666666</color>
<color name="grey_70">#4C4C4C</color>
<color name="grey_80">#333333</color>

<!-- Snackbar Colors -->
<color name="snackbar_bg_color">@color/design_snackbar_background_color</color>
<color name="snackbar_txt_color">@color/white</color>

<!-- Alert Dialog Colors -->
<color name="alert_bg_color">#FFFFFF</color>
<color name="alert_txt_color">#191919</color>

<!-- NavigationView colors -->
<color name="nav_selected_bg_color">@color/grey_0</color>
<color name="nav_txt_unselected_color">#191919</color>
<color name="nav_txt_selected_color">@color/primary</color>
<color name="nav_icon_unselected_color">#191919</color>
<color name="nav_icon_selected_color">@color/primary</color>
<color name="nav_divider_color">@color/grey_30</color>
<color name="nav_bg_color">@color/white</color>
<color name="drawer_quota_txt_color">#191919</color>

<!-- Bottom Sheet Colors -->
<color name="bottom_sheet_bg_color">#FFFFFF</color>
<color name="bottom_sheet_icon_color">#191919</color>
<color name="bottom_sheet_txt_color">#191919</color>

<!-- Popup Menu Colors -->
<color name="popup_menu_bg">#FFFFFF</color>
<color name="popup_menu_txt_color">#191919</color>
<color name="overflow_bg_color">#FFFFFF</color>

<!-- Switch Compat Colors -->
<color name="switch_thumb_checked_enabled">@color/primary</color>
<color name="switch_track_checked_enabled">#F399C7</color>
<color name="switch_thumb_unchecked_enabled">#FFFFFF</color>
<color name="switch_track_unchecked_enabled">@color/grey_30</color>
<color name="switch_thumb_disabled">@color/grey_10</color>
<color name="switch_track_disabled">@color/grey_0</color>

<!-- Checkbox Colors -->
<color name="checkbox_checked_enabled">@color/primary</color>
<color name="checkbox_unchecked_enabled">@color/grey_30</color>
<color name="checkbox_checked_disabled">@color/grey_30</color>
<color name="checkbox_unchecked_disabled">#CCCCCC</color>

<!-- Share Colors -->
<color name="share_title_txt_color">#191919</color>
<color name="share_subtitle_txt_color">@color/grey_30</color>
<color name="share_info_txt_color">#191919</color>
<color name="share_search_border_color">#191919</color>
<color name="share_btn_txt_color">#191919</color>
<color name="share_list_item_txt_color">#191919</color>
<color name="share_disabled_txt_color">@color/grey_30</color>
<color name="share_txt_color">#191919</color>
<color name="share_et_divider">#000000</color>
<color name="share_warning_txt_color">#191919</color>
<color name="sharing_warning_bg_color">#F6E5EB</color>
<color name="sharing_warning_border_color">#C16F81</color>
<color name="share_color">#0D39DF</color>
<color name="shared_with_me_color">#0099ff</color>

<!-- Scan Colors -->
<color name="scan_doc_bg_color">@color/grey_0</color>
<color name="scan_text_color">#191919</color>
<color name="scan_edit_bottom_color">@color/grey_0</color>
<color name="scan_count_bg_color">@color/grey_30</color>
<color name="neptune">#77b6bb</color>
<color name="neptune_50">#5077b6bb</color>
</resources>

0 comments on commit 09321b6

Please sign in to comment.