android:orientation="vertical" \r
android:id="@+id/file_list_container">\r
\r
- <fragment\r
- android:id="@+id/fileList"\r
- android:layout_width="fill_parent"\r
- android:layout_height="fill_parent"\r
- class="eu.alefzero.owncloud.ui.fragment.FileList" >\r
-\r
- <!-- Preview: layout=@layout/list_layout -->\r
- </fragment>\r
- <!-- </LinearLayout> -->\r
-\r
</LinearLayout>
\ No newline at end of file
private Cursor mCursor;\r
private boolean mIsDisplayingFile;\r
private ArrayAdapter<String> mDirectories;\r
- private FileList mFileList;\r
\r
private static final int DIALOG_CHOOSE_ACCOUNT = 0;\r
\r
super.onCreate(savedInstanceState);\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.file_list_container, mFileList);\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
@Override\r
public void onBackPressed() {\r
popPath();\r
- //getSupportFragmentManager().popBackStack();\r
- //super.onBackPressed();\r
- getSupportFragmentManager().popBackStackImmediate();\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
*/\r
package eu.alefzero.owncloud.ui.fragment;\r
\r
+import eu.alefzero.owncloud.DisplayUtils;\r
import eu.alefzero.owncloud.R;\r
+import eu.alefzero.owncloud.cp;\r
import eu.alefzero.owncloud.R.id;\r
import eu.alefzero.owncloud.R.layout;\r
+import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta;\r
import android.content.Intent;\r
+import android.database.Cursor;\r
+import android.net.Uri;\r
import android.os.Bundle;\r
import android.support.v4.app.Fragment;\r
import android.util.Log;\r
public Intent mIntent;\r
\r
public void setStuff(Intent intent) {\r
- setStuff(intent, getView());\r
+ mIntent = intent;\r
+ setStuff(getView());\r
}\r
\r
- private void setStuff(Intent intent, View view) {\r
- String filename = intent.getStringExtra("FILE_NAME");\r
- String filepath = intent.getStringExtra("FILE_PATH");\r
+ private void setStuff(View view) {\r
+ String id = mIntent.getStringExtra("FILE_ID");\r
+ String account_name = mIntent.getStringExtra("ACCOUNT_NAME");\r
+ Cursor c = getActivity().managedQuery(\r
+ Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_FILE, id),\r
+ null,\r
+ ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?",\r
+ new String[]{account_name},\r
+ null);\r
+ c.moveToFirst();\r
+ \r
+ String filename = c.getString(c.getColumnIndex(ProviderTableMeta.FILE_NAME));\r
setFilename(filename, view);\r
- }\r
- \r
- @Override\r
- public void onCreate(Bundle savedInstanceState) {\r
- // TODO Auto-generated method stub\r
- super.onCreate(savedInstanceState);\r
+ String mimetype = c.getString(c.getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE));\r
+ setFiletype(DisplayUtils.convertMIMEtoPrettyPrint(mimetype), view);\r
}\r
\r
@Override\r
Bundle savedInstanceState) {\r
View v = inflater.inflate(R.layout.file_details, container, false);\r
\r
- if (getActivity().getIntent() != null) setStuff(getActivity().getIntent(), v);\r
+ if (getActivity().getIntent() != null) {\r
+ mIntent = getActivity().getIntent();\r
+ setStuff(v);\r
+ }\r
return v;\r
}\r
\r
if (tv != null) tv.setText(filename);\r
}\r
\r
+ private void setFiletype(String mimetype, View target_view) {\r
+ TextView tv = (TextView) target_view.findViewById(R.id.textView2);\r
+ if (tv != null) tv.setText(mimetype);\r
+ }\r
+ \r
public void setFilename(String filename) {\r
setFilename(filename, getView());\r
}\r
+ \r
+ public void setFiletype(String filename) {\r
+ setFiletype(filename, getView());\r
+ }\r
}\r
*/\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