proper file list handling, file basic stuff dispaying
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / fragment / FileList.java
index 912312c..3c7c0ea 100644 (file)
@@ -17,6 +17,8 @@
  */\r
 package eu.alefzero.owncloud.ui.fragment;\r
 \r
+import java.util.Stack;\r
+\r
 import android.accounts.Account;\r
 import android.accounts.AccountManager;\r
 import android.app.FragmentManager;\r
@@ -26,6 +28,7 @@ import android.database.Cursor;
 import android.net.Uri;\r
 import android.os.Bundle;\r
 import android.support.v4.app.FragmentTransaction;\r
+import android.util.Log;\r
 import android.view.LayoutInflater;\r
 import android.view.View;\r
 import android.view.ViewGroup;\r
@@ -48,17 +51,12 @@ public class FileList extends FragmentListView {
   private Cursor mCursor;\r
   private Account mAccount;\r
   private AccountManager mAccountManager;\r
-  private String mDirName;\r
-  private String mParentId;\r
+  private Stack<String> mDirNames;\r
+  private Stack<String> mParentsIds;\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
+    mDirNames = new Stack<String>();\r
+    mParentsIds = new Stack<String>();\r
   }\r
   \r
   @Override\r
@@ -72,43 +70,47 @@ public class FileList extends FragmentListView {
   \r
   @Override\r
   public void onItemClick(AdapterView<?> l, View v, int position, long id) {\r
-    FileDetail fd = (FileDetail) getFragmentManager().findFragmentById(R.id.fileDetail); \r
     if (!mCursor.moveToPosition(position)) {\r
       throw new IndexOutOfBoundsException("Incorrect item selected");\r
     }\r
-    \r
+    String id_ = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID));\r
     if (mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE)).equals("DIR")) {\r
-        String id_ = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID));\r
         String dirname = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME));\r
 \r
-        FileList fl = new FileList(dirname, id_);\r
+        mDirNames.push(dirname);\r
+        mParentsIds.push(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
+        \r
+        populateFileList();\r
         return;\r
     }\r
     Intent i = new Intent(getActivity(), FileDetailActivity.class);\r
     i.putExtra("FILE_NAME", ((TextView)v.findViewById(R.id.Filename)).getText());\r
+    i.putExtra("FILE_ID", id_);\r
+    i.putExtra("ACCOUNT_NAME", mAccount.name);\r
+    FileDetail fd = (FileDetail) getFragmentManager().findFragmentById(R.id.fileDetail);\r
     if (fd != null) {\r
       fd.setStuff(i);\r
     } else {\r
       startActivity(i);\r
     }\r
   }\r
-  \r
+\r
+  public void onBackPressed() {\r
+    mParentsIds.pop();\r
+    mDirNames.pop();\r
+    populateFileList();\r
+  }\r
+\r
   private void populateFileList() {\r
-    if (mParentId == null || mDirName == null) {\r
+    if (mParentsIds.empty()) {\r
       mCursor = getActivity().getContentResolver().query(ProviderTableMeta.CONTENT_URI,\r
         null,\r
         ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?",\r
         new String[]{mAccount.name},\r
         null);\r
     } else {\r
-      mCursor = getActivity().managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParentId),\r
+      mCursor = getActivity().managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParentsIds.peek()),\r
           null,\r
           ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?",\r
           new String[]{mAccount.name}, null);\r