Procházet zdrojové kódy

Merge pull request #6419 from nextcloud/ezaquarii/migrate-preview-image-pager-adapter-to-user-model

Migrate PreviewImagePagerAdapter to User model
Tobias Kaminsky před 4 roky
rodič
revize
b39bceb607

+ 14 - 14
src/main/java/com/owncloud/android/ui/preview/FileDownloadFragment.java

@@ -28,6 +28,7 @@ import android.view.ViewGroup;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
+import com.nextcloud.client.account.User;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
@@ -48,15 +49,15 @@ import androidx.fragment.app.FragmentStatePagerAdapter;
 public class FileDownloadFragment extends FileFragment implements OnClickListener {
 
     public static final String EXTRA_FILE = "FILE";
-    public static final String EXTRA_ACCOUNT = "ACCOUNT";
+    public static final String EXTRA_USER = "USER";
     private static final String EXTRA_ERROR = "ERROR";
 
     private static final String ARG_FILE = "FILE";
     private static final String ARG_IGNORE_FIRST = "IGNORE_FIRST";
-    private static final String ARG_ACCOUNT = "ACCOUNT" ;
+    private static final String ARG_USER = "USER" ;
 
     private View mView;
-    private Account mAccount;
+    private User user;
 
     public ProgressListener mProgressListener;
     private boolean mListening;
@@ -78,15 +79,15 @@ public class FileDownloadFragment extends FileFragment implements OnClickListene
      * When 'file' is null creates a dummy layout (useful when a file wasn't tapped before).
      *
      * @param file                      An {@link OCFile} to show in the fragment
-     * @param account                   An OC account; needed to start downloads
+     * @param user                      Nextcloud user; needed to start downloads
      * @param ignoreFirstSavedState     Flag to work around an unexpected behaviour of {@link FragmentStatePagerAdapter}
      *                                  TODO better solution
      */
-    public static Fragment newInstance(OCFile file, Account account, boolean ignoreFirstSavedState) {
+    public static Fragment newInstance(OCFile file, User user, boolean ignoreFirstSavedState) {
         FileDownloadFragment frag = new FileDownloadFragment();
         Bundle args = new Bundle();
         args.putParcelable(ARG_FILE, file);
-        args.putParcelable(ARG_ACCOUNT, account);
+        args.putParcelable(ARG_USER, user);
         args.putBoolean(ARG_IGNORE_FIRST, ignoreFirstSavedState);
         frag.setArguments(args);
         return frag;
@@ -101,7 +102,6 @@ public class FileDownloadFragment extends FileFragment implements OnClickListene
      */
     public FileDownloadFragment() {
         super();
-        mAccount = null;
         mProgressListener = null;
         mListening = false;
         mIgnoreFirstSavedState = false;
@@ -117,7 +117,7 @@ public class FileDownloadFragment extends FileFragment implements OnClickListene
             // TODO better in super, but needs to check ALL the class extending FileFragment; not right now
 
         mIgnoreFirstSavedState = args.getBoolean(ARG_IGNORE_FIRST);
-        mAccount = args.getParcelable(ARG_ACCOUNT);
+        user = args.getParcelable(ARG_USER);
     }
 
 
@@ -128,9 +128,9 @@ public class FileDownloadFragment extends FileFragment implements OnClickListene
 
         if (savedInstanceState != null) {
             if (!mIgnoreFirstSavedState) {
-                setFile(savedInstanceState.getParcelable(FileDownloadFragment.EXTRA_FILE));
-                mAccount = savedInstanceState.getParcelable(FileDownloadFragment.EXTRA_ACCOUNT);
-                mError = savedInstanceState.getBoolean(FileDownloadFragment.EXTRA_ERROR);
+                setFile(savedInstanceState.getParcelable(EXTRA_FILE));
+                user = savedInstanceState.getParcelable(EXTRA_USER);
+                mError = savedInstanceState.getBoolean(EXTRA_ERROR);
             }
             else {
                 mIgnoreFirstSavedState = false;
@@ -167,7 +167,7 @@ public class FileDownloadFragment extends FileFragment implements OnClickListene
     public void onSaveInstanceState(@NonNull Bundle outState) {
         super.onSaveInstanceState(outState);
         outState.putParcelable(FileDownloadFragment.EXTRA_FILE, getFile());
-        outState.putParcelable(FileDownloadFragment.EXTRA_ACCOUNT, mAccount);
+        outState.putParcelable(FileDownloadFragment.EXTRA_USER, user);
         outState.putBoolean(FileDownloadFragment.EXTRA_ERROR, mError);
     }
 
@@ -263,7 +263,7 @@ public class FileDownloadFragment extends FileFragment implements OnClickListene
     public void listenForTransferProgress() {
         if (mProgressListener != null && !mListening && containerActivity.getFileDownloaderBinder() != null) {
             containerActivity.getFileDownloaderBinder().addDatatransferProgressListener(
-                    mProgressListener, mAccount, getFile()
+                    mProgressListener, user.toPlatformAccount(), getFile()
             );
             mListening = true;
             setButtonsForTransferring();
@@ -274,7 +274,7 @@ public class FileDownloadFragment extends FileFragment implements OnClickListene
     public void leaveTransferProgress() {
         if (mProgressListener != null && containerActivity.getFileDownloaderBinder() != null) {
             containerActivity.getFileDownloaderBinder().removeDatatransferProgressListener(
-                    mProgressListener, mAccount, getFile()
+                    mProgressListener, user.toPlatformAccount(), getFile()
             );
             mListening = false;
         }

+ 9 - 5
src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java

@@ -38,6 +38,7 @@ import android.view.View;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.preferences.AppPreferences;
+import com.nextcloud.java.util.Optional;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
@@ -127,13 +128,15 @@ public class PreviewImageActivity extends FileActivity implements
 
     }
 
-    private void initViewPager() {
+    private void initViewPager(User user) {
         // virtual folder
         if (getIntent().getSerializableExtra(EXTRA_VIRTUAL_TYPE) != null) {
             VirtualFolderType type = (VirtualFolderType) getIntent().getSerializableExtra(EXTRA_VIRTUAL_TYPE);
 
             mPreviewImagePagerAdapter = new PreviewImagePagerAdapter(getSupportFragmentManager(),
-                    type, getAccount(), getStorageManager());
+                                                                     type,
+                                                                     user,
+                                                                     getStorageManager());
         } else {
             // get parent from path
             OCFile parentFolder = getStorageManager().getFileById(getFile().getParentId());
@@ -146,7 +149,7 @@ public class PreviewImageActivity extends FileActivity implements
             mPreviewImagePagerAdapter = new PreviewImagePagerAdapter(
                 getSupportFragmentManager(),
                 parentFolder,
-                getAccount(),
+                user,
                 getStorageManager(),
                 MainApp.isOnlyOnDevice(),
                 preferences
@@ -172,7 +175,8 @@ public class PreviewImageActivity extends FileActivity implements
     @Override
     public void onStart() {
         super.onStart();
-        if (getAccount() != null) {
+        Optional<User> optionalUser = getUser();
+        if (optionalUser.isPresent()) {
             OCFile file = getFile();
             /// Validate handled file (first image to preview)
             if (file == null) {
@@ -192,7 +196,7 @@ public class PreviewImageActivity extends FileActivity implements
                 setFile(file);  // reset after getting it fresh from storageManager
                 getSupportActionBar().setTitle(getFile().getFileName());
                 //if (!stateWasRecovered) {
-                initViewPager();
+                initViewPager(optionalUser.get());
                 //}
 
             } else {

+ 19 - 29
src/main/java/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java

@@ -24,6 +24,7 @@ import android.graphics.Matrix;
 import android.util.SparseArray;
 import android.view.ViewGroup;
 
+import com.nextcloud.client.account.User;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
@@ -32,6 +33,8 @@ import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.utils.FileSortOrder;
 import com.owncloud.android.utils.FileStorageUtils;
 
+import org.jetbrains.annotations.NotNull;
+
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -49,7 +52,7 @@ import androidx.fragment.app.FragmentStatePagerAdapter;
 public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
 
     private List<OCFile> mImageFiles;
-    private Account mAccount;
+    private User user;
     private Set<Object> mObsoleteFragments;
     private Set<Integer> mObsoletePositions;
     private Set<Integer> mDownloadErrors;
@@ -64,14 +67,13 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
      * @param parentFolder      Folder where images will be searched for.
      * @param storageManager    Bridge to database.
      */
-    public PreviewImagePagerAdapter(FragmentManager fragmentManager, OCFile parentFolder,
-                                    Account account, FileDataStorageManager storageManager,
-                                    boolean onlyOnDevice, AppPreferences preferences) {
+    public PreviewImagePagerAdapter(FragmentManager fragmentManager,
+                                    OCFile parentFolder,
+                                    User user,
+                                    FileDataStorageManager storageManager,
+                                    boolean onlyOnDevice,
+                                    AppPreferences preferences) {
         super(fragmentManager);
-
-        if (fragmentManager == null) {
-            throw new IllegalArgumentException("NULL FragmentManager instance");
-        }
         if (parentFolder == null) {
             throw new IllegalArgumentException("NULL parent folder");
         }
@@ -79,7 +81,7 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
             throw new IllegalArgumentException("NULL storage manager");
         }
 
-        mAccount = account;
+        this.user = user;
         mStorageManager = storageManager;
         mImageFiles = mStorageManager.getFolderImages(parentFolder, onlyOnDevice);
 
@@ -100,8 +102,10 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
      * @param type            Type of virtual folder, e.g. favorite or photos
      * @param storageManager  Bridge to database.
      */
-    public PreviewImagePagerAdapter(FragmentManager fragmentManager, VirtualFolderType type,
-                                    Account account, FileDataStorageManager storageManager) {
+    public PreviewImagePagerAdapter(FragmentManager fragmentManager,
+                                    VirtualFolderType type,
+                                    User user,
+                                    FileDataStorageManager storageManager) {
         super(fragmentManager);
 
         if (fragmentManager == null) {
@@ -114,7 +118,7 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
             throw new IllegalArgumentException("NULL storage manager");
         }
 
-        mAccount = account;
+        this.user = user;
         mStorageManager = storageManager;
         mImageFiles = mStorageManager.getVirtualFolderContent(type, true);
 
@@ -143,6 +147,7 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
     }
 
 
+    @NotNull
     public Fragment getItem(int i) {
         OCFile file = getFileAt(i);
         Fragment fragment;
@@ -154,11 +159,11 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
             fragment = PreviewImageFragment.newInstance(file, mObsoletePositions.contains(i), false);
         } else {
             if (mDownloadErrors.remove(i)) {
-                fragment = FileDownloadFragment.newInstance(file, mAccount, true);
+                fragment = FileDownloadFragment.newInstance(file, user, true);
                 ((FileDownloadFragment) fragment).setError(true);
             } else {
                 if (file.isEncrypted()) {
-                    fragment = FileDownloadFragment.newInstance(file, mAccount, mObsoletePositions.contains(i));
+                    fragment = FileDownloadFragment.newInstance(file, user, mObsoletePositions.contains(i));
                 } else {
                     fragment = PreviewImageFragment.newInstance(file, mObsoletePositions.contains(i), true);
                 }
@@ -234,19 +239,4 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
     public boolean pendingErrorAt(int position) {
         return mDownloadErrors.contains(position);
     }
-
-    /**
-     * Reset the image zoom to default value for each CachedFragments
-     */
-    public void resetZoom() {
-        Matrix matrix = new Matrix();
-        for (int i = 0; i < mCachedFragments.size(); i++) {
-            FileFragment fileFragment = mCachedFragments.valueAt(i);
-
-            if (fileFragment instanceof PreviewImageFragment) {
-                ((PreviewImageFragment) fileFragment).getImageView().setDisplayMatrix(matrix);
-                ((PreviewImageFragment) fileFragment).getImageView().setSuppMatrix(matrix);
-            }
-        }
-    }
 }