Skip to content

Commit 1ea761d

Browse files
Merge pull request #16575 from nextcloud/feat/recent-files
feat: recent files
2 parents 9f53c14 + 950ca33 commit 1ea761d

12 files changed

Lines changed: 56 additions & 62 deletions

File tree

app/src/main/java/com/nextcloud/utils/extensions/OCFileExtensions.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,6 @@ fun OCFile.isTempFile(): Boolean {
2323
return storagePath?.startsWith(appTempPath) == true
2424
}
2525

26-
fun OCFile.mediaSize(defaultThumbnailSize: Float): Pair<Int, Int> {
27-
val width = (imageDimension?.width?.toInt() ?: defaultThumbnailSize.toInt())
28-
val height = (imageDimension?.height?.toInt() ?: defaultThumbnailSize.toInt())
29-
return width to height
30-
}
31-
3226
fun OCFile?.isPNG(): Boolean {
3327
if (this == null) {
3428
return false

app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -592,7 +592,7 @@ private void filterDrawerMenu(final Menu menu, @NonNull final User user) {
592592
DrawerMenuUtil.filterAssistantMenuItem(menu, capability, getResources());
593593
}
594594

595-
DrawerMenuUtil.filterSearchMenuItems(menu, user, getResources());
595+
DrawerMenuUtil.filterSearchMenuItems(menu, user);
596596
DrawerMenuUtil.setupHomeMenuItem(menu, getResources());
597597
DrawerMenuUtil.removeMenuItem(menu, R.id.nav_community, !getResources().getBoolean(R.bool.participate_enabled));
598598
DrawerMenuUtil.removeMenuItem(menu, R.id.nav_shared, !getResources().getBoolean(R.bool.shared_enabled));
@@ -639,7 +639,7 @@ private void onNavigationItemClicked(final MenuItem menuItem) {
639639
}
640640
} else if (itemId == R.id.nav_shared) {
641641
openSharedTab();
642-
} else if (itemId == R.id.nav_recently_modified) {
642+
} else if (itemId == R.id.nav_recent_files) {
643643
resetOnlyPersonalAndOnDevice();
644644
startRecentlyModifiedSearch(menuItem);
645645
} else if (itemId == R.id.nav_assistant) {
@@ -1486,14 +1486,4 @@ public boolean isToolbarStyleSearch() {
14861486
menuItemId == R.id.nav_all_files ||
14871487
menuItemId == R.id.nav_personal_files;
14881488
}
1489-
1490-
public boolean isMenuItemIdBelongsToSearchType() {
1491-
int menuItemId = getSelectedMenuItemId();
1492-
1493-
return menuItemId == R.id.nav_favorites ||
1494-
menuItemId == R.id.nav_shared ||
1495-
menuItemId == R.id.nav_on_device ||
1496-
menuItemId == R.id.nav_recently_modified ||
1497-
menuItemId == R.id.nav_gallery;
1498-
}
14991489
}

app/src/main/java/com/owncloud/android/ui/events/SearchEvent.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ data class SearchEvent(val searchQuery: String, val searchType: SearchRemoteOper
3131
fun toSearchType(): SearchType? = when (searchType) {
3232
SearchRemoteOperation.SearchType.FILE_SEARCH -> SearchType.FILE_SEARCH
3333
SearchRemoteOperation.SearchType.FAVORITE_SEARCH -> SearchType.FAVORITE_SEARCH
34-
SearchRemoteOperation.SearchType.RECENTLY_MODIFIED_SEARCH -> SearchType.RECENTLY_MODIFIED_SEARCH
34+
SearchRemoteOperation.SearchType.RECENTLY_MODIFIED_SEARCH -> SearchType.RECENT_FILES_SEARCH
3535
SearchRemoteOperation.SearchType.SHARED_FILTER -> SearchType.SHARED_FILTER
3636
SearchRemoteOperation.SearchType.PHOTO_SEARCH -> SearchType.GALLERY_SEARCH
3737
SearchRemoteOperation.SearchType.GALLERY_SEARCH -> SearchType.GALLERY_SEARCH

app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -626,11 +626,11 @@ open class ExtendedListFragment :
626626
)
627627
}
628628

629-
SearchType.RECENTLY_MODIFIED_SEARCH -> {
629+
SearchType.RECENT_FILES_SEARCH -> {
630630
setMessageForEmptyList(
631-
R.string.file_list_empty_headline_server_search,
632-
R.string.file_list_empty_recently_modified,
633-
R.drawable.ic_list_empty_recent
631+
R.string.file_list_empty_recent_files_headline,
632+
R.string.file_list_empty_recent_files_description,
633+
R.drawable.nav_recently_outline
634634
)
635635
}
636636

app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
import com.owncloud.android.lib.resources.e2ee.ToggleEncryptionRemoteOperation;
8181
import com.owncloud.android.lib.resources.files.SearchRemoteOperation;
8282
import com.owncloud.android.lib.resources.files.ToggleFavoriteRemoteOperation;
83+
import com.owncloud.android.lib.resources.files.model.RemoteFile;
8384
import com.owncloud.android.lib.resources.status.E2EVersion;
8485
import com.owncloud.android.lib.resources.status.OCCapability;
8586
import com.owncloud.android.lib.resources.status.Type;
@@ -153,7 +154,7 @@
153154
import static com.owncloud.android.ui.fragment.SearchType.FAVORITE_SEARCH;
154155
import static com.owncloud.android.ui.fragment.SearchType.FILE_SEARCH;
155156
import static com.owncloud.android.ui.fragment.SearchType.NO_SEARCH;
156-
import static com.owncloud.android.ui.fragment.SearchType.RECENTLY_MODIFIED_SEARCH;
157+
import static com.owncloud.android.ui.fragment.SearchType.RECENT_FILES_SEARCH;
157158
import static com.owncloud.android.ui.fragment.SearchType.SHARED_FILTER;
158159
import static com.owncloud.android.utils.DisplayUtils.openSortingOrderDialogFragment;
159160

@@ -1834,7 +1835,7 @@ protected void setEmptyView(SearchEvent event) {
18341835
break;
18351836

18361837
case RECENTLY_MODIFIED_SEARCH:
1837-
setEmptyListMessage(RECENTLY_MODIFIED_SEARCH);
1838+
setEmptyListMessage(RECENT_FILES_SEARCH);
18381839
break;
18391840

18401841
case SHARED_FILTER:
@@ -1946,10 +1947,10 @@ protected void handleSearchEvent(SearchEvent event) {
19461947

19471948
final var activity = getActivity();
19481949
if (activity != null) {
1949-
activity.runOnUiThread(() -> {{
1950+
activity.runOnUiThread(() -> {
19501951
getAdapter().removeAllFiles();
19511952
setEmptyListMessage(EmptyListState.LOADING);
1952-
}});
1953+
});
19531954
}
19541955

19551956
prepareCurrentSearch(event);
@@ -1962,7 +1963,13 @@ protected void handleSearchEvent(SearchEvent event) {
19621963
});
19631964

19641965
final User currentUser = accountManager.getUser();
1965-
final var remoteOperation = getSearchRemoteOperation(currentUser, event);
1966+
RemoteOperation remoteOperation;
1967+
if (currentSearchType == RECENT_FILES_SEARCH) {
1968+
remoteOperation = getRecentFilesSearchRemoteOperation();
1969+
} else {
1970+
remoteOperation = getSearchRemoteOperation(currentUser, event);
1971+
}
1972+
19661973
searchTask = new OCFileListSearchTask(mContainerActivity, this, remoteOperation, currentUser, event, SharedListFragment.TASK_TIMEOUT, preferences);
19671974
searchTask.execute();
19681975
}
@@ -1979,6 +1986,28 @@ protected RemoteOperation getSearchRemoteOperation(final User currentUser, final
19791986
ocCapability);
19801987
}
19811988

1989+
private RemoteOperation getRecentFilesSearchRemoteOperation() {
1990+
String accountName = accountManager.getUser().getAccountName();
1991+
OCCapability capability = mContainerActivity.getStorageManager().getCapability(accountName);
1992+
String searchQuery = "";
1993+
1994+
SearchRemoteOperation remoteOperation = new SearchRemoteOperation(
1995+
searchQuery,
1996+
SearchRemoteOperation.SearchType.RECENTLY_MODIFIED_SEARCH,
1997+
false,
1998+
capability
1999+
);
2000+
2001+
long nowSeconds = System.currentTimeMillis() / 1000L;
2002+
long last14DaysTimestamp = nowSeconds - 14L * 24 * 60 * 60;
2003+
2004+
remoteOperation.setStartDate(last14DaysTimestamp);
2005+
remoteOperation.setEndDate(nowSeconds);
2006+
remoteOperation.setLimit(100);
2007+
2008+
return remoteOperation;
2009+
}
2010+
19822011
@Subscribe(threadMode = ThreadMode.MAIN)
19832012
public void onMessageEvent(EncryptionEvent event) {
19842013
new Thread(() -> {{
@@ -2326,8 +2355,8 @@ public int getMenuItemId() {
23262355
return R.id.nav_groupfolders;
23272356
} else if (isSearchEventFavorite() || currentSearchType == FAVORITE_SEARCH) {
23282357
return R.id.nav_favorites;
2329-
} else if (currentSearchType == RECENTLY_MODIFIED_SEARCH) {
2330-
return R.id.nav_recently_modified;
2358+
} else if (currentSearchType == RECENT_FILES_SEARCH) {
2359+
return R.id.nav_recent_files;
23312360
} else {
23322361
return R.id.nav_all_files;
23332362
}

app/src/main/java/com/owncloud/android/ui/fragment/OCFileListSearchTask.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ class OCFileListSearchTask(
8484
if (result?.isSuccess == true) {
8585
if (result.resultData?.isEmpty() == true) {
8686
withContext(Dispatchers.Main) {
87-
fragment.setEmptyListMessage(SearchType.NO_SEARCH)
87+
fragment.setEmptyListMessage(fragment.currentSearchType)
8888
return@withContext
8989
}
9090

@@ -171,7 +171,7 @@ class OCFileListSearchTask(
171171
var newList = list.toMutableList()
172172

173173
if (searchType == SearchType.GALLERY_SEARCH ||
174-
searchType == SearchType.RECENTLY_MODIFIED_SEARCH
174+
searchType == SearchType.RECENT_FILES_SEARCH
175175
) {
176176
return@withContext FileStorageUtils.sortOcFolderDescDateModifiedWithoutFavoritesFirst(newList)
177177
}
@@ -246,7 +246,8 @@ class OCFileListSearchTask(
246246
put(ProviderMeta.ProviderTableMeta.VIRTUAL_OCFILE_ID, ocFile.fileId)
247247
}
248248
contentValuesList.add(cv)
249-
} catch (_: Exception) {
249+
} catch (e: Exception) {
250+
Log_OC.e(TAG, "parseAndSaveVirtuals():", e)
250251
}
251252
}
252253

app/src/main/java/com/owncloud/android/ui/fragment/SearchType.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ enum class SearchType : Parcelable {
2020
FILE_SEARCH,
2121
FAVORITE_SEARCH,
2222
GALLERY_SEARCH,
23-
RECENTLY_MODIFIED_SEARCH,
23+
RECENT_FILES_SEARCH,
2424

2525
// not a real filter, but nevertheless
2626
SHARED_FILTER,
@@ -30,7 +30,7 @@ enum class SearchType : Parcelable {
3030
fun titleId(): Int? = when (this) {
3131
FAVORITE_SEARCH -> R.string.drawer_item_favorites
3232
GALLERY_SEARCH -> R.string.drawer_item_gallery
33-
RECENTLY_MODIFIED_SEARCH -> R.string.drawer_item_recently_modified
33+
RECENT_FILES_SEARCH -> R.string.drawer_item_recent_files
3434
SHARED_FILTER -> R.string.drawer_item_shared
3535
ON_DEVICE -> R.string.drawer_item_on_device
3636
else -> null

app/src/main/java/com/owncloud/android/utils/DrawerMenuUtil.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,10 @@ private DrawerMenuUtil() {
2424
}
2525

2626
public static void filterSearchMenuItems(Menu menu,
27-
User user,
28-
Resources resources) {
27+
User user) {
2928
if (user.isAnonymous()) {
3029
removeMenuItem(menu, R.id.nav_gallery, R.id.nav_favorites);
3130
}
32-
33-
if (!resources.getBoolean(R.bool.recently_modified_enabled)) {
34-
menu.removeItem(R.id.nav_recently_modified);
35-
}
3631
}
3732

3833
public static void filterTrashbinMenuItem(Menu menu, @Nullable OCCapability capability) {

app/src/main/res/drawable/ic_list_empty_recent.xml

Lines changed: 0 additions & 16 deletions
This file was deleted.

app/src/main/res/menu/partial_drawer_entries.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@
3939
android:icon="@drawable/selector_share"
4040
android:title="@string/drawer_item_shared" />
4141
<item
42-
android:id="@+id/nav_recently_modified"
42+
android:id="@+id/nav_recent_files"
4343
android:icon="@drawable/selector_recently"
4444
android:orderInCategory="0"
45-
android:title="@string/drawer_item_recently_modified"
45+
android:title="@string/drawer_item_recent_files"
4646
android:visible="true"/>
4747
<item
4848
android:id="@+id/nav_groupfolders"

0 commit comments

Comments
 (0)