diff --git a/app/src/androidTest/java/com/nmc/android/ui/EmptyStateViewIT.kt b/app/src/androidTest/java/com/nmc/android/ui/EmptyStateViewIT.kt new file mode 100644 index 000000000000..889e87eec421 --- /dev/null +++ b/app/src/androidTest/java/com/nmc/android/ui/EmptyStateViewIT.kt @@ -0,0 +1,186 @@ +package com.nmc.android.ui + +import androidx.test.core.app.ActivityScenario +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.espresso.matcher.ViewMatchers.withText +import androidx.test.ext.junit.rules.ActivityScenarioRule +import com.nextcloud.test.TestActivity +import com.owncloud.android.AbstractIT +import com.owncloud.android.R +import com.owncloud.android.lib.resources.notifications.models.Notification +import com.owncloud.android.ui.activity.FolderPickerActivity +import com.owncloud.android.ui.activity.NotificationsActivity +import com.owncloud.android.ui.activity.ReceiveExternalFilesActivity +import com.owncloud.android.ui.activity.UploadListActivity +import com.owncloud.android.ui.fragment.GalleryFragment +import com.owncloud.android.ui.fragment.OCFileListFragment +import com.owncloud.android.ui.fragment.SearchType +import com.owncloud.android.ui.trashbin.TrashbinActivity +import org.junit.Rule +import org.junit.Test + +/** + * test to validate empty state on different screens + */ +class EmptyStateViewIT : AbstractIT() { + + @get:Rule + val testActivityRule = ActivityScenarioRule(TestActivity::class.java) + + @Test + fun validate_emptyState_NoSearch() { + loadOCFileListFragmentWithSearchType(SearchType.NO_SEARCH) + onView(withId(R.id.empty_list_icon)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(withText("No files here"))) + onView(withId(R.id.empty_list_view_text)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_text)).check(matches(withText("Upload some content or sync with your devices."))) + } + + @Test + fun validate_emptyState_FileSearch() { + loadOCFileListFragmentWithSearchType(SearchType.FILE_SEARCH) + onView(withId(R.id.empty_list_icon)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(withText("No results"))) + onView(withId(R.id.empty_list_view_text)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_text)).check(matches(withText("Search for a file (at least 2 characters)"))) + } + + @Test + fun validate_emptyState_FavoriteSearch() { + loadOCFileListFragmentWithSearchType(SearchType.FAVORITE_SEARCH) + onView(withId(R.id.empty_list_icon)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(withText("Nothing favorited yet"))) + onView(withId(R.id.empty_list_view_text)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_text)).check(matches(withText("Files and folders you mark as favorites will show up here."))) + } + + @Test + fun validate_emptyState_RecentSearch() { + loadOCFileListFragmentWithSearchType(SearchType.RECENTLY_MODIFIED_SEARCH) + onView(withId(R.id.empty_list_icon)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(withText("No results"))) + onView(withId(R.id.empty_list_view_text)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_text)).check(matches(withText("Found no files modified within the last 7 days"))) + } + + @Test + fun validate_emptyState_SharedSearch() { + loadOCFileListFragmentWithSearchType(SearchType.SHARED_FILTER) + onView(withId(R.id.empty_list_icon)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(withText("Nothing shared yet"))) + onView(withId(R.id.empty_list_view_text)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_text)).check(matches(withText("Files and folders you share will show up here."))) + } + + @Test + fun validate_emptyState_GallerySearch() { + loadGalleryFragment() + onView(withId(R.id.empty_list_icon)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(withText("No files here"))) + onView(withId(R.id.empty_list_view_text)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_text)).check(matches(withText("No photos or videos uploaded yet"))) + } + + @Test + fun validate_emptyState_Notification() { + val activityScenario = ActivityScenario.launch(NotificationsActivity::class.java) + waitForIdleSync() + activityScenario.onActivity { + it.runOnUiThread { it.populateList(ArrayList()) } + } + + onView(withId(R.id.empty_list_icon)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(withText("No notifications"))) + onView(withId(R.id.empty_list_view_text)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_text)).check(matches(withText("Please check back later."))) + } + + @Test + fun validate_errorState_Trashbin() { + ActivityScenario.launch(TrashbinActivity::class.java) + onView(withId(R.id.empty_list_icon)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(withText("Error"))) + onView(withId(R.id.empty_list_view_text)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_text)).check(matches(withText("Loading trash bin failed!"))) + } + + @Test + fun validate_emptyState_Trashbin() { + val activityScenario = ActivityScenario.launch(TrashbinActivity::class.java) + activityScenario.onActivity { + it.showTrashbinFolder(emptyList()) + } + onView(withId(R.id.empty_list_icon)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(withText("No deleted files"))) + onView(withId(R.id.empty_list_view_text)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_text)).check(matches(withText("You will be able to recover deleted files from here."))) + } + + @Test + fun validate_emptyState_FolderPicker() { + ActivityScenario.launch(FolderPickerActivity::class.java) + onView(withId(R.id.empty_list_icon)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(withText("No files here"))) + onView(withId(R.id.empty_list_view_text)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_text)).check(matches(withText("Upload some content or sync with your devices."))) + } + + @Test + fun validate_emptyState_ReceivedExternalFiles() { + ActivityScenario.launch(ReceiveExternalFilesActivity::class.java) + onView(withId(R.id.empty_list_icon)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(withText("No files here"))) + onView(withId(R.id.empty_list_view_text)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_text)).check(matches(withText(""))) + } + + @Test + fun validate_emptyState_UploadList() { + ActivityScenario.launch(UploadListActivity::class.java) + onView(withId(R.id.empty_list_icon)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_headline)).check(matches(withText("No uploads available"))) + onView(withId(R.id.empty_list_view_text)).check(matches(isCompletelyDisplayed())) + onView(withId(R.id.empty_list_view_text)).check(matches(withText("Upload some content or activate auto upload."))) + } + + private fun loadOCFileListFragmentWithSearchType(searchType: SearchType) { + testActivityRule.scenario.onActivity { + it.addFragment(OCFileListFragment()) + } + + waitForIdleSync() + + testActivityRule.scenario.onActivity { + val fragment = (it.fragment as OCFileListFragment) + fragment.setEmptyListMessage(searchType) + } + } + + private fun loadGalleryFragment() { + testActivityRule.scenario.onActivity { + it.addFragment(GalleryFragment()) + } + + waitForIdleSync() + + testActivityRule.scenario.onActivity { + val fragment = (it.fragment as GalleryFragment) + fragment.setEmptyListMessage(SearchType.GALLERY_SEARCH) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.kt index ed9574f1fb1d..e60b2d85a6fd 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.kt @@ -217,7 +217,7 @@ open class FolderPickerActivity : it.setMessageForEmptyList( R.string.folder_list_empty_headline, R.string.file_list_empty_moving, - R.drawable.ic_list_empty_create_folder, + R.drawable.ic_list_empty_folder, true ) } else { diff --git a/app/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.kt index 671efe8492b0..732bca511728 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.kt @@ -183,7 +183,7 @@ class NotificationsActivity : DrawerActivity(), NotificationsContract.View { * sets up the UI elements and loads all notification items. */ private fun setupContent() { - binding.emptyList.emptyListIcon.setImageResource(R.drawable.ic_notification) + binding.emptyList.emptyListIcon.setImageResource(R.drawable.ic_list_empty_notification) setLoadingMessageEmpty() val layoutManager = LinearLayoutManager(this) binding.list.layoutManager = layoutManager @@ -298,7 +298,7 @@ class NotificationsActivity : DrawerActivity(), NotificationsContract.View { binding.emptyList.emptyListView.visibility = View.VISIBLE binding.emptyList.emptyListViewHeadline.text = headline binding.emptyList.emptyListViewText.text = message - binding.emptyList.emptyListIcon.setImageResource(R.drawable.ic_notification) + binding.emptyList.emptyListIcon.setImageResource(R.drawable.ic_list_empty_notification) binding.emptyList.emptyListViewText.visibility = View.VISIBLE binding.emptyList.emptyListIcon.visibility = View.VISIBLE } 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 60d8c944a7bd..9dd9c8c4cabb 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 @@ -744,7 +744,7 @@ private void populateDirectoryList() { if (files.isEmpty()) { setMessageForEmptyList(R.string.file_list_empty_headline, R.string.empty, - R.drawable.uploads); + R.drawable.ic_list_empty_uploads); mEmptyListContainer.setVisibility(View.VISIBLE); binding.list.setVisibility(View.GONE); } else { @@ -799,7 +799,7 @@ public void setMessageForEmptyList(@StringRes final int headline, @StringRes fin if (mEmptyListContainer != null && mEmptyListMessage != null) { mEmptyListHeadline.setText(headline); mEmptyListMessage.setText(message); - mEmptyListIcon.setImageDrawable(viewThemeUtils.platform.tintPrimaryDrawable(this, icon)); + mEmptyListIcon.setImageResource(icon); mEmptyListIcon.setVisibility(View.VISIBLE); mEmptyListMessage.setVisibility(View.VISIBLE); } diff --git a/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt index 23486394a2ca..be8089e2c101 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt @@ -256,6 +256,8 @@ class SyncedFoldersActivity : binding.list.layoutManager = lm binding.list.adapter = adapter load(getItemsDisplayedPerFolder(), false) + //NMC customization + binding.emptyList.emptyListIcon.setImageResource(R.drawable.ic_list_empty_synced_folders) } private fun showHiddenItems() { diff --git a/app/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java index 7543267ad3ed..4126e0faa945 100755 --- a/app/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java @@ -154,9 +154,7 @@ private void handleUploadWorkerState() { private void setupContent() { binding.list.setEmptyView(binding.emptyList.getRoot()); binding.emptyList.getRoot().setVisibility(View.GONE); - binding.emptyList.emptyListIcon.setImageResource(R.drawable.uploads); - binding.emptyList.emptyListIcon.getDrawable().mutate(); - binding.emptyList.emptyListIcon.setAlpha(0.5f); + binding.emptyList.emptyListIcon.setImageResource(R.drawable.ic_list_empty_uploads); binding.emptyList.emptyListIcon.setVisibility(View.VISIBLE); binding.emptyList.emptyListViewHeadline.setText(getString(R.string.upload_list_empty_headline)); binding.emptyList.emptyListViewText.setText(getString(R.string.upload_list_empty_text_auto_upload)); diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java index 90d5ff624628..8248aadfbf7c 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java @@ -585,16 +585,8 @@ public void run() { if (mEmptyListContainer != null && mEmptyListMessage != null) { mEmptyListHeadline.setText(headline); mEmptyListMessage.setText(message); - - if (tintIcon) { - if (getContext() != null) { - mEmptyListIcon.setImageDrawable( - viewThemeUtils.platform.tintPrimaryDrawable(getContext(), icon)); - } - } else { - mEmptyListIcon.setImageResource(icon); - } - + //tinting is not required in NMC + mEmptyListIcon.setImageResource(icon); mEmptyListIcon.setVisibility(View.VISIBLE); mEmptyListMessage.setVisibility(View.VISIBLE); } @@ -614,8 +606,8 @@ public void run() { true); } else if (searchType == SearchType.FILE_SEARCH) { setMessageForEmptyList(R.string.file_list_empty_headline_server_search, - R.string.file_list_empty, - R.drawable.ic_search_light_grey); + R.string.search_result_empty, + R.drawable.ic_search_empty); } else if (searchType == SearchType.FAVORITE_SEARCH) { setMessageForEmptyList(R.string.file_list_empty_favorite_headline, R.string.file_list_empty_favorites_filter_list, @@ -627,15 +619,15 @@ public void run() { } else if (searchType == SearchType.REGULAR_FILTER) { setMessageForEmptyList(R.string.file_list_empty_headline_search, R.string.file_list_empty_search, - R.drawable.ic_search_light_grey); + R.drawable.ic_search_empty); } else if (searchType == SearchType.SHARED_FILTER) { setMessageForEmptyList(R.string.file_list_empty_shared_headline, R.string.file_list_empty_shared, R.drawable.ic_list_empty_shared); } else if (searchType == SearchType.GALLERY_SEARCH) { - setMessageForEmptyList(R.string.file_list_empty_headline_server_search, - R.string.file_list_empty_gallery, - R.drawable.file_image); + setMessageForEmptyList(R.string.file_list_empty_headline, + R.string.gallery_list_empty, + R.drawable.ic_list_empty_media); } else if (searchType == SearchType.LOCAL_SEARCH) { setMessageForEmptyList(R.string.file_list_empty_headline_server_search, R.string.file_list_empty_local_search, 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 a158c8052948..23d2b9de9885 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 @@ -208,9 +208,8 @@ class UnifiedSearchFragment : requireContext().getString(R.string.file_list_empty_headline_server_search) binding.emptyList.emptyListViewText.text = requireContext().getString(R.string.file_list_empty_unified_search_no_results) - binding.emptyList.emptyListIcon.setImageDrawable( - viewThemeUtils.platform.tintDrawable(requireContext(), R.drawable.ic_search_grey) - ) + //NMC Customization + binding.emptyList.emptyListIcon.setImageResource(R.drawable.ic_search_empty) } } } diff --git a/app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.kt b/app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.kt index 9097b149611d..e84d1dd6b399 100644 --- a/app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.kt @@ -130,7 +130,7 @@ class TrashbinActivity : recyclerView.setEmptyView(binding.emptyList.emptyListView) binding.emptyList.emptyListView.visibility = View.GONE - binding.emptyList.emptyListIcon.setImageResource(R.drawable.ic_delete) + binding.emptyList.emptyListIcon.setImageResource(R.drawable.ic_list_empty_trashbin) binding.emptyList.emptyListIcon.visibility = View.VISIBLE binding.emptyList.emptyListViewHeadline.text = getString(R.string.trashbin_empty_headline) binding.emptyList.emptyListViewText.text = getString(R.string.trashbin_empty_message) @@ -258,7 +258,7 @@ class TrashbinActivity : trashbinListAdapter?.setTrashbinFiles(trashbinFiles, true) binding.swipeContainingList.isRefreshing = false binding.loadingContent.visibility = View.GONE - binding.emptyList.emptyListIcon.setImageResource(R.drawable.ic_delete) + binding.emptyList.emptyListIcon.setImageResource(R.drawable.ic_list_empty_trashbin) binding.emptyList.emptyListViewHeadline.text = getString(R.string.trashbin_empty_headline) binding.emptyList.emptyListViewText.text = getString(R.string.trashbin_empty_message) binding.list.visibility = View.VISIBLE diff --git a/app/src/main/res/drawable-night/ic_list_empty_error.xml b/app/src/main/res/drawable-night/ic_list_empty_error.xml new file mode 100644 index 000000000000..eded06495c3c --- /dev/null +++ b/app/src/main/res/drawable-night/ic_list_empty_error.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_list_empty_media.xml b/app/src/main/res/drawable-night/ic_list_empty_media.xml new file mode 100644 index 000000000000..b07dafe6cc6a --- /dev/null +++ b/app/src/main/res/drawable-night/ic_list_empty_media.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_list_empty_notification.xml b/app/src/main/res/drawable-night/ic_list_empty_notification.xml new file mode 100644 index 000000000000..a717b084b187 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_list_empty_notification.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_list_empty_recent.xml b/app/src/main/res/drawable-night/ic_list_empty_recent.xml new file mode 100644 index 000000000000..0925b24f92f2 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_list_empty_recent.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_list_empty_shared.xml b/app/src/main/res/drawable-night/ic_list_empty_shared.xml new file mode 100644 index 000000000000..18b84486de2d --- /dev/null +++ b/app/src/main/res/drawable-night/ic_list_empty_shared.xml @@ -0,0 +1,34 @@ + + + + + diff --git a/app/src/main/res/drawable-night/ic_list_empty_synced_folders.xml b/app/src/main/res/drawable-night/ic_list_empty_synced_folders.xml new file mode 100644 index 000000000000..437f67b0965b --- /dev/null +++ b/app/src/main/res/drawable-night/ic_list_empty_synced_folders.xml @@ -0,0 +1,33 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-night/ic_list_empty_trashbin.xml b/app/src/main/res/drawable-night/ic_list_empty_trashbin.xml new file mode 100644 index 000000000000..632dd30404e1 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_list_empty_trashbin.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_list_empty_uploads.xml b/app/src/main/res/drawable-night/ic_list_empty_uploads.xml new file mode 100644 index 000000000000..8cf18315df8c --- /dev/null +++ b/app/src/main/res/drawable-night/ic_list_empty_uploads.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_search_empty.xml b/app/src/main/res/drawable-night/ic_search_empty.xml new file mode 100644 index 000000000000..c3df1449fec5 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_search_empty.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable/ic_list_empty_error.xml b/app/src/main/res/drawable/ic_list_empty_error.xml index e68fc6c7775f..9d36ccc164e3 100644 --- a/app/src/main/res/drawable/ic_list_empty_error.xml +++ b/app/src/main/res/drawable/ic_list_empty_error.xml @@ -7,10 +7,13 @@ + android:tint="@color/empty_list_icon_color" + android:viewportWidth="24" + android:viewportHeight="24"> + android:pathData="M12,1C5.9249,1 1,5.9249 1,12C1,18.0751 5.9249,23 12,23C18.0751,23 23,18.0751 23,12C23,9.0826 21.8411,6.2847 19.7782,4.2218C17.7153,2.1589 14.9174,1 12,1ZM11,6.75L13,6.75L13,13.25L11,13.25L11,6.75ZM12,17.25C11.3096,17.25 10.75,16.6904 10.75,16C10.75,15.3096 11.3096,14.75 12,14.75C12.6904,14.75 13.25,15.3096 13.25,16C13.25,16.6904 12.6904,17.25 12,17.25L12,17.25Z" + android:strokeWidth="1" + android:fillColor="#262626" + android:fillType="evenOdd" + android:strokeColor="#00000000"/> diff --git a/app/src/main/res/drawable/ic_list_empty_folder.xml b/app/src/main/res/drawable/ic_list_empty_folder.xml index 6de49dae0fc1..483eeebbbda0 100644 --- a/app/src/main/res/drawable/ic_list_empty_folder.xml +++ b/app/src/main/res/drawable/ic_list_empty_folder.xml @@ -4,8 +4,32 @@ ~ SPDX-FileCopyrightText: 2018-2024 Google LLC ~ SPDX-License-Identifier: Apache-2.0 --> - - + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_list_empty_media.xml b/app/src/main/res/drawable/ic_list_empty_media.xml new file mode 100644 index 000000000000..af5065cf6ef1 --- /dev/null +++ b/app/src/main/res/drawable/ic_list_empty_media.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable/ic_list_empty_notification.xml b/app/src/main/res/drawable/ic_list_empty_notification.xml new file mode 100644 index 000000000000..ab174047cc2b --- /dev/null +++ b/app/src/main/res/drawable/ic_list_empty_notification.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable/ic_list_empty_recent.xml b/app/src/main/res/drawable/ic_list_empty_recent.xml index 3cc1fd17bac2..bc6cf4e57fc1 100644 --- a/app/src/main/res/drawable/ic_list_empty_recent.xml +++ b/app/src/main/res/drawable/ic_list_empty_recent.xml @@ -4,8 +4,16 @@ ~ SPDX-FileCopyrightText: 2018-2024 Google LLC ~ SPDX-License-Identifier: Apache-2.0 --> - - + + diff --git a/app/src/main/res/drawable/ic_list_empty_shared.xml b/app/src/main/res/drawable/ic_list_empty_shared.xml index 8c3ee9f4664f..1133dfb844ea 100644 --- a/app/src/main/res/drawable/ic_list_empty_shared.xml +++ b/app/src/main/res/drawable/ic_list_empty_shared.xml @@ -4,8 +4,17 @@ ~ SPDX-FileCopyrightText: 2018-2024 Google LLC ~ SPDX-License-Identifier: Apache-2.0 --> - - + + + diff --git a/app/src/main/res/drawable/ic_list_empty_synced_folders.xml b/app/src/main/res/drawable/ic_list_empty_synced_folders.xml new file mode 100644 index 000000000000..51304a3c274c --- /dev/null +++ b/app/src/main/res/drawable/ic_list_empty_synced_folders.xml @@ -0,0 +1,33 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_list_empty_trashbin.xml b/app/src/main/res/drawable/ic_list_empty_trashbin.xml new file mode 100644 index 000000000000..d6028c1d7fc3 --- /dev/null +++ b/app/src/main/res/drawable/ic_list_empty_trashbin.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable/ic_list_empty_uploads.xml b/app/src/main/res/drawable/ic_list_empty_uploads.xml new file mode 100644 index 000000000000..7d3dd0f9b05a --- /dev/null +++ b/app/src/main/res/drawable/ic_list_empty_uploads.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable/ic_search_empty.xml b/app/src/main/res/drawable/ic_search_empty.xml new file mode 100644 index 000000000000..f9c81602dba3 --- /dev/null +++ b/app/src/main/res/drawable/ic_search_empty.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable/ic_star_light_yellow.xml b/app/src/main/res/drawable/ic_star_light_yellow.xml index e051e51a7ebc..59d917b9e8fc 100644 --- a/app/src/main/res/drawable/ic_star_light_yellow.xml +++ b/app/src/main/res/drawable/ic_star_light_yellow.xml @@ -10,11 +10,10 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + android:fillColor="#FECB00" + android:fillType="evenOdd" + android:strokeColor="#00000000"/> diff --git a/app/src/main/res/layout/empty_list.xml b/app/src/main/res/layout/empty_list.xml index 5f1aea457a05..fe07e9fec626 100644 --- a/app/src/main/res/layout/empty_list.xml +++ b/app/src/main/res/layout/empty_list.xml @@ -25,8 +25,8 @@ Fehler beim Laden der Details Datei Behalten - Laden Sie Inhalt hoch oder synchronisieren Sie mit Ihren Geräten. + Laden Sie Inhalte hoch oder synchronisieren Sie mit Ihren Geräten. Noch keine Favoriten vorhanden Dateien und Ordner, die als Favoriten markiert werden, erscheinen hier. Keine Bilder oder Videos gefunden - Keine Dateien vorhanden + Keine Dateien vorhanden Keine Ergebnisse in diesem Ordner Keine Ergebnisse Noch nichts vorhanden. Sie können einen Ordner hinzufügen. Heruntergeladene Dateien und Ordner werden hier angezeigt werden. Keine, innerhalb der letzten 7 Tage, geänderten Dateien gefunden Vielleicht befindet es sich in einem anderen Ordner? + Eine Datei suchen (mindestens 2 Zeichen) + Noch keine hochgeladene Fotos oder Videos vorhanden Von Ihnen geteilte Dateien und Ordner werden hier angezeigt. Noch nichts geteilt Keine Ergebnisse für Ihre Suche gefunden diff --git a/app/src/main/res/values/dims.xml b/app/src/main/res/values/dims.xml index 1f6a3f88885b..b594a886f16f 100644 --- a/app/src/main/res/values/dims.xml +++ b/app/src/main/res/values/dims.xml @@ -155,5 +155,6 @@ 108dp 18dp + 120dp 18dp diff --git a/app/src/main/res/values/setup.xml b/app/src/main/res/values/setup.xml index 046976793481..bf373b19affb 100644 --- a/app/src/main/res/values/setup.xml +++ b/app/src/main/res/values/setup.xml @@ -64,6 +64,10 @@ #ffffff #7fC0E3 + + #191919 + #CCCCCC + true diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5c06a52d4527..5e917e8b6603 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1096,6 +1096,8 @@ Send new email Link Name Delete Link + Search for a file (at least 2 characters) + No photos or videos uploaded yet Settings Confirm Strict mode: no HTTP connection allowed!