bit better handling of filelist
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / fragment / FileList.java
index 691c2cf..912312c 100644 (file)
  */\r
 package eu.alefzero.owncloud.ui.fragment;\r
 \r
-import java.util.ListIterator;\r
-import java.util.Stack;\r
-\r
-import eu.alefzero.owncloud.DisplayUtils;\r
-import eu.alefzero.owncloud.R;\r
-import eu.alefzero.owncloud.R.id;\r
-import eu.alefzero.owncloud.authenticator.AccountAuthenticator;\r
-import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta;\r
-import eu.alefzero.owncloud.ui.FragmentListView;\r
-import eu.alefzero.owncloud.ui.activity.FileDetailActivity;\r
-import eu.alefzero.owncloud.ui.activity.FileDisplayActivity;\r
-import eu.alefzero.owncloud.ui.adapter.FileListListAdapter;\r
-import eu.alefzero.owncloud.ui.fragment.ActionBar;\r
 import android.accounts.Account;\r
 import android.accounts.AccountManager;\r
-import android.app.Activity;\r
+import android.app.FragmentManager;\r
 import android.app.Service;\r
 import android.content.Intent;\r
 import android.database.Cursor;\r
 import android.net.Uri;\r
 import android.os.Bundle;\r
 import android.support.v4.app.FragmentTransaction;\r
-import android.support.v4.app.Fragment;\r
-import android.support.v4.app.ListFragment;\r
-import android.util.Log;\r
 import android.view.LayoutInflater;\r
 import android.view.View;\r
 import android.view.ViewGroup;\r
 import android.widget.AdapterView;\r
-import android.widget.ArrayAdapter;\r
-import android.widget.ListView;\r
 import android.widget.TextView;\r
-import android.widget.Toast;\r
-import android.widget.AdapterView.OnItemClickListener;\r
+import eu.alefzero.owncloud.R;\r
+import eu.alefzero.owncloud.authenticator.AccountAuthenticator;\r
+import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta;\r
+import eu.alefzero.owncloud.ui.FragmentListView;\r
+import eu.alefzero.owncloud.ui.activity.FileDetailActivity;\r
+import eu.alefzero.owncloud.ui.activity.FileDisplayActivity;\r
+import eu.alefzero.owncloud.ui.adapter.FileListListAdapter;\r
 \r
 /**\r
  * A Fragment that lists all files and folders in a given path.\r
@@ -61,98 +48,71 @@ public class FileList extends FragmentListView {
   private Cursor mCursor;\r
   private Account mAccount;\r
   private AccountManager mAccountManager;\r
-  private View mheaderView;\r
-  private Stack<String> mParentsIds;\r
-  private Stack<String> mDirNames;\r
+  private String mDirName;\r
+  private String mParentId;\r
+\r
+  public FileList() {\r
+    mDirName = null;\r
+    mParentId = null;\r
+  }\r
 \r
+  public FileList(String dirName, String parentId) {\r
+    mDirName = dirName;\r
+    mParentId = parentId;\r
+  }\r
+  \r
   @Override\r
   public void onCreate(Bundle savedInstanceState) {\r
-    // TODO Auto-generated method stub\r
     super.onCreate(savedInstanceState);\r
-    \r
-    mParentsIds = new Stack<String>();\r
-    mDirNames = new Stack<String>();\r
+\r
     mAccountManager = (AccountManager)getActivity().getSystemService(Service.ACCOUNT_SERVICE);\r
     mAccount = mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[0];\r
     populateFileList();\r
   }\r
   \r
   @Override\r
-  public void onActivityCreated(Bundle savedInstanceState) {\r
-    // TODO Auto-generated method stub\r
-    super.onActivityCreated(savedInstanceState);\r
-  }\r
-  \r
-  @Override\r
   public void onItemClick(AdapterView<?> l, View v, int position, long id) {\r
-    FileDetail fd = (FileDetail) getFragmentManager().findFragmentById(R.id.fileDetail);\r
+    FileDetail fd = (FileDetail) getFragmentManager().findFragmentById(R.id.fileDetail); \r
     if (!mCursor.moveToPosition(position)) {\r
       throw new IndexOutOfBoundsException("Incorrect item selected");\r
     }\r
     \r
     if (mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE)).equals("DIR")) {\r
         String id_ = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID));\r
-        mParentsIds.push(id_);\r
         String dirname = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME));\r
-        mDirNames.push(dirname);\r
-        ((FileDisplayActivity)getActivity()).pushPath(DisplayUtils.HtmlDecode(dirname));\r
-        mCursor = getActivity().managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, id_),\r
-                               null,\r
-                               ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?",\r
-                               new String[]{mAccount.name}, null);\r
-        setListAdapter(new FileListListAdapter(mCursor, getActivity()));\r
-        //super.onListItemClick(l, v, position, id);\r
+\r
+        FileList fl = new FileList(dirname, id_);\r
+        ((FileDisplayActivity)getActivity()).pushPath(dirname);\r
+\r
+        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();\r
+        ft.addToBackStack(null);\r
+        ft.replace(R.id.file_list_container, fl);\r
+        ft.commit();\r
+        getSupportFragmentManager().executePendingTransactions();\r
         return;\r
     }\r
     Intent i = new Intent(getActivity(), FileDetailActivity.class);\r
     i.putExtra("FILE_NAME", ((TextView)v.findViewById(R.id.Filename)).getText());\r
     if (fd != null) {\r
       fd.setStuff(i);\r
-      //fd.use(((TextView)v.findViewById(R.id.Filename)).getText());\r
     } else {\r
-      i.putExtra("FILE_NAME", ((TextView)v.findViewById(R.id.Filename)).getText());\r
       startActivity(i);\r
     }\r
-    FragmentTransaction ft = getFragmentManager().beginTransaction();\r
-    ft.replace(R.id.fileList, this);\r
-    ft.commitAllowingStateLoss();\r
-    //super.onListItemClick(l, v, position, id);\r
-    \r
-  }\r
-  \r
-  @Override\r
-  public void onDestroyView() {\r
-    setListAdapter(null);\r
-    super.onDestroyView();\r
   }\r
   \r
   private void populateFileList() {\r
-    mCursor = getActivity().getContentResolver().query(ProviderTableMeta.CONTENT_URI,\r
+    if (mParentId == null || mDirName == null) {\r
+      mCursor = getActivity().getContentResolver().query(ProviderTableMeta.CONTENT_URI,\r
         null,\r
         ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?",\r
         new String[]{mAccount.name},\r
         null);\r
-    \r
-    setListAdapter(new FileListListAdapter(mCursor, getActivity()));\r
-  }\r
-  \r
-  public void onBackPressed() {\r
-    if (!mParentsIds.empty()) {\r
-      mParentsIds.pop();\r
-      mDirNames.pop();\r
-    }\r
-    if (!mParentsIds.empty()) {\r
-      \r
-      String id_ = mParentsIds.peek();\r
-      String dirname = mDirNames.peek();\r
-      mCursor = getActivity().managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, id_),\r
-                             null,\r
-                             ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?",\r
-                             new String[]{mAccount.name}, null);\r
-      setListAdapter(new FileListListAdapter(mCursor, getActivity()));\r
     } else {\r
-      populateFileList();\r
+      mCursor = getActivity().managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParentId),\r
+          null,\r
+          ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?",\r
+          new String[]{mAccount.name}, null);\r
     }\r
-      \r
+    setListAdapter(new FileListListAdapter(mCursor, getActivity()));\r
   }\r
 }\r