Quellcode durchsuchen

Change interface for different needs

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk vor 1 Jahr
Ursprung
Commit
5847afe442

+ 4 - 2
app/src/main/java/com/owncloud/android/ui/adapter/ListGridImageViewHolder.kt

@@ -36,6 +36,8 @@ interface ListGridImageViewHolder {
     val checkbox: ImageView
     val itemLayout: View
     val unreadComments: ImageView
-    val livePhotoIndicator: TextView
-    val livePhotoIndicatorSeparator: TextView
+
+    val gridLivePhotoIndicator: TextView?
+    val livePhotoIndicator: TextView?
+    val livePhotoIndicatorSeparator: TextView?
 }

+ 37 - 36
app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java

@@ -41,6 +41,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
+import android.widget.TextView;
 
 import com.elyeproj.loaderviewlibrary.LoaderImageView;
 import com.nextcloud.android.common.ui.theme.utils.ColorRole;
@@ -398,25 +399,6 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
         }
     }
 
-    private void checkLivePhotoAvailability(ListGridImageViewHolder holder, OCFile file) {
-        boolean isLivePhoto = file.getLivePhoto() != null;
-        holder.getLivePhotoIndicator().setVisibility(isLivePhoto ? (View.VISIBLE) : (View.GONE));
-
-        // FIXME Interface segregation principle violation
-        // 594c962d71b
-        // Not needed for Grid mode unfortunately ListGridImageViewHolder interface used for List and Grid mode
-        holder.getLivePhotoIndicatorSeparator().setVisibility(isLivePhoto ? (View.VISIBLE) : (View.GONE));
-        hideVideoFileOfLivePhoto(holder, file);
-    }
-
-    private void hideVideoFileOfLivePhoto(ListGridImageViewHolder holder, OCFile file) {
-        if (MimeTypeUtil.isVideo(file) && file.getLivePhoto() != null) {
-            holder.getItemLayout().setVisibility(View.GONE);
-        } else {
-            holder.getItemLayout().setVisibility(View.VISIBLE);
-        }
-    }
-
     private void addVideoOCFileOfLivePhoto() {
         HashMap<String, OCFile> livePhotoMap = new HashMap<>();
 
@@ -446,8 +428,43 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
         livePhotoFileCount = livePhotoMap.size();
     }
 
+    private void updateLivePhotoIndicators(ListGridImageViewHolder holder, OCFile file) {
+        boolean isLivePhoto = file.getLivePhoto() != null;
+
+        if (holder instanceof OCFileListItemViewHolder) {
+            holder.getLivePhotoIndicator().setVisibility(isLivePhoto ? (View.VISIBLE) : (View.GONE));
+            holder.getLivePhotoIndicatorSeparator().setVisibility(isLivePhoto ? (View.VISIBLE) : (View.GONE));
+        } else if (holder instanceof OCFileListGridImageViewHolder) {
+            holder.getGridLivePhotoIndicator().setVisibility(isLivePhoto ? (View.VISIBLE) : (View.GONE));
+        }
+
+        hideVideoFileOfLivePhoto(holder, file);
+    }
+
+    private void hideVideoFileOfLivePhoto(ListGridImageViewHolder holder, OCFile file) {
+        boolean isFileVideoAndHaveLivePhoto = MimeTypeUtil.isVideo(file) && file.getLivePhoto() != null;
+        holder.getItemLayout().setVisibility(isFileVideoAndHaveLivePhoto ? View.GONE : View.VISIBLE);
+    }
+
+    private void bindListGridItemViewHolder(ListGridItemViewHolder holder, OCFile file) {
+        updateLivePhotoIndicators(holder, file);
+
+        holder.getFileName().setText(file.getDecryptedFileName());
+
+        boolean gridImage = MimeTypeUtil.isImage(file) || MimeTypeUtil.isVideo(file);
+        if (gridView && gridImage) {
+            holder.getFileName().setVisibility(View.GONE);
+        } else {
+            if (gridView && ocFileListFragmentInterface.getColumnsCount() > showFilenameColumnThreshold) {
+                holder.getFileName().setVisibility(View.GONE);
+            } else {
+                holder.getFileName().setVisibility(View.VISIBLE);
+            }
+        }
+    }
+
     private void bindListItemViewHolder(ListItemViewHolder holder, OCFile file) {
-        checkLivePhotoAvailability(holder, file);
+        updateLivePhotoIndicators(holder, file);
 
         if ((file.isSharedWithMe() || file.isSharedWithSharee()) && !isMultiSelect() && !gridView &&
             !hideItemOptions) {
@@ -560,22 +577,6 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
         }
     }
 
-    private void bindListGridItemViewHolder(ListGridItemViewHolder holder, OCFile file) {
-        checkLivePhotoAvailability(holder, file);
-        holder.getFileName().setText(file.getDecryptedFileName());
-
-        boolean gridImage = MimeTypeUtil.isImage(file) || MimeTypeUtil.isVideo(file);
-        if (gridView && gridImage) {
-            holder.getFileName().setVisibility(View.GONE);
-        } else {
-            if (gridView && ocFileListFragmentInterface.getColumnsCount() > showFilenameColumnThreshold) {
-                holder.getFileName().setVisibility(View.GONE);
-            } else {
-                holder.getFileName().setVisibility(View.VISIBLE);
-            }
-        }
-    }
-
     @Override
     public void onViewAttachedToWindow(@NonNull RecyclerView.ViewHolder holder) {
         if (holder instanceof ListGridImageViewHolder) {

+ 7 - 4
app/src/main/java/com/owncloud/android/ui/adapter/OCFileListGridImageViewHolder.kt

@@ -54,10 +54,13 @@ internal class OCFileListGridImageViewHolder(var binding: GridImageBinding) :
         get() = binding.ListItemLayout
     override val unreadComments: ImageView
         get() = binding.unreadComments
-    override val livePhotoIndicator: TextView
-        get() = binding.livePhotoIndicator
-    override val livePhotoIndicatorSeparator: TextView
-        get() = binding.livePhotoIndicatorSeparator
+
+    override val gridLivePhotoIndicator: TextView
+        get() = binding.gridLivePhotoIndicator
+    override val livePhotoIndicator: TextView?
+        get() = null
+    override val livePhotoIndicatorSeparator: TextView?
+        get() = null
 
     init {
         binding.favoriteAction.drawable.mutate()

+ 7 - 4
app/src/main/java/com/owncloud/android/ui/adapter/OCFileListGridItemViewHolder.kt

@@ -56,10 +56,13 @@ internal class OCFileListGridItemViewHolder(var binding: GridItemBinding) :
         get() = binding.ListItemLayout
     override val unreadComments: ImageView
         get() = binding.unreadComments
-    override val livePhotoIndicator: TextView
-        get() = binding.livePhotoIndicator
-    override val livePhotoIndicatorSeparator: TextView
-        get() = binding.livePhotoIndicatorSeparator
+
+    override val gridLivePhotoIndicator: TextView?
+        get() = null
+    override val livePhotoIndicator: TextView?
+        get() = null
+    override val livePhotoIndicatorSeparator: TextView?
+        get() = null
 
     init {
         binding.favoriteAction.drawable.mutate()

+ 3 - 0
app/src/main/java/com/owncloud/android/ui/adapter/OCFileListItemViewHolder.kt

@@ -37,10 +37,13 @@ internal class OCFileListItemViewHolder(private var binding: ListItemBinding) :
         binding.root
     ),
     ListItemViewHolder {
+    override val gridLivePhotoIndicator: TextView?
+        get() = null
     override val livePhotoIndicator: TextView
         get() = binding.livePhotoIndicator
     override val livePhotoIndicatorSeparator: TextView
         get() = binding.livePhotoIndicatorSeparator
+
     override val fileSize: TextView
         get() = binding.fileSize
     override val fileSizeSeparator: View

+ 0 - 1
app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java

@@ -83,7 +83,6 @@ import javax.inject.Inject;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.StringRes;
-import androidx.appcompat.widget.TooltipCompat;
 import androidx.core.content.ContextCompat;
 import androidx.core.content.res.ResourcesCompat;
 import androidx.fragment.app.Fragment;

+ 18 - 13
app/src/main/res/layout/grid_image.xml

@@ -47,9 +47,10 @@
         android:src="@drawable/file_image" />
 
     <ImageView
+        tools:visibility="visible"
         android:id="@+id/favorite_action"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
+        android:layout_width="16dp"
+        android:layout_height="16dp"
         android:layout_gravity="top|end"
         android:layout_margin="@dimen/standard_quarter_margin"
         android:contentDescription="@string/favorite_icon"
@@ -57,21 +58,23 @@
         android:src="@drawable/favorite" />
 
     <ImageView
+        tools:visibility="visible"
         android:id="@+id/sharedIcon"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
+        android:layout_width="16dp"
+        android:layout_height="16dp"
         android:layout_gravity="top|end"
-        android:layout_marginTop="@dimen/grid_image_shared_icon_layout_top_margin"
+        android:layout_marginTop="32dp"
         android:layout_marginEnd="@dimen/standard_quarter_margin"
         android:contentDescription="@string/shared_icon_shared_via_link"
         android:src="@drawable/shared_via_link" />
 
     <ImageView
+        tools:visibility="visible"
         android:id="@+id/unreadComments"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
+        android:layout_width="16dp"
+        android:layout_height="16dp"
         android:layout_gravity="top|end"
-        android:layout_marginTop="@dimen/grid_image_shared_icon_layout_top_margin"
+        android:layout_marginTop="64dp"
         android:layout_marginEnd="@dimen/standard_quarter_margin"
         android:clickable="true"
         android:contentDescription="@string/unread_comments"
@@ -80,9 +83,10 @@
         android:visibility="gone" />
 
     <ImageView
+        tools:visibility="visible"
         android:id="@+id/localFileIndicator"
-        android:layout_width="@dimen/grid_image_local_file_indicator_layout_width"
-        android:layout_height="@dimen/grid_image_local_file_indicator_layout_height"
+        android:layout_width="16dp"
+        android:layout_height="16dp"
         android:layout_gravity="bottom|end"
         android:layout_marginTop="@dimen/standard_quarter_margin"
         android:layout_marginEnd="@dimen/standard_quarter_margin"
@@ -91,9 +95,9 @@
         android:src="@drawable/ic_synced" />
 
     <TextView
-        android:id="@+id/live_photo_indicator"
+        android:id="@+id/grid_live_photo_indicator"
         tools:visibility="visible"
-        android:visibility="visible"
+        android:visibility="gone"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginLeft="@dimen/standard_quarter_margin"
@@ -101,7 +105,7 @@
         android:text="@string/file_list_live"
         android:drawablePadding="@dimen/standard_eight_padding"
         android:gravity="center"
-        android:layout_gravity="center_vertical|bottom"
+        android:layout_gravity="start|bottom"
         android:textColor="@color/list_item_lastmod_and_filesize_text"
         android:textSize="@dimen/two_line_secondary_text_size"
         app:drawableTopCompat="@drawable/ic_live_photo" />
@@ -113,6 +117,7 @@
         android:layout_height="0dp"/>
 
     <ImageView
+        tools:visibility="visible"
         android:id="@+id/custom_checkbox"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"

+ 0 - 22
app/src/main/res/layout/grid_item.xml

@@ -29,28 +29,6 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
-        <TextView
-            android:contentDescription="Ignore live photo indicator for folder"
-            android:id="@+id/live_photo_indicator"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:layout_marginBottom="12dp"
-            android:visibility="gone"
-            app:layout_constraintBottom_toTopOf="@+id/frameLayout"
-            app:layout_constraintEnd_toStartOf="@+id/favorite_action"
-            tools:ignore="HardcodedText" />
-
-        <TextView
-            android:contentDescription="Ignore live photo indicator for folder"
-            android:id="@+id/live_photo_indicator_separator"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:layout_marginBottom="12dp"
-            android:visibility="gone"
-            app:layout_constraintBottom_toTopOf="@+id/frameLayout"
-            app:layout_constraintEnd_toStartOf="@+id/favorite_action"
-            tools:ignore="HardcodedText" />
-
         <ImageView
             android:id="@+id/favorite_action"
             android:layout_width="wrap_content"