<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>\r
\r
<application android:icon="@drawable/icon" android:label="@string/app_name">\r
- <activity android:name=".ui.activity.FileDisplayActivity"></activity>\r
+ <activity android:name=".ui.activity.FileDisplayActivity" android:theme="@style/Theme.ownCloud" android:label="@string/app_name"></activity>\r
<activity android:name=".Uploader">\r
<intent-filter>\r
<action android:name="android.intent.action.SEND"></action>\r
android:background="#F7F7F7"\r
android:orientation="vertical" >\r
\r
- <fragment \r
- android:id="@+id/actionBar"\r
- android:layout_width="fill_parent"\r
- android:layout_height="wrap_content"\r
- class="eu.alefzero.owncloud.ui.fragment.ActionBar">\r
- <!-- Preview: layout=@layout/action_bar -->\r
- </fragment>\r
-\r
<fragment\r
android:id="@+id/fileList"\r
android:layout_width="fill_parent"\r
android:layout_height="fill_parent"\r
android:orientation="vertical" >\r
\r
- <fragment\r
- android:id="@+id/actionBar"\r
- android:layout_height="wrap_content"\r
- android:layout_width="fill_parent"\r
- class="eu.alefzero.owncloud.ui.fragment.ActionBar">\r
- <!-- Preview: layout=@layout/action_bar -->\r
- </fragment>\r
-\r
<LinearLayout\r
android:id="@+id/linearLayout2"\r
android:layout_width="fill_parent"\r
<style name="ocActionBarTextStyle">
<item name="android:textColor">#ffffff</item>
</style>
-
-
-
+
+
<!-- PopDownMenu -->
<style name="Animations.PopDownMenu" />
--- /dev/null
+package eu.alefzero.owncloud.ui;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+import android.widget.AdapterView.OnItemClickListener;
+
+public class FragmentListView extends Fragment implements OnItemClickListener {
+ ListView mList;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ mList = new ListView(getActivity());
+ mList.setOnItemClickListener(this);
+ super.onCreate(savedInstanceState);
+ }
+
+ public void setListAdapter(ListAdapter listAdapter) {
+ mList.setAdapter(listAdapter);
+ mList.invalidate();
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ return mList;
+ //return super.onCreateView(inflater, container, savedInstanceState);
+ }
+
+ public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {}
+
+
+}
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.util.Log;\r
import android.view.MenuInflater;\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
* @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
+ private FileList mFileList;\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
+ mFileList = new FileList();\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.fileList, mFileList);\r
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {\r
ft.add(R.id.fileDetail, new FileDetail());\r
}\r
// setListAdapter(new FileListListAdapter(mCursor, this));\r
// getListView().invalidate();\r
}\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.isEmpty()) {\r
+ super.onBackPressed();\r
+ }\r
+ mFileList.onBackPressed();\r
+ }\r
\r
//@Override\r
/*protected void onActivityResult(int requestCode, int resultCode, Intent data) {\r
*/\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.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
\r
/**\r
* A Fragment that lists all files and folders in a given path.\r
* @author Bartek Przybylski\r
*\r
*/\r
-public class FileList extends ListFragment {\r
+public class FileList extends FragmentListView {\r
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
\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
mAccountManager = (AccountManager)getActivity().getSystemService(Service.ACCOUNT_SERVICE);\r
mAccount = mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[0];\r
populateFileList();\r
}\r
\r
@Override\r
- public void onListItemClick(ListView l, View v, int position, long id) {\r
+ public void onItemClick(AdapterView<?> l, View v, int position, long id) {\r
FileDetail fd = (FileDetail) getFragmentManager().findFragmentById(R.id.fileDetail);\r
- ActionBar ab = (ActionBar) getFragmentManager().findFragmentById(R.id.actionBar);\r
- \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
- //ab..push(DisplayUtils.HtmlDecode(dirname));\r
- //mPath.addLast(DisplayUtils.HtmlDecode(dirname));\r
- //mParents.push(id_);\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
- setListShown(false);\r
- setListShown(true);\r
- super.onListItemClick(l, v, position, id);\r
+ //super.onListItemClick(l, v, position, id);\r
return;\r
}\r
Intent i = new Intent(getActivity(), FileDetailActivity.class);\r
- i.putExtra("FILE_PATH", ab.getCurrentPath());\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_PATH", ab.getCurrentPath());\r
i.putExtra("FILE_NAME", ((TextView)v.findViewById(R.id.Filename)).getText());\r
startActivity(i);\r
}\r
- super.onListItemClick(l, v, position, id);\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
\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
+ }\r
+ \r
+ }\r
}\r