From 1d222adfdd8f940048cb089f4b445f54a3334bf4 Mon Sep 17 00:00:00 2001 From: A117870935 Date: Thu, 25 May 2023 12:44:52 +0530 Subject: [PATCH] Code cleanup as moved to other PRs. --- app/src/main/AndroidManifest.xml | 7 +- .../preferences/AppPreferencesImpl.java | 2 +- .../nextcloud/ui/fileactions/FileAction.kt | 4 +- .../com/nmc/android/utils/DisplayUtils.kt | 18 --- .../java/com/owncloud/android/MainApp.java | 11 +- .../ui/activity/UploadFilesActivity.java | 49 ++----- .../ui/activity/UploadListActivity.java | 40 ------ .../SimpleListItemDividerDecoration.java | 22 +-- .../LocalStoragePathPickerDialogFragment.java | 8 +- .../ui/fragment/ExtendedListFragment.java | 40 +++--- .../android/ui/fragment/GalleryFragment.java | 2 - .../ui/fragment/OCFileListFragment.java | 132 +----------------- .../ui/preview/PreviewImageFragment.java | 4 +- .../ui/preview/PreviewMediaFragment.java | 4 +- .../ui/preview/PreviewTextFileFragment.java | 4 +- .../android/ui/trashbin/TrashbinActivity.java | 40 ------ .../owncloud/android/utils/DisplayUtils.java | 37 ++--- .../owncloud/android/utils/MimeTypeUtil.java | 15 +- app/src/main/res/drawable/item_divider.xml | 6 - app/src/main/res/layout/toolbar_standard.xml | 9 +- app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values-sw480dp/bool.xml | 4 - app/src/main/res/values/attrs.xml | 6 +- app/src/main/res/values/bool.xml | 4 - app/src/main/res/values/strings.xml | 1 - 25 files changed, 83 insertions(+), 387 deletions(-) delete mode 100644 app/src/main/java/com/nmc/android/utils/DisplayUtils.kt delete mode 100644 app/src/main/res/drawable/item_divider.xml delete mode 100644 app/src/main/res/values-sw480dp/bool.xml delete mode 100644 app/src/main/res/values/bool.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 168d18b8cc86..70b85191b406 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -149,8 +149,7 @@ android:exported="false" /> + android:exported="false"> @@ -164,8 +163,7 @@ android:exported="false" /> + android:exported="false"> @@ -250,7 +248,6 @@ androidInjector() { public static void setAppTheme(DarkMode mode) { - /* switch (mode) { + switch (mode) { case LIGHT: AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); break; case DARK: AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); break; - case SYSTEM:*/ - //NMC Customization - AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM); - /* break; - }*/ + case SYSTEM: + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM); + break; + } } } diff --git a/app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java index f82da1ce6f88..8a8572e3002f 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java @@ -27,7 +27,6 @@ import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Environment; -import android.util.TypedValue; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -59,7 +58,6 @@ import java.io.File; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import javax.inject.Inject; @@ -198,26 +196,12 @@ public void onCreate(Bundle savedInstanceState) { binding.uploadFilesBtnUpload.setOnClickListener(this); binding.uploadFilesBtnUpload.setEnabled(mLocalFolderPickerMode); - //reduce the button text size so that the text doesn't go to next line - //this should only happen for GERMAN language - //and device should not be tablet and should be in portrait mode - if (!com.nmc.android.utils.DisplayUtils.isTablet() && !com.nmc.android.utils.DisplayUtils.isLandscapeOrientation()) { - if (Locale.getDefault().getLanguage().equals(Locale.GERMAN.getLanguage()) - || Locale.getDefault().getLanguage().equals(Locale.GERMANY.getLanguage())) { - binding.uploadFilesBtnUpload.setTextSize(TypedValue.COMPLEX_UNIT_PX, - getResources().getDimensionPixelSize(R.dimen.txt_size_13sp)); - binding.uploadFilesBtnCancel.setTextSize(TypedValue.COMPLEX_UNIT_PX, - getResources().getDimensionPixelSize(R.dimen.txt_size_13sp)); - } - } - int localBehaviour = preferences.getUploaderBehaviour(); // file upload spinner List behaviours = new ArrayList<>(); - // Not required this option for NMC - // behaviours.add(getString(R.string.uploader_upload_files_behaviour_move_to_nextcloud_folder, - // themeUtils.getDefaultDisplayNameForRootFolder(this))); + behaviours.add(getString(R.string.uploader_upload_files_behaviour_move_to_nextcloud_folder, + themeUtils.getDefaultDisplayNameForRootFolder(this))); behaviours.add(getString(R.string.uploader_upload_files_behaviour_only_upload)); behaviours.add(getString(R.string.uploader_upload_files_behaviour_upload_and_delete_from_source)); @@ -226,18 +210,6 @@ public void onCreate(Bundle savedInstanceState) { behaviourAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); binding.uploadFilesSpinnerBehaviour.setAdapter(behaviourAdapter); binding.uploadFilesSpinnerBehaviour.setSelection(localBehaviour); - binding.uploadFilesSpinnerBehaviour.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView adapterView, View view, int i, long l) { - // store behaviour - preferences.setUploaderBehaviour(binding.uploadFilesSpinnerBehaviour.getSelectedItemPosition()); - } - - @Override - public void onNothingSelected(AdapterView adapterView) { - - } - }); // setup the toolbar setupToolbar(); @@ -300,11 +272,7 @@ public void showToolbarSpinner() { private void fillDirectoryDropdown() { File currentDir = mCurrentDir; while (currentDir != null && currentDir.getParentFile() != null) { - if (currentDir.getName().equals("0")) { - mDirectories.add(getResources().getString(R.string.storage_internal_storage)); - } else { - mDirectories.add(currentDir.getName()); - } + mDirectories.add(currentDir.getName()); currentDir = currentDir.getParentFile(); } mDirectories.add(File.separator); @@ -533,16 +501,15 @@ public void onCheckAvailableSpaceFinish(boolean hasEnoughSpaceAvailable, String. // set result code switch (binding.uploadFilesSpinnerBehaviour.getSelectedItemPosition()) { - // Not required for NMC - /*case 0: // move to nextcloud folder + case 0: // move to nextcloud folder setResult(RESULT_OK_AND_MOVE, data); - break;*/ + break; - case 0: // only upload + case 1: // only upload setResult(RESULT_OK_AND_DO_NOTHING, data); break; - case 1: // upload and delete from source + case 2: // upload and delete from source setResult(RESULT_OK_AND_DELETE, data); break; @@ -610,7 +577,7 @@ private void checkWritableFolder(File folder) { int localBehaviour = preferences.getUploaderBehaviour(); binding.uploadFilesSpinnerBehaviour.setSelection(localBehaviour); } else { - binding.uploadFilesSpinnerBehaviour.setSelection(0); + binding.uploadFilesSpinnerBehaviour.setSelection(1); textView.setText(new StringBuilder().append(getString(R.string.uploader_upload_files_behaviour)) .append(' ') .append(getString(R.string.uploader_upload_files_behaviour_not_writable)) 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 8c247e9fb0d4..7ebc62326ae5 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 @@ -30,7 +30,6 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; -import android.content.res.Configuration; import android.os.Bundle; import android.os.IBinder; import android.view.Menu; @@ -57,13 +56,11 @@ import com.owncloud.android.operations.CheckCurrentCredentialsOperation; import com.owncloud.android.ui.adapter.UploadListAdapter; import com.owncloud.android.ui.decoration.MediaGridItemDecoration; -import com.owncloud.android.ui.decoration.SimpleListItemDividerDecoration; import com.owncloud.android.utils.FilesSyncHelper; import com.owncloud.android.utils.theme.ViewThemeUtils; import javax.inject.Inject; -import androidx.annotation.NonNull; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.recyclerview.widget.GridLayoutManager; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; @@ -111,8 +108,6 @@ public class UploadListActivity extends FileActivity { private UploadListLayoutBinding binding; - private SimpleListItemDividerDecoration simpleListItemDividerDecoration; - public static Intent createIntent(OCFile file, User user, Integer flag, Context context) { Intent intent = new Intent(context, UploadListActivity.class); if (flag != null) { @@ -177,8 +172,6 @@ private void setupContent() { int spacing = getResources().getDimensionPixelSize(R.dimen.media_grid_spacing); binding.list.addItemDecoration(new MediaGridItemDecoration(spacing)); binding.list.setLayoutManager(lm); - simpleListItemDividerDecoration = new SimpleListItemDividerDecoration(this, R.drawable.item_divider, true); - addListItemDecorator(); binding.list.setAdapter(uploadListAdapter); viewThemeUtils.androidx.themeSwipeRefreshLayout(swipeListRefreshLayout); @@ -187,23 +180,6 @@ private void setupContent() { loadItems(); } - private void addListItemDecorator() { - if (com.nmc.android.utils.DisplayUtils.isShowDividerForList()) { - //check and remove divider item decorator if exist then add item decorator - removeListDividerDecorator(); - binding.list.addItemDecoration(simpleListItemDividerDecoration); - } - } - - /** - * method to remove the divider item decorator - */ - private void removeListDividerDecorator() { - if (binding.list.getItemDecorationCount() > 0) { - binding.list.removeItemDecoration(simpleListItemDividerDecoration); - } - } - private void loadItems() { uploadListAdapter.loadUploadItemsFromDb(); @@ -386,20 +362,4 @@ public void onReceive(Context context, Intent intent) { }); } } - - @Override - public void onConfigurationChanged(@NonNull Configuration newConfig) { - super.onConfigurationChanged(newConfig); - //this should only run when device is not tablet because we are adding dividers in tablet for both the - // orientations - if (!com.nmc.android.utils.DisplayUtils.isTablet()) { - if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { - //add the divider item decorator when orientation is landscape - addListItemDecorator(); - } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { - //remove the divider item decorator when orientation is portrait - removeListDividerDecorator(); - } - } - } } diff --git a/app/src/main/java/com/owncloud/android/ui/decoration/SimpleListItemDividerDecoration.java b/app/src/main/java/com/owncloud/android/ui/decoration/SimpleListItemDividerDecoration.java index 6dc9de8a8bff..f4f705ed095b 100644 --- a/app/src/main/java/com/owncloud/android/ui/decoration/SimpleListItemDividerDecoration.java +++ b/app/src/main/java/com/owncloud/android/ui/decoration/SimpleListItemDividerDecoration.java @@ -28,7 +28,6 @@ import android.util.DisplayMetrics; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.RecyclerView; @@ -40,8 +39,7 @@ public class SimpleListItemDividerDecoration extends DividerItemDecoration { private final Rect bounds = new Rect(); private Drawable divider; - private int leftPadding = 0; - private boolean hasFooter; + private int leftPadding; /** * Default divider will be used @@ -54,17 +52,6 @@ public SimpleListItemDividerDecoration(Context context) { styledAttributes.recycle(); } - /** - * Custom divider will be used - * - * @param hasFooter if recyclerview has footer and no divider should be shown for footer then pass true else false - */ - public SimpleListItemDividerDecoration(Context context, int resId, boolean hasFooter) { - super(context, DividerItemDecoration.VERTICAL); - this.hasFooter = hasFooter; - divider = ContextCompat.getDrawable(context, resId); - } - @Override public void onDraw(Canvas canvas, RecyclerView parent, RecyclerView.State state) { canvas.save(); @@ -78,12 +65,7 @@ public void onDraw(Canvas canvas, RecyclerView parent, RecyclerView.State state) right = parent.getWidth(); } - int childCount = parent.getChildCount(); - - if (hasFooter) { - childCount = childCount - 1; - } - + final int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = parent.getChildAt(i); parent.getDecoratedBoundsWithMargins(child, bounds); diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/LocalStoragePathPickerDialogFragment.java b/app/src/main/java/com/owncloud/android/ui/dialog/LocalStoragePathPickerDialogFragment.java index d11d67a14461..96e39d372ade 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/LocalStoragePathPickerDialogFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/dialog/LocalStoragePathPickerDialogFragment.java @@ -140,14 +140,12 @@ private List getPathList() { Environment.getExternalStoragePublicDirectory(standardDirectory.getName()).getAbsolutePath()); } + String sdCard = getString(R.string.storage_internal_storage); for (String dir : FileStorageUtils.getStorageDirectories(requireActivity())) { - //NMC Customisation if (internalStoragePaths.contains(dir)) { - String internalStorage = getString(R.string.storage_internal_storage); - addIfExists(storagePathItems, R.drawable.ic_sd_grey600, internalStorage, dir); + addIfExists(storagePathItems, R.drawable.ic_sd_grey600, sdCard, dir); } else { - String sdCard = getString(R.string.storage_sd_card); - addIfExists(storagePathItems, R.drawable.ic_sd, sdCard, dir); + addIfExists(storagePathItems, R.drawable.ic_sd_grey600, new File(dir).getName(), dir); } } 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 80f4ca16c225..c7260043e822 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 @@ -25,7 +25,6 @@ package com.owncloud.android.ui.fragment; import android.animation.LayoutTransition; -import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.res.Configuration; @@ -323,15 +322,34 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, mRecyclerView.setHasFixedSize(true); mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + mScale = preferences.getGridColumns(); setGridViewColumns(1f); + mScaleGestureDetector = new ScaleGestureDetector(MainApp.getAppContext(), new ScaleListener()); + + getRecyclerView().setOnTouchListener((view, motionEvent) -> { + mScaleGestureDetector.onTouchEvent(motionEvent); + + if (motionEvent.getAction() == MotionEvent.ACTION_UP) { + view.performClick(); + } + + return false; + }); + // Pull-down to refresh layout mRefreshListLayout = binding.swipeContainingList; viewThemeUtils.androidx.themeSwipeRefreshLayout(mRefreshListLayout); mRefreshListLayout.setOnRefreshListener(this); mSortButton = getActivity().findViewById(R.id.sort_button); + if (mSortButton != null) { + viewThemeUtils.material.colorMaterialTextButton(mSortButton); + } mSwitchGridViewButton = getActivity().findViewById(R.id.switch_grid_view_button); + if (mSwitchGridViewButton != null) { + viewThemeUtils.material.colorMaterialTextButton(mSwitchGridViewButton); + } return v; } @@ -342,26 +360,6 @@ public void onDestroyView() { binding = null; } - /** - * method to enable recyclerview zooming for grid view - */ - @SuppressLint("ClickableViewAccessibility") - public void enableRecyclerViewGridZooming() { - mScale = preferences.getGridColumns(); - - mScaleGestureDetector = new ScaleGestureDetector(MainApp.getAppContext(), new ScaleListener()); - - getRecyclerView().setOnTouchListener((view, motionEvent) -> { - mScaleGestureDetector.onTouchEvent(motionEvent); - - if (motionEvent.getAction() == MotionEvent.ACTION_UP) { - view.performClick(); - } - - return false; - }); - } - private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { @Override public boolean onScale(ScaleGestureDetector detector) { diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java index 6121188a9c1d..42c86e4c71b8 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java @@ -130,8 +130,6 @@ public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { } }); - enableRecyclerViewGridZooming(); - Log_OC.i(this, "onCreateView() in GalleryFragment end"); return v; } 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 c70ec2951123..159b89991c35 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 @@ -27,7 +27,6 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; -import android.content.res.Configuration; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; @@ -41,7 +40,6 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.view.ViewTreeObserver; import android.widget.AbsListView; import android.widget.Toast; @@ -59,7 +57,6 @@ import com.nextcloud.client.jobs.BackgroundJobManager; import com.nextcloud.client.network.ClientFactory; import com.nextcloud.client.preferences.AppPreferences; -import com.nextcloud.client.preferences.AppPreferencesImpl; import com.nextcloud.client.utils.Throttler; import com.nextcloud.common.NextcloudClient; import com.nextcloud.ui.fileactions.FileActionsBottomSheet; @@ -89,8 +86,6 @@ import com.owncloud.android.ui.activity.UploadFilesActivity; import com.owncloud.android.ui.adapter.CommonOCFileListAdapterInterface; import com.owncloud.android.ui.adapter.OCFileListAdapter; -import com.owncloud.android.ui.decoration.MediaGridItemDecoration; -import com.owncloud.android.ui.decoration.SimpleListItemDividerDecoration; import com.owncloud.android.ui.dialog.ChooseRichDocumentsTemplateDialogFragment; import com.owncloud.android.ui.dialog.ChooseTemplateDialogFragment; import com.owncloud.android.ui.dialog.ConfirmationDialogFragment; @@ -126,7 +121,6 @@ import java.io.File; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -232,9 +226,6 @@ public class OCFileListFragment extends ExtendedListFragment implements protected String mLimitToMimeType; private FloatingActionButton mFabMain; - private SimpleListItemDividerDecoration simpleListItemDividerDecoration; - private MediaGridItemDecoration mediaGridItemDecoration; - @Inject DeviceInfo deviceInfo; protected enum MenuItemAddRemove { @@ -248,13 +239,6 @@ protected enum MenuItemAddRemove { private List mOriginalMenuItems = new ArrayList<>(); - private int maxColumnSizeLandscape = 5; - - //this variable will help us to provide number of span count for grid view - //the width for single item is approx to 360 - private static final int GRID_ITEM_DEFAULT_WIDTH = 360; - private static final int DEFAULT_FALLBACK_SPAN_COUNT = 1; - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -450,10 +434,6 @@ protected void setAdapter(Bundle args) { viewThemeUtils ); - simpleListItemDividerDecoration = new SimpleListItemDividerDecoration(getContext(), R.drawable.item_divider, true); - int spacing = getResources().getDimensionPixelSize(R.dimen.media_grid_spacing); - mediaGridItemDecoration = new MediaGridItemDecoration(spacing); - setRecyclerViewAdapter(mAdapter); fastScrollUtils.applyFastScroll(getRecyclerView()); @@ -564,7 +544,7 @@ public void uploadFiles() { getActivity(), ((FileActivity) getActivity()).getUser().orElseThrow(RuntimeException::new), FileDisplayActivity.REQUEST_CODE__SELECT_FILES_FROM_FILE_SYSTEM, - getCurrentFile().isEncrypted() + getCurrentFile().isEncrypted() ); } @@ -615,10 +595,8 @@ public void onOverflowIconClicked(OCFile file, View view) { public void openActionsMenu(final int filesCount, final Set checkedFiles, final boolean isOverflow) { throttler.run("overflowClick", () -> { - //need to hide the share menu because we have renamed another menu for sharing (NMC) - List additionalToHide = Collections.singletonList(R.id.action_send_share_file); final FragmentManager childFragmentManager = getChildFragmentManager(); - FileActionsBottomSheet.newInstance(filesCount, checkedFiles, isOverflow, additionalToHide) + FileActionsBottomSheet.newInstance(filesCount, checkedFiles, isOverflow) .setResultListener(childFragmentManager, this, (id) -> { onFileActionChosen(id, checkedFiles); }) @@ -1452,7 +1430,6 @@ public void switchToListView() { if (isGridEnabled()) { switchLayoutManager(false); } - addRemoveRecyclerViewItemDecorator(); } public void setGridAsPreferred() { @@ -1464,35 +1441,6 @@ public void switchToGridView() { if (!isGridEnabled()) { switchLayoutManager(true); } - addRemoveRecyclerViewItemDecorator(); - } - - private void addRemoveRecyclerViewItemDecorator() { - if (getRecyclerView().getLayoutManager() instanceof GridLayoutManager) { - removeListDividerDecorator(); - if (getRecyclerView().getItemDecorationCount() == 0) { - getRecyclerView().addItemDecoration(mediaGridItemDecoration); - int padding = getResources().getDimensionPixelSize(R.dimen.grid_recyclerview_padding); - getRecyclerView().setPadding(padding, padding, padding, padding); - } - } else { - if (getRecyclerView().getItemDecorationCount() > 0) { - getRecyclerView().removeItemDecoration(mediaGridItemDecoration); - } - if (getRecyclerView().getItemDecorationCount() == 0 && com.nmc.android.utils.DisplayUtils.isShowDividerForList()) { - getRecyclerView().addItemDecoration(simpleListItemDividerDecoration); - getRecyclerView().setPadding(0, 0, 0, 0); - } - } - } - - /** - * method to remove the divider item decorator - */ - private void removeListDividerDecorator() { - if (getRecyclerView().getItemDecorationCount() > 0) { - getRecyclerView().removeItemDecoration(simpleListItemDividerDecoration); - } } public void switchLayoutManager(boolean grid) { @@ -1523,40 +1471,12 @@ public int getSpanSize(int position) { } getRecyclerView().setLayoutManager(layoutManager); - calculateAndUpdateSpanCount(grid); getRecyclerView().scrollToPosition(position); getAdapter().setGridView(grid); getRecyclerView().setAdapter(getAdapter()); getAdapter().notifyDataSetChanged(); } - /** - * method will calculate the number of spans required for grid item and will update the span accordingly - * - * @param isGrid - */ - private void calculateAndUpdateSpanCount(boolean isGrid) { - getRecyclerView().getViewTreeObserver().addOnGlobalLayoutListener( - new ViewTreeObserver.OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - getRecyclerView().getViewTreeObserver().removeOnGlobalLayoutListener(this); - if (isGrid) { - int viewWidth = getRecyclerView().getMeasuredWidth(); - int newSpanCount = viewWidth / GRID_ITEM_DEFAULT_WIDTH; - RecyclerView.LayoutManager layoutManager = getRecyclerView().getLayoutManager(); - if (layoutManager instanceof GridLayoutManager) { - if (newSpanCount < 1) { - newSpanCount = DEFAULT_FALLBACK_SPAN_COUNT; - } - ((GridLayoutManager) layoutManager).setSpanCount(newSpanCount); - layoutManager.requestLayout(); - } - } - } - }); - } - public CommonOCFileListAdapterInterface getCommonAdapter() { return mAdapter; } @@ -2042,52 +1962,4 @@ public void setFabEnabled(final boolean enabled) { public boolean isEmpty() { return mAdapter == null || mAdapter.isEmpty(); } - - @Override - public void onConfigurationChanged(@NonNull Configuration newConfig) { - super.onConfigurationChanged(newConfig); - if (getAdapter() != null) { - getAdapter().notifyDataSetChanged(); - } - updateSpanCount(newConfig); - } - - /** - * method will update the span count on basis of device orientation for the file listing - * - * @param newConfig current configuration - */ - private void updateSpanCount(Configuration newConfig) { - //this should only run when current view is not media gallery - if (getAdapter() != null) { - int maxColumnSize = (int) AppPreferencesImpl.DEFAULT_GRID_COLUMN; - if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { - //add the divider item decorator when orientation is landscape and device is not tablet - //because we don't have to add divider again as it is already added - if (!com.nmc.android.utils.DisplayUtils.isTablet()) { - addRemoveRecyclerViewItemDecorator(); - } - maxColumnSize = maxColumnSizeLandscape; - } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { - //remove the divider item decorator when orientation is portrait and when device is not tablet - //because we have to show divider in both landscape and portrait mode - if (!com.nmc.android.utils.DisplayUtils.isTablet()) { - removeListDividerDecorator(); - } - maxColumnSize = (int) AppPreferencesImpl.DEFAULT_GRID_COLUMN; - } - - if (isGridEnabled()) { - //for tablet calculate size on the basis of screen width - if (com.nmc.android.utils.DisplayUtils.isTablet()) { - calculateAndUpdateSpanCount(true); - } else { - //and for phones directly show the hardcoded column size - if (getRecyclerView().getLayoutManager() instanceof GridLayoutManager) { - ((GridLayoutManager) getRecyclerView().getLayoutManager()).setSpanCount(maxColumnSize); - } - } - } - } - } } diff --git a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java index 3f8db9eac68c..3ec44ab3cfd5 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java @@ -379,9 +379,7 @@ private void showFileActions(OCFile file) { R.id.action_move, R.id.action_copy, R.id.action_favorite, - R.id.action_unset_favorite, - //hide this option for NMC - R.id.action_see_details + R.id.action_unset_favorite )); if (getFile() != null && getFile().isSharedWithMe() && !getFile().canReshare()) { additionalFilter.add(R.id.action_send_share_file); diff --git a/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java b/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java index e7a6ced180f2..f8b012551d3d 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java @@ -409,9 +409,7 @@ private void showFileActions(OCFile file) { R.id.action_move, R.id.action_copy, R.id.action_favorite, - R.id.action_unset_favorite, - //hide this option for NMC - R.id.action_see_details + R.id.action_unset_favorite )); if (getFile() != null && getFile().isSharedWithMe() && !getFile().canReshare()) { additionalFilter.add(R.id.action_send_share_file); diff --git a/app/src/main/java/com/owncloud/android/ui/preview/PreviewTextFileFragment.java b/app/src/main/java/com/owncloud/android/ui/preview/PreviewTextFileFragment.java index 9be04595175b..a26988735df6 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/PreviewTextFileFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/preview/PreviewTextFileFragment.java @@ -304,9 +304,7 @@ private void showFileActions(OCFile file) { R.id.action_move, R.id.action_copy, R.id.action_favorite, - R.id.action_unset_favorite, - //hide this option for NMC - R.id.action_see_details + R.id.action_unset_favorite )); if (getFile() != null && getFile().isSharedWithMe() && !getFile().canReshare()) { additionalFilter.add(R.id.action_send_share_file); diff --git a/app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.java b/app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.java index 6b16b28e4ad5..7a823e21fb7b 100644 --- a/app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.java @@ -24,7 +24,6 @@ package com.owncloud.android.ui.trashbin; import android.content.Intent; -import android.content.res.Configuration; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; @@ -46,7 +45,6 @@ import com.owncloud.android.ui.EmptyRecyclerView; import com.owncloud.android.ui.activity.DrawerActivity; import com.owncloud.android.ui.adapter.TrashbinListAdapter; -import com.owncloud.android.ui.decoration.SimpleListItemDividerDecoration; import com.owncloud.android.ui.dialog.SortingOrderDialogFragment; import com.owncloud.android.ui.interfaces.TrashbinActivityInterface; import com.owncloud.android.utils.DisplayUtils; @@ -57,7 +55,6 @@ import javax.inject.Inject; -import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.core.content.res.ResourcesCompat; import androidx.recyclerview.widget.LinearLayoutManager; @@ -87,8 +84,6 @@ public class TrashbinActivity extends DrawerActivity implements private boolean active; private TrashbinActivityBinding binding; - private SimpleListItemDividerDecoration simpleListItemDividerDecoration; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -155,8 +150,6 @@ private void setupContent() { recyclerView.setHasFixedSize(true); recyclerView.setHasFooter(true); recyclerView.setLayoutManager(new LinearLayoutManager(this)); - simpleListItemDividerDecoration = new SimpleListItemDividerDecoration(this, R.drawable.item_divider, true); - addListItemDecorator(); viewThemeUtils.androidx.themeSwipeRefreshLayout(binding.swipeContainingList); binding.swipeContainingList.setOnRefreshListener(this::loadFolder); @@ -173,23 +166,6 @@ private void setupContent() { loadFolder(); } - private void addListItemDecorator() { - if (com.nmc.android.utils.DisplayUtils.isShowDividerForList()) { - //check and remove divider item decorator if exist then add item decorator - removeListDividerDecorator(); - binding.list.addItemDecoration(simpleListItemDividerDecoration); - } - } - - /** - * method to remove the divider item decorator - */ - private void removeListDividerDecorator() { - if (binding.list.getItemDecorationCount() > 0) { - binding.list.removeItemDecoration(simpleListItemDividerDecoration); - } - } - protected void loadFolder() { if (trashbinListAdapter.getItemCount() > EMPTY_LIST_COUNT) { binding.swipeContainingList.setRefreshing(true); @@ -355,20 +331,4 @@ public void showError(int message) { binding.emptyList.emptyListView.setVisibility(View.VISIBLE); } } - - @Override - public void onConfigurationChanged(@NonNull Configuration newConfig) { - super.onConfigurationChanged(newConfig); - //this should only run when device is not tablet because we are adding dividers in tablet for both the - // orientations - if (!com.nmc.android.utils.DisplayUtils.isTablet()) { - if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { - //add the divider item decorator when orientation is landscape - addListItemDecorator(); - } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { - //remove the divider item decorator when orientation is portrait - removeListDividerDecorator(); - } - } - } } 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 3c44c3c94f8b..91d5c4f6a73c 100644 --- a/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java +++ b/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java @@ -175,8 +175,8 @@ private DisplayUtils() { * * * @param bytes Input file size - * @return something readable like "12 MB", {@link com.owncloud.android.R.string#common_pending} for negative byte - * values + * @return something readable like "12 MB", {@link com.owncloud.android.R.string#common_pending} for negative + * byte values */ public static String bytesToHumanReadable(long bytes) { if (bytes < 0) { @@ -195,7 +195,8 @@ public static String bytesToHumanReadable(long bytes) { } /** - * Converts MIME types like "image/jpg" to more end user friendly output like "JPG image". + * Converts MIME types like "image/jpg" to more end user friendly output + * like "JPG image". * * @param mimetype MIME type to convert * @return A human friendly version of the MIME type, {@link #MIME_TYPE_UNKNOWN} if it can't be converted @@ -272,7 +273,7 @@ public static String beautifyTwitterHandle(@Nullable String handle) { /** * Converts an internationalized domain name (IDN) in an URL to and from ASCII/Unicode. * - * @param url the URL where the domain name should be converted + * @param url the URL where the domain name should be converted * @param toASCII if true converts from Unicode to ASCII, if false converts from ASCII to Unicode * @return the URL containing the converted domain name */ @@ -312,15 +313,15 @@ public static String getAccountNameDisplayText(User user) { final OwnCloudAccount ocs = user.toOwnCloudAccount(); final String accountName = user.getAccountName(); return ocs.getDisplayName() - + "@" - + convertIdn(accountName.substring(accountName.lastIndexOf('@') + 1), false); + + "@" + + convertIdn(accountName.substring(accountName.lastIndexOf('@') + 1), false); } /** * calculates the relative time string based on the given modification timestamp. * - * @param context the app's context + * @param context the app's context * @param modificationTimestamp the UNIX timestamp of the file modification time in milliseconds. * @return a relative time string */ @@ -442,17 +443,17 @@ public interface AvatarGenerationListener { /** * fetches and sets the avatar of the given account in the passed callContext * - * @param user the account to be used to connect to server - * @param avatarRadius the avatar radius - * @param resources reference for density information - * @param callContext which context is called to set the generated avatar + * @param user the account to be used to connect to server + * @param avatarRadius the avatar radius + * @param resources reference for density information + * @param callContext which context is called to set the generated avatar */ public static void setAvatar(@NonNull User user, AvatarGenerationListener listener, float avatarRadius, Resources resources, Object callContext, Context context) { AccountManager accountManager = AccountManager.get(context); String userId = accountManager.getUserData(user.toPlatformAccount(), - com.owncloud.android.lib.common.accounts.AccountUtils.Constants.KEY_USER_ID); + com.owncloud.android.lib.common.accounts.AccountUtils.Constants.KEY_USER_ID); setAvatar(user, userId, listener, avatarRadius, resources, callContext, context); } @@ -460,11 +461,11 @@ public static void setAvatar(@NonNull User user, AvatarGenerationListener listen /** * fetches and sets the avatar of the given account in the passed callContext * - * @param user the account to be used to connect to server - * @param userId the userId which avatar should be set - * @param avatarRadius the avatar radius - * @param resources reference for density information - * @param callContext which context is called to set the generated avatar + * @param user the account to be used to connect to server + * @param userId the userId which avatar should be set + * @param avatarRadius the avatar radius + * @param resources reference for density information + * @param callContext which context is called to set the generated avatar */ public static void setAvatar(@NonNull User user, @NonNull String userId, AvatarGenerationListener listener, float avatarRadius, Resources resources, Object callContext, Context context) { @@ -617,7 +618,7 @@ private static void switchToSearchFragment(Activity activity, SearchEvent event) /** * Get String data from a InputStream * - * @param inputStream The File InputStream + * @param inputStream The File InputStream */ public static String getData(InputStream inputStream) { diff --git a/app/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java b/app/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java index d7b342fca31c..f6790d5bc3ab 100644 --- a/app/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java +++ b/app/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java @@ -103,8 +103,13 @@ public static Drawable getFileTypeIcon(String mimetype, ViewThemeUtils viewThemeUtils) { if (context != null) { int iconId = MimeTypeUtil.getFileTypeIconId(mimetype, filename); - //NMC Customization - return ContextCompat.getDrawable(context, iconId); + Drawable icon = ContextCompat.getDrawable(context, iconId); + + if (R.drawable.file_zip == iconId) { + viewThemeUtils.platform.tintPrimaryDrawable(context, icon); + } + + return icon; } else { return null; } @@ -149,7 +154,7 @@ public static Drawable getFolderTypeIcon(boolean isSharedViaUsers, if (WebdavEntry.MountType.GROUP == mountType || isGroupFolder) { drawableId = R.drawable.folder_group; } else if (isSharedViaLink && !isEncrypted) { - drawableId = R.drawable.folder_shared_users; + drawableId = R.drawable.folder_shared_link; } else if (isSharedViaUsers) { drawableId = R.drawable.folder_shared_users; } else if (isEncrypted) { @@ -162,7 +167,9 @@ public static Drawable getFolderTypeIcon(boolean isSharedViaUsers, drawableId = R.drawable.folder; } - return ContextCompat.getDrawable(context, drawableId); + Drawable drawable = ContextCompat.getDrawable(context, drawableId); + viewThemeUtils.platform.tintPrimaryDrawable(context, drawable); + return drawable; } public static Drawable getDefaultFolderIcon(Context context, diff --git a/app/src/main/res/drawable/item_divider.xml b/app/src/main/res/drawable/item_divider.xml deleted file mode 100644 index 9f742e91d67c..000000000000 --- a/app/src/main/res/drawable/item_divider.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - diff --git a/app/src/main/res/layout/toolbar_standard.xml b/app/src/main/res/layout/toolbar_standard.xml index b768840eb99b..6798d5e28165 100644 --- a/app/src/main/res/layout/toolbar_standard.xml +++ b/app/src/main/res/layout/toolbar_standard.xml @@ -54,12 +54,12 @@ android:text="@string/menu_item_sort_by_date_newest_first" android:textAlignment="textStart" android:textAllCaps="false" - android:textColor="@color/sort_text_color" + android:textColor="@color/fontAppbar" android:textSize="14sp" app:icon="@drawable/ic_keyboard_arrow_down" app:iconGravity="textEnd" - app:iconSize="12dp" - app:iconTint="@color/sort_text_color" + app:iconSize="16dp" + app:iconTint="@color/fontAppbar" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -73,7 +73,7 @@ android:contentDescription="@string/action_switch_grid_view" app:cornerRadius="24dp" app:icon="@drawable/ic_view_module" - app:iconTint="@color/icon_color" + app:iconTint="@color/fontAppbar" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -97,7 +97,6 @@ android:id="@+id/preview_image" android:layout_width="match_parent" android:layout_height="@dimen/nav_drawer_header_height" - android:background="@color/bg_default" android:contentDescription="@string/preview_image_description" android:scaleType="centerCrop" /> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 5364b4b99d94..370342829f21 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -921,7 +921,6 @@ E-Mail senden Speicherordner existiert nicht! Ursache könnte die Wiederherstellung einer Sicherungskopie auf einem anderen Gerät sein. Der Standard-Ordner wird jetzt wieder verwendet. Bitte überprüfen Sie die Einstellungen bezüglich des Speicherortes. - SD-Karte Inhalte von %1$d Datei konnten nicht synchronisiert werden (Konflikte: %2$d) Inhalte von %1$d Dateien konnten nicht synchronisiert werden (Konflikte: %2$d) diff --git a/app/src/main/res/values-sw480dp/bool.xml b/app/src/main/res/values-sw480dp/bool.xml deleted file mode 100644 index 8e66f10e898c..000000000000 --- a/app/src/main/res/values-sw480dp/bool.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - true - diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index afcbfa9dfd5e..f5d46ac6a728 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -2,15 +2,13 @@ @string/pref_behaviour_entries_keep_file - - + @string/pref_behaviour_entries_move @string/pref_behaviour_entries_delete_file LOCAL_BEHAVIOUR_FORGET - - + LOCAL_BEHAVIOUR_MOVE LOCAL_BEHAVIOUR_DELETE diff --git a/app/src/main/res/values/bool.xml b/app/src/main/res/values/bool.xml deleted file mode 100644 index c2dcd8baf0ea..000000000000 --- a/app/src/main/res/values/bool.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - false - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 225d82b010a6..ca3a8e205ea2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -991,7 +991,6 @@ Delete Link Settings Confirm - SD Card Strict mode: no HTTP connection allowed! Destination filename Suggest