Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
}
Expand Down
24 changes: 24 additions & 0 deletions app/src/main/java/com/nmc/android/utils/SearchViewThemeUtils.kt
Original file line number Diff line number Diff line change
@@ -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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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() }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -1192,7 +1193,8 @@ public boolean onQueryTextChange(String newText) {
}
});

viewThemeUtils.androidx.themeToolbarSearchView(searchView);
//NMC customization
SearchViewThemeUtils.INSTANCE.themeSearchView(this, searchView);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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))
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,5 @@ class UnifiedSearchHeaderViewHolder(

fun bind(section: UnifiedSearchSection) {
binding.title.text = section.name
viewThemeUtils.platform.colorTextView(binding.title)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/res/layout/unified_search_header.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
~ SPDX-FileCopyrightText: 2026 Alper Ozturk <alper.ozturk@nextcloud.com>
~ SPDX-License-Identifier: AGPL-3.0-or-later
-->
<!-- NMC-5867 fix for header font -->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/title"
style="@style/TextAppearance.Material3.HeadlineSmall"
style="@style/TextAppearance.AppCompat.Body2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="middle"
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/res/layout/unified_search_item.xml
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@
android:contentDescription="@string/overflow_menu"
app:icon="@drawable/ic_dots_vertical"
app:iconGravity="textStart"
app:iconTint="@color/secondary_text_color" />
app:iconTint="@color/secondary_text_color"
app:tint="@color/list_icon_color" />

</LinearLayout>
73 changes: 73 additions & 0 deletions app/src/main/res/values-night/nmc_colors.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Nextcloud - Android Client
~
~ SPDX-FileCopyrightText: 2026 TSI-mc <surinder.kumar@t-systems.com>
~ SPDX-License-Identifier: AGPL-3.0-or-later
-->

<resources>
<!-- 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>
<color name="share_blue_color">#7d94f9</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>
Loading
Loading