From: Bartek Przybylski Date: Sun, 12 Feb 2012 13:43:09 +0000 (+0100) Subject: bit better handling of filelist X-Git-Tag: oc-android-1.4.3~482 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/e28442c87d7874ffb667f0cc940310a1a9036b23 bit better handling of filelist --- diff --git a/res/layout-port/files.xml b/res/layout-port/files.xml index 631fa98c..dbd48fc3 100644 --- a/res/layout-port/files.xml +++ b/res/layout-port/files.xml @@ -3,7 +3,8 @@ android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#F7F7F7" - android:orientation="vertical" > + android:orientation="vertical" + android:id="@+id/file_list_container"> + android:orientation="horizontal" > - - - - - + android:id="@+id/file_list_container" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1"> + - + - - - + + \ No newline at end of file diff --git a/src/eu/alefzero/owncloud/ui/FragmentListView.java b/src/eu/alefzero/owncloud/ui/FragmentListView.java index aff7005a..7965f722 100644 --- a/src/eu/alefzero/owncloud/ui/FragmentListView.java +++ b/src/eu/alefzero/owncloud/ui/FragmentListView.java @@ -24,6 +24,10 @@ public class FragmentListView extends Fragment implements OnItemClickListener { mList.setAdapter(listAdapter); mList.invalidate(); } + + public ListView getListView() { + return mList; + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, diff --git a/src/eu/alefzero/owncloud/ui/activity/FileDisplayActivity.java b/src/eu/alefzero/owncloud/ui/activity/FileDisplayActivity.java index b6b099f3..f28cdd9c 100644 --- a/src/eu/alefzero/owncloud/ui/activity/FileDisplayActivity.java +++ b/src/eu/alefzero/owncloud/ui/activity/FileDisplayActivity.java @@ -112,7 +112,7 @@ public class FileDisplayActivity extends android.support.v4.app.FragmentActivity getActionBar().setListNavigationCallbacks(mDirectories, this); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - ft.add(R.id.fileList, mFileList); + ft.add(R.id.file_list_container, mFileList); if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { ft.add(R.id.fileDetail, new FileDetail()); } @@ -200,7 +200,6 @@ public class FileDisplayActivity extends android.support.v4.app.FragmentActivity public void onClick(DialogInterface dialog, int item) { mAccount = accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[item]; dialog.dismiss(); - populateFileList(); } }); builder.setOnCancelListener(new OnCancelListener() { @@ -346,35 +345,16 @@ public class FileDisplayActivity extends android.support.v4.app.FragmentActivity //} // } - private void populateFileList() { - if (mParents.empty()) { - mCursor = getContentResolver().query(ProviderTableMeta.CONTENT_URI, - null, - ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?", - new String[]{mAccount.name}, - null); - } else { - mCursor = getContentResolver().query(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParents.peek()), - null, - ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?", - new String[]{mAccount.name}, null); - if (!mIsDisplayingFile) { - //PathLayout pl = (PathLayout) findViewById(R.id.pathLayout1); - //for (String s : mPath) { - // pl.push(s); - // } - } - } + // setListAdapter(new FileListListAdapter(mCursor, this)); // getListView().invalidate(); - } @Override public boolean onNavigationItemSelected(int itemPosition, long itemId) { int i = itemPosition; while (i-- != 0) { popPath(); - mFileList.onBackPressed(); + //mFileList.onBackPressed(); } return true; } @@ -382,10 +362,9 @@ public class FileDisplayActivity extends android.support.v4.app.FragmentActivity @Override public void onBackPressed() { popPath(); - if (mDirectories.isEmpty()) { - super.onBackPressed(); - } - mFileList.onBackPressed(); + //getSupportFragmentManager().popBackStack(); + //super.onBackPressed(); + getSupportFragmentManager().popBackStackImmediate(); } //@Override @@ -400,5 +379,4 @@ public class FileDisplayActivity extends android.support.v4.app.FragmentActivity outState.putSerializable("path", mPath); outState.putBoolean("isDisplayingFile", mIsDisplayingFile); }*/ - } \ No newline at end of file diff --git a/src/eu/alefzero/owncloud/ui/fragment/FileDetail.java b/src/eu/alefzero/owncloud/ui/fragment/FileDetail.java index 50f35a5f..f6adfec8 100644 --- a/src/eu/alefzero/owncloud/ui/fragment/FileDetail.java +++ b/src/eu/alefzero/owncloud/ui/fragment/FileDetail.java @@ -56,12 +56,6 @@ public class FileDetail extends Fragment { } @Override - public void onActivityCreated(Bundle savedInstanceState) { - // TODO Auto-generated method stub - super.onActivityCreated(savedInstanceState); - } - - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.file_details, container, false); diff --git a/src/eu/alefzero/owncloud/ui/fragment/FileList.java b/src/eu/alefzero/owncloud/ui/fragment/FileList.java index 691c2cfd..912312ca 100644 --- a/src/eu/alefzero/owncloud/ui/fragment/FileList.java +++ b/src/eu/alefzero/owncloud/ui/fragment/FileList.java @@ -17,40 +17,27 @@ */ package eu.alefzero.owncloud.ui.fragment; -import java.util.ListIterator; -import java.util.Stack; - -import eu.alefzero.owncloud.DisplayUtils; -import eu.alefzero.owncloud.R; -import eu.alefzero.owncloud.R.id; -import eu.alefzero.owncloud.authenticator.AccountAuthenticator; -import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta; -import eu.alefzero.owncloud.ui.FragmentListView; -import eu.alefzero.owncloud.ui.activity.FileDetailActivity; -import eu.alefzero.owncloud.ui.activity.FileDisplayActivity; -import eu.alefzero.owncloud.ui.adapter.FileListListAdapter; -import eu.alefzero.owncloud.ui.fragment.ActionBar; import android.accounts.Account; import android.accounts.AccountManager; -import android.app.Activity; +import android.app.FragmentManager; import android.app.Service; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; -import android.support.v4.app.Fragment; -import android.support.v4.app.ListFragment; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.ListView; import android.widget.TextView; -import android.widget.Toast; -import android.widget.AdapterView.OnItemClickListener; +import eu.alefzero.owncloud.R; +import eu.alefzero.owncloud.authenticator.AccountAuthenticator; +import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta; +import eu.alefzero.owncloud.ui.FragmentListView; +import eu.alefzero.owncloud.ui.activity.FileDetailActivity; +import eu.alefzero.owncloud.ui.activity.FileDisplayActivity; +import eu.alefzero.owncloud.ui.adapter.FileListListAdapter; /** * A Fragment that lists all files and folders in a given path. @@ -61,98 +48,71 @@ public class FileList extends FragmentListView { private Cursor mCursor; private Account mAccount; private AccountManager mAccountManager; - private View mheaderView; - private Stack mParentsIds; - private Stack mDirNames; + private String mDirName; + private String mParentId; + + public FileList() { + mDirName = null; + mParentId = null; + } + public FileList(String dirName, String parentId) { + mDirName = dirName; + mParentId = parentId; + } + @Override public void onCreate(Bundle savedInstanceState) { - // TODO Auto-generated method stub super.onCreate(savedInstanceState); - - mParentsIds = new Stack(); - mDirNames = new Stack(); + mAccountManager = (AccountManager)getActivity().getSystemService(Service.ACCOUNT_SERVICE); mAccount = mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[0]; populateFileList(); } @Override - public void onActivityCreated(Bundle savedInstanceState) { - // TODO Auto-generated method stub - super.onActivityCreated(savedInstanceState); - } - - @Override public void onItemClick(AdapterView l, View v, int position, long id) { - FileDetail fd = (FileDetail) getFragmentManager().findFragmentById(R.id.fileDetail); + FileDetail fd = (FileDetail) getFragmentManager().findFragmentById(R.id.fileDetail); if (!mCursor.moveToPosition(position)) { throw new IndexOutOfBoundsException("Incorrect item selected"); } if (mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE)).equals("DIR")) { String id_ = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID)); - mParentsIds.push(id_); String dirname = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME)); - mDirNames.push(dirname); - ((FileDisplayActivity)getActivity()).pushPath(DisplayUtils.HtmlDecode(dirname)); - mCursor = getActivity().managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, id_), - null, - ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?", - new String[]{mAccount.name}, null); - setListAdapter(new FileListListAdapter(mCursor, getActivity())); - //super.onListItemClick(l, v, position, id); + + FileList fl = new FileList(dirname, id_); + ((FileDisplayActivity)getActivity()).pushPath(dirname); + + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + ft.addToBackStack(null); + ft.replace(R.id.file_list_container, fl); + ft.commit(); + getSupportFragmentManager().executePendingTransactions(); return; } Intent i = new Intent(getActivity(), FileDetailActivity.class); i.putExtra("FILE_NAME", ((TextView)v.findViewById(R.id.Filename)).getText()); if (fd != null) { fd.setStuff(i); - //fd.use(((TextView)v.findViewById(R.id.Filename)).getText()); } else { - i.putExtra("FILE_NAME", ((TextView)v.findViewById(R.id.Filename)).getText()); startActivity(i); } - FragmentTransaction ft = getFragmentManager().beginTransaction(); - ft.replace(R.id.fileList, this); - ft.commitAllowingStateLoss(); - //super.onListItemClick(l, v, position, id); - - } - - @Override - public void onDestroyView() { - setListAdapter(null); - super.onDestroyView(); } private void populateFileList() { - mCursor = getActivity().getContentResolver().query(ProviderTableMeta.CONTENT_URI, + if (mParentId == null || mDirName == null) { + mCursor = getActivity().getContentResolver().query(ProviderTableMeta.CONTENT_URI, null, ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?", new String[]{mAccount.name}, null); - - setListAdapter(new FileListListAdapter(mCursor, getActivity())); - } - - public void onBackPressed() { - if (!mParentsIds.empty()) { - mParentsIds.pop(); - mDirNames.pop(); - } - if (!mParentsIds.empty()) { - - String id_ = mParentsIds.peek(); - String dirname = mDirNames.peek(); - mCursor = getActivity().managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, id_), - null, - ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?", - new String[]{mAccount.name}, null); - setListAdapter(new FileListListAdapter(mCursor, getActivity())); } else { - populateFileList(); + mCursor = getActivity().managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParentId), + null, + ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?", + new String[]{mAccount.name}, null); } - + setListAdapter(new FileListListAdapter(mCursor, getActivity())); } }