|
@@ -28,6 +28,7 @@ import android.accounts.Account;
|
|
|
import android.app.Activity;
|
|
|
import android.content.Context;
|
|
|
import android.content.Intent;
|
|
|
+import android.graphics.drawable.Drawable;
|
|
|
import android.os.AsyncTask;
|
|
|
import android.os.Build;
|
|
|
import android.os.Bundle;
|
|
@@ -120,6 +121,7 @@ import androidx.annotation.NonNull;
|
|
|
import androidx.annotation.Nullable;
|
|
|
import androidx.annotation.StringRes;
|
|
|
import androidx.appcompat.app.ActionBar;
|
|
|
+import androidx.core.content.ContextCompat;
|
|
|
import androidx.drawerlayout.widget.DrawerLayout;
|
|
|
import androidx.fragment.app.FragmentActivity;
|
|
|
import androidx.recyclerview.widget.GridLayoutManager;
|
|
@@ -128,6 +130,13 @@ import androidx.recyclerview.widget.RecyclerView;
|
|
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
|
|
|
|
|
import static com.owncloud.android.datamodel.OCFile.ROOT_PATH;
|
|
|
+import static com.owncloud.android.utils.DisplayUtils.openSortingOrderDialogFragment;
|
|
|
+import static com.owncloud.android.utils.FileSortOrder.sort_a_to_z_id;
|
|
|
+import static com.owncloud.android.utils.FileSortOrder.sort_big_to_small_id;
|
|
|
+import static com.owncloud.android.utils.FileSortOrder.sort_new_to_old_id;
|
|
|
+import static com.owncloud.android.utils.FileSortOrder.sort_old_to_new_id;
|
|
|
+import static com.owncloud.android.utils.FileSortOrder.sort_small_to_big_id;
|
|
|
+import static com.owncloud.android.utils.FileSortOrder.sort_z_to_a_id;
|
|
|
|
|
|
/**
|
|
|
* A Fragment that lists all files and folders in a given path.
|
|
@@ -352,9 +361,17 @@ public class OCFileListFragment extends ExtendedListFragment implements
|
|
|
}
|
|
|
prepareCurrentSearch(searchEvent);
|
|
|
|
|
|
- if (isGridViewPreferred(getCurrentFile())) {
|
|
|
- switchToGridView();
|
|
|
- }
|
|
|
+ mSortButton.setOnClickListener(v -> openSortingOrderDialogFragment(requireFragmentManager(),
|
|
|
+ preferences.getSortOrderByFolder(mFile)));
|
|
|
+
|
|
|
+ mSwitchGridViewButton.setOnClickListener(v -> {
|
|
|
+ if (isGridEnabled()) {
|
|
|
+ setListAsPreferred();
|
|
|
+ } else {
|
|
|
+ setGridAsPreferred();
|
|
|
+ }
|
|
|
+ setGridSwitchButton();
|
|
|
+ });
|
|
|
|
|
|
setTitle();
|
|
|
|
|
@@ -528,7 +545,9 @@ public class OCFileListFragment extends ExtendedListFragment implements
|
|
|
|
|
|
@Override
|
|
|
public void onHeaderClicked() {
|
|
|
- ((FileDisplayActivity) mContainerActivity).startRichWorkspacePreview(getCurrentFile());
|
|
|
+ if (!getAdapter().isMultiSelect()) {
|
|
|
+ ((FileDisplayActivity) mContainerActivity).startRichWorkspacePreview(getCurrentFile());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -745,12 +764,11 @@ public class OCFileListFragment extends ExtendedListFragment implements
|
|
|
|
|
|
@Override
|
|
|
public void onPrepareOptionsMenu(@NonNull Menu menu) {
|
|
|
- Menu mMenu = menu;
|
|
|
|
|
|
if (mOriginalMenuItems.size() == 0) {
|
|
|
- mOriginalMenuItems.add(mMenu.findItem(R.id.action_switch_view));
|
|
|
- mOriginalMenuItems.add(mMenu.findItem(R.id.action_sort));
|
|
|
- mOriginalMenuItems.add(mMenu.findItem(R.id.action_search));
|
|
|
+ mOriginalMenuItems.add(menu.findItem(R.id.action_switch_view));
|
|
|
+ mOriginalMenuItems.add(menu.findItem(R.id.action_sort));
|
|
|
+ mOriginalMenuItems.add(menu.findItem(R.id.action_search));
|
|
|
}
|
|
|
|
|
|
changeGridIcon(menu); // this is enough if the option stays out of the action bar
|
|
@@ -763,6 +781,7 @@ public class OCFileListFragment extends ExtendedListFragment implements
|
|
|
menu.add(menuItemOrig.getGroupId(), menuItemOrig.getItemId(), menuItemOrig.getOrder(),
|
|
|
menuItemOrig.getTitle());
|
|
|
}
|
|
|
+ mSortButton.setVisibility(View.VISIBLE);
|
|
|
|
|
|
} else if (menuItemAddRemoveValue == MenuItemAddRemove.ADD_GRID_AND_SORT) {
|
|
|
if (menu.findItem(R.id.action_switch_view) == null) {
|
|
@@ -770,12 +789,14 @@ public class OCFileListFragment extends ExtendedListFragment implements
|
|
|
menu.add(menuItemOrig.getGroupId(), menuItemOrig.getItemId(), menuItemOrig.getOrder(),
|
|
|
menuItemOrig.getTitle());
|
|
|
}
|
|
|
+ mSwitchGridViewButton.setVisibility(View.VISIBLE);
|
|
|
|
|
|
if (menu.findItem(R.id.action_sort) == null) {
|
|
|
menuItemOrig = mOriginalMenuItems.get(1);
|
|
|
menu.add(menuItemOrig.getGroupId(), menuItemOrig.getItemId(), menuItemOrig.getOrder(),
|
|
|
menuItemOrig.getTitle());
|
|
|
}
|
|
|
+ mSortButton.setVisibility(View.VISIBLE);
|
|
|
} else if (menuItemAddRemoveValue == MenuItemAddRemove.REMOVE_SEARCH) {
|
|
|
menu.removeItem(R.id.action_search);
|
|
|
} else if (menuItemAddRemoveValue == MenuItemAddRemove.ADD_GRID_AND_SORT_WITH_SEARCH) {
|
|
@@ -784,12 +805,14 @@ public class OCFileListFragment extends ExtendedListFragment implements
|
|
|
menu.add(menuItemOrig.getGroupId(), menuItemOrig.getItemId(), menuItemOrig.getOrder(),
|
|
|
menuItemOrig.getTitle());
|
|
|
}
|
|
|
+ mSwitchGridViewButton.setVisibility(View.VISIBLE);
|
|
|
|
|
|
if (menu.findItem(R.id.action_sort) == null) {
|
|
|
menuItemOrig = mOriginalMenuItems.get(1);
|
|
|
menu.add(menuItemOrig.getGroupId(), menuItemOrig.getItemId(), menuItemOrig.getOrder(),
|
|
|
menuItemOrig.getTitle());
|
|
|
}
|
|
|
+ mSortButton.setVisibility(View.VISIBLE);
|
|
|
|
|
|
if (menu.findItem(R.id.action_search) == null) {
|
|
|
menuItemOrig = mOriginalMenuItems.get(2);
|
|
@@ -799,10 +822,13 @@ public class OCFileListFragment extends ExtendedListFragment implements
|
|
|
} else if (menuItemAddRemoveValue == MenuItemAddRemove.REMOVE_SORT) {
|
|
|
menu.removeItem(R.id.action_sort);
|
|
|
menu.removeItem(R.id.action_search);
|
|
|
+ mSortButton.setVisibility(View.GONE);
|
|
|
} else if (menuItemAddRemoveValue == MenuItemAddRemove.REMOVE_GRID_AND_SORT) {
|
|
|
menu.removeItem(R.id.action_sort);
|
|
|
menu.removeItem(R.id.action_switch_view);
|
|
|
menu.removeItem(R.id.action_search);
|
|
|
+ mSortButton.setVisibility(View.GONE);
|
|
|
+ mSwitchGridViewButton.setVisibility(View.GONE);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1270,6 +1296,9 @@ public class OCFileListFragment extends ExtendedListFragment implements
|
|
|
switchToListView();
|
|
|
}
|
|
|
|
|
|
+ setSortButton(preferences.getSortOrderByFolder(mFile));
|
|
|
+ setGridSwitchButton();
|
|
|
+
|
|
|
if (mHideFab) {
|
|
|
setFabVisible(false);
|
|
|
} else {
|
|
@@ -1291,9 +1320,46 @@ public class OCFileListFragment extends ExtendedListFragment implements
|
|
|
|
|
|
|
|
|
public void sortFiles(FileSortOrder sortOrder) {
|
|
|
+ setSortButton(sortOrder);
|
|
|
mAdapter.setSortOrder(mFile, sortOrder);
|
|
|
}
|
|
|
|
|
|
+ private void setSortButton(FileSortOrder sortOrder) {
|
|
|
+ int nameId;
|
|
|
+ switch (sortOrder.name) {
|
|
|
+ case sort_z_to_a_id:
|
|
|
+ nameId = R.string.menu_item_sort_by_name_z_a;
|
|
|
+ break;
|
|
|
+ case sort_new_to_old_id:
|
|
|
+ nameId = R.string.menu_item_sort_by_date_newest_first;
|
|
|
+ break;
|
|
|
+ case sort_old_to_new_id:
|
|
|
+ nameId = R.string.menu_item_sort_by_date_oldest_first;
|
|
|
+ break;
|
|
|
+ case sort_big_to_small_id:
|
|
|
+ nameId = R.string.menu_item_sort_by_size_biggest_first;
|
|
|
+ break;
|
|
|
+ case sort_small_to_big_id:
|
|
|
+ nameId = R.string.menu_item_sort_by_size_smallest_first;
|
|
|
+ break;
|
|
|
+ case sort_a_to_z_id:
|
|
|
+ default:
|
|
|
+ nameId = R.string.menu_item_sort_by_name_a_z;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ mSortButton.setText(getString(nameId));
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setGridSwitchButton() {
|
|
|
+ if (isGridEnabled()) {
|
|
|
+ mSwitchGridViewButton.setContentDescription(getString(R.string.action_switch_list_view));
|
|
|
+ mSwitchGridViewButton.setIcon(ContextCompat.getDrawable(requireContext(), R.drawable.ic_view_list));
|
|
|
+ } else {
|
|
|
+ mSwitchGridViewButton.setContentDescription(getString(R.string.action_switch_grid_view));
|
|
|
+ mSwitchGridViewButton.setIcon(ContextCompat.getDrawable(requireContext(), R.drawable.ic_view_module));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Determines if user set folder to grid or list view. If folder is not set itself,
|
|
|
* it finds a parent that is set (at least root is set).
|