diff --git a/app/src/main/java/com/nextcloud/client/logger/ui/LogsActivity.kt b/app/src/main/java/com/nextcloud/client/logger/ui/LogsActivity.kt index 3740299e6961..7b105a1a4f50 100644 --- a/app/src/main/java/com/nextcloud/client/logger/ui/LogsActivity.kt +++ b/app/src/main/java/com/nextcloud/client/logger/ui/LogsActivity.kt @@ -15,6 +15,7 @@ import androidx.core.view.isVisible import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.nextcloud.client.di.ViewModelFactory +import com.nmc.android.utils.SearchViewThemeUtils.themeSearchView import com.owncloud.android.R import com.owncloud.android.databinding.LogsActivityBinding import com.owncloud.android.ui.activity.ToolbarActivity @@ -74,7 +75,8 @@ class LogsActivity : ToolbarActivity() { (menu.findItem(R.id.action_search).actionView as SearchView).apply { setOnQueryTextListener(searchBoxListener) - viewThemeUtils.androidx.themeToolbarSearchView(this) + //NMC customization + themeSearchView(this@LogsActivity, this) } return super.onCreateOptionsMenu(menu) } diff --git a/app/src/main/java/com/nmc/android/utils/SearchViewThemeUtils.kt b/app/src/main/java/com/nmc/android/utils/SearchViewThemeUtils.kt new file mode 100644 index 000000000000..c7c4a13b6773 --- /dev/null +++ b/app/src/main/java/com/nmc/android/utils/SearchViewThemeUtils.kt @@ -0,0 +1,24 @@ +package com.nmc.android.utils + +import android.content.Context +import android.widget.ImageView +import androidx.appcompat.widget.AppCompatAutoCompleteTextView +import androidx.appcompat.widget.SearchView +import com.owncloud.android.R + +object SearchViewThemeUtils { + fun themeSearchView(context: Context, searchView: SearchView) { + val fontColor = context.resources.getColor(R.color.fontAppbar, null) + val editText: AppCompatAutoCompleteTextView = + searchView.findViewById(androidx.appcompat.R.id.search_src_text) + editText.textSize = 16F + editText.setTextColor(fontColor) + editText.highlightColor = context.resources.getColor(R.color.et_highlight_color, null) + editText.setHintTextColor(context.resources.getColor(R.color.fontSecondaryAppbar, null)) + val closeButton: ImageView = searchView.findViewById(androidx.appcompat.R.id.search_close_btn) + closeButton.setColorFilter(fontColor) + val searchButton: ImageView = searchView.findViewById(androidx.appcompat.R.id.search_button) + searchButton.setImageResource(R.drawable.ic_search) + searchButton.setColorFilter(fontColor) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt index 991f623dba03..cd596fd89114 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt @@ -76,6 +76,7 @@ import com.nextcloud.utils.extensions.lastFragment import com.nextcloud.utils.extensions.navigateToAllFiles import com.nextcloud.utils.extensions.setVisibleIf import com.nextcloud.utils.view.FastScrollUtils +import com.nmc.android.utils.SearchViewThemeUtils import com.owncloud.android.MainApp import com.owncloud.android.R import com.owncloud.android.authentication.PassCodeManager @@ -1268,7 +1269,8 @@ class FileDisplayActivity : !isAlbumItemsFragment private fun setupSearchView(view: SearchView) { - viewThemeUtils.androidx.themeToolbarSearchView(view) + //NMC customization + SearchViewThemeUtils.themeSearchView(this, view) if (searchQuery.isNotEmpty()) { view.post { restoreSearchQuery() } diff --git a/app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index 1aaa3caf3da8..e0948d987ffe 100755 --- a/app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -61,6 +61,7 @@ import com.nextcloud.utils.extensions.IntentExtensionsKt; import com.nextcloud.utils.fileNameValidator.FileNameTextWatcher; import com.nextcloud.utils.fileNameValidator.FileNameValidator; +import com.nmc.android.utils.SearchViewThemeUtils; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.databinding.ReceiveExternalFilesBinding; @@ -1192,7 +1193,8 @@ public boolean onQueryTextChange(String newText) { } }); - viewThemeUtils.androidx.themeToolbarSearchView(searchView); + //NMC customization + SearchViewThemeUtils.INSTANCE.themeSearchView(this, searchView); } @Override diff --git a/app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.kt index 4eae09235429..66fe262399be 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.kt @@ -36,6 +36,7 @@ import com.nextcloud.client.di.Injectable import com.nextcloud.client.jobs.upload.FileUploadHelper import com.nextcloud.client.jobs.upload.FileUploadWorker import com.nextcloud.utils.extensions.hasEnabledParent +import com.nmc.android.utils.SearchViewThemeUtils import com.owncloud.android.R import com.owncloud.android.databinding.UploadFilesLayoutBinding import com.owncloud.android.datamodel.SyncedFolderProvider @@ -129,14 +130,16 @@ class UploadFilesActivity : } searchView = (menu.findItem(R.id.action_search).actionView as SearchView).also { - viewThemeUtils.androidx.themeToolbarSearchView(it) + // NMC customization + SearchViewThemeUtils.themeSearchView(this@UploadFilesActivity, it) it.setOnSearchClickListener { toolbarSpinner.visibility = View.GONE } } menu.findItem(R.id.action_choose_storage_path)?.let { item -> item.isVisible = checkStoragePermission(this@UploadFilesActivity) item.icon?.let { - viewThemeUtils.platform.tintDrawable(this@UploadFilesActivity, it, ColorRole.ON_SURFACE) + // NMC customization + viewThemeUtils.platform.colorDrawable(it, resources.getColor(R.color.fontAppbar, null)) } } } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchHeaderViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchHeaderViewHolder.kt index 36b0a01e6cea..72623ad58e90 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchHeaderViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchHeaderViewHolder.kt @@ -21,6 +21,5 @@ class UnifiedSearchHeaderViewHolder( fun bind(section: UnifiedSearchSection) { binding.title.text = section.name - viewThemeUtils.platform.colorTextView(binding.title) } } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchItemViewHolder.kt index 02f7ec81c3cb..a4a7d1cf427d 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchItemViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchItemViewHolder.kt @@ -98,11 +98,8 @@ class UnifiedSearchItemViewHolder( } private fun bindFolderThumbnail(file: OCFile) { - binding.thumbnail.apply { - setImageDrawable(ContextCompat.getDrawable(context, R.drawable.folder)) - viewThemeUtils.platform.colorImageView(this, ColorRole.PRIMARY) - } - thumbnailGenerator.folderThumbnailGenerator.setFolderOverlayIcon(file, binding.thumbnailOverlayIcon) + // NMC Customization: No overlay is required + thumbnailGenerator.folderThumbnailGenerator.setFolderThumbnail(file, binding.thumbnail, null) } private fun bindLocalFileThumbnail(file: OCFile) { @@ -128,7 +125,6 @@ class UnifiedSearchItemViewHolder( private fun bindRemoteThumbnail(entry: SearchResultEntry, entryType: SearchResultEntryType) { binding.thumbnail.apply { setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_find_in_page)) - viewThemeUtils.platform.colorImageView(this, ColorRole.SECONDARY) } if (entry.thumbnailUrl.isNotBlank()) { diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt index 5132ef93c67c..d8f0a0b4dfc2 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt @@ -58,6 +58,7 @@ import com.nextcloud.client.preferences.AppPreferences import com.nextcloud.client.preferences.AppPreferencesImpl import com.nextcloud.utils.extensions.getTypedActivity import com.nextcloud.utils.extensions.mainThread +import com.nmc.android.utils.SearchViewThemeUtils import com.owncloud.android.MainApp import com.owncloud.android.R import com.owncloud.android.databinding.ListFragmentBinding @@ -168,7 +169,8 @@ open class ExtendedListFragment : // there will be no search option so it we have to return it val item = menu.findItem(R.id.action_search) ?: return searchView = item.actionView as SearchView? - viewThemeUtils.androidx.themeToolbarSearchView(searchView!!) + // NMC customization + SearchViewThemeUtils.themeSearchView(requireActivity(), searchView!!) closeButton = searchView?.findViewById(androidx.appcompat.R.id.search_close_btn) searchView?.setOnQueryTextListener(this) searchView?.setOnCloseListener(this) diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/UnifiedSearchFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/UnifiedSearchFragment.kt index 56c73e0bac4d..f79b4d200f2e 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/UnifiedSearchFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/UnifiedSearchFragment.kt @@ -43,6 +43,7 @@ import com.nextcloud.utils.extensions.searchFilesByName import com.nextcloud.utils.extensions.setVisibleIf import com.nextcloud.utils.extensions.typedActivity import com.nextcloud.utils.thumbnail.ThumbnailGenerator +import com.nmc.android.utils.SearchViewThemeUtils.themeSearchView import com.owncloud.android.R import com.owncloud.android.databinding.ListFragmentBinding import com.owncloud.android.datamodel.FileDataStorageManager @@ -221,7 +222,8 @@ class UnifiedSearchFragment : // Required to align with TextView width. // Because this fragment is opened with TextView onClick on the previous screen maxWidth = Integer.MAX_VALUE - viewThemeUtils.androidx.themeToolbarSearchView(this) + // NMC Customization + themeSearchView(requireActivity(), this) setQuery(vm.query.value ?: initialQuery, false) setOnQueryTextListener(this@UnifiedSearchFragment) isIconified = false diff --git a/app/src/main/java/com/owncloud/android/ui/preview/text/PreviewTextFileFragment.kt b/app/src/main/java/com/owncloud/android/ui/preview/text/PreviewTextFileFragment.kt index a1937f430f81..2e3195fb5c71 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/text/PreviewTextFileFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/preview/text/PreviewTextFileFragment.kt @@ -26,6 +26,7 @@ import com.nextcloud.ui.fileactions.FileActionHandler import com.nextcloud.ui.fileactions.FileActionHost import com.nextcloud.ui.fileactions.FileActionsBottomSheet import com.nextcloud.utils.extensions.getParcelableArgument +import com.nmc.android.utils.SearchViewThemeUtils import com.owncloud.android.R import com.owncloud.android.datamodel.OCFile import com.owncloud.android.lib.common.utils.Log_OC @@ -168,7 +169,8 @@ class PreviewTextFileFragment : PreviewTextFragment() { val searchView = searchView ?: return searchView.maxWidth = Int.MAX_VALUE - viewThemeUtils.androidx.themeToolbarSearchView(searchView) + // NMC customization + SearchViewThemeUtils.themeSearchView(requireActivity(), searchView) if (searchOpen) { searchView.isIconified = false diff --git a/app/src/main/java/com/owncloud/android/ui/preview/text/PreviewTextStringFragment.kt b/app/src/main/java/com/owncloud/android/ui/preview/text/PreviewTextStringFragment.kt index a320eecf59a5..0eacaa957b46 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/text/PreviewTextStringFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/preview/text/PreviewTextStringFragment.kt @@ -24,6 +24,7 @@ import androidx.lifecycle.lifecycleScope import com.google.android.material.floatingactionbutton.FloatingActionButton import com.nextcloud.android.lib.richWorkspace.RichWorkspaceDirectEditingRemoteOperation import com.nextcloud.utils.SnackbarUtil +import com.nmc.android.utils.SearchViewThemeUtils import com.owncloud.android.R import com.owncloud.android.ui.activity.FileActivity import com.owncloud.android.ui.activity.FileDisplayActivity @@ -83,7 +84,8 @@ class PreviewTextStringFragment : PreviewTextFragment() { searchView = (actionView as? SearchView)?.also { sv -> sv.setOnQueryTextListener(this@PreviewTextStringFragment) sv.maxWidth = Int.MAX_VALUE - viewThemeUtils.androidx.themeToolbarSearchView(sv) + // NMC customization + SearchViewThemeUtils.themeSearchView(requireActivity(), sv) if (searchOpen) { sv.isIconified = false sv.setQuery(searchQuery, true) diff --git a/app/src/main/res/layout/unified_search_header.xml b/app/src/main/res/layout/unified_search_header.xml index 0f3c4aba0268..4dc7b5a0f7ed 100755 --- a/app/src/main/res/layout/unified_search_header.xml +++ b/app/src/main/res/layout/unified_search_header.xml @@ -5,10 +5,11 @@ ~ SPDX-FileCopyrightText: 2026 Alper Ozturk ~ SPDX-License-Identifier: AGPL-3.0-or-later --> + + app:iconTint="@color/secondary_text_color" + app:tint="@color/list_icon_color" /> diff --git a/app/src/main/res/values-night/nmc_colors.xml b/app/src/main/res/values-night/nmc_colors.xml new file mode 100644 index 000000000000..229d9361177d --- /dev/null +++ b/app/src/main/res/values-night/nmc_colors.xml @@ -0,0 +1,73 @@ + + + + + #FFFFFF + @color/grey_30 + @color/grey_30 + #CCCCCC + @color/grey_70 + @color/grey_80 + #2D2D2D + @color/grey_70 + @color/grey_70 + + + @color/grey_80 + @color/grey_0 + + + @color/grey_80 + @color/grey_0 + + + @color/grey_60 + @color/grey_0 + @color/grey_0 + @color/grey_30 + #FFFFFF + @color/grey_30 + @color/grey_80 + #FFFFFF + + + @color/grey_80 + @color/grey_30 + @color/grey_0 + + + @color/grey_80 + @color/grey_0 + @color/grey_80 + + + @color/grey_70 + @color/grey_60 + + + @color/grey_70 + @color/grey_70 + + + #FFFFFF + @color/grey_30 + @color/grey_0 + @color/grey_0 + @color/grey_0 + @color/grey_0 + @color/grey_60 + @color/grey_0 + #FFFFFF + #7d94f9 + + + #121212 + @color/grey_0 + @color/grey_80 + @color/grey_80 + \ No newline at end of file diff --git a/app/src/main/res/values/nmc_colors.xml b/app/src/main/res/values/nmc_colors.xml new file mode 100644 index 000000000000..3aa33ccdf362 --- /dev/null +++ b/app/src/main/res/values/nmc_colors.xml @@ -0,0 +1,98 @@ + + + + + #191919 + @color/primary + #191919 + #191919 + @color/grey_30 + @android:color/white + #FFFFFF + @color/grey_0 + #CCCCCC + #77c4ff + #B3FFFFFF + @color/grey_10 + + + #101010 + #F2F2F2 + #E5E5E5 + #B2B2B2 + #666666 + #4C4C4C + #333333 + + + @color/design_snackbar_background_color + @color/white + + + #FFFFFF + #191919 + + + @color/grey_0 + #191919 + @color/primary + #191919 + @color/primary + @color/grey_30 + @color/white + #191919 + + + #FFFFFF + #191919 + #191919 + + + #FFFFFF + #191919 + #FFFFFF + + + @color/primary + #F399C7 + #FFFFFF + @color/grey_30 + @color/grey_10 + @color/grey_0 + + + @color/primary + @color/grey_30 + @color/grey_30 + #CCCCCC + + + #191919 + @color/grey_30 + #191919 + #191919 + #191919 + #191919 + @color/grey_30 + #191919 + #000000 + #191919 + #F6E5EB + #C16F81 + #0D39DF + #0099ff + #2238df + + + @color/grey_0 + #191919 + @color/grey_0 + @color/grey_30 + #77b6bb + #5077b6bb + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index b01edd987c4e..b3f23ee79b1c 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -149,7 +149,7 @@ @drawable/ic_close - @drawable/ic_search_grey + @drawable/ic_search