From 7dd95903e6a03254eac5261b1b7a31a696bcede8 Mon Sep 17 00:00:00 2001 From: A117870935 Date: Wed, 10 May 2023 00:35:12 +0530 Subject: [PATCH] NMC-1920: Customized theming related changes for grid and list views. NMC-2121: Theming applied to passcode. NMC-2374: Image edit functionality customized. NMC-1941: Fixed error message coming after camera permission allowed. NMC-2052: Fix back arrow appearing as hamburger icon. NC PR: https://github.com/nextcloud/android/pull/11769 NMC-2465: Fix local db version to avoid crash during app upgrade. NMC-2576: Disabled switch account SnackBar. NMC-2123: Widget disabled. NMC-2127: System default night mode. NMC-1919: Backup Calendar-Contacts configured with test cases. NMC-2089: Reduce log levels NMC-4633: disable permission check in search screen Media View multi-selection customized --- app/src/main/AndroidManifest.xml | 3 + .../client/database/NextcloudDatabase.kt | 5 +- .../client/editimage/EditImageActivity.kt | 42 ++++--- .../ui/fileactions/FileActionsBottomSheet.kt | 3 +- .../TrashbinFileActionsBottomSheet.kt | 3 +- .../java/com/nmc/android/ui/utils/Log_NMC.kt | 42 +++++++ .../java/com/owncloud/android/MainApp.java | 7 +- .../android/datamodel/MediaProvider.java | 6 +- .../datamodel/ThumbnailsCacheManager.java | 21 ++-- .../ui/activity/FileDisplayActivity.kt | 7 +- .../android/ui/activity/PassCodeActivity.kt | 13 --- .../android/ui/adapter/GalleryAdapter.kt | 3 +- .../android/ui/adapter/GalleryRowHolder.kt | 18 +-- .../ui/adapter/LocalFileListAdapter.java | 3 +- .../android/ui/adapter/OCFileListAdapter.java | 5 +- .../android/ui/adapter/OCFileListDelegate.kt | 18 ++- .../adapter/OCFileListGridItemViewHolder.kt | 4 +- .../ui/adapter/OCFileListViewHolder.kt | 4 +- .../ui/adapter/TrashbinListAdapter.java | 5 +- .../android/ui/adapter/UploadListAdapter.java | 3 +- .../ui/dialog/ConflictsResolveDialog.kt | 3 +- .../ui/fragment/OCFileListFragment.java | 14 ++- .../ui/fragment/UnifiedSearchFragment.kt | 5 +- .../owncloud/android/utils/DisplayUtils.java | 93 ++++++++++++---- app/src/main/res/drawable/cursor_drawable.xml | 5 + .../main/res/layout/activity_edit_image.xml | 15 +-- app/src/main/res/layout/backup_fragment.xml | 20 ++-- app/src/main/res/layout/file_thumbnail.xml | 2 +- .../main/res/layout/files_folder_picker.xml | 4 +- app/src/main/res/layout/grid_item.xml | 93 ++++++++++------ app/src/main/res/layout/list_item.xml | 51 ++++----- .../res/layout/receive_external_files.xml | 1 + .../layout/synced_folders_settings_layout.xml | 2 + app/src/main/res/layout/trashbin_item.xml | 7 +- .../main/res/layout/upload_files_layout.xml | 13 +-- app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-night/colors.xml | 70 +++++++++++- app/src/main/res/values-night/themes.xml | 3 + app/src/main/res/values-sw600dp/dims.xml | 2 + app/src/main/res/values/colors.xml | 105 ++++++++++++++++-- app/src/main/res/values/dimens.xml | 32 ++++++ app/src/main/res/values/dims.xml | 10 +- app/src/main/res/values/setup.xml | 2 +- app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 13 +++ app/src/main/res/values/themes.xml | 3 + .../test/java/com/nmc/DatabaseVersionTest.kt | 14 +++ .../nmc/android/CalendarBackupSetupTest.kt | 33 ++++++ 48 files changed, 619 insertions(+), 213 deletions(-) create mode 100644 app/src/main/java/com/nmc/android/ui/utils/Log_NMC.kt create mode 100644 app/src/main/res/drawable/cursor_drawable.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/test/java/com/nmc/DatabaseVersionTest.kt create mode 100644 app/src/test/java/com/nmc/android/CalendarBackupSetupTest.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7d0bf6464568..48d75d3564c7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -259,6 +259,7 @@ android:exported="false" /> @@ -289,6 +290,7 @@ android:exported="false" /> @@ -400,6 +402,7 @@ androidInjector() { } public static void setAppTheme(DarkMode mode) { - switch (mode) { - case LIGHT -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); - case DARK -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); - case SYSTEM -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM); - } + // NMC Customization -> Always follow system theme + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM); } @Override diff --git a/app/src/main/java/com/owncloud/android/datamodel/MediaProvider.java b/app/src/main/java/com/owncloud/android/datamodel/MediaProvider.java index c3dd31c29290..03e3e025e57f 100644 --- a/app/src/main/java/com/owncloud/android/datamodel/MediaProvider.java +++ b/app/src/main/java/com/owncloud/android/datamodel/MediaProvider.java @@ -12,8 +12,8 @@ import android.net.Uri; import android.provider.MediaStore; +import com.nmc.android.ui.utils.Log_NMC; import com.owncloud.android.MainApp; -import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.utils.PermissionUtil; import com.owncloud.android.utils.theme.ViewThemeUtils; @@ -107,7 +107,7 @@ public static List getImageFolders(ContentResolver contentResolver, MediaStore.Images.Media.DATE_TAKEN, ContentResolverHelper.SORT_DIRECTION_DESCENDING, itemLimit); - Log_OC.d(TAG, "Reading images for " + mediaFolder.folderName); + Log_NMC.d(TAG, "Reading images for " + mediaFolder.folderName); if (cursorImages != null) { String filePath; @@ -217,7 +217,7 @@ public static List getVideoFolders(ContentResolver contentResolver, ContentResolverHelper.SORT_DIRECTION_DESCENDING, itemLimit); - Log_OC.d(TAG, "Reading videos for " + mediaFolder.folderName); + Log_NMC.d(TAG, "Reading videos for " + mediaFolder.folderName); if (cursorVideos != null) { String filePath; diff --git a/app/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java b/app/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java index f7176035ccad..60bbef5f0f20 100644 --- a/app/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java +++ b/app/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java @@ -37,6 +37,7 @@ import com.nextcloud.client.account.User; import com.nextcloud.client.network.ConnectivityService; import com.nextcloud.utils.BitmapExtensionsKt; +import com.nmc.android.ui.utils.Log_NMC; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.lib.common.OwnCloudAccount; @@ -130,7 +131,7 @@ public static void initDiskCacheAsync() { } String cachePath = cacheDir.getPath() + File.separator + CACHE_FOLDER; - Log_OC.d(TAG, "thumbnail cache dir: " + cachePath); + Log_NMC.d(TAG, "thumbnail cache dir: " + cachePath); File diskCacheDir = new File(cachePath); // migrate from external cache to internal cache @@ -147,7 +148,7 @@ public static void initDiskCacheAsync() { mThumbnailCache = new DiskLruImageCache(diskCacheDir, DISK_CACHE_SIZE, mCompressFormat, mCompressQuality); } catch (Exception e) { - Log_OC.d(TAG, "Disk cache init failed", e); + Log_NMC.d(TAG, "Disk cache init failed", e); mThumbnailCache = null; } } @@ -785,7 +786,7 @@ private Bitmap doThumbnailFromOCFileInBackground() { file.getLocalId() + "&x=" + pxW + "&y=" + pxH; } - Log_OC.d(TAG, "generate thumbnail: " + file.getFileName() + " URI: " + uri); + Log_NMC.d(TAG, "generate thumbnail: " + file.getFileName() + " URI: " + uri); getMethod = new GetMethod(uri); getMethod.setRequestHeader("Cookie", "nc_sameSiteCookielax=true;nc_sameSiteCookiestrict=true"); @@ -818,7 +819,7 @@ private Bitmap doThumbnailFromOCFileInBackground() { // Add thumbnail to cache if (thumbnail != null) { - Log_OC.d(TAG, "add thumbnail to cache: " + file.getFileName()); + Log_NMC.d(TAG, "add thumbnail to cache: " + file.getFileName()); addBitmapToCache(imageKey, thumbnail); } } @@ -976,7 +977,7 @@ private Bitmap doFileInBackground(File file, Type type) { thumbnail = retriever.getFrameAtTime(-1); } catch (Exception ex) { // can't create a bitmap - Log_OC.w(TAG, "Failed to create bitmap from video " + file.getAbsolutePath()); + Log_NMC.w(TAG, "Failed to create bitmap from video " + file.getAbsolutePath()); } if (thumbnail != null) { @@ -1083,7 +1084,7 @@ Drawable doAvatarInBackground() { int px = mResources.getInteger(R.integer.file_avatar_px); String uri = mClient.getBaseUri() + "/index.php/avatar/" + Uri.encode(mUserId) + "/" + px; - Log_OC.d("Avatar", "URI: " + uri); + Log_NMC.d("Avatar", "URI: " + uri); get = new GetMethod(uri); // only use eTag if available and corresponding avatar is still there @@ -1357,7 +1358,7 @@ public static void generateThumbnailFromOCFile(OCFile file, User user, Context c String uri = client.getBaseUri() + "/index.php/apps/files/api/v1/thumbnail/" + pxW + "/" + pxH + Uri.encode(file.getRemotePath(), "/"); - Log_OC.d(TAG, "generate thumbnail: " + file.getFileName() + " URI: " + uri); + Log_NMC.d(TAG, "generate thumbnail: " + file.getFileName() + " URI: " + uri); getMethod = new GetMethod(uri); getMethod.setRequestHeader("Cookie", "nc_sameSiteCookielax=true;nc_sameSiteCookiestrict=true"); @@ -1380,7 +1381,7 @@ public static void generateThumbnailFromOCFile(OCFile file, User user, Context c thumbnail = handlePNG(thumbnail, pxW, pxH); } - Log_OC.d(TAG, "add thumbnail to cache: " + file.getFileName()); + Log_NMC.d(TAG, "add thumbnail to cache: " + file.getFileName()); addBitmapToCache(imageKey, thumbnail); } } catch (Exception e) { @@ -1434,7 +1435,7 @@ private static Bitmap doResizedImageInBackground(OCFile file, FileDataStorageMan String uri = mClient.getBaseUri() + "/index.php/core/preview?fileId=" + file.getLocalId() + "&x=" + (pxW / 2) + "&y=" + (pxH / 2) + "&a=1&mode=cover&forceIcon=0"; - Log_OC.d(TAG, "generate resized image: " + file.getFileName() + " URI: " + uri); + Log_NMC.d(TAG, "generate resized image: " + file.getFileName() + " URI: " + uri); getMethod = new GetMethod(uri); int status = mClient.executeMethod(getMethod); @@ -1452,7 +1453,7 @@ private static Bitmap doResizedImageInBackground(OCFile file, FileDataStorageMan // Add thumbnail to cache if (thumbnail != null) { - Log_OC.d(TAG, "add resized image to cache: " + file.getFileName()); + Log_NMC.d(TAG, "add resized image to cache: " + file.getFileName()); addBitmapToCache(imageKey, thumbnail); } 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 87ef694000b3..d78ad1f0e965 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 @@ -477,6 +477,9 @@ class FileDisplayActivity : fragment.directCameraUpload() } }) + } else if (!shouldShowRequestPermissionRationale(permissions[0])) { + // user CHECKED "never ask again" + DisplayUtils.showSnackMessage(this, R.string.camera_permission_rationale) } else -> super.onRequestPermissionsResult(requestCode, permissions, grantResults) @@ -601,7 +604,9 @@ class FileDisplayActivity : val accountName = accountManager.user.accountName val message = getString(R.string.logged_in_as) val snackBarMessage = String.format(message, accountName) - DisplayUtils.showSnackMessage(this, snackBarMessage) + // NMC-2576 fix: no toast message required + // this will show when user logs out then login again + // DisplayUtils.showSnackMessage(this, snackBarMessage) } private fun handleSearchIntent(intent: Intent) { diff --git a/app/src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.kt index 805ce701f358..2c3dd2a68b89 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.kt @@ -21,7 +21,6 @@ import androidx.annotation.VisibleForTesting import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope import com.google.android.material.snackbar.Snackbar -import com.nextcloud.android.common.ui.theme.utils.ColorRole import com.nextcloud.client.di.Injectable import com.nextcloud.client.preferences.AppPreferences import com.nextcloud.utils.extensions.setVisibleIf @@ -85,30 +84,18 @@ class PassCodeActivity : setContentView(binding.root) PassCodeManager.setSecureFlag(this, true) - applyTint() setupPasscodeEditTexts() setSoftInputMode() setupUI(savedInstanceState) setTextListeners() } - private fun applyTint() { - viewThemeUtils.platform.colorViewBackground(binding.cardViewContent, ColorRole.SURFACE_VARIANT) - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(binding.cancel) - } - private fun setupPasscodeEditTexts() { passCodeEditTexts[0] = binding.txt0 passCodeEditTexts[1] = binding.txt1 passCodeEditTexts[2] = binding.txt2 passCodeEditTexts[3] = binding.txt3 - passCodeEditTexts.forEach { - it?.let { editText -> - viewThemeUtils.platform.colorEditText(editText) - } - } - passCodeEditTexts[0]?.requestFocus() binding.cardViewContent.setOnClickListener { diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/GalleryAdapter.kt b/app/src/main/java/com/owncloud/android/ui/adapter/GalleryAdapter.kt index 8b210afb5807..d32b48a0f5cb 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/GalleryAdapter.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/GalleryAdapter.kt @@ -74,7 +74,8 @@ class GalleryAdapter( transferServiceGetter, showMetadata = false, showShareAvatar = false, - viewThemeUtils + viewThemeUtils, + true ) } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/GalleryRowHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/GalleryRowHolder.kt index 1d1198dca263..b5d31ab5da20 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/GalleryRowHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/GalleryRowHolder.kt @@ -77,8 +77,9 @@ class GalleryRowHolder( FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT ).apply { - gravity = Gravity.TOP or Gravity.START - marginStart = checkBoxMargin.toInt() + // NMC Customization: align checkbox on top right + gravity = Gravity.TOP or Gravity.END + marginEnd = checkBoxMargin.toInt() topMargin = checkBoxMargin.toInt() } } @@ -189,10 +190,12 @@ class GalleryRowHolder( @Suppress("MagicNumber") private fun adjustRowCell(imageView: ImageView, isChecked: Boolean) { + // NMC Customization: no need to scaling and rounding + // we want a normal view without any corners imageView.apply { - scaleX = if (isChecked) 0.8f else 1.0f + scaleX = 1.0f scaleY = scaleX - makeRounded(context, if (isChecked) iconRadius else 0f) + makeRounded(context, 0f) } } @@ -200,11 +203,8 @@ class GalleryRowHolder( if (ocFileListDelegate.isMultiSelect) { val checkboxDrawable = ( if (isChecked) { - val drawable = ContextCompat.getDrawable(context, R.drawable.ic_checkbox_marked) - drawable?.let { - viewThemeUtils.platform.tintDrawable(context, drawable, ColorRole.PRIMARY) - } - drawable + // NMC Customization: no need to tint the color + ContextCompat.getDrawable(context, R.drawable.ic_checkbox_marked) } else { ContextCompat.getDrawable(context, R.drawable.ic_checkbox_blank_outline) } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java b/app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java index 5740936c2977..303c3ed2b72f 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java +++ b/app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java @@ -178,8 +178,7 @@ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int positi if (isCheckedFile(file)) { gridViewHolder.itemLayout.setBackgroundColor(ContextCompat.getColor(mContext, R.color.selected_item_background)); - gridViewHolder.checkbox.setImageDrawable( - viewThemeUtils.platform.tintDrawable(mContext, R.drawable.ic_checkbox_marked, ColorRole.PRIMARY)); + gridViewHolder.checkbox.setImageResource(R.drawable.ic_checkbox_marked); } else { gridViewHolder.itemLayout.setBackgroundColor(mContext.getResources().getColor(R.color.bg_default)); gridViewHolder.checkbox.setImageResource(R.drawable.ic_checkbox_blank_outline); diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java index 83f6a8e3538e..9d8721281703 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java +++ b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java @@ -191,6 +191,7 @@ public OCFileListAdapter( true, true, viewThemeUtils, + false, syncedFolderProvider); setHasStableIds(true); @@ -400,6 +401,8 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int return new OCFileListHeaderViewHolder(binding); } + // change required for NMC + // default case will be used for VIEW_TYPE_IMAGE & VIEWTYPE_ITEM also default -> { if (gridView) { return new OCFileListGridItemViewHolder( @@ -418,7 +421,6 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { if (holder instanceof OCFileListFooterViewHolder footerViewHolder) { footerViewHolder.getFooterText().setText(getFooterText()); - viewThemeUtils.platform.colorCircularProgressBar(footerViewHolder.getLoadingProgressBar(), ColorRole.ON_SURFACE_VARIANT); footerViewHolder.getLoadingProgressBar().setVisibility( ocFileListFragmentInterface.isLoading() ? View.VISIBLE : View.GONE); } else if (holder instanceof OCFileListHeaderViewHolder headerViewHolder) { @@ -1202,6 +1204,7 @@ public void cancelAllPendingTasks() { public void setGridView(boolean bool) { gridView = bool; + ocFileListDelegate.setGridView(bool); } public void setShowMetadata(boolean bool) { diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt index 1a11fe7a3251..9200df877542 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt @@ -57,11 +57,12 @@ class OCFileListDelegate( private val storageManager: FileDataStorageManager, private val hideItemOptions: Boolean, private val preferences: AppPreferences, - private val gridView: Boolean, + private var gridView: Boolean, private val transferServiceGetter: ComponentsGetter, private val showMetadata: Boolean, private var showShareAvatar: Boolean, private var viewThemeUtils: ViewThemeUtils, + private val isMediaGallery: Boolean, private val syncFolderProvider: SyncedFolderProvider? = null ) { private val tag = "OCFileListDelegate" @@ -226,7 +227,8 @@ class OCFileListDelegate( shimmerThumbnail, preferences, viewThemeUtils, - syncFolderProvider + syncFolderProvider, + isMediaGallery ) } @@ -260,7 +262,8 @@ class OCFileListDelegate( // shares val shouldHideShare = ( - hideItemOptions || + gridView || // NMC: don't show share icon in grid mode + hideItemOptions || !file.isFolder && file.isEncrypted || file.isEncrypted && @@ -341,9 +344,8 @@ class OCFileListDelegate( private fun setCheckBoxImage(file: OCFile, gridViewHolder: ListViewHolder) { if (isCheckedFile(file)) { - gridViewHolder.checkbox.setImageDrawable( - viewThemeUtils.platform.tintDrawable(context, R.drawable.ic_checkbox_marked, ColorRole.PRIMARY) - ) + // NMC Customization + gridViewHolder.checkbox.setImageResource(R.drawable.ic_checkbox_marked) } else { gridViewHolder.checkbox.setImageResource(R.drawable.ic_checkbox_blank_outline) } @@ -475,6 +477,10 @@ class OCFileListDelegate( ioScope.cancel() } + fun setGridView(bool: Boolean){ + gridView = bool + } + companion object { private val TAG = OCFileListDelegate::class.java.simpleName } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListGridItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListGridItemViewHolder.kt index dc00b032e3c7..8bd17c408c41 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListGridItemViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListGridItemViewHolder.kt @@ -62,8 +62,8 @@ class OCFileListGridItemViewHolder(var binding: GridItemBinding) : get() = null override val livePhotoIndicatorSeparator: TextView? get() = null - override val fileFeaturesLayout: LinearLayout - get() = binding.fileFeaturesLayout + override val fileFeaturesLayout: LinearLayout? + get() = null override val more: ImageButton get() = if (binding.bidiFilenameContainer.isVisible) { binding.bidiMore diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListViewHolder.kt index b0a0c037cd3a..88dc12ff5577 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListViewHolder.kt @@ -57,8 +57,8 @@ internal class OCFileListViewHolder(var binding: GridItemBinding) : } else { binding.more } - override val fileFeaturesLayout: LinearLayout - get() = binding.fileFeaturesLayout + override val fileFeaturesLayout: LinearLayout? + get() = null override val gridLivePhotoIndicator: ImageView get() = binding.gridLivePhotoIndicator override val livePhotoIndicator: TextView? diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/TrashbinListAdapter.java b/app/src/main/java/com/owncloud/android/ui/adapter/TrashbinListAdapter.java index 0393b5a6c3b7..b7122b58fd16 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/TrashbinListAdapter.java +++ b/app/src/main/java/com/owncloud/android/ui/adapter/TrashbinListAdapter.java @@ -17,7 +17,6 @@ import android.view.ViewGroup; import android.widget.ImageView; -import com.nextcloud.android.common.ui.theme.utils.ColorRole; import com.nextcloud.client.account.User; import com.nextcloud.client.preferences.AppPreferences; import com.nextcloud.utils.extensions.ViewExtensionsKt; @@ -152,8 +151,8 @@ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int positi // checkbox if (isCheckedFile(file)) { - trashbinFileViewHolder.binding.customCheckbox.setImageDrawable( - viewThemeUtils.platform.tintDrawable(context, R.drawable.ic_checkbox_marked, ColorRole.PRIMARY)); + // NMC Customization + trashbinFileViewHolder.binding.customCheckbox.setImageResource(R.drawable.ic_checkbox_marked); } else { trashbinFileViewHolder.binding.customCheckbox.setImageResource(R.drawable.ic_checkbox_blank_outline); } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java b/app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java index 4dee8b399daf..d580492cf1da 100755 --- a/app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java +++ b/app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java @@ -111,7 +111,8 @@ public void onBindHeaderViewHolder(SectionedViewHolder holder, int section, bool headerViewHolder.binding.uploadListTitle.setText( String.format(parentActivity.getString(R.string.uploads_view_group_header), group.getGroupName(), group.getGroupItemCount())); - viewThemeUtils.platform.colorPrimaryTextViewElement(headerViewHolder.binding.uploadListTitle); + //NMC Customization + headerViewHolder.binding.uploadListTitle.setTextColor(parentActivity.getResources().getColor(R.color.primary, null)); headerViewHolder.binding.uploadListTitle.setOnClickListener(v -> { toggleSectionExpanded(section); diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.kt b/app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.kt index 3948c9e32371..60fe5a8256f5 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.kt @@ -229,7 +229,8 @@ class ConflictsResolveDialog : null, syncedFolderProvider.preferences, viewThemeUtils, - syncedFolderProvider + syncedFolderProvider, + false ) } diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index 981555d062b7..f229fe58dc7d 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -1754,13 +1754,23 @@ protected void setTitle() { setTitle(R.string.drawer_item_shared); break; default: - setTitle(themeUtils.getDefaultDisplayNameForRootFolder(getContext()), false); + setTitle(themeUtils.getDefaultDisplayNameForRootFolder(getContext()), isRoot()); break; } } } + //NMC Customization + //for NMC we are using defaultToolbar instead searchToolbar for which we needed customization + private boolean isRoot() { + Activity activity; + if ((activity = getActivity()) != null && activity instanceof FileDisplayActivity) { + return ((FileDisplayActivity) activity).isRoot(((FileDisplayActivity) activity).getFile()); + } + return false; + } + protected void prepareActionBarItems(SearchEvent event) { if (event != null) { switch (event.getSearchType()) { @@ -1821,7 +1831,7 @@ public void onMessageEvent(ChangeMenuEvent changeMenuEvent) { ((FileDisplayActivity) activity).initSyncBroadcastReceiver(); } - setTitle(themeUtils.getDefaultDisplayNameForRootFolder(getContext()), false); + setTitle(themeUtils.getDefaultDisplayNameForRootFolder(getContext()), isRoot()); activity.getIntent().removeExtra(OCFileListFragment.SEARCH_EVENT); } 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 6089e78466cf..11b93571ac7b 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 @@ -144,9 +144,10 @@ class UnifiedSearchFragment : super.onViewCreated(view, savedInstanceState) setupAdapter() - if (supportsOpeningCalendarContactsLocally()) { + // NMC-4633 disable permission check + /*if (supportsOpeningCalendarContactsLocally()) { checkPermissions() - } + }*/ } private fun supportsOpeningCalendarContactsLocally(): Boolean = storageManager diff --git a/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java b/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java index 795bd439c35e..417c56fc4f62 100644 --- a/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java +++ b/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java @@ -803,7 +803,8 @@ public static void setThumbnail(OCFile file, LoaderImageView shimmerThumbnail, AppPreferences preferences, ViewThemeUtils viewThemeUtils, - SyncedFolderProvider syncedFolderProvider) { + SyncedFolderProvider syncedFolderProvider, + boolean isMediaGallery) { if (file == null || thumbnailView == null || context == null) { return; } @@ -814,25 +815,32 @@ public static void setThumbnail(OCFile file, } if (file.isFolder()) { - setThumbnailForFolder(file, thumbnailView, shimmerThumbnail, user, syncedFolderProvider, preferences, context, viewThemeUtils); + setThumbnailForFolder(file, thumbnailView, shimmerThumbnail, user, syncedFolderProvider, preferences, context, viewThemeUtils, gridView, isMediaGallery); return; } + // NMC Customization + updateThumbnailViewSize(thumbnailView, gridView, context, isMediaGallery, R.dimen.standard_files_grid_item_size); + if (file.getRemoteId() == null || !file.isPreviewAvailable()) { - setThumbnailFirstTimeForFile(file, thumbnailView, storageManager, asyncTasks, gridView, shimmerThumbnail, user, preferences, context, viewThemeUtils); + setThumbnailFirstTimeForFile(file, thumbnailView, storageManager, asyncTasks, gridView, shimmerThumbnail, user, preferences, context, viewThemeUtils, isMediaGallery); return; } - setThumbnailFromCache(file, thumbnailView, storageManager, asyncTasks, gridView, shimmerThumbnail, user, preferences, context, viewThemeUtils); + setThumbnailFromCache(file, thumbnailView, storageManager, asyncTasks, gridView, shimmerThumbnail, user, preferences, context, viewThemeUtils, isMediaGallery); } - private static void setThumbnailFirstTimeForFile(OCFile file, ImageView thumbnailView, FileDataStorageManager storageManager, List asyncTasks, boolean gridView, LoaderImageView shimmerThumbnail, User user, AppPreferences preferences, Context context, ViewThemeUtils viewThemeUtils) { + private static void setThumbnailFirstTimeForFile(OCFile file, ImageView thumbnailView, FileDataStorageManager storageManager, List asyncTasks, boolean gridView, LoaderImageView shimmerThumbnail, User user, AppPreferences preferences, Context context, ViewThemeUtils viewThemeUtils, boolean isMediaGallery) { if (file.getRemoteId() != null) { - generateNewThumbnail(file, thumbnailView, user, storageManager, asyncTasks, gridView, context, shimmerThumbnail, preferences, viewThemeUtils); + generateNewThumbnail(file, thumbnailView, user, storageManager, asyncTasks, gridView, context, shimmerThumbnail, preferences, viewThemeUtils, isMediaGallery); return; } stopShimmer(shimmerThumbnail, thumbnailView); + + // NMC Customization + setThumbnailViewPadding(thumbnailView, gridView, context, isMediaGallery, R.dimen.standard_quarter_padding); + final var icon = MimeTypeUtil.getFileTypeIcon(file.getMimeType(), file.getFileName(), context, viewThemeUtils); thumbnailView.setImageDrawable(icon); } @@ -859,9 +867,14 @@ private static void setThumbnailForOfflineOperation(OCFile file, ImageView thumb } } - private static void setThumbnailForFolder(OCFile file, ImageView thumbnailView, LoaderImageView shimmerThumbnail, User user, SyncedFolderProvider syncedFolderProvider, AppPreferences preferences, Context context, ViewThemeUtils viewThemeUtils) { + private static void setThumbnailForFolder(OCFile file, ImageView thumbnailView, LoaderImageView shimmerThumbnail, User user, SyncedFolderProvider syncedFolderProvider, AppPreferences preferences, Context context, ViewThemeUtils viewThemeUtils, boolean gridView, boolean isMediaGallery) { stopShimmer(shimmerThumbnail, thumbnailView); + // NMC Customization + updateThumbnailViewSize(thumbnailView, gridView, context, isMediaGallery, R.dimen.standard_folders_grid_item_size); + //reset the padding as this will change for files and we don't this for folders + thumbnailView.setPadding(0, 0, 0, 0); + boolean isAutoUploadFolder = SyncedFolderProvider.isAutoUploadFolder(syncedFolderProvider, file, user); boolean isDarkModeActive = preferences.isDarkModeEnabled(); @@ -870,22 +883,24 @@ private static void setThumbnailForFolder(OCFile file, ImageView thumbnailView, thumbnailView.setImageDrawable(fileIcon); } - private static void setThumbnailFromCache(OCFile file, ImageView thumbnailView, FileDataStorageManager storageManager, List asyncTasks, boolean gridView, LoaderImageView shimmerThumbnail, User user, AppPreferences preferences, Context context, ViewThemeUtils viewThemeUtils) { - final var thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(ThumbnailsCacheManager.PREFIX_THUMBNAIL + file.getRemoteId()); + private static void setThumbnailFromCache(OCFile file, ImageView thumbnailView, FileDataStorageManager storageManager, List asyncTasks, boolean gridView, LoaderImageView shimmerThumbnail, User user, AppPreferences preferences, Context context, ViewThemeUtils viewThemeUtils, boolean isMediaGallery) { + var thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(ThumbnailsCacheManager.PREFIX_THUMBNAIL + file.getRemoteId()); if (thumbnail == null || file.isUpdateThumbnailNeeded()) { - generateNewThumbnail(file, thumbnailView, user, storageManager, asyncTasks, gridView, context, shimmerThumbnail, preferences, viewThemeUtils); + generateNewThumbnail(file, thumbnailView, user, storageManager, asyncTasks, gridView, context, shimmerThumbnail, preferences, viewThemeUtils, isMediaGallery); setThumbnailBackgroundForPNGFileIfNeeded(file, context, thumbnailView); return; } + // NMC Customization + setThumbnailViewPadding(thumbnailView, gridView, context, isMediaGallery, R.dimen.alternate_padding); + stopShimmer(shimmerThumbnail, thumbnailView); if (MimeTypeUtil.isVideo(file)) { - final var withOverlay = ThumbnailsCacheManager.addVideoOverlay(thumbnail, context); - thumbnailView.setImageBitmap(withOverlay); - } else { - BitmapUtils.setRoundedBitmapAccordingToListType(gridView, thumbnail, thumbnailView); + thumbnail = ThumbnailsCacheManager.addVideoOverlay(thumbnail, context); } + // NMC: set the corner for both video and image thumbnail + BitmapUtils.setRoundedBitmapAccordingToListType(gridView, thumbnail, thumbnailView); setThumbnailBackgroundForPNGFileIfNeeded(file, context, thumbnailView); } @@ -906,7 +921,8 @@ private static void generateNewThumbnail(OCFile file, Context context, LoaderImageView shimmerThumbnail, AppPreferences preferences, - ViewThemeUtils viewThemeUtils) { + ViewThemeUtils viewThemeUtils, + boolean isMediaGallery) { if (!ThumbnailsCacheManager.cancelPotentialThumbnailWork(file, thumbnailView)) { return; } @@ -916,7 +932,8 @@ private static void generateNewThumbnail(OCFile file, if (thumbnail != null) { // If thumbnail is already in cache, display it immediately - thumbnailView.setImageBitmap(thumbnail); + // NMC: set the corner for both video and image thumbnail + BitmapUtils.setRoundedBitmapAccordingToListType(gridView, thumbnail, thumbnailView); stopShimmer(shimmerThumbnail, thumbnailView); return; } @@ -953,6 +970,10 @@ private static void generateNewThumbnail(OCFile file, int px = ThumbnailsCacheManager.getThumbnailDimension(); thumbnail = BitmapUtils.drawableToBitmap(drawable, px, px); + + //NMC: set thumbnailView padding for no thumbnail + setThumbnailViewPadding(thumbnailView, gridView, context, isMediaGallery, R.dimen.standard_quarter_padding); + final ThumbnailsCacheManager.AsyncThumbnailDrawable asyncDrawable = new ThumbnailsCacheManager.AsyncThumbnailDrawable(context.getResources(), thumbnail, task); @@ -960,9 +981,6 @@ private static void generateNewThumbnail(OCFile file, if (shimmerThumbnail != null) { shimmerThumbnail.postDelayed(() -> { if (thumbnailView.getDrawable() == null) { - if (gridView) { - configShimmerGridImageSize(shimmerThumbnail, preferences.getGridColumns()); - } startShimmer(shimmerThumbnail, thumbnailView); } }, 100); @@ -1035,4 +1053,41 @@ private static Point getScreenSize(Context context) throws Exception { throw new Exception("WindowManager not found"); } } + + /** + * method to set the padding to thumbnail view this is required for files so that there will be space between file + * and file name + * + * @param thumbnailView + * @param gridView + * @param context + * @param isMediaGallery + * @param dimensPadding + */ + private static void setThumbnailViewPadding(ImageView thumbnailView, boolean gridView, Context context, + boolean isMediaGallery, int dimensPadding) { + if (gridView && !isMediaGallery) { + int padding = context.getResources().getDimensionPixelSize(dimensPadding); + thumbnailView.setPadding(0, 0, 0, padding); + } + } + + /** + * method to set manual thumbnail view height and width for folders and files because we are using different size + * for both files and folders + * + * @param thumbnailView + * @param gridView + * @param context + * @param isMediaGallery + * @param size + */ + private static void updateThumbnailViewSize(ImageView thumbnailView, boolean gridView, Context context, + boolean isMediaGallery, int size) { + if (gridView && !isMediaGallery) { + thumbnailView.getLayoutParams().width = + context.getResources().getDimensionPixelSize(size); + thumbnailView.getLayoutParams().height = context.getResources().getDimensionPixelSize(size); + } + } } diff --git a/app/src/main/res/drawable/cursor_drawable.xml b/app/src/main/res/drawable/cursor_drawable.xml new file mode 100644 index 000000000000..dd35b659e8ae --- /dev/null +++ b/app/src/main/res/drawable/cursor_drawable.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/layout/activity_edit_image.xml b/app/src/main/res/layout/activity_edit_image.xml index 4b11869ee501..257ba56fa732 100644 --- a/app/src/main/res/layout/activity_edit_image.xml +++ b/app/src/main/res/layout/activity_edit_image.xml @@ -12,15 +12,10 @@ android:layout_height="match_parent" android:background="@color/black"> - + + + app:layout_constraintTop_toBottomOf="@+id/appbar" /> @@ -82,7 +81,7 @@ android:layout_height="wrap_content" android:text="@string/daily_backup" android:textColor="@color/text_color" - android:textSize="@dimen/two_line_primary_text_size" /> + android:textSize="14sp" /> diff --git a/app/src/main/res/layout/file_thumbnail.xml b/app/src/main/res/layout/file_thumbnail.xml index 6f318d47e9b3..b7a842e4d78d 100644 --- a/app/src/main/res/layout/file_thumbnail.xml +++ b/app/src/main/res/layout/file_thumbnail.xml @@ -24,7 +24,7 @@ android:layout_width="@dimen/file_icon_size" android:layout_height="@dimen/file_icon_size" android:contentDescription="@null" - android:src="@drawable/folder" /> + tools:src="@drawable/folder" /> + android:layout_height="0.5dp" + android:background="@color/divider_color" /> diff --git a/app/src/main/res/layout/grid_item.xml b/app/src/main/res/layout/grid_item.xml index ae065d33d73a..ede96cd0efd0 100644 --- a/app/src/main/res/layout/grid_item.xml +++ b/app/src/main/res/layout/grid_item.xml @@ -16,23 +16,32 @@ android:layout_height="@dimen/grid_container_height" android:layout_margin="@dimen/grid_container_margin"> - + + + + + - - - - + app:layout_constraintVertical_bias="0.85" + tools:visibility="visible"> @@ -128,10 +133,19 @@ + + + app:layout_constraintTop_toBottomOf="@+id/thumbnail" + tools:visibility="visible"> + android:layout_marginStart="@dimen/iconized_single_line_item_icon_size" + android:layout_weight="1" + android:gravity="center"> @@ -192,6 +208,7 @@ android:contentDescription="@string/overflow_menu" android:translationZ="2dp" app:srcCompat="@drawable/ic_dots_vertical" + app:tint="@color/list_icon_color" tools:ignore="TouchTargetSizeCheck" /> @@ -205,6 +222,7 @@ android:gravity="center" android:singleLine="true" android:text="@string/placeholder_filename" + android:textColor="@color/text_color" android:textSize="@dimen/grid_item_text_size" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" @@ -227,6 +245,7 @@ app:layout_constraintStart_toEndOf="@id/Filename" app:layout_constraintTop_toBottomOf="@id/thumbnail" app:srcCompat="@drawable/ic_dots_vertical" + app:tint="@color/list_icon_color" tools:ignore="TouchTargetSizeCheck" tools:visibility="visible" /> diff --git a/app/src/main/res/layout/list_item.xml b/app/src/main/res/layout/list_item.xml index fdc82c874448..0059ff0d02bd 100644 --- a/app/src/main/res/layout/list_item.xml +++ b/app/src/main/res/layout/list_item.xml @@ -15,19 +15,17 @@ xmlns:tools="http://schemas.android.com/tools" android:id="@+id/ListItemLayout" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="@dimen/standard_list_item_size" android:baselineAligned="false" android:descendantFocusability="blocksDescendants" - android:minHeight="@dimen/standard_list_item_size" - android:orientation="horizontal" - android:paddingTop="@dimen/standard_half_padding" - android:paddingBottom="@dimen/standard_half_padding"> + android:orientation="horizontal"> + android:layout_marginEnd="@dimen/standard_quarter_padding" + android:layout_marginBottom="@dimen/standard_padding"> + android:paddingTop="@dimen/standard_padding"> + tools:visibility="visible" + app:tint="@color/list_icon_color" /> @@ -290,15 +285,15 @@ + android:src="@drawable/ic_dots_vertical" + app:tint="@color/list_icon_color" /> diff --git a/app/src/main/res/layout/receive_external_files.xml b/app/src/main/res/layout/receive_external_files.xml index 1f85eae78a32..d25f4afcafb3 100644 --- a/app/src/main/res/layout/receive_external_files.xml +++ b/app/src/main/res/layout/receive_external_files.xml @@ -11,6 +11,7 @@ android:id="@+id/upload_files_layout" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/bg_default" android:orientation="vertical"> @@ -219,6 +220,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="marquee" + android:maxLines="2" android:text="@string/instant_upload_existing" android:textAppearance="?attr/textAppearanceListItem" /> diff --git a/app/src/main/res/layout/trashbin_item.xml b/app/src/main/res/layout/trashbin_item.xml index 4d248ffd8fb5..e3c2ede36211 100644 --- a/app/src/main/res/layout/trashbin_item.xml +++ b/app/src/main/res/layout/trashbin_item.xml @@ -6,6 +6,7 @@ ~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only --> + android:src="@drawable/ic_history" + app:tint="@color/list_icon_color"/> + android:src="@drawable/ic_dots_vertical" + app:tint="@color/list_icon_color"/> diff --git a/app/src/main/res/layout/upload_files_layout.xml b/app/src/main/res/layout/upload_files_layout.xml index 4012193eb6a9..b5d4e9e90fec 100644 --- a/app/src/main/res/layout/upload_files_layout.xml +++ b/app/src/main/res/layout/upload_files_layout.xml @@ -26,17 +26,10 @@ android:layout_height="0dp" android:layout_weight="1" /> - - - - - + android:layout_height="0.5dp" + android:background="@color/divider_color" /> Herunterladen Video Überlagerungsicon Bitte warten… + Bitte geben Sie unter Apps & Benachrichtigungen in den Einstellungen manuell die Erlaubnis. Überprüfe gespeicherte Anmeldeinformationen Kopiere Datei von privatem Speicher Das Ändern der Erweiterung kann dazu führen, dass diese Datei in einer anderen Anwendung geöffnet wird diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index db1e1d218038..e5a35a1a4f44 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -7,6 +7,7 @@ --> + @color/grey_30 #E3E3E3 #000000 #ff6F6F6F @@ -25,7 +26,7 @@ @color/appbar - #373535 + @color/grey_70 #222222 #DADADA @@ -35,8 +36,73 @@ @color/white - #1E1E1E + #121212 @android:color/white #101418 + + + #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 diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index 19b3ce692520..167139478049 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -23,5 +23,8 @@ @style/Nextcloud.Widget.PopupMenu @style/ThemeOverlay.App.BottomSheetDialog @style/App.ActionMode + + @style/AutoCompleteCursorColorStyle + @style/AutoCompleteCursorColorStyle diff --git a/app/src/main/res/values-sw600dp/dims.xml b/app/src/main/res/values-sw600dp/dims.xml index 7436d593a3c5..a32fc3e858d1 100644 --- a/app/src/main/res/values-sw600dp/dims.xml +++ b/app/src/main/res/values-sw600dp/dims.xml @@ -8,5 +8,7 @@ --> 6 + 32dp + 16dp 512dp diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 36d7459ecdaf..43352f0bc6ab 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -10,11 +10,12 @@ ~ SPDX-License-Identifier: GPL-2.0-only AND (AGPL-3.0-or-later OR GPL-2.0-only) --> - @color/secondary_text_color + @color/grey_600 #000000 #ffffff #B3FFFFFF - #333333 + #191919 + #F5F5F5 #303034 #E9E8EB @color/secondary_text_color @@ -25,7 +26,7 @@ #DDDDDD #EEEEEE #00000000 - #666666 + @color/grey_30 #e53935 @@ -76,17 +77,107 @@ #40162233 - @color/fontAppbar - #ECECEC + @color/white + @color/grey_0 #757575 #616161 - #80000000 + #919191 @android:color/white - #666666 + #191919 #A5A5A5 #F7F9FF + + + #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 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 000000000000..cc023ec9c6e1 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,32 @@ + + + 4dp + 16dp + 24dp + 24dp + 6dp + 18sp + 15sp + 15dp + 56dp + 86dp + 80dp + 11sp + 30dp + 55dp + 258dp + 17sp + 20dp + 160dp + 50dp + 150dp + 55dp + 48dp + 48dp + 24dp + 26dp + 20sp + 145dp + 1dp + 13sp + \ No newline at end of file diff --git a/app/src/main/res/values/dims.xml b/app/src/main/res/values/dims.xml index d320c92a664a..ea0ab4359452 100644 --- a/app/src/main/res/values/dims.xml +++ b/app/src/main/res/values/dims.xml @@ -22,7 +22,7 @@ 100dp 128dp 8dp - 3dp + 4dp 512 28dp 16dp @@ -87,7 +87,7 @@ 15dp 40dp 240dp - 16sp + 14sp 200dp 20dp 12sp @@ -117,11 +117,13 @@ 40dp 72dp 72dp + 24dp + 24dp 22sp 14dp 14dp - 12dp - 12dp + 24dp + 24dp 72dp 72dp 26sp diff --git a/app/src/main/res/values/setup.xml b/app/src/main/res/values/setup.xml index afed2dafe23a..52a9d6fc7ec0 100644 --- a/app/src/main/res/values/setup.xml +++ b/app/src/main/res/values/setup.xml @@ -58,7 +58,7 @@ -1 /.Calendar-Backup - true + false true diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7e699376c89e..15abb57e925a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1189,6 +1189,7 @@ Link Name Delete Link Settings + Please navigate to App info in settings and give permission manually. Confirm Destination filename Suggest diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 17cdbaabca4a..54673c9434cd 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -32,6 +32,9 @@ @color/bg_default @style/Widget.App.TextInputLayout @dimen/dialogBorderRadius + + @style/AutoCompleteCursorColorStyle + @style/AutoCompleteCursorColorStyle + +