*/\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
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
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
\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