Merge branch 'us4_view_text_files' of github.com:owncloudChalmers/android into us4_vi...
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / activity / FileDisplayActivity.java
index 63ca229..627d40c 100644 (file)
@@ -85,6 +85,7 @@ import com.owncloud.android.operations.SynchronizeFolderOperation;
 import com.owncloud.android.operations.UnshareLinkOperation;
 import com.owncloud.android.services.observer.FileObserverService;
 import com.owncloud.android.syncadapter.FileSyncAdapter;
+import com.owncloud.android.ui.adapter.FileListListAdapter;
 import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
 import com.owncloud.android.ui.dialog.SslUntrustedCertDialog;
 import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener;
@@ -303,6 +304,8 @@ public class FileDisplayActivity extends HookActivity implements
 
             } else {
                 cleanSecondFragment();
+                if (file.isDown() && PreviewTextFragment.canBePreviewed(file))
+                    startTextPreview(file);
             }
 
         } else {
@@ -326,9 +329,9 @@ public class FileDisplayActivity extends HookActivity implements
                 boolean autoplay = getIntent().getBooleanExtra(PreviewVideoActivity.EXTRA_AUTOPLAY, true);
                 secondFragment = new PreviewMediaFragment(file, getAccount(), startPlaybackPosition, autoplay);
 
-            } else {
-                secondFragment = new FileDetailFragment(file, getAccount());
-            }
+            } else if (file.isDown() && PreviewTextFragment.canBePreviewed(file)) {
+                secondFragment = null;
+            } else secondFragment = new FileDetailFragment(file, getAccount());
         }
         return secondFragment;
     }
@@ -479,6 +482,40 @@ public class FileDisplayActivity extends HookActivity implements
                 dialog.show(getSupportFragmentManager(), "createdirdialog");
                 break;
             }
+            case R.id.action_sort: {
+                SharedPreferences appPreferences = PreferenceManager
+                        .getDefaultSharedPreferences(this);
+
+                // Read sorting order, default to sort by name ascending
+                Integer sortOrder = appPreferences
+                        .getInt("sortOrder", FileListListAdapter.SORT_NAME);
+
+                AlertDialog.Builder builder = new AlertDialog.Builder(this);
+                builder.setTitle(R.string.actionbar_sort_title)
+                        .setSingleChoiceItems(R.array.actionbar_sortby, sortOrder, new DialogInterface.OnClickListener() {
+                            public void onClick(DialogInterface dialog, int which) {
+
+                                switch (which) {
+                                    case 0:
+                                        sortByName(true);
+                                        break;
+                                    case 1:
+                                        sortByDate(false);
+                                        break;
+
+// TODO re-enable when server-side folder size calculation is available                       
+//                    case 2:
+//                        sortBySize(false);
+//                        break;
+                                }
+
+                                dialog.dismiss();
+
+                            }
+                        });
+                builder.create().show();
+                break;
+            }
             case R.id.action_sync_account: {
                 startSynchronization();
                 break;
@@ -1411,9 +1448,11 @@ public class FileDisplayActivity extends HookActivity implements
                 if (details instanceof PreviewMediaFragment) {
                     // Refresh  OCFile of the fragment
                     ((PreviewMediaFragment) details).updateFile(file);
-                } else {
+                } else if (details instanceof PreviewTextFragment) {
+                    // Refresh  OCFile of the fragment
+                    ((PreviewTextFragment) details).updateFile(file);
+                } else
                     showDetails(file);
-                }
             }
             invalidateOptionsMenu();
         }
@@ -1786,4 +1825,16 @@ public class FileDisplayActivity extends HookActivity implements
             }
         }
     }
+
+    private void sortByDate(boolean ascending) {
+        getListOfFilesFragment().sortByDate(ascending);
+    }
+
+    private void sortBySize(boolean ascending) {
+        getListOfFilesFragment().sortBySize(ascending);
+    }
+
+    private void sortByName(boolean ascending) {
+        getListOfFilesFragment().sortByName(ascending);
+    }
 }