summaryrefslogtreecommitdiffstats
path: root/android
diff options
context:
space:
mode:
authorIain Billett <Iain@Iains-MacBook-Pro.local>2012-06-19 16:20:34 +0100
committerIain Billett <Iain@Iains-MacBook-Pro.local>2012-06-19 17:02:56 +0100
commit5e380fbdcdebf762a07b0ec502a4d3c40190838d (patch)
tree5e088005c38fc45fd5e7f3c189d281922b25407a /android
parentRe-organised the Android UI code to make better use of Android lifecycle even... (diff)
downloadcore-5e380fbdcdebf762a07b0ec502a4d3c40190838d.tar.gz
core-5e380fbdcdebf762a07b0ec502a4d3c40190838d.zip
Added file sorting - alphabetical, by size, by last modified.
Diffstat (limited to 'android')
-rw-r--r--android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/drawable-hdpi/light_sort_by_size.pngbin0 -> 1141 bytes
-rw-r--r--android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/drawable-hdpi/light_view_as_grid.pngbin0 -> 1286 bytes
-rw-r--r--android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/drawable-hdpi/light_view_as_list.pngbin0 -> 1363 bytes
-rw-r--r--android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/menu/view_menu.xml9
-rw-r--r--android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/values/strings.xml3
-rw-r--r--android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/FileUtilities.java73
-rw-r--r--android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/LibreOfficeUIActivity.java80
-rw-r--r--android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/ListItemAdapter.java5
-rw-r--r--android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/WriterViewerActivity.java8
9 files changed, 150 insertions, 28 deletions
diff --git a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/drawable-hdpi/light_sort_by_size.png b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/drawable-hdpi/light_sort_by_size.png
new file mode 100644
index 000000000000..3b34aaf8ab57
--- /dev/null
+++ b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/drawable-hdpi/light_sort_by_size.png
Binary files differ
diff --git a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/drawable-hdpi/light_view_as_grid.png b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/drawable-hdpi/light_view_as_grid.png
new file mode 100644
index 000000000000..ae138edbf006
--- /dev/null
+++ b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/drawable-hdpi/light_view_as_grid.png
Binary files differ
diff --git a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/drawable-hdpi/light_view_as_list.png b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/drawable-hdpi/light_view_as_list.png
new file mode 100644
index 000000000000..c5f6c97b2687
--- /dev/null
+++ b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/drawable-hdpi/light_view_as_list.png
Binary files differ
diff --git a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/menu/view_menu.xml b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/menu/view_menu.xml
index 14eabb331243..a780f555dd0f 100644
--- a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/menu/view_menu.xml
+++ b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/menu/view_menu.xml
@@ -5,4 +5,13 @@
android:showAsAction="always" />
<item android:id="@+id/menu_view_toggle"
android:title="@string/grid_view"/>
+ <item android:id="@+id/menu_sort_size"
+ android:title="@string/menu_sort_size"
+ android:onClick="sortFiles"/>
+ <item android:id="@+id/menu_sort_az"
+ android:title="@string/menu_sort_az"
+ android:onClick="sortFiles"/>
+ <item android:id="@+id/menu_sort_modified"
+ android:title="@string/menu_sort_modified"
+ android:onClick="sortFiles"/>
</menu> \ No newline at end of file
diff --git a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/values/strings.xml b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/values/strings.xml
index 7306683cc649..3ff73f7a52d2 100644
--- a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/values/strings.xml
+++ b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/res/values/strings.xml
@@ -6,6 +6,9 @@
<string name="menu_search">Search</string>
<string name="list_view">List</string>
<string name="grid_view">Grid</string>
+ <string name="menu_sort_size">Sort By Size</string>
+ <string name="menu_sort_az">Sort A-Z</string>
+ <string name="menu_sort_modified">Sort by Date</string>
<string-array name="file_view_modes">
<item >EVERYTHING</item>
<item >DOCUMENTS</item>
diff --git a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/FileUtilities.java b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/FileUtilities.java
index 3b6bbf32f2aa..2e21dbe5da61 100644
--- a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/FileUtilities.java
+++ b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/FileUtilities.java
@@ -3,6 +3,8 @@ package org.libreoffice.ui;
import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
+import java.util.Arrays;
+import java.util.Comparator;
public class FileUtilities {
@@ -11,6 +13,17 @@ public class FileUtilities {
static final int CALC = 1;
static final int IMPRESS = 2;
+ static final int SORT_AZ = 0;
+ static final int SORT_ZA = 1;
+ /** Oldest Files First*/
+ static final int SORT_OLDEST = 2;
+ /** Newest Files First*/
+ static final int SORT_NEWEST = 3;
+ /** Largest Files First */
+ static final int SORT_LARGEST = 4;
+ /** Smallest Files First */
+ static final int SORT_SMALLEST = 5;
+
private static String[] fileExtensions = {".odt",".ods",".odp"};
static boolean isDoc(String filename){
@@ -34,7 +47,7 @@ public class FileUtilities {
return false;
}
- static FileFilter getFileFilter(int mode){
+ static FileFilter getFileFilter(int mode ){
if( mode != ALL){
final String ext = fileExtensions[ mode ];
return new FileFilter() {
@@ -84,5 +97,63 @@ public class FileUtilities {
};
}
}
+
+ static void sortFiles(File[] files , int sortMode){
+ //Should really change all this to a switch statement...
+ if( sortMode == SORT_AZ ){
+ Arrays.sort( files , new Comparator<File>() {
+ public int compare(File lhs, File rhs) {
+ return lhs.getName().compareTo( rhs.getName() );
+ }
+ });
+ return;
+ }
+ if( sortMode == SORT_ZA ){
+ Arrays.sort( files , new Comparator<File>() {
+
+ public int compare(File lhs, File rhs) {
+ return rhs.getName().compareTo( lhs.getName() );
+ }
+ });
+ return;
+ }
+ if( sortMode == SORT_OLDEST ){
+ Arrays.sort( files , new Comparator<File>() {
+
+ public int compare(File lhs, File rhs) {
+ return Long.valueOf( lhs.lastModified() ).compareTo( rhs.lastModified() );
+ }
+ });
+ return;
+ }
+ if( sortMode == SORT_NEWEST ){
+ Arrays.sort( files , new Comparator<File>() {
+
+ public int compare(File lhs, File rhs) {
+ return Long.valueOf( rhs.lastModified() ).compareTo( lhs.lastModified() );
+ }
+ });
+ return;
+ }
+ if( sortMode == SORT_LARGEST ){
+ Arrays.sort( files , new Comparator<File>() {
+
+ public int compare(File lhs, File rhs) {
+ return Long.valueOf( rhs.length() ).compareTo( lhs.length() );
+ }
+ });
+ return;
+ }
+ if( sortMode == SORT_SMALLEST ){
+ Arrays.sort( files , new Comparator<File>() {
+
+ public int compare(File lhs, File rhs) {
+ return Long.valueOf( lhs.length() ).compareTo( rhs.length() );
+ }
+ });
+ return;
+ }
+ return;
+ }
}
diff --git a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/LibreOfficeUIActivity.java b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/LibreOfficeUIActivity.java
index 704df2098e5b..743ae20e9905 100644
--- a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/LibreOfficeUIActivity.java
+++ b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/LibreOfficeUIActivity.java
@@ -36,21 +36,24 @@ import android.widget.TextView;
public class LibreOfficeUIActivity extends Activity implements OnNavigationListener {
private String tag = "file_manager";
- private File homeDirectory;//make final?
+ private SharedPreferences prefs;
+ private File homeDirectory;
private File currentDirectory;
private int filterMode = FileUtilities.ALL;
- private int viewType = 0;
+ private int viewMode;
+ private int sortMode;
+
FileFilter fileFilter;
FilenameFilter filenameFilter;
private String[] fileNames;
private File[] filePaths;
- //private ActionBar actionBar;
- private SharedPreferences prefs;
+
private static final String CURRENT_DIRECTORY_KEY = "CURRENT_DIRECTORY";
private static final String FILTER_MODE_KEY = "FILTER_MODE";
public static final String EXPLORER_VIEW_TYPE_KEY = "EXPLORER_VIEW_TYPE";
public static final String EXPLORER_PREFS_KEY = "EXPLORER_PREFS";
+ public static final String SORT_MODE_KEY = "SORT_MODE";
public static final int GRID_VIEW = 0;
public static final int LIST_VIEW = 1;
@@ -69,7 +72,8 @@ public class LibreOfficeUIActivity extends Activity implements OnNavigationListe
currentDirectory = homeDirectory;
//Load default settings
prefs = getSharedPreferences(EXPLORER_PREFS_KEY, MODE_PRIVATE);
- viewType = prefs.getInt( EXPLORER_VIEW_TYPE_KEY, GRID_VIEW);
+ viewMode = prefs.getInt( EXPLORER_VIEW_TYPE_KEY, GRID_VIEW);
+ sortMode = prefs.getInt( SORT_MODE_KEY, FileUtilities.SORT_AZ );
}
@@ -84,7 +88,7 @@ public class LibreOfficeUIActivity extends Activity implements OnNavigationListe
actionBar.setDisplayHomeAsUpEnabled(true);
}
- if( viewType == GRID_VIEW){
+ if( viewMode == GRID_VIEW){
// code to make a grid view
setContentView(R.layout.file_grid);
gv = (GridView)findViewById(R.id.file_explorer_grid_view);
@@ -139,9 +143,13 @@ public class LibreOfficeUIActivity extends Activity implements OnNavigationListe
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled( false );
}
- fileNames = currentDirectory.list( FileUtilities.getFilenameFilter( filterMode ) );
filePaths = currentDirectory.listFiles( FileUtilities.getFileFilter( filterMode ) );
- if( viewType == GRID_VIEW){
+ fileNames = new String[ filePaths.length ];
+ FileUtilities.sortFiles( filePaths, sortMode );
+ for( int i = 0; i < fileNames.length; i++){
+ fileNames[ i ] = filePaths[ i ].getName();
+ }
+ if( viewMode == GRID_VIEW){
gv.setAdapter( new GridItemAdapter(getApplicationContext(), currentDirectory, filePaths ) );
}else{
lv.setAdapter( new ListItemAdapter(getApplicationContext(), filePaths) );
@@ -152,7 +160,7 @@ public class LibreOfficeUIActivity extends Activity implements OnNavigationListe
Intent i = new Intent( this , WriterViewerActivity.class );
i.putExtra( CURRENT_DIRECTORY_KEY , currentDirectory.getAbsolutePath() );
i.putExtra( FILTER_MODE_KEY , filterMode );
- i.putExtra( EXPLORER_VIEW_TYPE_KEY , viewType );
+ i.putExtra( EXPLORER_VIEW_TYPE_KEY , viewMode );
startActivity( i );
}
@@ -162,10 +170,12 @@ public class LibreOfficeUIActivity extends Activity implements OnNavigationListe
inflater.inflate(R.menu.view_menu, menu);
MenuItem item = (MenuItem)menu.findItem(R.id.menu_view_toggle);
- if( viewType == GRID_VIEW){
+ if( viewMode == GRID_VIEW){
item.setTitle(R.string.list_view);
+ item.setIcon( R.drawable.light_view_as_list );
}else{
item.setTitle(R.string.grid_view);
+ item.setIcon( R.drawable.light_view_as_grid );
}
return true;
}
@@ -178,12 +188,15 @@ public class LibreOfficeUIActivity extends Activity implements OnNavigationListe
}
break;
case R.id.menu_view_toggle:
- if( viewType == GRID_VIEW){
- viewType = LIST_VIEW;
+ if( viewMode == GRID_VIEW){
+ viewMode = LIST_VIEW;
item.setTitle(R.string.grid_view);//Button points to next view.
+ item.setIcon( R.drawable.light_view_as_grid );
+
}else{
- viewType = GRID_VIEW;
+ viewMode = GRID_VIEW;
item.setTitle(R.string.list_view);//Button points to next view.
+ item.setIcon( R.drawable.light_view_as_list );
}
createUI();
break;
@@ -257,15 +270,46 @@ public class LibreOfficeUIActivity extends Activity implements OnNavigationListe
}
}
+ @SuppressWarnings("unused")//see android:onClick properties in view_menu.xml
+ public void sortFiles(MenuItem item){
+ switch ( item.getItemId() ) {
+ case R.id.menu_sort_az:
+ if( sortMode == FileUtilities.SORT_AZ ){
+ sortMode = FileUtilities.SORT_ZA;
+ }else{
+ sortMode = FileUtilities.SORT_AZ;
+ }
+ break;
+ case R.id.menu_sort_modified:
+ if( sortMode == FileUtilities.SORT_NEWEST ){
+ sortMode = FileUtilities.SORT_OLDEST;
+ }else{
+ sortMode = FileUtilities.SORT_NEWEST;
+ }
+ break;
+ case R.id.menu_sort_size:
+ if( sortMode == FileUtilities.SORT_LARGEST ){
+ sortMode = FileUtilities.SORT_SMALLEST;
+ }else{
+ sortMode = FileUtilities.SORT_LARGEST;
+ }
+ break;
+ default:
+ break;
+ }
+ this.onResume();
+ return;
+ }
+
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
outState.putString( CURRENT_DIRECTORY_KEY , currentDirectory.getAbsolutePath() );
outState.putInt( FILTER_MODE_KEY , filterMode );
- outState.putInt( EXPLORER_VIEW_TYPE_KEY , viewType );
+ outState.putInt( EXPLORER_VIEW_TYPE_KEY , viewMode );
- Log.d(tag, currentDirectory.toString() + Integer.toString(filterMode ) + Integer.toString(viewType) );
+ Log.d(tag, currentDirectory.toString() + Integer.toString(filterMode ) + Integer.toString(viewMode) );
//prefs.edit().putInt(EXPLORER_VIEW_TYPE, viewType).commit();
Log.d(tag, "savedInstanceSate");
}
@@ -279,10 +323,10 @@ public class LibreOfficeUIActivity extends Activity implements OnNavigationListe
}
currentDirectory = new File( savedInstanceState.getString( CURRENT_DIRECTORY_KEY ) );
filterMode = savedInstanceState.getInt( FILTER_MODE_KEY , FileUtilities.ALL ) ;
- viewType = savedInstanceState.getInt( EXPLORER_VIEW_TYPE_KEY , GRID_VIEW );
+ viewMode = savedInstanceState.getInt( EXPLORER_VIEW_TYPE_KEY , GRID_VIEW );
//openDirectory( currentDirectory );
Log.d(tag, "onRestoreInstanceState");
- Log.d(tag, currentDirectory.toString() + Integer.toString(filterMode ) + Integer.toString(viewType) );
+ Log.d(tag, currentDirectory.toString() + Integer.toString(filterMode ) + Integer.toString(viewMode) );
}
@Override
@@ -307,7 +351,7 @@ public class LibreOfficeUIActivity extends Activity implements OnNavigationListe
Log.d(tag, FILTER_MODE_KEY);
}
if( i.hasExtra( EXPLORER_VIEW_TYPE_KEY ) ){
- viewType = i.getIntExtra( EXPLORER_VIEW_TYPE_KEY, GRID_VIEW);
+ viewMode = i.getIntExtra( EXPLORER_VIEW_TYPE_KEY, GRID_VIEW);
Log.d(tag, EXPLORER_VIEW_TYPE_KEY);
}
createUI();
diff --git a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/ListItemAdapter.java b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/ListItemAdapter.java
index 1fd2d62812a2..1e66e3a0501c 100644
--- a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/ListItemAdapter.java
+++ b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/ListItemAdapter.java
@@ -15,7 +15,10 @@ import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
-/*Currently this is class is not used but instead an inner class in LibreOfficeUI is impemented */
+/*Currently this is class is not used but instead is implemented as an inner class in LibreOfficeUI.
+ * This is because I can't get the onItemClickListener to fire on the listview so I need to set an
+ * onClick listener in the adapter. ( I've tried turning off the focusability etc of the listitem
+ * contents but no dice...) */
public class ListItemAdapter implements ListAdapter{
private Context mContext;
private File[] filePaths;
diff --git a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/WriterViewerActivity.java b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/WriterViewerActivity.java
index d217421941c8..fe2f1135b3a0 100644
--- a/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/WriterViewerActivity.java
+++ b/android/experimental/GSoC-2012-eclipse-workspace/LibreOfficeUI/src/org/libreoffice/ui/WriterViewerActivity.java
@@ -1,20 +1,12 @@
package org.libreoffice.ui;
-import java.io.File;
-
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
-import android.os.Environment;
-import android.util.Log;
import android.view.MenuItem;
public class WriterViewerActivity extends Activity{
- private String currentDirectoryKey = "CURRENT_DIRECTORY";
- private String filterModeKey = "FILTER_MODE";
- File dir;
- private int filterMode;
private Bundle extras;
@Override