private Stack<String> mDirNames;\r
private Vector<OCFile> mFiles;\r
private DataStorageManager mStorageManager;\r
+ private FileDetailFragment mFileDetailsDetailFragment;\r
+ private boolean mIsLargeDevice = false;\r
\r
public FileListFragment() {\r
mDirNames = new Stack<String>();\r
super.onCreate(savedInstanceState);\r
\r
mAccount = AccountUtils.getCurrentOwnCloudAccount(getActivity());\r
- getListView().setDivider(\r
- getResources().getDrawable(R.drawable.uploader_list_separator));\r
+ getListView().setDivider(getResources().getDrawable(R.drawable.uploader_list_separator));\r
getListView().setDividerHeight(1);\r
\r
populateFileList();\r
}\r
\r
@Override\r
+ public void onStart() {\r
+ // Inflate the original fragment for better performance\r
+ mFileDetailsDetailFragment = new FileDetailFragment();\r
+ \r
+ // Create a placeholder upon launch\r
+ View fragmentContainer = getActivity().findViewById(R.id.file_details_container);\r
+ if (fragmentContainer != null) {\r
+ mIsLargeDevice = true;\r
+ FragmentTransaction transaction = getFragmentManager().beginTransaction();\r
+ transaction.replace(R.id.file_details_container, new FileDetailFragment(true));\r
+ transaction.commit();\r
+ }\r
+ super.onStart();\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
populateFileList();\r
resetFileFragment();\r
- \r
+\r
return;\r
}\r
\r
- Intent showDetailsIntent = new Intent(getActivity(),\r
- FileDetailActivity.class);\r
+ Intent showDetailsIntent = new Intent(getActivity(), 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
- 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
- FragmentTransaction transaction = getFragmentManager()\r
- .beginTransaction();\r
- fd = new FileDetailFragment(showDetailsIntent);\r
- transaction.replace(R.id.fileDetail, fd, "FileDetails");\r
+ // If we are on a large device -> update fragment\r
+ if (mIsLargeDevice) {\r
+ FileDetailFragment fileDetails = (FileDetailFragment) getFragmentManager().findFragmentByTag("FileDetails");\r
+ if (fileDetails == null) {\r
+ FragmentTransaction transaction = getFragmentManager().beginTransaction();\r
+ transaction.replace(R.id.file_details_container, mFileDetailsDetailFragment, "FileDetails");\r
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);\r
transaction.commit();\r
} else {\r
- fd.updateFileDetails(showDetailsIntent);\r
+ fileDetails.updateFileDetails(showDetailsIntent);\r
}\r
-\r
} else {\r
startActivity(showDetailsIntent);\r
}\r
}\r
\r
/**\r
- * Resets the FileDetailsFragment on Tablets\r
- * so that it always displays "Tab on a file to display it's details" \r
+ * Resets the FileDetailsFragment on Tablets so that it always displays\r
+ * "Tab on a file to display it's details"\r
*/\r
private void resetFileFragment() {\r
FileDetailFragment fileDetails = (FileDetailFragment) getFragmentManager().findFragmentByTag("FileDetails");\r
- if(fileDetails != null){\r
+ if (fileDetails != null) {\r
FragmentTransaction transaction = getFragmentManager().beginTransaction();\r
transaction.remove(fileDetails);\r
- transaction.add(R.id.file_details_container, new FileDetailFragment());\r
+ transaction.add(R.id.file_details_container, new FileDetailFragment(true));\r
transaction.commit();\r
}\r
}\r
\r
@Override\r
- public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,\r
- long arg3) {\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",\r
- new String[] { ClipDescription.MIMETYPE_TEXT_PLAIN });\r
+ ClipDescription cd = new ClipDescription("ASD", 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
+ arg1.startDrag(dragData, new View.DragShadowBuilder(arg0.getChildAt(arg2)), null, 0);\r
return true;\r
}\r
\r
s += a + "/";\r
Log.e("ASD", s);\r
\r
- mStorageManager = new FileDataStorageManager(mAccount, getActivity()\r
- .getContentResolver());\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",\r
- Toast.LENGTH_LONG).show();\r
+ Toast.makeText(getActivity(), "There are no files here", Toast.LENGTH_LONG).show();\r
}\r
- setListAdapter(new FileListListAdapter(file, mStorageManager,\r
- getActivity()));\r
+ setListAdapter(new FileListListAdapter(file, mStorageManager, getActivity()));\r
}\r
\r
// TODO: Delete this testing stuff.\r