summaryrefslogtreecommitdiffstats
path: root/android
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@suse.com>2012-06-29 15:50:22 +0100
committerMichael Meeks <michael.meeks@suse.com>2012-06-29 15:54:09 +0100
commit5f091e66d74b27430260e743e354b1a843213f11 (patch)
tree2543ecde336b9bd3a78e3b11eefba524a6ca6ca5 /android
parentre-base on ALv2 code. (diff)
downloadcore-5f091e66d74b27430260e743e354b1a843213f11.tar.gz
core-5f091e66d74b27430260e743e354b1a843213f11.zip
android: cleanup the file extension guessing and expand it for prettiness
Diffstat (limited to 'android')
-rw-r--r--android/experimental/LibreOffice4Android/src/org/libreoffice/ui/FileUtilities.java206
-rw-r--r--android/experimental/LibreOffice4Android/src/org/libreoffice/ui/GridItemAdapter.java54
-rw-r--r--android/experimental/LibreOffice4Android/src/org/libreoffice/ui/LibreOfficeUIActivity.java2
3 files changed, 146 insertions, 116 deletions
diff --git a/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/FileUtilities.java b/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/FileUtilities.java
index 2195caf5068d..a76d45bed91e 100644
--- a/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/FileUtilities.java
+++ b/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/FileUtilities.java
@@ -1,3 +1,11 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
package org.libreoffice.ui;
import org.libreoffice.R;
@@ -5,106 +13,121 @@ import org.libreoffice.R;
import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
+import java.util.Map;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.Comparator;
+import android.util.Log;
public class FileUtilities {
-
- static final int ALL = -1;
- static final int DOC = 0;
- 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){
- if( filename.endsWith( fileExtensions[ DOC ] ) ){
- return true;
- }
- return false;
- }
-
- static boolean isCalc(String filename){
- if( filename.endsWith( fileExtensions[ CALC ] ) ){
- return true;
- }
- return false;
- }
-
- static boolean isImpress(String filename){
- if( filename.endsWith( fileExtensions[ IMPRESS ] ) ){
- return true;
- }
+ static final int ALL = -1;
+ static final int DOC = 0;
+ static final int CALC = 1;
+ static final int IMPRESS = 2;
+ static final int DRAWING = 3;
+ static final int UNKNOWN = 10;
+
+ 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 final Map<String,Integer> mExtnMap = new HashMap<String,Integer>();
+ static {
+ mExtnMap.put(".odt", DOC);
+ mExtnMap.put(".sxw", DOC);
+ mExtnMap.put(".rtf", DOC);
+ mExtnMap.put(".doc", DOC);
+ mExtnMap.put(".docx", DOC);
+ mExtnMap.put(".html", DOC);
+ mExtnMap.put(".txt", DOC);
+
+ mExtnMap.put(".ods", CALC);
+ mExtnMap.put(".sxc", CALC);
+ mExtnMap.put(".xls", CALC);
+ mExtnMap.put(".xlsx", CALC);
+
+ mExtnMap.put(".odp", IMPRESS);
+ mExtnMap.put(".sxi", IMPRESS);
+ mExtnMap.put(".ppt", IMPRESS);
+ mExtnMap.put(".pptx", IMPRESS);
+
+ mExtnMap.put(".vsd", DRAWING);
+ // FIXME: we need to expand this ...
+ }
+
+ private static final String getExtension(String filename)
+ {
+ int nExt = filename.lastIndexOf('.');
+ if (nExt < 0)
+ return "";
+ return filename.substring(nExt);
+ }
+
+ private static final int lookupExtension(String filename)
+ {
+ String extn = getExtension (filename);
+ if (!mExtnMap.containsKey(extn))
+ return UNKNOWN;
+ return mExtnMap.get (extn);
+ }
+
+ static int getType(String filename)
+ {
+ int type = lookupExtension (filename);
+ android.util.Log.d("debug", "extn : " + filename + " -> " + type);
+ return type;
+ }
+
+ // Filter by mode, and/or in future by filename/wildcard
+ static private boolean doAccept(String filename, int byMode, String byFilename)
+ {
+ android.util.Log.d("debug", "doAccept : " + filename + " mode " + byMode + " byFilename " + byFilename);
+ if (byMode == ALL && byFilename == "")
+ return true;
+ // check extension
+ if (byMode != ALL) {
+ if (mExtnMap.get (getExtension (filename)) != byMode)
return false;
}
-
- static FileFilter getFileFilter(int mode ){
- if( mode != ALL){
- final String ext = fileExtensions[ mode ];
- return new FileFilter() {
-
- public boolean accept(File pathname) {
- if( pathname.getName().endsWith( ext ) ){
- return true;
- }
- if( pathname.isDirectory() ){
- return true;
- }
- return false;
- }
- };
- }else{//return all
- return new FileFilter() {
-
- public boolean accept(File pathname) {
- // TODO Auto-generated method stub
- return true;
- }
- };
- }
+ if (byFilename != "") {
+ // FIXME return false on a non-match
}
+ return true;
+ }
- static FilenameFilter getFilenameFilter(int mode){
- if( mode != ALL){
- final String ext = fileExtensions[ mode ];
- return new FilenameFilter() {
-
- public boolean accept(File dir, String filename) {
- if( filename.endsWith( ext ) ){
- return true;
- }
- if( new File( dir , filename ).isDirectory() ){
- return true;
- }
- return false;
- }
- };
- }else{
- return new FilenameFilter() {
-
- public boolean accept(File dir, String filename) {
- return true;
- }
- };
- }
- }
+ static FileFilter getFileFilter(final int mode)
+ {
+ return new FileFilter() {
+ public boolean accept(File pathname) {
+ if (pathname.isDirectory())
+ return true;
+ return doAccept(pathname.getName(), mode, "");
+ }
+ };
+ }
+
+ static FilenameFilter getFilenameFilter(final int mode)
+ {
+ return new FilenameFilter() {
+ public boolean accept(File dir, String filename) {
+ if( new File( dir , filename ).isDirectory() )
+ return true;
+ return doAccept(filename, mode, "");
+ }
+ };
+ }
static void sortFiles(File[] files , int sortMode){
- //Should really change all this to a switch statement...
+ // 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() );
}
@@ -113,7 +136,6 @@ public class FileUtilities {
}
if( sortMode == SORT_ZA ){
Arrays.sort( files , new Comparator<File>() {
-
public int compare(File lhs, File rhs) {
return rhs.getName().compareTo( lhs.getName() );
}
@@ -122,7 +144,6 @@ public class FileUtilities {
}
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() );
}
@@ -131,7 +152,6 @@ public class FileUtilities {
}
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() );
}
@@ -140,7 +160,6 @@ public class FileUtilities {
}
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() );
}
@@ -149,7 +168,6 @@ public class FileUtilities {
}
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() );
}
@@ -159,3 +177,5 @@ public class FileUtilities {
return;
}
}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/GridItemAdapter.java b/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/GridItemAdapter.java
index ffff46e39537..52ff99e1ccee 100644
--- a/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/GridItemAdapter.java
+++ b/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/GridItemAdapter.java
@@ -18,7 +18,7 @@ public class GridItemAdapter extends BaseAdapter{
File[] filePaths;
File currentDirectory;
String tag = "GridItemAdapter";
-
+
public GridItemAdapter(Context mContext, File[] filePaths) {
this.mContext = mContext;
this.filePaths = filePaths;
@@ -26,14 +26,15 @@ public class GridItemAdapter extends BaseAdapter{
Log.d(tag, fn.getName());
}
}
-
+
public GridItemAdapter(Context mContext, File currentDirectory) {
this.mContext = mContext;
this.currentDirectory = currentDirectory;
filePaths = currentDirectory.listFiles();
}
-
- public GridItemAdapter(Context mContext, File currentDirectory, File[] filteredFiles) {
+
+ public GridItemAdapter(Context mContext, File currentDirectory, File[] filteredFiles)
+ {
this.mContext = mContext;
this.currentDirectory = currentDirectory;
filePaths = filteredFiles;
@@ -52,24 +53,22 @@ public class GridItemAdapter extends BaseAdapter{
return 0;
}
- public View getView(int position, View convertView, ViewGroup parent) {
+ public View getView(int position, View convertView, ViewGroup parent)
+ {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
-
+
View gridView;
-
+
if (convertView == null) {
-
-
-
} else {
gridView = (View) convertView;
}
gridView = new View(mContext);
-
+
// get layout from mobile.xml
gridView = inflater.inflate(R.layout.file_explorer_grid_item, null);
-
+
// set value into textview
TextView textView = (TextView) gridView
.findViewById(R.id.grid_item_label);
@@ -77,19 +76,30 @@ public class GridItemAdapter extends BaseAdapter{
// set image based on selected text
ImageView imageView = (ImageView) gridView
.findViewById(R.id.grid_item_image);
- if( filePaths[position].getName().endsWith(".odt") ){
- imageView.setImageResource(R.drawable.writer);
+ if( filePaths[position].isDirectory() ) // Is a folder
+ {
+ // Eventually have thumbnails of each sub file on a black circle
+ // For now just a folder icon
+ imageView.setImageResource(R.drawable.folder);
}
- if( filePaths[position].getName().endsWith(".ods") ){
+ else
+ {
+ switch (FileUtilities.getType(filePaths[position].getName()))
+ {
+ case FileUtilities.DOC:
+ imageView.setImageResource(R.drawable.writer);
+ break;
+ case FileUtilities.CALC:
imageView.setImageResource(R.drawable.calc);
- }
- if( filePaths[position].getName().endsWith(".odp") ){
+ break;
+ case FileUtilities.DRAW: // FIXME: only for now ...
+ case FileUtilities.IMPRESS:
imageView.setImageResource(R.drawable.impress);
- }
- if( filePaths[position].isDirectory() ){//Is a folder
- //Eventually have thumbnails of each sub file on a black circle
- //For now just a folder icon
- imageView.setImageResource(R.drawable.folder);
+ break;
+ case FileUtilities.UNKNOWN:
+ default:
+ break; // FIXME something prettier ?
+ }
}
return gridView;
}
diff --git a/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/LibreOfficeUIActivity.java b/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/LibreOfficeUIActivity.java
index 7721d2b8898a..68c101cc713b 100644
--- a/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/LibreOfficeUIActivity.java
+++ b/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/LibreOfficeUIActivity.java
@@ -70,7 +70,7 @@ public class LibreOfficeUIActivity extends Activity implements OnNavigationListe
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- Log.d(tag, "onCreate");
+ Log.d(tag, "onCreate - tweaked - meeks !");
//Set the "home" - top level - directory.
homeDirectory = new File(Environment.getExternalStorageDirectory(),"LibreOffice");
homeDirectory.mkdirs();