android/experimental/LibreOffice4Android/src/org/libreoffice/ui/FileUtilities.java | 206 +++++----- android/experimental/LibreOffice4Android/src/org/libreoffice/ui/GridItemAdapter.java | 54 +- android/experimental/LibreOffice4Android/src/org/libreoffice/ui/LibreOfficeUIActivity.java | 2 3 files changed, 146 insertions(+), 116 deletions(-)
New commits: commit 5f091e66d74b27430260e743e354b1a843213f11 Author: Michael Meeks <michael.me...@suse.com> Date: Fri Jun 29 15:50:22 2012 +0100 android: cleanup the file extension guessing and expand it for prettiness diff --git a/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/FileUtilities.java b/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/FileUtilities.java index 2195caf..a76d45b 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 ffff46e..52ff99e 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 7721d2b..68c101c 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(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits