[Libreoffice-commits] .: android/experimental

Michael Meeks michael at kemper.freedesktop.org
Fri Jun 29 07:54:14 PDT 2012


 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.meeks at 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();


More information about the Libreoffice-commits mailing list