- private Account mAccount;\r
- private Stack<String> mDirNames;\r
- private Vector<OCFile> mFiles;\r
- private DataStorageManager mStorageManager;\r
-\r
- public FileListFragment() {\r
- mDirNames = new Stack<String>();\r
- }\r
- \r
- @Override\r
- public void onCreate(Bundle savedInstanceState) {\r
- super.onCreate(savedInstanceState);\r
-\r
- mAccount = AccountUtils.getCurrentOwnCloudAccount(getActivity());\r
- getListView().setDivider(getResources().getDrawable(R.drawable.uploader_list_separator));\r
- getListView().setDividerHeight(1);\r
- \r
- populateFileList();\r
- }\r
- \r
- @Override\r
- public void onItemClick(AdapterView<?> l, View v, int position, long id) {\r
- if (mFiles.size() <= position) {\r
- throw new IndexOutOfBoundsException("Incorrect item selected");\r
- }\r
- OCFile file = mFiles.get(position);\r
- String id_ = String.valueOf(file.getFileId());\r
- if (file.getMimetype().equals("DIR")) {\r
- String dirname = file.getFileName();\r
-\r
- mDirNames.push(dirname);\r
- ((FileDisplayActivity)getActivity()).pushPath(dirname);\r
- \r
- populateFileList();\r
- return;\r
- }\r
- Intent i = new Intent(getActivity(), FileDetailActivity.class);\r
- i.putExtra("FILE_NAME", file.getFileName());\r
- i.putExtra("FULL_PATH", file.getPath());\r
- i.putExtra("FILE_ID", id_);\r
- Log.e("ASD", mAccount+"");\r
- i.putExtra("ACCOUNT", mAccount);\r
- FileDetailFragment fd = (FileDetailFragment) getFragmentManager().findFragmentById(R.id.fileDetail);\r
- if (fd != null) {\r
- fd.setStuff(i);\r
- } else {\r
- startActivity(i);\r
- }\r
- }\r
- \r
- @Override\r
- public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {\r
- ClipData.Item item = new ClipData.Item("ASD");\r
- ClipDescription cd = new ClipDescription("ASD", new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN});\r
- ClipData dragData = new ClipData(cd, item);\r
- arg1.startDrag(dragData, new View.DragShadowBuilder(arg0.getChildAt(arg2)), null, 0);\r
- return true;\r
- }\r
- \r
- /**\r
- * Call this, when the user presses the up button\r
- */\r
- public void onNavigateUp() {\r
- mDirNames.pop();\r
- populateFileList();\r
- }\r
-\r
- /**\r
- * Lists the directory\r
- */\r
- public void populateFileList() {\r
- String s = "/";\r
- for (String a : mDirNames)\r
- s+= a + "/";\r
- Log.e("ASD", s);\r
-\r
- mStorageManager = new FileDataStorageManager(mAccount, getActivity().getContentResolver());\r
- OCFile file = mStorageManager.getFileByPath(s);\r
- mFiles = mStorageManager.getDirectoryContent(file);\r
- if (mFiles == null || mFiles.size() == 0) {\r
- Toast.makeText(getActivity(), "There are no files here", Toast.LENGTH_LONG).show();\r
- }\r
- setListAdapter(new FileListListAdapter(file, mStorageManager, getActivity()));\r
- }\r
- \r
- //TODO: Delete this testing stuff.\r
- /*private void addContact(Account account, String name, String username) {\r
- Log.i("ASD", "Adding contact: " + name);\r
- ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();\r
- \r
- //Create our RawContact\r
- ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);\r
- builder.withValue(RawContacts.ACCOUNT_NAME, account.name);\r
- builder.withValue(RawContacts.ACCOUNT_TYPE, account.type);\r
- builder.withValue(RawContacts.SYNC1, username);\r
- operationList.add(builder.build());\r
- \r
- //Create a Data record of common type 'StructuredName' for our RawContact\r
- builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);\r
- builder.withValueBackReference(ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID, 0);\r
- builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);\r
- builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);\r
- operationList.add(builder.build());\r
- \r
- //Create a Data record of custom type "vnd.android.cursor.item/vnd.fm.last.android.profile" to display a link to the Last.fm profile\r
- builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);\r
- builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);\r
- builder.withValue(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/vnd.owncloud.contact.profile");\r
- builder.withValue(ContactsContract.Data.DATA1, username);\r
- builder.withValue(ContactsContract.Data.DATA2, "Last.fm Profile");\r
- builder.withValue(ContactsContract.Data.DATA3, "View profile");\r
- operationList.add(builder.build());\r
- \r
- try {\r
- getActivity().getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList);\r
- } catch (Exception e) {\r
- Log.e("ASD", "Something went wrong during creation! " + e);\r
- e.printStackTrace();\r
- }\r
- }*/\r
- \r
+ private Account mAccount;\r
+ private Stack<String> mDirNames;\r
+ private Vector<OCFile> mFiles;\r
+ private DataStorageManager mStorageManager;\r
+\r
+ public FileListFragment() {\r
+ mDirNames = new Stack<String>();\r
+ }\r
+\r
+ @Override\r
+ public void onCreate(Bundle savedInstanceState) {\r
+ super.onCreate(savedInstanceState);\r
+\r
+ mAccount = AccountUtils.getCurrentOwnCloudAccount(getActivity());\r
+ getListView().setDivider(\r
+ getResources().getDrawable(R.drawable.uploader_list_separator));\r
+ getListView().setDividerHeight(1);\r
+\r
+ populateFileList();\r
+ }\r
+\r
+ @Override\r
+ public void onItemClick(AdapterView<?> l, View v, int position, long id) {\r
+ if (mFiles.size() <= position) {\r
+ throw new IndexOutOfBoundsException("Incorrect item selected");\r
+ }\r
+ OCFile file = mFiles.get(position);\r
+\r
+ // Update ActionBarPath\r
+ if (file.getMimetype().equals("DIR")) {\r
+ String dirname = file.getFileName();\r
+\r
+ mDirNames.push(dirname);\r
+ ((FileDisplayActivity) getActivity()).pushPath(dirname);\r
+\r
+ populateFileList();\r
+ return;\r
+ }\r
+\r
+ Intent showDetailsIntent = new Intent(getActivity(),\r
+ FileDetailActivity.class);\r
+ showDetailsIntent.putExtra(FileDetailFragment.FILE, file);\r
+ showDetailsIntent.putExtra(FileDownloader.EXTRA_ACCOUNT, mAccount);\r
+ \r
+ // Try to find by tag first\r
+ FileDetailFragment fd = (FileDetailFragment) getFragmentManager()\r
+ .findFragmentByTag("FileDetails");\r
+ \r
+ // Could be the first time the user has touched a file. find by id\r
+ if(fd == null){\r
+ fd = (FileDetailFragment) getFragmentManager().findFragmentById(R.id.fileDetail);\r
+ }\r
+\r
+ // Tablets will have this fragment, phones not. Could still be null\r
+ if (fd != null) {\r
+ \r
+ if(fd.isEmptyLayout()){\r
+ // True, if this is the first time a user taps on a file\r
+ fd = new FileDetailFragment(showDetailsIntent);\r
+ FragmentTransaction transaction = getFragmentManager().beginTransaction();\r
+ transaction.replace(R.id.file_details_container, fd, "FileDetails");\r
+ transaction.commit();\r
+ } else {\r
+ fd.updateFileDetails(showDetailsIntent);\r
+ }\r
+ \r
+ } else {\r
+ startActivity(showDetailsIntent);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,\r
+ long arg3) {\r
+ ClipData.Item item = new ClipData.Item("ASD");\r
+ ClipDescription cd = new ClipDescription("ASD",\r
+ new String[] { ClipDescription.MIMETYPE_TEXT_PLAIN });\r
+ ClipData dragData = new ClipData(cd, item);\r
+ arg1.startDrag(dragData,\r
+ new View.DragShadowBuilder(arg0.getChildAt(arg2)), null, 0);\r
+ return true;\r
+ }\r
+\r
+ /**\r
+ * Call this, when the user presses the up button\r
+ */\r
+ public void onNavigateUp() {\r
+ mDirNames.pop();\r
+ populateFileList();\r
+ }\r
+\r
+ /**\r
+ * Lists the directory\r
+ */\r
+ public void populateFileList() {\r
+ String s = "/";\r
+ for (String a : mDirNames)\r
+ s += a + "/";\r
+ Log.e("ASD", s);\r
+\r
+ mStorageManager = new FileDataStorageManager(mAccount, getActivity()\r
+ .getContentResolver());\r
+ OCFile file = mStorageManager.getFileByPath(s);\r
+ mFiles = mStorageManager.getDirectoryContent(file);\r
+ if (mFiles == null || mFiles.size() == 0) {\r
+ Toast.makeText(getActivity(), "There are no files here",\r
+ Toast.LENGTH_LONG).show();\r
+ }\r
+ setListAdapter(new FileListListAdapter(file, mStorageManager,\r
+ getActivity()));\r
+ }\r
+\r
+ // TODO: Delete this testing stuff.\r
+ /*\r
+ * private void addContact(Account account, String name, String username) {\r
+ * Log.i("ASD", "Adding contact: " + name);\r
+ * ArrayList<ContentProviderOperation> operationList = new\r
+ * ArrayList<ContentProviderOperation>();\r
+ * \r
+ * //Create our RawContact ContentProviderOperation.Builder builder =\r
+ * ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);\r
+ * builder.withValue(RawContacts.ACCOUNT_NAME, account.name);\r
+ * builder.withValue(RawContacts.ACCOUNT_TYPE, account.type);\r
+ * builder.withValue(RawContacts.SYNC1, username);\r
+ * operationList.add(builder.build());\r
+ * \r
+ * //Create a Data record of common type 'StructuredName' for our RawContact\r
+ * builder =\r
+ * ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);\r
+ * builder\r
+ * .withValueBackReference(ContactsContract.CommonDataKinds.StructuredName\r
+ * .RAW_CONTACT_ID, 0); builder.withValue(ContactsContract.Data.MIMETYPE,\r
+ * ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);\r
+ * builder\r
+ * .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,\r
+ * name); operationList.add(builder.build());\r
+ * \r
+ * //Create a Data record of custom type\r
+ * "vnd.android.cursor.item/vnd.fm.last.android.profile" to display a link\r
+ * to the Last.fm profile builder =\r
+ * ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);\r
+ * builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);\r
+ * builder.withValue(ContactsContract.Data.MIMETYPE,\r
+ * "vnd.android.cursor.item/vnd.owncloud.contact.profile");\r
+ * builder.withValue(ContactsContract.Data.DATA1, username);\r
+ * builder.withValue(ContactsContract.Data.DATA2, "Last.fm Profile");\r
+ * builder.withValue(ContactsContract.Data.DATA3, "View profile");\r
+ * operationList.add(builder.build());\r
+ * \r
+ * try {\r
+ * getActivity().getContentResolver().applyBatch(ContactsContract.AUTHORITY,\r
+ * operationList); } catch (Exception e) { Log.e("ASD",\r
+ * "Something went wrong during creation! " + e); e.printStackTrace(); } }\r
+ */\r
+\r