From 15bf15ff8c239b367bbfab22dd0a770aba735387 Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi <andreuzzi.francesco@gmail.com> Date: Mon, 6 Jun 2016 20:40:30 +0200 Subject: [PATCH] Performance/Code improvement --- .../commands/CommandTuils.java | 65 ++++----- .../consolelauncher/managers/SkinManager.java | 127 ++++++++++++++---- .../andre/consolelauncher/tuils/Tuils.java | 42 +++++- 3 files changed, 166 insertions(+), 68 deletions(-) diff --git a/app/src/main/java/ohi/andre/consolelauncher/commands/CommandTuils.java b/app/src/main/java/ohi/andre/consolelauncher/commands/CommandTuils.java index 7156419..d526fff 100755 --- a/app/src/main/java/ohi/andre/consolelauncher/commands/CommandTuils.java +++ b/app/src/main/java/ohi/andre/consolelauncher/commands/CommandTuils.java @@ -3,7 +3,6 @@ package ohi.andre.consolelauncher.commands; import android.annotation.SuppressLint; import java.io.File; -import java.io.FileFilter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -14,6 +13,8 @@ import ohi.andre.consolelauncher.managers.FileManager; import ohi.andre.consolelauncher.managers.FileManager.DirInfo; import ohi.andre.consolelauncher.managers.MusicManager; import ohi.andre.consolelauncher.tuils.ShellUtils; +import ohi.andre.consolelauncher.tuils.SpecificExtensionFileFilter; +import ohi.andre.consolelauncher.tuils.SpecificNameFileFilter; import ohi.andre.consolelauncher.tuils.Tuils; @SuppressLint("DefaultLocale") @@ -22,6 +23,9 @@ public class CommandTuils { private static final int MIN_CONTACT_RATE = 4; private static final int MIN_SONG_RATE = 5; + private static SpecificExtensionFileFilter extensionFileFilter = new SpecificExtensionFileFilter(); + private static SpecificNameFileFilter nameFileFilter = new SpecificNameFileFilter(); + // parse a command public static Command parse(String input, ExecInfo info, boolean suggestion) throws Exception { Command command = new Command(); @@ -57,7 +61,7 @@ public class CommandTuils { if (input.length() <= 0) break; - ArgInfo arg = CommandTuils.getArg(info, input, type); + ArgInfo arg = CommandTuils.getArg(info, input, type, suggestion); if (!arg.found) { command.nArgs = Command.ARG_NOTFOUND; @@ -89,7 +93,7 @@ public class CommandTuils { } // find args - public static ArgInfo getArg(ExecInfo info, String input, int type) { + public static ArgInfo getArg(ExecInfo info, String input, int type, boolean suggestion) { if (type == CommandAbstraction.FILE) return file(input, info.currentDirectory); else if (type == CommandAbstraction.CONTACTNUMBER) @@ -105,7 +109,10 @@ public class CommandTuils { else if (type == CommandAbstraction.SONG) return song(input, info.player); else if (type == CommandAbstraction.FILE_LIST) - return fileList(input, info.currentDirectory); + if(suggestion) + return file(input, info.currentDirectory); + else + return fileList(input, info.currentDirectory); else if (type == CommandAbstraction.COMMAND) return command(input, info.commandGroup); else if (type == CommandAbstraction.PARAM) @@ -226,47 +233,33 @@ public class CommandTuils { private static List<File> attemptWildcard(DirInfo dir) { List<File> files; - String extension = FileManager.wildcard(dir.notFound); - if (extension == null) + FileManager.WildcardInfo info = FileManager.wildcard(dir.notFound); + if(info == null) { return null; + } File cd = dir.file; - if (!cd.isDirectory()) + if (!cd.isDirectory()) { return null; + } - int spaceIndex = extension.indexOf(Tuils.SPACE); - if (spaceIndex != -1) - extension = extension.substring(0, spaceIndex); - - final String ext = extension; - - if (extension.equals(FileManager.ALL)) + if (info.allExtensions && info.allNames) { files = Arrays.asList(cd.listFiles()); - else { - FileFilter filter = new FileFilter() { - - @Override - public boolean accept(File f) { - if (f.isDirectory()) - return false; - - String name = f.getName(); - if (!name.contains(".")) - return false; - - String fileExtension = name.substring(name.lastIndexOf(".")); - - return !(!fileExtension.equals(ext.toLowerCase()) && !fileExtension.equals(ext.toUpperCase())); - - } - }; - - files = Arrays.asList(cd.listFiles(filter)); + } else if(info.allNames) { + extensionFileFilter.setExtension(info.extension); + files = Arrays.asList(cd.listFiles(extensionFileFilter)); + } else if(info.allExtensions) { + nameFileFilter.setName(info.name); + files = Arrays.asList(cd.listFiles(nameFileFilter)); + } else { + return null; } - if (files.size() > 0) + if (files.size() > 0) { return files; - return null; + } else { + return null; + } } private static ArgInfo param(String input) { diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/SkinManager.java b/app/src/main/java/ohi/andre/consolelauncher/managers/SkinManager.java index 12bfa79..56fb5a4 100755 --- a/app/src/main/java/ohi/andre/consolelauncher/managers/SkinManager.java +++ b/app/src/main/java/ohi/andre/consolelauncher/managers/SkinManager.java @@ -2,6 +2,9 @@ package ohi.andre.consolelauncher.managers; import android.graphics.Color; import android.graphics.Typeface; +import android.graphics.drawable.ColorDrawable; + +import java.util.HashMap; public class SkinManager { @@ -16,24 +19,39 @@ public class SkinManager { public static final int outputDefault = 0xffffffff; public static final int ramDefault = 0xfff44336; public static final int bgDefault = 0xff000000; - public static final int suggestionColorDefault = 0xff000000; - public static final int suggestionBgDefault = 0xffffffff; + + public static final int suggestionTextColorDefault = 0xff000000; + public static final int aliasSuggestionBgDefault = 0xffFF5722; + public static final int appSuggestionBgDefault = 0xff00897B; + public static final int commandSuggestionsBgDefault = 0xff76FF03; + public static final int songSuggestionBgDefault = 0xffEEFF41; + public static final int contactSuggestionBgDefault = 0xff64FFDA; + public static final int fileSuggestionBgDeafult = 0xff03A9F4; + public static final int defaultSuggestionBgDefault = 0xffFFFFFF; + public static final int defaultSize = 15; private static final int deviceScale = 3; private static final int textScale = 2; private static final int ramScale = 3; private static final int suggestionScale = 0; + private Typeface globalTypeface; private int globalFontSize; + private int deviceColor; private int inputColor; private int outputColor; private int ramColor; private int bgColor; + private boolean useSystemWp; private boolean showSuggestions; - private int suggestionColor; - private int suggestionBg; + + private HashMap<Integer, ColorDrawable> suggestionBgs = new HashMap<>(); + + private int suggestionTextColor; + + private boolean multicolorSuggestions; private boolean transparentSuggestions; public SkinManager(PreferencesManager prefs, Typeface lucidaConsole) { @@ -83,22 +101,91 @@ public class SkinManager { showSuggestions = Boolean.parseBoolean(prefs.getValue(PreferencesManager.SHOWSUGGESTIONS)); if (showSuggestions) { + try { - suggestionColor = Color.parseColor(prefs.getValue(PreferencesManager.SUGGESTION_COLOR)); + suggestionTextColor = Color.parseColor(prefs.getValue(PreferencesManager.SUGGESTIONTEXT_COLOR)); } catch (Exception e) { - suggestionColor = suggestionColorDefault; + suggestionTextColor = suggestionTextColorDefault; } try { - suggestionBg = Color.parseColor(prefs.getValue(PreferencesManager.SUGGESTION_BG)); + transparentSuggestions = Boolean.parseBoolean(prefs.getValue(PreferencesManager.TRANSPARENT_SUGGESTIONS)); } catch (Exception e) { - suggestionBg = suggestionBgDefault; + transparentSuggestions = false; } try { - transparentSuggestions = Boolean.parseBoolean(prefs.getValue(PreferencesManager.TRANSPARENT_SUGGESTIONS)); + multicolorSuggestions = Boolean.parseBoolean(prefs.getValue(PreferencesManager.USE_MULTICOLOR_SUGGESTIONS)); } catch (Exception e) { - transparentSuggestions = false; + transparentSuggestions = true; + } + if(multicolorSuggestions) { + transparentSuggestions = !multicolorSuggestions; + } + + if(!transparentSuggestions && !multicolorSuggestions) { + int defaultSuggestionBg; + try { + defaultSuggestionBg = Color.parseColor(prefs.getValue(PreferencesManager.DEFAULT_SUGGESTION_BG)); + } catch (Exception e) { + defaultSuggestionBg = defaultSuggestionBgDefault; + } + suggestionBgs.put(null, new ColorDrawable(defaultSuggestionBg)); + } + + if(transparentSuggestions) { + suggestionBgs.put(null, null); + } + + if(multicolorSuggestions) { + + int appSuggestionBg; + try { + appSuggestionBg = Color.parseColor(prefs.getValue(PreferencesManager.APP_SUGGESTION_BG)); + } catch (Exception e) { + appSuggestionBg = appSuggestionBgDefault; + } + suggestionBgs.put(SuggestionsManager.Suggestion.TYPE_APP, new ColorDrawable(appSuggestionBg)); + + int contactSuggestionBg; + try { + contactSuggestionBg = Color.parseColor(prefs.getValue(PreferencesManager.CONTACT_SUGGESTION_BG)); + } catch (Exception e) { + contactSuggestionBg = contactSuggestionBgDefault; + } + suggestionBgs.put(SuggestionsManager.Suggestion.TYPE_CONTACT, new ColorDrawable(contactSuggestionBg)); + + int commandSuggestionsBg; + try { + commandSuggestionsBg = Color.parseColor(prefs.getValue(PreferencesManager.COMMAND_SUGGESTION_BG)); + } catch (Exception e) { + commandSuggestionsBg = commandSuggestionsBgDefault; + } + suggestionBgs.put(SuggestionsManager.Suggestion.TYPE_COMMAND, new ColorDrawable(commandSuggestionsBg)); + + int songSuggestionBg; + try { + songSuggestionBg = Color.parseColor(prefs.getValue(PreferencesManager.SONG_SUGGESTION_BG)); + } catch (Exception e) { + songSuggestionBg = songSuggestionBgDefault; + } + suggestionBgs.put(SuggestionsManager.Suggestion.TYPE_SONG, new ColorDrawable(songSuggestionBg)); + + int fileSuggestionBg; + try { + fileSuggestionBg = Color.parseColor(prefs.getValue(PreferencesManager.FILE_SUGGESTION_BG)); + } catch (Exception e) { + fileSuggestionBg = fileSuggestionBgDeafult; + } + suggestionBgs.put(SuggestionsManager.Suggestion.TYPE_FILE, new ColorDrawable(fileSuggestionBg)); + + int aliasSuggestionBg; + try { + aliasSuggestionBg = Color.parseColor(prefs.getValue(PreferencesManager.ALIAS_SIGGESTION_BG)); + } catch (Exception e) { + aliasSuggestionBg = aliasSuggestionBgDefault; + } + suggestionBgs.put(SuggestionsManager.Suggestion.TYPE_ALIAS, new ColorDrawable(aliasSuggestionBg)); } } } @@ -139,16 +226,12 @@ public class SkinManager { return showSuggestions; } - public int getSuggestionBg() { - return suggestionBg; + public ColorDrawable getSuggestionBg(Integer type) { + return suggestionBgs.get(type); } - public int getSuggestionColor() { - return suggestionColor; - } - - public boolean getTransparentSuggestions() { - return transparentSuggestions; + public int getSuggestionTextColor() { + return suggestionTextColor; } public int getDeviceSize() { @@ -167,12 +250,4 @@ public class SkinManager { return globalFontSize - suggestionScale; } - -// public void setupSubmit(Button submit) { -// submit.setBackgroundColor(android.R.color.transparent); -// -// submit.setTextColor(input); -// submit.setTextSize(fontSize + SkinManager.submitScale); -// } -// } diff --git a/app/src/main/java/ohi/andre/consolelauncher/tuils/Tuils.java b/app/src/main/java/ohi/andre/consolelauncher/tuils/Tuils.java index 7c92d31..07edf7d 100755 --- a/app/src/main/java/ohi/andre/consolelauncher/tuils/Tuils.java +++ b/app/src/main/java/ohi/andre/consolelauncher/tuils/Tuils.java @@ -18,6 +18,7 @@ import android.os.Environment; import android.provider.Settings; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; +import android.util.Log; import android.util.Patterns; import android.widget.Toast; @@ -37,6 +38,7 @@ import java.util.regex.Pattern; import dalvik.system.DexFile; import ohi.andre.consolelauncher.commands.CommandAbstraction; +import ohi.andre.consolelauncher.managers.MusicManager; import ohi.andre.consolelauncher.tuils.tutorial.TutorialIndexActivity; public class Tuils { @@ -71,24 +73,52 @@ public class Tuils { List<ResolveInfo> infos = mgr.queryIntentActivities(i, 0); - AppInfo app; for (ResolveInfo info : infos) { - app = new AppInfo(info.activityInfo.packageName, info.loadLabel(mgr).toString()); - set.add(app); + set.add(new AppInfo(info.activityInfo.packageName, info.loadLabel(mgr).toString())); } return set; } + public static boolean arrayContains(int[] array, int value) { + for(int i : array) { + if(i == value) { + return true; + } + } + return false; + } + + public static boolean containsExtension(String[] array, String value) { + value = value.toLowerCase().trim(); + for(String s : array) { + if(value.endsWith(s)) { + return true; + } + } + return false; + } + public static List<File> getSongsInFolder(File folder) { List<File> songs = new ArrayList<>(); File[] files = folder.listFiles(); + if(files == null || files.length == 0) { + return null; + } + for (File file : files) { - if (file.isDirectory()) + Log.e("andre", file.getAbsolutePath()); + if (file.isDirectory()) { + Log.e("andre", "dir"); songs.addAll(getSongsInFolder(file)); - else if (file.getName().toLowerCase().endsWith(".mp3")) + } + else if (containsExtension(MusicManager.MUSIC_EXTENSIONS, file.getName())) { + Log.e("andre", "song"); songs.add(file); + } else { + Log.e("andre", "nothing"); + } } return songs; @@ -135,7 +165,7 @@ public class Tuils { return availableMegs + " MB"; } - public static List<String> getClassesOfPackage(String packageName, Context c) + public static List<String> getClassesInPackage(String packageName, Context c) throws IOException { List<String> classes = new ArrayList<>(); String packageCodePath = c.getPackageCodePath(); -- GitLab