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