From: masensio Date: Tue, 6 May 2014 11:15:04 +0000 (+0200) Subject: Revert "FileListListAdapter based in CursorAdapter instead of SimpleCursorAdapter... X-Git-Tag: oc-android-1.7.0_signed~309^2~51 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/4e9becbc974cddc38a6d25e6469bfb56947f5147?hp=--cc Revert "FileListListAdapter based in CursorAdapter instead of SimpleCursorAdapter for more flexible integration" This reverts commit 65c7d5d5baf3455d02b4a7d9352fcd42d939c669. Conflicts: src/com/owncloud/android/ui/adapter/FileListListAdapter.java src/com/owncloud/android/ui/fragment/OCFileListFragment.java --- 4e9becbc974cddc38a6d25e6469bfb56947f5147 diff --git a/src/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/com/owncloud/android/datamodel/FileDataStorageManager.java index 04f3271a..69e1d71c 100644 --- a/src/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/com/owncloud/android/datamodel/FileDataStorageManager.java @@ -728,7 +728,7 @@ public class FileDataStorageManager { // return c; // } - public OCFile createFileInstance(Cursor c) { + private OCFile createFileInstance(Cursor c) { OCFile file = null; if (c != null) { file = new OCFile(c.getString(c diff --git a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java index 85597ef5..21cfe0b4 100644 --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@ -19,17 +19,19 @@ package com.owncloud.android.ui.adapter; import android.accounts.Account; import android.content.Context; -import android.database.Cursor; -import android.support.v4.widget.CursorAdapter; +import android.support.v4.widget.SimpleCursorAdapter; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +//import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; +import java.util.Vector; + import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.datamodel.FileDataStorageManager; @@ -38,7 +40,6 @@ 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; -import com.owncloud.android.utils.Log_OC; /** @@ -48,24 +49,22 @@ import com.owncloud.android.utils.Log_OC; * @author Bartek Przybylski * */ -public class FileListListAdapter extends CursorAdapter implements ListAdapter { +public class FileListListAdapter extends SimpleCursorAdapter implements ListAdapter { - private static final String TAG = FileListListAdapter.class.getSimpleName(); - private Context mContext; - private FileDataStorageManager mStorageManager; - private Account mAccount; + private static OCFile mFile = null; + private Vector mFiles = null; + private static FileDataStorageManager mStorageManager; + private Account mAccount; private ComponentsGetter mTransferServiceGetter; public FileListListAdapter(Context context, ComponentsGetter componentsGetter) { - super(context, null, 0); + super(context, 0, null, null, null, 0); mContext = context; mAccount = AccountUtils.getCurrentOwnCloudAccount(mContext); - mTransferServiceGetter = componentsGetter; - } + mTransferServiceGetter = componentsGetter; } - /* @Override public boolean areAllItemsEnabled() { return true; @@ -99,7 +98,91 @@ public class FileListListAdapter extends CursorAdapter implements ListAdapter { public int getItemViewType(int position) { return 0; } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View view = convertView; + if (view == null) { + LayoutInflater inflator = (LayoutInflater) mContext + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + view = inflator.inflate(R.layout.list_item, null); + } + 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.setImageResource(DisplayUtils.getResourceId(file.getMimetype())); + ImageView localStateView = (ImageView) view.findViewById(R.id.imageView2); + 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); + + if (!file.isFolder()) { + fileSizeV.setVisibility(View.VISIBLE); + fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength())); + lastModV.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); + } else { + view.findViewById(R.id.imageView3).setVisibility(View.VISIBLE); + } + + ListView parentList = (ListView)parent; + if (parentList.getChoiceMode() == ListView.CHOICE_MODE_NONE) { + checkBoxV.setVisibility(View.GONE); + } else { + if (parentList.isItemChecked(position)) { + checkBoxV.setImageResource(android.R.drawable.checkbox_on_background); + } else { + checkBoxV.setImageResource(android.R.drawable.checkbox_off_background); + } + checkBoxV.setVisibility(View.VISIBLE); + } + + } + else { + + fileSizeV.setVisibility(View.INVISIBLE); + //fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength())); + lastModV.setVisibility(View.VISIBLE); + lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp())); + checkBoxV.setVisibility(View.GONE); + view.findViewById(R.id.imageView3).setVisibility(View.GONE); + } + + ImageView shareIconV = (ImageView) view.findViewById(R.id.shareIcon); + if (file.isShareByLink()) { + shareIconV.setVisibility(View.VISIBLE); + } else { + shareIconV.setVisibility(View.INVISIBLE); + } + } + + return view; + } + @Override public int getViewTypeCount() { return 1; @@ -114,118 +197,26 @@ public class FileListListAdapter extends CursorAdapter implements ListAdapter { public boolean isEmpty() { return (mFiles == null || mFiles.isEmpty()); } - */ /** * Change the adapted directory for a new one - * @param folder New file to adapt. Can be NULL, meaning "no content to adapt". + * @param directory New file to adapt. Can be NULL, meaning "no content to adapt". * @param updatedStorageManager Optional updated storage manager; used to replace mStorageManager if is different (and not NULL) */ - public void swapDirectory(OCFile folder, FileDataStorageManager updatedStorageManager) { + public void swapDirectory(OCFile directory, FileDataStorageManager updatedStorageManager) { + mFile = directory; if (updatedStorageManager != null && updatedStorageManager != mStorageManager) { mStorageManager = updatedStorageManager; mAccount = AccountUtils.getCurrentOwnCloudAccount(mContext); } - Cursor newCursor = null; if (mStorageManager != null) { - //mFiles = mStorageManager.getFolderContent(mFile); - newCursor = mStorageManager.getContent(folder.getFileId()); - } - Cursor oldCursor = swapCursor(newCursor); - if (oldCursor != null){ - oldCursor.close(); - } - notifyDataSetChanged(); - } - - @Override - public void bindView(View view, Context context, Cursor cursor) { - Log_OC.d(TAG, "bindView start"); - - OCFile file = mStorageManager.createFileInstance(cursor); - - TextView fileName = (TextView) view.findViewById(R.id.Filename); - String name = file.getFileName(); - - fileName.setText(name); - ImageView fileIcon = (ImageView) view.findViewById(R.id.imageView1); - fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype())); - ImageView localStateView = (ImageView) view.findViewById(R.id.imageView2); - 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); + mFiles = mStorageManager.getFolderContent(mFile); + mCursor = mStorageManager.getContent(mFile.getParentId()); } 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); - - if (!file.isFolder()) { - fileSizeV.setVisibility(View.VISIBLE); - fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength())); - lastModV.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); - } else { - view.findViewById(R.id.imageView3).setVisibility(View.VISIBLE); - } - - } - else { - - fileSizeV.setVisibility(View.INVISIBLE); - //fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength())); - lastModV.setVisibility(View.VISIBLE); - lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp())); - checkBoxV.setVisibility(View.GONE); - view.findViewById(R.id.imageView3).setVisibility(View.GONE); + mFiles = null; + mCursor = null; } - - ImageView shareIconV = (ImageView) view.findViewById(R.id.shareIcon); - if (file.isShareByLink()) { - shareIconV.setVisibility(View.VISIBLE); - } else { - shareIconV.setVisibility(View.INVISIBLE); - } - //} - Log_OC.d(TAG, "bindView end"); - } - - @Override - public View newView(Context context, Cursor cursor, ViewGroup parent) { - Log_OC.d(TAG, "newView start"); - LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - View view = inflator.inflate(R.layout.list_item, null); - - // TODO check activity to upload - ListView parentList = (ListView) parent; - ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox); - if (parentList.getChoiceMode() == ListView.CHOICE_MODE_NONE) { - checkBoxV.setVisibility(View.GONE); - } else { - /*if (parentList.isItemChecked(position)) { - checkBoxV.setImageResource(android.R.drawable.checkbox_on_background); - } else { - checkBoxV.setImageResource(android.R.drawable.checkbox_off_background); - }*/ - checkBoxV.setVisibility(View.VISIBLE); - } - Log_OC.d(TAG, "newView end"); - return view; - + notifyDataSetChanged(); } } diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 86aafebc..530a0d55 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -39,7 +39,6 @@ import com.owncloud.android.utils.Log_OC; import android.accounts.Account; import android.app.Activity; -import android.database.Cursor; import android.os.Bundle; import android.view.ContextMenu; import android.view.MenuInflater; @@ -130,6 +129,8 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName } + mAdapter = new FileListListAdapter(getActivity(), mContainerActivity); + setListAdapter(mAdapter); registerForContextMenu(getListView()); @@ -251,8 +252,7 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName @Override public void onItemClick(AdapterView l, View v, int position, long id) { - OCFile file = mContainerActivity.getStorageManager().createFileInstance( - (Cursor) mAdapter.getItem(position)); + OCFile file = (OCFile) mAdapter.getItem(position); if (file != null) { if (file.isFolder()) { // update state and view of this fragment @@ -297,8 +297,7 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName MenuInflater inflater = getSherlockActivity().getMenuInflater(); inflater.inflate(R.menu.file_actions_menu, menu); AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; - OCFile targetFile = mContainerActivity.getStorageManager().createFileInstance( - (Cursor) mAdapter.getItem(info.position)); + OCFile targetFile = (OCFile) mAdapter.getItem(info.position); List toHide = new ArrayList(); List toDisable = new ArrayList(); @@ -383,8 +382,7 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName @Override public boolean onContextItemSelected (MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); - mTargetFile = mContainerActivity.getStorageManager().createFileInstance( - (Cursor) mAdapter.getItem(info.position)); + mTargetFile = (OCFile) mAdapter.getItem(info.position); switch (item.getItemId()) { case R.id.action_share_file: { mContainerActivity.getFileOperationsHelper().shareFileWithLink(mTargetFile);