FileDetailsFragment now working on tablets
authorLennart Rosam <lennart@familie-rosam.de>
Thu, 17 May 2012 22:37:53 +0000 (00:37 +0200)
committerLennart Rosam <lennart@familie-rosam.de>
Thu, 17 May 2012 22:37:53 +0000 (00:37 +0200)
res/layout-large-land/files.xml
src/eu/alefzero/owncloud/ui/fragment/FileDetailFragment.java
src/eu/alefzero/owncloud/ui/fragment/FileListFragment.java

index 68f8c86..aadb269 100644 (file)
@@ -24,7 +24,7 @@
     <LinearLayout\r
         android:id="@+id/file_list_container"\r
         android:layout_width="0dp"\r
-        android:layout_height="wrap_content"\r
+        android:layout_height="fill_parent"\r
         android:layout_weight="1" >\r
 \r
         <fragment\r
@@ -39,7 +39,7 @@
 \r
     <LinearLayout android:id="@+id/file_details_container"\r
         android:layout_width="0dp"\r
-        android:layout_height="wrap_content"\r
+        android:layout_height="fill_parent"\r
         android:layout_weight="2" >\r
 \r
         <fragment\r
index 3e3082c..137cd29 100644 (file)
@@ -53,7 +53,7 @@ public class FileDetailFragment extends SherlockFragment implements
     public static final String FILE = "FILE";\r
 \r
     private Intent mIntent;\r
-    private View mView;\r
+    //private View mView;\r
     private DownloadFinishReceiver mDownloadFinishReceiver;\r
     private OCFile mFile;\r
 \r
@@ -73,7 +73,7 @@ public class FileDetailFragment extends SherlockFragment implements
      * to contain {@link FileDetailFragment#FILE} with an OCFile and also\r
      * {@link FileDownloader#EXTRA_ACCOUNT} with the account.\r
      * \r
-     * @param nonEmptyFragment True, to enable file detail rendering\r
+     * @param intent Intent with an account and a file in it for rendering\r
      */\r
     public FileDetailFragment(Intent intent) {\r
         mLayout = R.layout.file_details_fragment;\r
@@ -124,7 +124,7 @@ public class FileDetailFragment extends SherlockFragment implements
             setFilesize(mFile.getFileLength());\r
 \r
             // set file preview if available and possible\r
-            VideoView videoView = (VideoView) mView\r
+            VideoView videoView = (VideoView) getView()\r
                     .findViewById(R.id.videoView1);\r
             videoView.setVisibility(View.INVISIBLE);\r
             if (mFile.getStoragePath() == null) {\r
@@ -134,7 +134,7 @@ public class FileDetailFragment extends SherlockFragment implements
                 imageView.setOnClickListener(this);\r
             } else {\r
                 if (mFile.getMimetype().startsWith("image/")) {\r
-                    ImageView imageView = (ImageView) mView\r
+                    ImageView imageView = (ImageView) getView()\r
                             .findViewById(R.id.imageView2);\r
                     Bitmap bmp = BitmapFactory.decodeFile(mFile.getStoragePath());\r
                     imageView.setImageBitmap(bmp);\r
@@ -151,23 +151,25 @@ public class FileDetailFragment extends SherlockFragment implements
     public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
             Bundle savedInstanceState) {\r
         View view = null;\r
-\r
         view = inflater.inflate(mLayout, container, false);\r
-        mIntent = getActivity().getIntent();\r
-        mView = view;\r
-\r
-        // make sure we are not using the empty layout\r
-        if (mEmptyLayout == false) {\r
-            updateFileDetails();\r
-        }\r
-\r
         return view;\r
     }\r
 \r
     @Override\r
-    public View getView() {\r
-        return mView == null ? super.getView() : mView;\r
-    };\r
+    public void onStart() {\r
+        super.onStart();\r
+        \r
+        // Fill in required information about file displaying\r
+        if(mIntent == null){\r
+            mIntent = getActivity().getIntent();\r
+        }\r
+        \r
+        // Fill in the details if the layout is not empty\r
+        if(!mEmptyLayout){\r
+            updateFileDetails();\r
+        }\r
+        \r
+    }\r
 \r
     private void setFilename(String filename) {\r
         TextView tv = (TextView) getView().findViewById(R.id.textView1);\r
index 5647bf5..659d337 100644 (file)
@@ -84,6 +84,8 @@ public class FileListFragment extends FragmentListView {
             ((FileDisplayActivity) getActivity()).pushPath(dirname);\r
 \r
             populateFileList();\r
+            resetFileFragment();\r
+            \r
             return;\r
         }\r
 \r
@@ -107,11 +109,11 @@ public class FileListFragment extends FragmentListView {
 \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()\r
                         .beginTransaction();\r
-                transaction.replace(R.id.file_details_container, fd,\r
-                        "FileDetails");\r
+                fd = new FileDetailFragment(showDetailsIntent);\r
+                transaction.replace(R.id.fileDetail, fd, "FileDetails");\r
+                transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);\r
                 transaction.commit();\r
             } else {\r
                 fd.updateFileDetails(showDetailsIntent);\r
@@ -122,6 +124,20 @@ public class FileListFragment extends FragmentListView {
         }\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
+     */\r
+    private void resetFileFragment() {\r
+        FileDetailFragment fileDetails = (FileDetailFragment) getFragmentManager().findFragmentByTag("FileDetails");\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.commit();\r
+        }\r
+    }\r
+\r
     @Override\r
     public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,\r
             long arg3) {\r
@@ -140,6 +156,7 @@ public class FileListFragment extends FragmentListView {
     public void onNavigateUp() {\r
         mDirNames.pop();\r
         populateFileList();\r
+        resetFileFragment();\r
     }\r
 \r
     /**\r