proper file list handling, file basic stuff dispaying
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / activity / FileDisplayActivity.java
index d27061f..93d0ab7 100644 (file)
@@ -30,28 +30,35 @@ import android.accounts.AccountManager;
 import android.app.AlertDialog;\r
 import android.app.Dialog;\r
 import android.app.ListActivity;\r
+import android.app.ActionBar.OnNavigationListener;\r
 import android.content.DialogInterface;\r
 import android.content.Intent;\r
 import android.content.DialogInterface.OnCancelListener;\r
 import android.content.res.Configuration;\r
 import android.database.Cursor;\r
+import android.database.DataSetObserver;\r
 import android.graphics.Bitmap;\r
 import android.graphics.BitmapFactory;\r
 import android.graphics.Matrix;\r
+import android.graphics.drawable.Drawable;\r
 import android.net.Uri;\r
 import android.os.Bundle;\r
 import android.os.Environment;\r
 import android.support.v4.app.FragmentActivity;\r
 import android.support.v4.app.FragmentTransaction;\r
+import android.support.v4.view.Menu;\r
+import android.support.v4.view.MenuItem;\r
 import android.text.TextUtils;\r
 import android.util.Log;\r
-import android.view.Menu;\r
 import android.view.MenuInflater;\r
-import android.view.MenuItem;\r
 import android.view.View;\r
+import android.view.ViewGroup;\r
 import android.view.Window;\r
+import android.widget.ArrayAdapter;\r
 import android.widget.ImageView;\r
 import android.widget.ListView;\r
+import android.widget.Spinner;\r
+import android.widget.SpinnerAdapter;\r
 import android.widget.TextView;\r
 import eu.alefzero.owncloud.R;\r
 import eu.alefzero.owncloud.R.id;\r
@@ -70,25 +77,40 @@ import eu.alefzero.owncloud.ui.fragment.ActionBar;
  * @author Bartek Przybylski\r
  *\r
  */\r
-public class FileDisplayActivity extends FragmentActivity {\r
+\r
+public class FileDisplayActivity extends android.support.v4.app.FragmentActivity implements OnNavigationListener {\r
   private DbHandler mDBHandler;\r
   private Stack<String> mParents;\r
   private LinkedList<String> mPath;\r
   private Account mAccount;\r
   private Cursor mCursor;\r
   private boolean mIsDisplayingFile;\r
-\r
+  private ArrayAdapter<String> mDirectories;\r
\r
   private static final int DIALOG_CHOOSE_ACCOUNT = 0;\r
-\r
+  \r
+  public void pushPath(String path) {\r
+    mDirectories.insert(path, 0);\r
+  }\r
+  \r
+  public boolean popPath() {\r
+    mDirectories.remove(mDirectories.getItem(0));\r
+    Log.d("TAG", ""+getActionBar().getCustomView());\r
+    return !mDirectories.isEmpty();\r
+  }\r
+  \r
   @Override\r
   public void onCreate(Bundle savedInstanceState) {\r
     super.onCreate(savedInstanceState);\r
-    getWindow().requestFeature(Window.FEATURE_NO_TITLE);\r
+    mDirectories = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item);\r
+    mDirectories.add("/");\r
     setContentView(R.layout.files);\r
+    getActionBar().setNavigationMode(android.support.v4.app.ActionBar.NAVIGATION_MODE_LIST);\r
+    getActionBar().setDisplayShowTitleEnabled(false);\r
+    getActionBar().setListNavigationCallbacks(mDirectories, this);\r
     \r
     FragmentTransaction ft = getSupportFragmentManager().beginTransaction();\r
-    //ft.add(R.id.actionBar, new ActionBar());\r
-    ft.add(R.id.fileList, new FileList());\r
+    ft.add(R.id.file_list_container, new FileList());\r
     if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {\r
       ft.add(R.id.fileDetail, new FileDetail());\r
     }\r
@@ -176,7 +198,6 @@ public class FileDisplayActivity extends FragmentActivity {
         public void onClick(DialogInterface dialog, int item) {\r
             mAccount = accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[item];\r
             dialog.dismiss();\r
-            populateFileList();\r
         }\r
     });\r
     builder.setOnCancelListener(new OnCancelListener() {\r
@@ -322,27 +343,29 @@ public class FileDisplayActivity extends FragmentActivity {
     //}\r
 //  }\r
   \r
-  private void populateFileList() {\r
-    if (mParents.empty()) {\r
-      mCursor = getContentResolver().query(ProviderTableMeta.CONTENT_URI,\r
-                                           null,\r
-                                           ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?",\r
-                                           new String[]{mAccount.name},\r
-                                           null);\r
-    } else {\r
-      mCursor = getContentResolver().query(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParents.peek()),\r
-                                           null,\r
-                                           ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?",\r
-                                           new String[]{mAccount.name}, null);\r
-      if (!mIsDisplayingFile) {\r
-        //PathLayout pl = (PathLayout) findViewById(R.id.pathLayout1);\r
-        //for (String s : mPath) {\r
-        //  pl.push(s);\r
-       // }\r
-      }\r
-    }\r
\r
 //    setListAdapter(new FileListListAdapter(mCursor, this));\r
 //    getListView().invalidate();\r
+\r
+  @Override\r
+  public boolean onNavigationItemSelected(int itemPosition, long itemId) {\r
+    int i = itemPosition;\r
+    while (i-- != 0) {\r
+      popPath();\r
+      //mFileList.onBackPressed();\r
+    }\r
+    return true;\r
+  }\r
+  \r
+  @Override\r
+  public void onBackPressed() {\r
+    popPath();\r
+    if (mDirectories.getCount() == 0)\r
+    {\r
+      super.onBackPressed();\r
+      return;\r
+    }\r
+    ((FileList)getSupportFragmentManager().findFragmentById(id.file_list_container)).onBackPressed();\r
   }\r
   \r
   //@Override\r
@@ -357,5 +380,4 @@ public class FileDisplayActivity extends FragmentActivity {
     outState.putSerializable("path", mPath);\r
     outState.putBoolean("isDisplayingFile", mIsDisplayingFile);\r
   }*/\r
-\r
 }
\ No newline at end of file