projects
/
pub
/
Android
/
ownCloud.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
0c3aaf3
)
Files list position is kept when the orientation changes
author
David A. Velasco
<dvelasco@solidgear.es>
Wed, 3 Oct 2012 14:48:06 +0000
(16:48 +0200)
committer
David A. Velasco
<dvelasco@solidgear.es>
Wed, 3 Oct 2012 14:48:06 +0000
(16:48 +0200)
src/com/owncloud/android/ui/activity/FileDisplayActivity.java
patch
|
blob
|
blame
|
history
src/com/owncloud/android/ui/activity/UploadFilesActivity.java
patch
|
blob
|
blame
|
history
src/com/owncloud/android/ui/adapter/FileListListAdapter.java
patch
|
blob
|
blame
|
history
src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java
patch
|
blob
|
blame
|
history
src/com/owncloud/android/ui/fragment/LocalFileListFragment.java
patch
|
blob
|
blame
|
history
src/com/owncloud/android/ui/fragment/OCFileListFragment.java
patch
|
blob
|
blame
|
history
diff --git
a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java
b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java
index
fb310ec
..
64098f7
100644
(file)
--- a/
src/com/owncloud/android/ui/activity/FileDisplayActivity.java
+++ b/
src/com/owncloud/android/ui/activity/FileDisplayActivity.java
@@
-421,7
+421,7
@@
public class FileDisplayActivity extends SherlockFragmentActivity implements
registerReceiver(mDownloadFinishReceiver, downloadIntentFilter);
\r
\r
// List current directory
\r
registerReceiver(mDownloadFinishReceiver, downloadIntentFilter);
\r
\r
// List current directory
\r
- mFileList.listDirectory(mCurrentDir);
\r
+
//
mFileList.listDirectory(mCurrentDir);
\r
\r
} else {
\r
\r
\r
} else {
\r
\r
@@
-857,6
+857,15
@@
public class FileDisplayActivity extends SherlockFragmentActivity implements
* {@inheritDoc}
\r
*/
\r
@Override
\r
* {@inheritDoc}
\r
*/
\r
@Override
\r
+ public OCFile getInitialDirectory() {
\r
+ return mCurrentDir;
\r
+ }
\r
+
\r
+
\r
+ /**
\r
+ * {@inheritDoc}
\r
+ */
\r
+ @Override
\r
public void onFileStateChanged() {
\r
OCFileListFragment fileListFragment = (OCFileListFragment) getSupportFragmentManager().findFragmentById(R.id.fileList);
\r
if (fileListFragment != null) {
\r
public void onFileStateChanged() {
\r
OCFileListFragment fileListFragment = (OCFileListFragment) getSupportFragmentManager().findFragmentById(R.id.fileList);
\r
if (fileListFragment != null) {
\r
diff --git
a/src/com/owncloud/android/ui/activity/UploadFilesActivity.java
b/src/com/owncloud/android/ui/activity/UploadFilesActivity.java
index
aca4d89
..
7382d79
100644
(file)
--- a/
src/com/owncloud/android/ui/activity/UploadFilesActivity.java
+++ b/
src/com/owncloud/android/ui/activity/UploadFilesActivity.java
@@
-88,6
+88,7
@@
public class UploadFilesActivity extends SherlockFragmentActivity implements
setContentView(R.layout.upload_files_layout);
mFileListFragment = (LocalFileListFragment) getSupportFragmentManager().findFragmentById(R.id.local_files_list);
setContentView(R.layout.upload_files_layout);
mFileListFragment = (LocalFileListFragment) getSupportFragmentManager().findFragmentById(R.id.local_files_list);
+
// Set input controllers
mCancelBtn = (Button) findViewById(R.id.upload_files_btn_cancel);
mCancelBtn.setOnClickListener(this);
// Set input controllers
mCancelBtn = (Button) findViewById(R.id.upload_files_btn_cancel);
mCancelBtn.setOnClickListener(this);
@@
-164,17
+165,6
@@
public class UploadFilesActivity extends SherlockFragmentActivity implements
Log.d(TAG, "onSaveInstanceState() end");
}
Log.d(TAG, "onSaveInstanceState() end");
}
- @Override
- protected void onResume() {
- Log.d(TAG, "onResume() start");
- super.onResume();
-
- // List current directory
- mFileListFragment.listDirectory(mCurrentDir);
-
- Log.d(TAG, "onResume() end");
- }
-
/**
* Pushes a directory to the drop down list
/**
* Pushes a directory to the drop down list
@@
-244,6
+234,14
@@
public class UploadFilesActivity extends SherlockFragmentActivity implements
public void onFileClick(File file) {
// nothing to do
}
public void onFileClick(File file) {
// nothing to do
}
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public File getInitialDirectory() {
+ return mCurrentDir;
+ }
/**
/**
diff --git
a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java
b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java
index
da4f815
..
fb39313
100644
(file)
--- a/
src/com/owncloud/android/ui/adapter/FileListListAdapter.java
+++ b/
src/com/owncloud/android/ui/adapter/FileListListAdapter.java
@@
-30,10
+30,10
@@
import com.owncloud.android.R;
\r
import android.accounts.Account;
\r
import android.content.Context;
\r
\r
import android.accounts.Account;
\r
import android.content.Context;
\r
-import android.database.DataSetObserver;
\r
import android.view.LayoutInflater;
\r
import android.view.View;
\r
import android.view.ViewGroup;
\r
import android.view.LayoutInflater;
\r
import android.view.View;
\r
import android.view.ViewGroup;
\r
+import android.widget.BaseAdapter;
\r
import android.widget.ImageView;
\r
import android.widget.ListAdapter;
\r
import android.widget.ListView;
\r
import android.widget.ImageView;
\r
import android.widget.ListAdapter;
\r
import android.widget.ListView;
\r
@@
-46,7
+46,7
@@
import android.widget.TextView;
* @author Bartek Przybylski
\r
*
\r
*/
\r
* @author Bartek Przybylski
\r
*
\r
*/
\r
-public class FileListListAdapter implements ListAdapter {
\r
+public class FileListListAdapter
extends BaseAdapter
implements ListAdapter {
\r
private Context mContext;
\r
private OCFile mFile;
\r
private Vector<OCFile> mFiles;
\r
private Context mContext;
\r
private OCFile mFile;
\r
private Vector<OCFile> mFiles;
\r
@@
-79,7
+79,7
@@
public class FileListListAdapter implements ListAdapter {
\r
@Override
\r
public Object getItem(int position) {
\r
\r
@Override
\r
public Object getItem(int position) {
\r
- if (mFiles.size() <= position)
\r
+ if (mFiles
== null || mFiles
.size() <= position)
\r
return null;
\r
return mFiles.get(position);
\r
}
\r
return null;
\r
return mFiles.get(position);
\r
}
\r
@@
-102,7
+102,7
@@
public class FileListListAdapter implements ListAdapter {
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
\r
view = inflator.inflate(R.layout.list_layout, null);
\r
}
\r
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
\r
view = inflator.inflate(R.layout.list_layout, null);
\r
}
\r
- if (mFiles.size() > position) {
\r
+ if (mFiles
!= null && mFiles
.size() > position) {
\r
OCFile file = mFiles.get(position);
\r
TextView fileName = (TextView) view.findViewById(R.id.Filename);
\r
String name = file.getFileName();
\r
OCFile file = mFiles.get(position);
\r
TextView fileName = (TextView) view.findViewById(R.id.Filename);
\r
String name = file.getFileName();
\r
@@
-184,11
+184,14
@@
public class FileListListAdapter implements ListAdapter {
return mFiles != null ? mFiles.isEmpty() : false;
\r
}
\r
\r
return mFiles != null ? mFiles.isEmpty() : false;
\r
}
\r
\r
- @Override
\r
- public void registerDataSetObserver(DataSetObserver observer) {
\r
- }
\r
-
\r
- @Override
\r
- public void unregisterDataSetObserver(DataSetObserver observer) {
\r
+ /**
\r
+ * Change the adapted directory for a new one
\r
+ * @param directory New file to adapt. Can be NULL, meaning "no content to adapt".
\r
+ */
\r
+ public void swapDirectory(OCFile directory) {
\r
+ mFile = directory;
\r
+ mFiles = mStorageManager.getDirectoryContent(mFile);
\r
+ notifyDataSetChanged();
\r
}
\r
}
\r
+
\r
}
\r
}
\r
diff --git
a/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java
b/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java
index
690832a
..
d5db648
100644
(file)
--- a/
src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java
+++ b/
src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java
@@
-20,15
+20,11
@@
package com.owncloud.android.ui.adapter;
import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
import com.owncloud.android.DisplayUtils;
import com.owncloud.android.R;
import android.content.Context;
import com.owncloud.android.DisplayUtils;
import com.owncloud.android.R;
import android.content.Context;
-import android.database.DataSetObserver;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@
-50,7
+46,6
@@
public class LocalFileListAdapter extends BaseAdapter implements ListAdapter {
private Context mContext;
private File mDirectory;
private File[] mFiles = null;
private Context mContext;
private File mDirectory;
private File[] mFiles = null;
- private Set<DataSetObserver> mObservers = new HashSet<DataSetObserver>();
public LocalFileListAdapter(File directory, Context context) {
mContext = context;
public LocalFileListAdapter(File directory, Context context) {
mContext = context;
@@
-159,23
+154,13
@@
public class LocalFileListAdapter extends BaseAdapter implements ListAdapter {
return (mFiles == null || mFiles.length == 0);
}
return (mFiles == null || mFiles.length == 0);
}
- @Override
- public void registerDataSetObserver(DataSetObserver observer) {
- mObservers.add(observer);
- }
-
- @Override
- public void unregisterDataSetObserver(DataSetObserver observer) {
- mObservers.remove(observer);
- }
-
/**
* Change the adapted directory for a new one
/**
* Change the adapted directory for a new one
- * @param directory New file to adapt.
+ * @param directory New file to adapt.
Can be NULL, meaning "no content to adapt".
*/
public void swapDirectory(File directory) {
mDirectory = directory;
*/
public void swapDirectory(File directory) {
mDirectory = directory;
- mFiles =
mDirectory.listFiles(
);
+ mFiles =
(mDirectory != null ? mDirectory.listFiles() : null
);
if (mFiles != null) {
Arrays.sort(mFiles, new Comparator<File>() {
@Override
if (mFiles != null) {
Arrays.sort(mFiles, new Comparator<File>() {
@Override
@@
-194,9
+179,6
@@
public class LocalFileListAdapter extends BaseAdapter implements ListAdapter {
});
}
});
}
- Iterator<DataSetObserver> it = mObservers.iterator();
- while (it.hasNext()) {
- it.next().onChanged();
- }
+ notifyDataSetChanged();
}
}
}
}
diff --git
a/src/com/owncloud/android/ui/fragment/LocalFileListFragment.java
b/src/com/owncloud/android/ui/fragment/LocalFileListFragment.java
index
eaab80f
..
d60adbd
100644
(file)
--- a/
src/com/owncloud/android/ui/fragment/LocalFileListFragment.java
+++ b/
src/com/owncloud/android/ui/fragment/LocalFileListFragment.java
@@
-74,17
+74,13
@@
public class LocalFileListFragment extends FragmentListView {
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- Log.i(
getClass().toString()
, "onCreateView() start");
+ Log.i(
TAG
, "onCreateView() start");
super.onCreateView(inflater, container, savedInstanceState);
getListView().setDivider(getResources().getDrawable(R.drawable.uploader_list_separator));
getListView().setDividerHeight(1);
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
super.onCreateView(inflater, container, savedInstanceState);
getListView().setDivider(getResources().getDrawable(R.drawable.uploader_list_separator));
getListView().setDividerHeight(1);
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
- if (savedInstanceState != null) {
- // TODO recover previous state; or maybe in onActivityCreated
- }
-
- Log.i(getClass().toString(), "onCreateView() end");
+ Log.i(TAG, "onCreateView() end");
return getListView();
}
return getListView();
}
@@
-94,11
+90,29
@@
public class LocalFileListFragment extends FragmentListView {
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
- Log.i(
getClass().toString()
, "onActivityCreated() start");
+ Log.i(
TAG
, "onActivityCreated() start");
super.onCreate(savedInstanceState);
super.onCreate(savedInstanceState);
+ mAdapter = new LocalFileListAdapter(mContainerActivity.getInitialDirectory(), getActivity());
+ setListAdapter(mAdapter);
+
+ if (savedInstanceState != null) {
+ Log.i(TAG, "savedInstanceState is not null");
+ int position = savedInstanceState.getInt("LIST_POSITION");
+ getListView().setSelectionFromTop(position, 0);
+ }
- Log.i(getClass().toString(), "onActivityCreated() stop");
+ Log.i(TAG, "onActivityCreated() stop");
+ }
+
+
+ @Override
+ public void onSaveInstanceState(Bundle savedInstanceState) {
+ Log.i(TAG, "onSaveInstanceState() start");
+
+ savedInstanceState.putInt("LIST_POSITION", getListView().getFirstVisiblePosition());
+
+ Log.i(TAG, "onSaveInstanceState() stop");
}
}
@@
-182,7
+196,7
@@
public class LocalFileListFragment extends FragmentListView {
directory = mDirectory;
} else {
directory = Environment.getExternalStorageDirectory(); // TODO be careful with the state of the storage; could not be available
directory = mDirectory;
} else {
directory = Environment.getExternalStorageDirectory(); // TODO be careful with the state of the storage; could not be available
- if (directory == null) return; // no files
, wait for sync
+ if (directory == null) return; // no files
to show
}
}
}
}
@@
-194,14
+208,9
@@
public class LocalFileListFragment extends FragmentListView {
}
mDirectory = directory;
}
mDirectory = directory;
- if (mAdapter == null) {
- mAdapter = new LocalFileListAdapter(mDirectory, getActivity());
- setListAdapter(mAdapter);
- } else {
- mList.clearChoices(); // by now, only files in the same directory will be kept as selected
- mAdapter.swapDirectory(mDirectory);
- }
-
+ mList.clearChoices(); // by now, only files in the same directory will be kept as selected
+ mAdapter.swapDirectory(mDirectory);
+ mList.setSelectionFromTop(0, 0);
}
}
@@
-244,6
+253,14
@@
public class LocalFileListFragment extends FragmentListView {
* @param file
*/
public void onFileClick(File file);
* @param file
*/
public void onFileClick(File file);
+
+
+ /**
+ * Callback method invoked when the parent activity is fully created to get the directory to list firstly.
+ *
+ * @return Directory to list firstly. Can be NULL.
+ */
+ public File getInitialDirectory();
}
}
diff --git
a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java
b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java
index
15c36d1
..
77cd78a
100644
(file)
--- a/
src/com/owncloud/android/ui/fragment/OCFileListFragment.java
+++ b/
src/com/owncloud/android/ui/fragment/OCFileListFragment.java
@@
-55,32
+55,53
@@
public class OCFileListFragment extends FragmentListView {
try {
mContainerActivity = (ContainerActivity) activity;
} catch (ClassCastException e) {
try {
mContainerActivity = (ContainerActivity) activity;
} catch (ClassCastException e) {
- throw new ClassCastException(activity.toString() + " must implement
FileListFragment.ContainerActivity"
);
+ throw new ClassCastException(activity.toString() + " must implement
" + OCFileListFragment.ContainerActivity.class.getCanonicalName()
);
}
}
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- Log.i(
getClass().toString()
, "onCreateView() start");
+ Log.i(
TAG
, "onCreateView() start");
super.onCreateView(inflater, container, savedInstanceState);
getListView().setDivider(getResources().getDrawable(R.drawable.uploader_list_separator));
getListView().setDividerHeight(1);
super.onCreateView(inflater, container, savedInstanceState);
getListView().setDivider(getResources().getDrawable(R.drawable.uploader_list_separator));
getListView().setDividerHeight(1);
- Log.i(
getClass().toString()
, "onCreateView() end");
+ Log.i(
TAG
, "onCreateView() end");
return getListView();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
return getListView();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
- Log.i(
getClass().toString()
, "onActivityCreated() start");
+ Log.i(
TAG
, "onActivityCreated() start");
super.onCreate(savedInstanceState);
super.onCreate(savedInstanceState);
+ mAdapter = new FileListListAdapter(mContainerActivity.getInitialDirectory(), mContainerActivity.getStorageManager(), getActivity());
+ setListAdapter(mAdapter);
+
+ if (savedInstanceState != null) {
+ Log.i(TAG, "savedInstanceState is not null");
+ int position = savedInstanceState.getInt("LIST_POSITION");
+ getListView().setSelectionFromTop(position, 0);
+ }
//mAdapter = new FileListListAdapter();
//mAdapter = new FileListListAdapter();
- Log.i(getClass().toString(), "onActivityCreated() stop");
+ Log.i(TAG, "onActivityCreated() stop");
+ }
+
+
+ @Override
+ public void onSaveInstanceState(Bundle savedInstanceState) {
+ Log.i(TAG, "onSaveInstanceState() start");
+
+ savedInstanceState.putInt("LIST_POSITION", getListView().getFirstVisiblePosition());
+
+ Log.i(TAG, "onSaveInstanceState() stop");
}
}
@@
-144,7
+165,6
@@
public class OCFileListFragment extends FragmentListView {
* @param directory File to be listed
*/
public void listDirectory(OCFile directory) {
* @param directory File to be listed
*/
public void listDirectory(OCFile directory) {
-
DataStorageManager storageManager = mContainerActivity.getStorageManager();
// Check input parameters for null
DataStorageManager storageManager = mContainerActivity.getStorageManager();
// Check input parameters for null
@@
-165,9
+185,8
@@
public class OCFileListFragment extends FragmentListView {
}
mFile = directory;
}
mFile = directory;
-
- mAdapter = new FileListListAdapter(directory, storageManager, getActivity());
- setListAdapter(mAdapter);
+ mAdapter.swapDirectory(mFile);
+ mList.setSelectionFromTop(0, 0);
}
}
@@
-198,6
+217,15
@@
public class OCFileListFragment extends FragmentListView {
*/
public DataStorageManager getStorageManager();
*/
public DataStorageManager getStorageManager();
+
+ /**
+ * Callback method invoked when the parent activity is fully created to get the directory to list firstly.
+ *
+ * @return Directory to list firstly. Can be NULL.
+ */
+ public OCFile getInitialDirectory();
+
+
}
}
}
}