android:orientation="horizontal" >\r
\r
<ImageView\r
- android:id="@+id/imageView1"\r
+ android:id="@+id/thumbnail"\r
android:layout_width="0dp"\r
android:layout_height="wrap_content"\r
android:layout_weight="1"\r
android:padding="8dp" >\r
\r
<ImageView\r
- android:id="@+id/imageView1"\r
+ android:id="@+id/thumbnail"\r
android:layout_width="match_parent"\r
android:layout_height="wrap_content"\r
android:layout_marginBottom="10dp"\r
android:gravity="center_horizontal"\r
android:orientation="vertical" >\r
\r
- <com.owncloud.android.ui.SquareImageView\r
- android:id="@+id/imageView1"\r
- android:layout_width="match_parent"\r
- android:layout_height="match_parent"\r
- android:layout_gravity="fill"\r
- android:paddingLeft="10dp"\r
- android:paddingRight="10dp"\r
- android:scaleType="centerCrop"\r
- android:src="@drawable/ic_menu_archive" />\r
-\r
<FrameLayout\r
- android:id="@+id/imageItemFrame"\r
- android:layout_width="wrap_content"\r
- android:layout_height="match_parent"\r
- android:focusable="false"\r
- android:focusableInTouchMode="false" >\r
-\r
- <ImageView\r
- android:id="@+id/sharedIcon"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_marginBottom="4dp"\r
- android:layout_marginLeft="4dp"\r
- android:layout_marginRight="4dp"\r
- android:src="@drawable/sharedlink" />\r
-\r
- <ImageView\r
- android:id="@+id/sharedWithMeIcon"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_marginLeft="4dp"\r
- android:layout_marginRight="4dp"\r
- android:layout_marginTop="4dp"\r
- android:src="@drawable/shared_with_me" />\r
-\r
- <ImageView\r
- android:id="@+id/custom_checkbox"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_marginLeft="4dp"\r
- android:layout_marginRight="4dp"\r
- android:src="@android:drawable/checkbox_off_background" />\r
+ android:layout_width="match_parent"\r
+ android:layout_height="wrap_content" >\r
\r
- <TextView\r
- android:id="@+id/Filename"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_marginLeft="4dp"\r
- android:layout_marginRight="4dp"\r
- android:ellipsize="middle"\r
- android:singleLine="true"\r
- android:text="TextView"\r
- android:textColor="#303030"\r
- android:textSize="16dip" />\r
+ <com.owncloud.android.ui.SquareImageView\r
+ android:id="@+id/thumbnail"\r
+ android:layout_width="match_parent"\r
+ android:layout_height="match_parent"\r
+ android:paddingLeft="10dp"\r
+ android:paddingRight="10dp"\r
+ android:scaleType="centerCrop"\r
+ android:src="@drawable/ic_menu_archive" />\r
\r
<ImageView\r
- android:id="@+id/imageView3"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
+ android:id="@+id/favoriteIcon"\r
+ android:layout_width="15dp"\r
+ android:layout_height="15dp"\r
android:layout_gravity="bottom|right"\r
- android:layout_marginBottom="10dp"\r
+ android:layout_marginBottom="2dp"\r
android:layout_marginRight="2dp"\r
android:src="@drawable/ic_favorite" />\r
\r
- <TextView\r
- android:id="@+id/last_mod"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_weight=".5"\r
- android:text="TextView"\r
- android:textColor="@color/list_item_lastmod_and_filesize_text"\r
- android:textSize="12dip" />\r
-\r
- <TextView\r
- android:id="@+id/file_size"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_weight=".5"\r
- android:gravity="right"\r
- android:text="TextView"\r
- android:textColor="@color/list_item_lastmod_and_filesize_text"\r
- android:textSize="12dip" />\r
</FrameLayout>\r
\r
- <ImageView\r
- android:id="@+id/imageView2"\r
- android:layout_width="40dp"\r
- android:layout_height="22dp"\r
- android:layout_marginLeft="22dp"\r
- android:src="@drawable/local_file_indicator" />\r
-\r
</LinearLayout>
\ No newline at end of file
along with this program. If not, see <http://www.gnu.org/licenses/>.\r
\r
-->\r
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+<com.owncloud.android.ui.SquareLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
android:id="@+id/ListItemLayout"\r
android:layout_width="match_parent"\r
android:layout_height="match_parent"\r
android:gravity="center"\r
android:orientation="vertical" >\r
\r
- <ImageView\r
- android:id="@+id/imageView1"\r
- android:layout_width="90dp"\r
- android:layout_height="90dp"\r
- android:layout_marginLeft="10dp"\r
- android:layout_marginRight="10dp"\r
- android:src="@drawable/ic_menu_archive" />\r
+ <FrameLayout\r
+ android:layout_width="match_parent"\r
+ android:layout_height="wrap_content"\r
+ android:layout_gravity="center_horizontal" >\r
+\r
+ <ImageView\r
+ android:id="@+id/favoriteIcon"\r
+ android:layout_width="15dp"\r
+ android:layout_height="15dp"\r
+ android:layout_gravity="bottom|right"\r
+ android:layout_marginBottom="2dp"\r
+ android:layout_marginRight="2dp"\r
+ android:src="@drawable/ic_favorite" />\r
+\r
+ <ImageView\r
+ android:id="@+id/thumbnail"\r
+ android:layout_width="80dp"\r
+ android:layout_height="80dp"\r
+ android:layout_gravity="center_horizontal"\r
+ android:layout_marginLeft="10dp"\r
+ android:layout_marginRight="10dp"\r
+ android:src="@drawable/ic_menu_archive" />\r
+\r
+ </FrameLayout>\r
\r
<TextView\r
android:id="@+id/Filename"\r
- android:layout_width="100dp"\r
+ android:layout_width="match_parent"\r
android:layout_height="wrap_content"\r
- android:layout_gravity="center_horizontal"\r
android:layout_marginLeft="4dp"\r
android:layout_marginRight="4dp"\r
android:ellipsize="middle"\r
android:textColor="#303030"\r
android:textSize="16dip" />\r
\r
- <ImageView\r
- android:id="@+id/imageView2"\r
- android:layout_width="40dp"\r
- android:layout_height="22dp"\r
- android:layout_marginLeft="22dp"\r
- android:src="@drawable/local_file_indicator" />\r
-\r
- <TextView\r
- android:id="@+id/file_size"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_weight=".5"\r
- android:gravity="right"\r
- android:text="TextView"\r
- android:textColor="@color/list_item_lastmod_and_filesize_text"\r
- android:textSize="12dip" />\r
-\r
- <FrameLayout\r
- android:id="@+id/imageItemFrame"\r
- android:layout_width="56dp"\r
- android:layout_height="56dp"\r
- android:focusable="false"\r
- android:focusableInTouchMode="false" >\r
-\r
- <ImageView\r
- android:id="@+id/sharedIcon"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_marginBottom="4dp"\r
- android:layout_marginLeft="4dp"\r
- android:layout_marginRight="4dp"\r
- android:src="@drawable/sharedlink" />\r
-\r
- <ImageView\r
- android:id="@+id/sharedWithMeIcon"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_marginLeft="4dp"\r
- android:layout_marginRight="4dp"\r
- android:layout_marginTop="4dp"\r
- android:src="@drawable/shared_with_me" />\r
-\r
- <ImageView\r
- android:id="@+id/custom_checkbox"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_marginLeft="4dp"\r
- android:layout_marginRight="4dp"\r
- android:src="@android:drawable/checkbox_off_background" />\r
-\r
- <ImageView\r
- android:id="@+id/imageView3"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_gravity="bottom|right"\r
- android:layout_marginBottom="10dp"\r
- android:layout_marginRight="2dp"\r
- android:src="@drawable/ic_favorite" />\r
-\r
- <TextView\r
- android:id="@+id/last_mod"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_weight=".5"\r
- android:text="TextView"\r
- android:textColor="@color/list_item_lastmod_and_filesize_text"\r
- android:textSize="12dip" />\r
- </FrameLayout>\r
-\r
-</LinearLayout>
\ No newline at end of file
+</com.owncloud.android.ui.SquareLinearLayout>
\ No newline at end of file
android:focusableInTouchMode="false">\r
\r
<ImageView\r
- android:id="@+id/imageView2"\r
+ android:id="@+id/localFileIndicator"\r
android:layout_width="32dp"\r
android:layout_height="32dp"\r
android:layout_gravity="center_vertical"\r
android:src="@drawable/local_file_indicator" />\r
\r
<ImageView\r
- android:id="@+id/imageView1"\r
+ android:id="@+id/thumbnail"\r
android:layout_width="32dp"\r
android:layout_height="32dp"\r
android:layout_gravity="center_vertical"\r
android:src="@drawable/ic_menu_archive" />\r
\r
<ImageView\r
- android:id="@+id/imageView3"\r
+ android:id="@+id/favoriteIcon"\r
android:layout_width="wrap_content"\r
android:layout_height="wrap_content"\r
android:layout_gravity="bottom|right"\r
android:layout_gravity="center_vertical|center"
android:layout_margin="4dp"
android:src="@drawable/ic_menu_archive"
- android:id="@+id/imageView1" />
+ android:id="@+id/thumbnail" />
<TextView
android:text="TextView"
--- /dev/null
+package com.owncloud.android.ui;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.LinearLayout;
+
+public class SquareLinearLayout extends LinearLayout {
+
+ public SquareLinearLayout(Context context) {
+ super(context);
+ }
+
+ public SquareLinearLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public SquareLinearLayout(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ super.onMeasure(widthMeasureSpec, widthMeasureSpec);
+ }
+}
private FileDataStorageManager mStorageManager;
private Account mAccount;
private ComponentsGetter mTransferServiceGetter;\r
+ private enum ViewType {LIST_ITEM, GRID_IMAGE, GRID_ITEM };\r
\r
public FileListListAdapter(\r
boolean justFolders, \r
file = mFiles.get(position);\r
}\r
\r
+ // Find out which layout should be displayed\r
+ ViewType viewType;\r
if (fileView){\r
- view = inflator.inflate(R.layout.list_item, null);\r
+ viewType = ViewType.LIST_ITEM;\r
+ } else if (file.isImage()){\r
+ viewType = ViewType.GRID_IMAGE;\r
} else {\r
- if (file.isImage()){\r
- view = inflator.inflate(R.layout.grid_image, null);\r
- } else {\r
- view = inflator.inflate(R.layout.grid_item, null);\r
- }\r
- \r
- View frame = view.findViewById(R.id.imageItemFrame);\r
- frame.setVisibility(View.GONE);\r
+ viewType = ViewType.GRID_ITEM;\r
+ }\r
+\r
+ // Create View\r
+ switch (viewType){\r
+ case GRID_IMAGE:\r
+ view = inflator.inflate(R.layout.grid_image, null);\r
+ break;\r
+ case GRID_ITEM:\r
+ view = inflator.inflate(R.layout.grid_item, null);\r
+ break;\r
+ case LIST_ITEM:\r
+ view = inflator.inflate(R.layout.list_item, null);\r
+ break;\r
}\r
+\r
view.invalidate();\r
- \r
- if (file != null){\r
- TextView fileName = (TextView) view.findViewById(R.id.Filename);\r
- // if (!fileView){fileName.setVisibility(View.GONE);}\r
- String name = file.getFileName();\r
\r
- fileName.setText(name);\r
- ImageView fileIcon = (ImageView) view.findViewById(R.id.imageView1);\r
- ImageView sharedIconV = (ImageView) view.findViewById(R.id.sharedIcon);\r
- ImageView sharedWithMeIconV = (ImageView) view.findViewById(R.id.sharedWithMeIcon);\r
- sharedWithMeIconV.setVisibility(View.GONE);\r
+ if (file != null){\r
\r
- ImageView localStateView = (ImageView) view.findViewById(R.id.imageView2);\r
- localStateView.bringToFront();\r
- FileDownloaderBinder downloaderBinder = mTransferServiceGetter.getFileDownloaderBinder();\r
- FileUploaderBinder uploaderBinder = mTransferServiceGetter.getFileUploaderBinder();\r
- if (downloaderBinder != null && downloaderBinder.isDownloading(mAccount, file)) {\r
- localStateView.setImageResource(R.drawable.downloading_file_indicator);\r
- localStateView.setVisibility(View.VISIBLE);\r
- } else if (uploaderBinder != null && uploaderBinder.isUploading(mAccount, file)) {\r
- localStateView.setImageResource(R.drawable.uploading_file_indicator);\r
- localStateView.setVisibility(View.VISIBLE);\r
- } else if (file.isDown()) {\r
- localStateView.setImageResource(R.drawable.local_file_indicator);\r
- localStateView.setVisibility(View.VISIBLE);\r
- } else {\r
- localStateView.setVisibility(View.INVISIBLE);\r
- }\r
+ ImageView fileIcon = (ImageView) view.findViewById(R.id.thumbnail);\r
+ TextView fileName;\r
+ String name;\r
\r
- if (!fileView){\r
- localStateView.setVisibility(View.GONE);\r
- }\r
- \r
- TextView fileSizeV = (TextView) view.findViewById(R.id.file_size);\r
- TextView lastModV = (TextView) view.findViewById(R.id.last_mod);\r
- ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);\r
- \r
- if (!file.isFolder()) {\r
- fileSizeV.setVisibility(View.VISIBLE);\r
- fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));\r
+ switch (viewType){\r
+ case LIST_ITEM:\r
+ fileName = (TextView) view.findViewById(R.id.Filename);\r
+ name = file.getFileName();\r
+ fileName.setText(name);\r
+ \r
+ TextView fileSizeV = (TextView) view.findViewById(R.id.file_size);\r
+ TextView lastModV = (TextView) view.findViewById(R.id.last_mod);\r
+ ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);\r
+ \r
lastModV.setVisibility(View.VISIBLE);\r
lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()));\r
- // this if-else is needed even thoe fav icon is visible by default\r
- // because android reuses views in listview\r
- if (!file.keepInSync()) {\r
- view.findViewById(R.id.imageView3).setVisibility(View.GONE);\r
+ \r
+ checkBoxV.setVisibility(View.GONE);\r
+ \r
+ fileSizeV.setVisibility(View.VISIBLE);\r
+ fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));\r
+ \r
+ ImageView sharedIconV = (ImageView) view.findViewById(R.id.sharedIcon);\r
+ \r
+\r
+ if (file.isShareByLink()) {\r
+ sharedIconV.setVisibility(View.VISIBLE);\r
} else {\r
- view.findViewById(R.id.imageView3).setVisibility(View.VISIBLE);\r
+ sharedIconV.setVisibility(View.GONE);\r
}\r
\r
- GridView parentList = (GridView)parent;\r
- if (parentList.getChoiceMode() == GridView.CHOICE_MODE_NONE) { \r
- checkBoxV.setVisibility(View.GONE);\r
- } else {\r
- if (parentList.isItemChecked(position)) {\r
- checkBoxV.setImageResource(android.R.drawable.checkbox_on_background);\r
+ ImageView localStateView = (ImageView) view.findViewById(R.id.localFileIndicator);\r
+ \r
+ if (!file.isFolder()) {\r
+ GridView parentList = (GridView)parent;\r
+ if (parentList.getChoiceMode() == GridView.CHOICE_MODE_NONE) { \r
+ checkBoxV.setVisibility(View.GONE);\r
} else {\r
- checkBoxV.setImageResource(android.R.drawable.checkbox_off_background);\r
+ if (parentList.isItemChecked(position)) {\r
+ checkBoxV.setImageResource(android.R.drawable.checkbox_on_background);\r
+ } else {\r
+ checkBoxV.setImageResource(android.R.drawable.checkbox_off_background);\r
+ }\r
+ checkBoxV.setVisibility(View.VISIBLE);\r
}\r
- checkBoxV.setVisibility(View.VISIBLE);\r
+ \r
+ localStateView.bringToFront();\r
+ FileDownloaderBinder downloaderBinder = mTransferServiceGetter.getFileDownloaderBinder();\r
+ FileUploaderBinder uploaderBinder = mTransferServiceGetter.getFileUploaderBinder();\r
+ if (downloaderBinder != null && downloaderBinder.isDownloading(mAccount, file)) {\r
+ localStateView.setImageResource(R.drawable.downloading_file_indicator);\r
+ localStateView.setVisibility(View.VISIBLE);\r
+ } else if (uploaderBinder != null && uploaderBinder.isUploading(mAccount, file)) {\r
+ localStateView.setImageResource(R.drawable.uploading_file_indicator);\r
+ localStateView.setVisibility(View.VISIBLE);\r
+ } else if (file.isDown()) {\r
+ localStateView.setImageResource(R.drawable.local_file_indicator);\r
+ localStateView.setVisibility(View.VISIBLE);\r
+ } else {\r
+ localStateView.setVisibility(View.INVISIBLE);\r
+ }\r
+ \r
+ ImageView sharedWithMeIconV = (ImageView) view.findViewById(R.id.sharedWithMeIcon);\r
+ if (checkIfFileIsSharedWithMe(file)) {\r
+ sharedWithMeIconV.setVisibility(View.VISIBLE);\r
+ } else {\r
+ sharedWithMeIconV.setVisibility(View.GONE);\r
+ }\r
+ } else {\r
+ localStateView.setVisibility(View.INVISIBLE);\r
}\r
-\r
+ break;\r
+ case GRID_ITEM:\r
+ fileName = (TextView) view.findViewById(R.id.Filename);\r
+ name = file.getFileName();\r
+ fileName.setText(name);\r
+ break;\r
+ case GRID_IMAGE:\r
+ break;\r
+ }\r
+ \r
+ // For all Views\r
+ \r
+ // this if-else is needed even though favorite icon is visible by default\r
+ // because android reuses views in listview\r
+ if (!file.keepInSync()) {\r
+ view.findViewById(R.id.favoriteIcon).setVisibility(View.GONE);\r
+ } else {\r
+ view.findViewById(R.id.favoriteIcon).setVisibility(View.VISIBLE);\r
+ }\r
+ \r
+ // No Folder\r
+ if (!file.isFolder()) {\r
if (file.isImage() && file.isDown()){\r
Bitmap bitmap = BitmapFactory.decodeFile(file.getStoragePath());\r
- fileIcon.setImageBitmap(ThumbnailUtils.extractThumbnail(bitmap, 100, 100));\r
+ fileIcon.setImageBitmap(ThumbnailUtils.extractThumbnail(bitmap, 200, 200));\r
} else {\r
fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()));\r
}\r
-\r
- if (checkIfFileIsSharedWithMe(file)) {\r
- sharedWithMeIconV.setVisibility(View.VISIBLE);\r
- }\r
- } \r
- else {\r
- \r
- fileSizeV.setVisibility(View.INVISIBLE);\r
- //fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));\r
- lastModV.setVisibility(View.VISIBLE);\r
- lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()));\r
- checkBoxV.setVisibility(View.GONE);\r
- view.findViewById(R.id.imageView3).setVisibility(View.GONE);\r
-\r
+ } else {\r
+ // Folder\r
if (checkIfFileIsSharedWithMe(file)) {\r
fileIcon.setImageResource(R.drawable.shared_with_me_folder);\r
- sharedWithMeIconV.setVisibility(View.VISIBLE);\r
+ } else if (file.isShareByLink()) {\r
+ // If folder is sharedByLink, icon folder must be changed to\r
+ // folder-public one\r
+ fileIcon.setImageResource(R.drawable.folder_public);\r
} else {\r
fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()));\r
}\r
-\r
- // If folder is sharedByLink, icon folder must be changed to\r
- // folder-public one\r
- if (file.isShareByLink()) {\r
- fileIcon.setImageResource(R.drawable.folder_public);\r
- }\r
- }\r
-\r
- if (file.isShareByLink()) {\r
- sharedIconV.setVisibility(View.VISIBLE);\r
- } else {\r
- sharedIconV.setVisibility(View.GONE);\r
- }\r
+ } \r
}\r
\r
return view;\r
String name = file.getName();
fileName.setText(name);
- ImageView fileIcon = (ImageView) view.findViewById(R.id.imageView1);
+ ImageView fileIcon = (ImageView) view.findViewById(R.id.thumbnail);
if (!file.isDirectory()) {
fileIcon.setImageResource(R.drawable.file);
} else {
TextView lastModV = (TextView) view.findViewById(R.id.last_mod);
ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);
if (!file.isDirectory()) {
- fileSizeV.setVisibility(View.VISIBLE);
- fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.length()));
+
lastModV.setVisibility(View.VISIBLE);
lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.lastModified()));
ListView parentList = (ListView)parent;
}
} else {
- fileSizeV.setVisibility(View.GONE);
+ //fileSizeV.setVisibility(View.GONE);
lastModV.setVisibility(View.GONE);
checkBoxV.setVisibility(View.GONE);
}
+ fileSizeV.setVisibility(View.VISIBLE);
+ fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.length()));
- view.findViewById(R.id.imageView2).setVisibility(View.INVISIBLE); // not GONE; the alignment changes; ugly way to keep it
- view.findViewById(R.id.imageView3).setVisibility(View.GONE);
+ view.findViewById(R.id.localFileIndicator).setVisibility(View.INVISIBLE); // not GONE; the alignment changes; ugly way to keep it
+ view.findViewById(R.id.favoriteIcon).setVisibility(View.GONE);
view.findViewById(R.id.sharedIcon).setVisibility(View.GONE);
view.findViewById(R.id.sharedWithMeIcon).setVisibility(View.GONE);