From: tobiasKaminsky Date: Thu, 6 Nov 2014 07:17:35 +0000 (+0100) Subject: - initial image grid X-Git-Tag: oc-android-1.7.0_signed~16^2~27 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/045720d87654c35f642b93aa775821ccef84f405?ds=inline;hp=-c - initial image grid --- 045720d87654c35f642b93aa775821ccef84f405 diff --git a/src/com/owncloud/android/MainApp.java b/src/com/owncloud/android/MainApp.java index 4fdc5cb8..ca59cb31 100644 --- a/src/com/owncloud/android/MainApp.java +++ b/src/com/owncloud/android/MainApp.java @@ -77,7 +77,7 @@ public class MainApp extends Application { } // initialise thumbnails cache on background thread - new ThumbnailsCacheManager.InitDiskCacheTask(mContext).execute(); + new ThumbnailsCacheManager.InitDiskCacheTask().execute(); if (BuildConfig.DEBUG) { diff --git a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java index 1d2cda8c..8a7268c5 100644 --- a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java +++ b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java @@ -59,7 +59,7 @@ public class ThumbnailsCacheManager { private static final String TAG = ThumbnailsCacheManager.class.getSimpleName(); private static final String CACHE_FOLDER = "thumbnailCache"; - private static final String MINOR_SERVER_VERSION_FOR_THUMBS = "7.8.0"; + private static final String MINOR_SERVER_VERSION_FOR_THUMBS = "6.8.0"; private static final Object mThumbnailsDiskCacheLock = new Object(); private static DiskLruImageCache mThumbnailCache = null; @@ -205,10 +205,8 @@ public class ThumbnailsCacheManager { // Not found in disk cache if (thumbnail == null || mFile.needsUpdateThumbnail()) { - // Converts dp to pixel - Resources r = MainApp.getAppContext().getResources(); - - int px = (int) Math.round(r.getDimension(R.dimen.file_icon_size)); + // Use Width of imageView -> no blurry images on big screens + int px = mImageViewReference.get().getWidth(); if (mFile.isDown()){ Bitmap bitmap = BitmapUtils.decodeSampledBitmapFromFile( @@ -277,7 +275,7 @@ public class ThumbnailsCacheManager { final ImageView imageView = mImageViewReference.get(); final ThumbnailGenerationTask bitmapWorkerTask = getBitmapWorkerTask(imageView); - if (this == bitmapWorkerTask && imageView != null) { + if (this == bitmapWorkerTask && imageView != null && imageView.getTag() != null && mFile != null) { if (imageView.getTag().equals(mFile.getFileId())) { imageView.setImageBitmap(bitmap); } diff --git a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java index d2680fa5..3400513b 100644 --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@ -26,23 +26,20 @@ import java.util.Vector; import third_parties.daveKoeller.AlphanumComparator; import android.accounts.Account; import android.content.Context; -<<<<<<< HEAD +import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.media.ThumbnailUtils; -======= -import android.content.SharedPreferences; -import android.graphics.Bitmap; import android.preference.PreferenceManager; ->>>>>>> upstream/develop import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; +import android.widget.Filter; +import android.widget.Filterable; import android.widget.GridView; import android.widget.ImageView; import android.widget.ListAdapter; -import android.widget.ListView; import android.widget.TextView; import com.owncloud.android.R; @@ -55,13 +52,8 @@ import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.ui.activity.ComponentsGetter; import com.owncloud.android.utils.DisplayUtils; -<<<<<<< HEAD -import com.owncloud.android.utils.Log_OC; - -======= import com.owncloud.android.utils.FileStorageUtils; ->>>>>>> upstream/develop /** * This Adapter populates a ListView with all files and folders in an ownCloud @@ -77,32 +69,29 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { private Context mContext; private OCFile mFile = null; private Vector mFiles = null; + private Vector mFilesOrig = new Vector(); private boolean mJustFolders; private FileDataStorageManager mStorageManager; private Account mAccount; private ComponentsGetter mTransferServiceGetter; -<<<<<<< HEAD private enum ViewType {LIST_ITEM, GRID_IMAGE, GRID_ITEM }; -======= private Integer mSortOrder; public static final Integer SORT_NAME = 0; public static final Integer SORT_DATE = 1; public static final Integer SORT_SIZE = 2; private Boolean mSortAscending; private SharedPreferences mAppPreferences; ->>>>>>> upstream/develop public FileListListAdapter( boolean justFolders, Context context, ComponentsGetter transferServiceGetter ) { - + mJustFolders = justFolders; mContext = context; mAccount = AccountUtils.getCurrentOwnCloudAccount(mContext); - mTransferServiceGetter = transferServiceGetter; mAppPreferences = PreferenceManager @@ -115,7 +104,6 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { // initialise thumbnails cache on background thread new ThumbnailsCacheManager.InitDiskCacheTask().execute(); - } @Override @@ -204,7 +192,6 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { view = inflator.inflate(R.layout.list_item, null); break; } -<<<<<<< HEAD view.invalidate(); @@ -213,42 +200,6 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { ImageView fileIcon = (ImageView) view.findViewById(R.id.thumbnail); TextView fileName; String name; -======= - - if (mFiles != null && mFiles.size() > position) { - OCFile file = mFiles.get(position); - TextView fileName = (TextView) view.findViewById(R.id.Filename); - String name = file.getFileName(); - - fileName.setText(name); - ImageView fileIcon = (ImageView) view.findViewById(R.id.imageView1); - fileIcon.setTag(file.getFileId()); - ImageView sharedIconV = (ImageView) view.findViewById(R.id.sharedIcon); - ImageView sharedWithMeIconV = (ImageView) view.findViewById(R.id.sharedWithMeIcon); - sharedWithMeIconV.setVisibility(View.GONE); - - ImageView localStateView = (ImageView) view.findViewById(R.id.imageView2); - localStateView.bringToFront(); - FileDownloaderBinder downloaderBinder = - mTransferServiceGetter.getFileDownloaderBinder(); - FileUploaderBinder uploaderBinder = mTransferServiceGetter.getFileUploaderBinder(); - if (downloaderBinder != null && downloaderBinder.isDownloading(mAccount, file)) { - localStateView.setImageResource(R.drawable.downloading_file_indicator); - localStateView.setVisibility(View.VISIBLE); - } else if (uploaderBinder != null && uploaderBinder.isUploading(mAccount, file)) { - localStateView.setImageResource(R.drawable.uploading_file_indicator); - localStateView.setVisibility(View.VISIBLE); - } else if (file.isDown()) { - localStateView.setImageResource(R.drawable.local_file_indicator); - localStateView.setVisibility(View.VISIBLE); - } else { - localStateView.setVisibility(View.INVISIBLE); - } - - TextView fileSizeV = (TextView) view.findViewById(R.id.file_size); - TextView lastModV = (TextView) view.findViewById(R.id.last_mod); - ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox); ->>>>>>> upstream/develop switch (viewType){ case LIST_ITEM: @@ -261,7 +212,6 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox); lastModV.setVisibility(View.VISIBLE); -<<<<<<< HEAD lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp())); checkBoxV.setVisibility(View.GONE); @@ -274,15 +224,6 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { if (file.isShareByLink()) { sharedIconV.setVisibility(View.VISIBLE); -======= - lastModV.setText( - DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()) - ); - // this if-else is needed even thoe fav icon is visible by default - // because android reuses views in listview - if (!file.keepInSync()) { - view.findViewById(R.id.imageView3).setVisibility(View.GONE); ->>>>>>> upstream/develop } else { sharedIconV.setVisibility(View.GONE); } @@ -301,7 +242,6 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { } checkBoxV.setVisibility(View.VISIBLE); } -<<<<<<< HEAD localStateView.bringToFront(); FileDownloaderBinder downloaderBinder = mTransferServiceGetter.getFileDownloaderBinder(); @@ -350,72 +290,39 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { // No Folder if (!file.isFolder()) { - if (file.isImage() && file.isDown()){ - Bitmap bitmap = BitmapFactory.decodeFile(file.getStoragePath()); - fileIcon.setImageBitmap(ThumbnailUtils.extractThumbnail(bitmap, 200, 200)); - } else { - fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName())); - } - } else { - // Folder -======= - checkBoxV.setVisibility(View.VISIBLE); - } - - // get Thumbnail if file is image if (file.isImage() && file.getRemoteId() != null){ - // Thumbnail in Cache? + // Thumbnail in Cache? Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache( String.valueOf(file.getRemoteId()) - ); + ); if (thumbnail != null && !file.needsUpdateThumbnail()){ fileIcon.setImageBitmap(thumbnail); } else { // generate new Thumbnail if (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)) { - final ThumbnailsCacheManager.ThumbnailGenerationTask task = + final ThumbnailsCacheManager.ThumbnailGenerationTask task = new ThumbnailsCacheManager.ThumbnailGenerationTask( fileIcon, mStorageManager, mAccount - ); + ); if (thumbnail == null) { thumbnail = ThumbnailsCacheManager.mDefaultImg; } final AsyncDrawable asyncDrawable = new AsyncDrawable( - mContext.getResources(), - thumbnail, + mContext.getResources(), + thumbnail, task - ); + ); fileIcon.setImageDrawable(asyncDrawable); task.execute(file); + } } - } else { - fileIcon.setImageResource( - DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()) - ); } - - if (checkIfFileIsSharedWithMe(file)) { - sharedWithMeIconV.setVisibility(View.VISIBLE); + else { + fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName())); } - } - else { - // TODO Re-enable when server supports folder-size calculation -// if (FileStorageUtils.getDefaultSavePathFor(mAccount.name, file) != null){ -// fileSizeV.setVisibility(View.VISIBLE); -// fileSizeV.setText(getFolderSizeHuman(FileStorageUtils.getDefaultSavePathFor(mAccount.name, file))); -// } else { - fileSizeV.setVisibility(View.INVISIBLE); -// } - - lastModV.setVisibility(View.VISIBLE); - lastModV.setText( - DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()) - ); - checkBoxV.setVisibility(View.GONE); - view.findViewById(R.id.imageView3).setVisibility(View.GONE); - ->>>>>>> upstream/develop + } else { + // Folder if (checkIfFileIsSharedWithMe(file)) { fileIcon.setImageResource(R.drawable.shared_with_me_folder); } else if (file.isShareByLink()) { @@ -423,9 +330,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { // folder-public one fileIcon.setImageResource(R.drawable.folder_public); } else { - fileIcon.setImageResource( - DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()) - ); + fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName())); } } } @@ -503,6 +408,9 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { } if (mStorageManager != null) { mFiles = mStorageManager.getFolderContent(mFile); + mFilesOrig.clear(); + mFilesOrig.addAll(mFiles); + if (mJustFolders) { mFiles = getFolders(mFiles); } @@ -665,5 +573,5 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { mSortAscending = ascending; sortDirectory(); - } + } } diff --git a/src/com/owncloud/android/ui/fragment/ExtendedListFragment.java b/src/com/owncloud/android/ui/fragment/ExtendedListFragment.java index c6123483..9e251c79 100644 --- a/src/com/owncloud/android/ui/fragment/ExtendedListFragment.java +++ b/src/com/owncloud/android/ui/fragment/ExtendedListFragment.java @@ -53,7 +53,7 @@ implements OnItemClickListener, OnEnforceableRefreshListener { private static final String KEY_HEIGHT_CELL = "HEIGHT_CELL"; private static final String KEY_EMPTY_LIST_MESSAGE = "EMPTY_LIST_MESSAGE"; - // protected ExtendedListView mList; + protected ExtendedListView mList; private SwipeRefreshLayout mRefreshLayout; private SwipeRefreshLayout mRefreshEmptyLayout; diff --git a/src/com/owncloud/android/ui/fragment/LocalFileListFragment.java b/src/com/owncloud/android/ui/fragment/LocalFileListFragment.java index 90af004c..e954f027 100644 --- a/src/com/owncloud/android/ui/fragment/LocalFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/LocalFileListFragment.java @@ -105,7 +105,7 @@ public class LocalFileListFragment extends ExtendedListFragment { if (file != null) { if (!file.isDirectory()) { /// Click on a file - getListView().setItemChecked(i, true); + getGridView().setItemChecked(i, true); // notify the change to the container Activity mContainerActivity.onFileClick(file); } @@ -231,7 +231,7 @@ public class LocalFileListFragment extends ExtendedListFragment { */ public String[] getCheckedFilePaths() { ArrayList result = new ArrayList(); - SparseBooleanArray positions = imageView.getCheckedItemPositions(); + SparseBooleanArray positions = mList.getCheckedItemPositions(); if (positions.size() > 0) { for (int i = 0; i < positions.size(); i++) { if (positions.get(positions.keyAt(i)) == true) {