From 4e9b05f5b1eca7ff875336da1bbdf4d480d55087 Mon Sep 17 00:00:00 2001
From: Francesco Andreuzzi <andreuzzi.francesco@gmail.com>
Date: Thu, 15 Dec 2016 14:10:02 +0100
Subject: [PATCH] 4.7

---
 app/build.gradle                              |  26 ++--
 app/src/main/AndroidManifest.xml              |   1 +
 .../ohi/andre/consolelauncher/UIManager.java  |  70 +++++++++-
 .../consolelauncher/commands/raw/call.java    |  12 +-
 .../commands/raw/contacts.java                |  68 ---------
 .../managers/MusicManager.java                |  64 +++++----
 .../managers/PreferencesManager.java          |   1 +
 .../consolelauncher/managers/SkinManager.java | 129 ++++++++++--------
 .../managers/SuggestionsManager.java          |  13 +-
 .../managers/TerminalMAnager.java             |  22 ++-
 .../tuils/SuggestionRunnable.java             |  17 ++-
 .../andre/consolelauncher/tuils/Tuils.java    |  34 +++++
 app/src/main/res/drawable/cursor.xml          |   3 +-
 app/src/main/res/layout-v12/input_group.xml   |  19 ++-
 app/src/main/res/layout/input_group.xml       |  19 ++-
 app/src/main/res/mipmap-hdpi/ic_launcher.png  | Bin 2517 -> 1065 bytes
 app/src/main/res/mipmap-mdpi/ic_launcher.png  | Bin 1794 -> 691 bytes
 app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 3555 -> 1439 bytes
 .../main/res/mipmap-xxhdpi/ic_launcher.png    | Bin 5497 -> 2271 bytes
 .../main/res/mipmap-xxxhdpi/ic_launcher.png   | Bin 7110 -> 2970 bytes
 app/src/main/res/raw/settings.txt             |   3 +-
 app/src/main/res/values-h1024dp/dimension.xml |   3 +-
 app/src/main/res/values-h320dp/dimension.xml  |   3 +-
 app/src/main/res/values-h720dp/dimension.xml  |   3 +-
 app/src/main/res/values/dimension.xml         |   3 +-
 app/src/main/res/values/strings.xml           |  10 +-
 build.gradle                                  |   3 +-
 27 files changed, 299 insertions(+), 227 deletions(-)
 delete mode 100755 app/src/main/java/ohi/andre/consolelauncher/commands/raw/contacts.java

diff --git a/app/build.gradle b/app/build.gradle
index a33a8d7..fdc7b15 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,20 +1,22 @@
 apply plugin: 'com.android.application'
-apply plugin: 'versionPlugin'
-
 android {
     signingConfigs {
         config {
+            keyAlias 'mykey'
+            keyPassword 'Dodici12'
+            storeFile file('/Users/francescoandreuzzi/Programming/Android/Build/my-release-key.keystore')
+            storePassword 'Dodici12'
         }
     }
 
-    compileSdkVersion 23
-    buildToolsVersion '24.0.0'
+    compileSdkVersion 25
+    buildToolsVersion '25.0.1'
     defaultConfig {
         applicationId "ohi.andre.consolelauncher"
         minSdkVersion 8
         targetSdkVersion 23
-        versionCode 75
-        versionName "4.5"
+        versionCode 77
+        versionName "4.7"
     }
 
     buildTypes {
@@ -22,18 +24,10 @@ android {
             minifyEnabled true
             shrinkResources true
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+            zipAlignEnabled true
         }
     }
 
-    versionPlugin {
-        buildTypesMatcher = 'release'
-
-        supportBuildNumber = true
-        buildNumberPrefix = 'b'
-
-        fileNameFormat = 't-ui-vrs_$versionName'
-    }
-
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_7
         targetCompatibility JavaVersion.VERSION_1_7
@@ -45,4 +39,6 @@ android {
         compile 'commons-io:commons-io:2.4'
     }
 
+}
+dependencies {
 }
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eded6f3..7d098ee 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -52,6 +52,7 @@
             android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize"
             android:launchMode="singleTask"
             android:stateNotNeeded="true"
+            android:excludeFromRecents="true"
             android:windowSoftInputMode="stateAlwaysVisible|adjustResize">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/app/src/main/java/ohi/andre/consolelauncher/UIManager.java b/app/src/main/java/ohi/andre/consolelauncher/UIManager.java
index bab6b7d..b4c6ad3 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/UIManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/UIManager.java
@@ -10,6 +10,7 @@ import android.os.Build;
 import android.os.Handler;
 import android.text.Editable;
 import android.text.TextWatcher;
+import android.util.Log;
 import android.view.GestureDetector;
 import android.view.GestureDetector.OnDoubleTapListener;
 import android.view.Gravity;
@@ -28,8 +29,16 @@ import android.widget.TextView;
 
 import java.io.File;
 import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
+import ohi.andre.comparestring.Compare;
 import ohi.andre.consolelauncher.commands.ExecInfo;
+import ohi.andre.consolelauncher.managers.AppsManager;
+import ohi.andre.consolelauncher.managers.ContactManager;
+import ohi.andre.consolelauncher.managers.FileManager;
+import ohi.andre.consolelauncher.managers.MusicManager;
 import ohi.andre.consolelauncher.managers.PreferencesManager;
 import ohi.andre.consolelauncher.managers.SkinManager;
 import ohi.andre.consolelauncher.managers.SuggestionsManager;
@@ -125,6 +134,9 @@ public class UIManager implements OnTouchListener {
             String lastWord = inputText.substring(lastSpace != -1 ? lastSpace + 1 : 0);
             String before = inputText.substring(0, lastSpace + 1);
 
+            boolean execOnClick = (boolean) v.getTag(R.id.exec_on_click_id);
+            int suggestionType = (int) v.getTag(R.id.suggestion_type_id);
+
             StringBuilder builder = new StringBuilder();
             if (suggestedText.equals(File.separator)) {
                 builder.append(before);
@@ -136,12 +148,64 @@ public class UIManager implements OnTouchListener {
                 builder.append(before);
                 builder.append(suggestedText);
             } else {
-                builder.append(before);
-                builder.append(suggestedText);
+                if(!suggestedText.contains(Tuils.SPACE)) {
+                    builder.append(before);
+                    builder.append(suggestedText);
+                } else {
+                    String[] suggestParts = suggestedText.split(Tuils.SPACE);
+                    String[] inputParts = inputText.split(Tuils.SPACE);
+
+                    boolean useScrollCompare;
+                    int minRate;
+                    switch (suggestionType) {
+                        case SuggestionsManager.Suggestion.TYPE_APP:
+                            useScrollCompare = AppsManager.USE_SCROLL_COMPARE;
+                            minRate = SuggestionsManager.MIN_APPS_RATE;
+                            break;
+                        case SuggestionsManager.Suggestion.TYPE_SONG:
+                            useScrollCompare = MusicManager.USE_SCROLL_COMPARE;
+                            minRate = SuggestionsManager.MIN_SONGS_RATE;
+                            break;
+                        case SuggestionsManager.Suggestion.TYPE_CONTACT:
+                            useScrollCompare = ContactManager.USE_SCROLL_COMPARE;
+                            minRate = SuggestionsManager.MIN_CONTACTS_RATE;
+                            break;
+                        case SuggestionsManager.Suggestion.TYPE_FILE:
+                            useScrollCompare = FileManager.USE_SCROLL_COMPARE;
+                            minRate = SuggestionsManager.MIN_FILE_RATE;
+                            break;
+                        default:
+                            builder.append(before);
+                            builder.append(suggestedText);
+                            return;
+                    }
+
+                    int count;
+                    for(count = 0; count < inputParts.length; count++) {
+                        int rate = useScrollCompare ? Compare.scrollComparison(inputParts[count], suggestParts[0]) :
+                                Compare.linearComparison(inputParts[count], suggestParts[0]);
+
+                        if(rate >= minRate) {
+                            break;
+                        }
+                    }
+
+                    List<String> finalText = new ArrayList<>(Arrays.asList(inputParts));
+                    for(int c = 0; c < suggestParts.length; c++) {
+                        if(finalText.size() > c + count) {
+                            finalText.set(c + count, suggestParts[c]);
+                        } else {
+                            finalText.add(suggestParts[c]);
+                        }
+                    }
+
+                    builder.append(Tuils.toPlanString(finalText, Tuils.SPACE));
+                }
             }
 
             mTerminalAdapter.setInput(builder.toString());
-            if (executeOnSuggestionClick && v.getId() == SuggestionsManager.Suggestion.EXEC_ON_CLICK) {
+
+            if (executeOnSuggestionClick && execOnClick) {
                 mTerminalAdapter.simulateEnter();
             } else {
                 mTerminalAdapter.focusInputEnd();
diff --git a/app/src/main/java/ohi/andre/consolelauncher/commands/raw/call.java b/app/src/main/java/ohi/andre/consolelauncher/commands/raw/call.java
index 39b6039..2d1222f 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/commands/raw/call.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/commands/raw/call.java
@@ -6,9 +6,12 @@ import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.support.v4.content.ContextCompat;
 
+import java.util.List;
+
 import ohi.andre.consolelauncher.R;
 import ohi.andre.consolelauncher.commands.CommandAbstraction;
 import ohi.andre.consolelauncher.commands.ExecInfo;
+import ohi.andre.consolelauncher.tuils.Tuils;
 
 public class call implements CommandAbstraction {
 
@@ -63,7 +66,14 @@ public class call implements CommandAbstraction {
 
     @Override
     public String onNotArgEnough(ExecInfo info, int nArgs) {
-        return info.res.getString(helpRes());
+        if (ContextCompat.checkSelfPermission(info.context, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
+            return info.res.getString(R.string.output_nopermissions);
+        }
+
+        List<String> contacts = info.contacts.listNamesAndNumbers();
+        Tuils.addPrefix(contacts, "  ");
+        Tuils.insertHeaders(contacts, false);
+        return Tuils.toPlanString(contacts);
     }
 
     @Override
diff --git a/app/src/main/java/ohi/andre/consolelauncher/commands/raw/contacts.java b/app/src/main/java/ohi/andre/consolelauncher/commands/raw/contacts.java
deleted file mode 100755
index aceef23..0000000
--- a/app/src/main/java/ohi/andre/consolelauncher/commands/raw/contacts.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package ohi.andre.consolelauncher.commands.raw;
-
-import android.Manifest;
-import android.content.pm.PackageManager;
-import android.support.v4.content.ContextCompat;
-
-import java.util.List;
-
-import ohi.andre.consolelauncher.R;
-import ohi.andre.consolelauncher.commands.CommandAbstraction;
-import ohi.andre.consolelauncher.commands.ExecInfo;
-import ohi.andre.consolelauncher.tuils.Tuils;
-
-public class contacts implements CommandAbstraction {
-
-    @Override
-    public String exec(ExecInfo info) {
-        if (ContextCompat.checkSelfPermission(info.context, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
-            return info.res.getString(R.string.output_nopermissions);
-        }
-
-        List<String> contacts = info.contacts.listNamesAndNumbers();
-        Tuils.addPrefix(contacts, "  ");
-        Tuils.insertHeaders(contacts, false);
-        return Tuils.toPlanString(contacts);
-    }
-
-    @Override
-    public int helpRes() {
-        return R.string.help_contacts;
-    }
-
-    @Override
-    public int minArgs() {
-        return 0;
-    }
-
-    @Override
-    public int maxArgs() {
-        return 0;
-    }
-
-    @Override
-    public int[] argType() {
-        return null;
-    }
-
-    @Override
-    public int priority() {
-        return 2;
-    }
-
-    @Override
-    public String[] parameters() {
-        return null;
-    }
-
-    @Override
-    public String onNotArgEnough(ExecInfo info, int nArgs) {
-        return null;
-    }
-
-    @Override
-    public int notFoundRes() {
-        return 0;
-    }
-
-}
diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/MusicManager.java b/app/src/main/java/ohi/andre/consolelauncher/managers/MusicManager.java
index 0872d3c..e721e55 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/MusicManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/managers/MusicManager.java
@@ -23,14 +23,12 @@ public class MusicManager implements OnCompletionListener {
 
     public static final boolean USE_SCROLL_COMPARE = true;
 
-    private File songFolder;
+    private List<File> files;
     private MediaPlayer mp;
 
     private int currentSongIndex = 0;
     private File currentSong = null;
 
-    private boolean randomActive;
-
     //	headset broadcast
     private BroadcastReceiver headsetReceiver = new HeadsetBroadcast(new Runnable() {
         @Override
@@ -46,9 +44,17 @@ public class MusicManager implements OnCompletionListener {
 
         c.registerReceiver(headsetReceiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
 
-        randomActive = Boolean.parseBoolean(preferencesManager.getValue(PreferencesManager.PLAY_RANDOM));
+        boolean randomActive = Boolean.parseBoolean(preferencesManager.getValue(PreferencesManager.PLAY_RANDOM));
 
-        songFolder = new File(preferencesManager.getValue(PreferencesManager.SONGSFOLDER));
+        if(Boolean.parseBoolean(preferencesManager.getValue(PreferencesManager.FROM_MEDIASTORE))) {
+            files = Tuils.getMediastoreSongs(c);
+        } else {
+            files = Tuils.getSongsInFolder(new File(preferencesManager.getValue(PreferencesManager.SONGSFOLDER)));
+        }
+
+        if(randomActive) {
+            Collections.shuffle(files);
+        }
     }
 
     public boolean initPlayer() {
@@ -62,23 +68,22 @@ public class MusicManager implements OnCompletionListener {
 
     //	return the path by complete name
     public String getPath(String name) {
-        File file = new File(songFolder, name);
-        if (!file.exists()) {
-            return null;
+        int count = 0;
+        File file = files.get(count);
+        while(!file.getName().equals(name)) {
+            if(count == files.size()) {
+                return null;
+            }
+            file = files.get(++count);
         }
         return file.getAbsolutePath();
     }
 
     //	return names
     public List<String> getNames() {
-        List<File> songs = Tuils.getSongsInFolder(songFolder);
-        if(songs == null) {
-            return null;
-        }
-
         List<String> names = new ArrayList<>();
 
-        for (File file : songs)
+        for (File file : files)
             names.add(file.getName());
 
         Collections.sort(names);
@@ -88,10 +93,10 @@ public class MusicManager implements OnCompletionListener {
 
     //	return paths
     public List<String> getPaths() {
-        List<File> songs = Tuils.getSongsInFolder(songFolder);
+
         List<String> paths = new ArrayList<>();
 
-        for (File file : songs)
+        for (File file : files)
             paths.add(file.getAbsolutePath());
 
         return paths;
@@ -106,28 +111,21 @@ public class MusicManager implements OnCompletionListener {
     }
 
     private boolean prepareSong(int songIndex) {
-        if (songFolder == null)
+        if (files == null)
             return false;
 
         List<String> songs = getPaths();
-        if (randomActive) {
-            Random random = new Random();
-            int totalSongs = songs.size();
-
-            int newSong;
-            do {
-                newSong = random.nextInt(totalSongs);
-            } while (songIndex == newSong);
-            songIndex = newSong;
-        } else {
-            if (songIndex >= songs.size())
-                songIndex -= songs.size();
-            else if (songIndex < 0)
-                songIndex += songs.size();
-
-            currentSongIndex = songIndex;
+        if(songs == null) {
+            return false;
         }
 
+        if (songIndex >= songs.size())
+            songIndex -= songs.size();
+        else if (songIndex < 0)
+            songIndex += songs.size();
+
+        currentSongIndex = songIndex;
+
         return prepareSong(songs.get(songIndex));
     }
 
diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/PreferencesManager.java b/app/src/main/java/ohi/andre/consolelauncher/managers/PreferencesManager.java
index ab29065..47b6a36 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/PreferencesManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/managers/PreferencesManager.java
@@ -51,6 +51,7 @@ public class PreferencesManager {
 
     public static final String PLAY_RANDOM = "playRandom";
     public static final String SONGSFOLDER = "songsFolder";
+    public static final String FROM_MEDIASTORE = "fromMediastore";
 
     public static final String USE_SYSTEMWP = "useSystemWallpaper";
     public static final String FULLSCREEN = "fullscreen";
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 56fb5a4..15b5aa5 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/SkinManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/managers/SkinManager.java
@@ -3,6 +3,7 @@ package ohi.andre.consolelauncher.managers;
 import android.graphics.Color;
 import android.graphics.Typeface;
 import android.graphics.drawable.ColorDrawable;
+import android.util.Log;
 
 import java.util.HashMap;
 
@@ -47,7 +48,7 @@ public class SkinManager {
     private boolean useSystemWp;
     private boolean showSuggestions;
 
-    private HashMap<Integer, ColorDrawable> suggestionBgs = new HashMap<>();
+    private HashMap<Integer, Integer> suggestionBgs = new HashMap<>();
 
     private int suggestionTextColor;
 
@@ -117,75 +118,79 @@ public class SkinManager {
             try {
                 multicolorSuggestions = Boolean.parseBoolean(prefs.getValue(PreferencesManager.USE_MULTICOLOR_SUGGESTIONS));
             } catch (Exception e) {
-                transparentSuggestions = true;
-            }
-            if(multicolorSuggestions) {
-                transparentSuggestions = !multicolorSuggestions;
+                multicolorSuggestions = false;
             }
 
-            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(multicolorSuggestions) {
+                transparentSuggestions = false;
             }
 
             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));
+                suggestionBgs.put(0, Color.TRANSPARENT);
 
-                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;
+                if(suggestionTextColor == bgColor) {
+                    suggestionTextColor = Color.GREEN;
                 }
-                suggestionBgs.put(SuggestionsManager.Suggestion.TYPE_SONG, new ColorDrawable(songSuggestionBg));
-
-                int fileSuggestionBg;
+            } else {
+                int defaultSuggestionBg;
                 try {
-                    fileSuggestionBg = Color.parseColor(prefs.getValue(PreferencesManager.FILE_SUGGESTION_BG));
+                    defaultSuggestionBg = Color.parseColor(prefs.getValue(PreferencesManager.DEFAULT_SUGGESTION_BG));
                 } catch (Exception e) {
-                    fileSuggestionBg = fileSuggestionBgDeafult;
+                    defaultSuggestionBg = defaultSuggestionBgDefault;
                 }
-                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(0, defaultSuggestionBg);
+
+
+                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, appSuggestionBg);
+
+                    int contactSuggestionBg;
+                    try {
+                        contactSuggestionBg = Color.parseColor(prefs.getValue(PreferencesManager.CONTACT_SUGGESTION_BG));
+                    } catch (Exception e) {
+                        contactSuggestionBg = contactSuggestionBgDefault;
+                    }
+                    suggestionBgs.put(SuggestionsManager.Suggestion.TYPE_CONTACT, contactSuggestionBg);
+
+                    int commandSuggestionsBg;
+                    try {
+                        commandSuggestionsBg = Color.parseColor(prefs.getValue(PreferencesManager.COMMAND_SUGGESTION_BG));
+                    } catch (Exception e) {
+                        commandSuggestionsBg = commandSuggestionsBgDefault;
+                    }
+                    suggestionBgs.put(SuggestionsManager.Suggestion.TYPE_COMMAND, commandSuggestionsBg);
+
+                    int songSuggestionBg;
+                    try {
+                        songSuggestionBg = Color.parseColor(prefs.getValue(PreferencesManager.SONG_SUGGESTION_BG));
+                    } catch (Exception e) {
+                        songSuggestionBg = songSuggestionBgDefault;
+                    }
+                    suggestionBgs.put(SuggestionsManager.Suggestion.TYPE_SONG, songSuggestionBg);
+
+                    int fileSuggestionBg;
+                    try {
+                        fileSuggestionBg = Color.parseColor(prefs.getValue(PreferencesManager.FILE_SUGGESTION_BG));
+                    } catch (Exception e) {
+                        fileSuggestionBg = fileSuggestionBgDeafult;
+                    }
+                    suggestionBgs.put(SuggestionsManager.Suggestion.TYPE_FILE, fileSuggestionBg);
+
+                    int aliasSuggestionBg;
+                    try {
+                        aliasSuggestionBg = Color.parseColor(prefs.getValue(PreferencesManager.ALIAS_SIGGESTION_BG));
+                    } catch (Exception e) {
+                        aliasSuggestionBg = aliasSuggestionBgDefault;
+                    }
+                    suggestionBgs.put(SuggestionsManager.Suggestion.TYPE_ALIAS, aliasSuggestionBg);
                 }
-                suggestionBgs.put(SuggestionsManager.Suggestion.TYPE_ALIAS, new ColorDrawable(aliasSuggestionBg));
             }
         }
     }
@@ -227,7 +232,11 @@ public class SkinManager {
     }
 
     public ColorDrawable getSuggestionBg(Integer type) {
-        return suggestionBgs.get(type);
+        if(transparentSuggestions) {
+            type = 0;
+        }
+
+        return new ColorDrawable(suggestionBgs.get(type));
     }
 
     public int getSuggestionTextColor() {
diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/SuggestionsManager.java b/app/src/main/java/ohi/andre/consolelauncher/managers/SuggestionsManager.java
index 9e13955..43fe669 100644
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/SuggestionsManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/managers/SuggestionsManager.java
@@ -1,5 +1,7 @@
 package ohi.andre.consolelauncher.managers;
 
+import android.util.Log;
+
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -20,13 +22,13 @@ public class SuggestionsManager {
     private static final int MIN_COMMAND_RATE = 1;
     private static final int MIN_COMMAND_PRIORITY = 5;
 
-    private static final int MIN_APPS_RATE = 3;
+    public static final int MIN_APPS_RATE = 3;
 
-    private static final int MIN_CONTACTS_RATE = 2;
+    public static final int MIN_CONTACTS_RATE = 2;
 
-    private static final int MIN_FILE_RATE = 2;
+    public static final int MIN_FILE_RATE = 2;
 
-    private static final int MIN_SONGS_RATE = 2;
+    public static final int MIN_SONGS_RATE = 2;
 
 //    use to place something at the top
     private static final int MAX_RATE = 100;
@@ -289,9 +291,6 @@ public class SuggestionsManager {
         public static final int TYPE_SONG = 14;
         public static final int TYPE_CONTACT = 15;
 
-        public static final int EXEC_ON_CLICK = 10;
-        public static final int NONE = 11;
-
         public String text;
         public boolean exec;
         public int rate;
diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/TerminalMAnager.java b/app/src/main/java/ohi/andre/consolelauncher/managers/TerminalMAnager.java
index 7dcc163..8205f18 100644
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/TerminalMAnager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/managers/TerminalMAnager.java
@@ -63,6 +63,9 @@ public class TerminalManager {
     };
     private SkinManager mSkinManager;
 
+    private String originalInput;
+    private List<InputText> propertyText = new ArrayList<>();
+
     private OnNewInputListener mInputListener;
 
     public TerminalManager(TextView terminalView, EditText inputView, TextView prefixView, TextView submitView, SkinManager skinManager,
@@ -106,8 +109,8 @@ public class TerminalManager {
             @Override
             public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
 
-                if (actionId == EditorInfo.IME_ACTION_GO || actionId == EditorInfo.IME_ACTION_DONE
-                        || (physicalEnter && actionId == EditorInfo.IME_ACTION_UNSPECIFIED)) {
+//                physical enter is temporary ignores
+                if (actionId == EditorInfo.IME_ACTION_GO || actionId == EditorInfo.IME_ACTION_DONE) {
                     onNewInput();
                     return true;
                 } else
@@ -118,6 +121,8 @@ public class TerminalManager {
 
     private void setupNewInput() {
         mInputView.setText(Tuils.EMPTYSTRING);
+        originalInput = Tuils.EMPTYSTRING;
+        propertyText = new ArrayList<>();
         mCurrentOutputId++;
         requestInputFocus();
     }
@@ -324,4 +329,17 @@ public class TerminalManager {
         });
     }
 
+    public static class InputText {
+
+        String original;
+        CharSequence shownText;
+        Runnable onClick;
+
+        public InputText(String original, CharSequence shownText, Runnable onClick) {
+            this.original = original;
+            this.shownText = shownText;
+            this.onClick = onClick;
+        }
+    }
+
 }
diff --git a/app/src/main/java/ohi/andre/consolelauncher/tuils/SuggestionRunnable.java b/app/src/main/java/ohi/andre/consolelauncher/tuils/SuggestionRunnable.java
index e624ef5..da7ce33 100644
--- a/app/src/main/java/ohi/andre/consolelauncher/tuils/SuggestionRunnable.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/tuils/SuggestionRunnable.java
@@ -14,11 +14,14 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.*/
 
+import android.graphics.Color;
+import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.HorizontalScrollView;
 import android.widget.TextView;
 
+import ohi.andre.consolelauncher.R;
 import ohi.andre.consolelauncher.managers.SkinManager;
 import ohi.andre.consolelauncher.managers.SuggestionsManager;
 
@@ -87,19 +90,21 @@ public class SuggestionRunnable implements Runnable {
             }
 
             String s = suggestions[count].text;
-            if (count < toRecycle.length) {
-                toRecycle[count].setId(suggestions[count].exec ? SuggestionsManager.Suggestion.EXEC_ON_CLICK :
-                        SuggestionsManager.Suggestion.NONE);
+            if (toRecycle != null && count < toRecycle.length) {
+                toRecycle[count].setTag(R.id.exec_on_click_id, suggestions[count].exec);
+                toRecycle[count].setTag(R.id.suggestion_type_id, suggestions[count].type);
+
                 toRecycle[count].setText(s);
-                toRecycle[count].setBackgroundDrawable(null);
                 toRecycle[count].setBackgroundDrawable(skinManager.getSuggestionBg(suggestions[count].type));
             } else {
                 int space = suggestions.length - (count + 1);
                 if (toAdd != null && space < toAdd.length) {
-                    toAdd[space].setId(suggestions[count].exec ? SuggestionsManager.Suggestion.EXEC_ON_CLICK :
-                            SuggestionsManager.Suggestion.NONE);
+                    toAdd[space].setTag(R.id.exec_on_click_id, suggestions[count].exec);
+                    toAdd[space].setTag(R.id.suggestion_type_id, suggestions[count].type);
+
                     toAdd[space].setText(s);
                     toAdd[space].setBackgroundDrawable(skinManager.getSuggestionBg(suggestions[count].type));
+
                     if(toAdd[space].getParent() == null) {
                         suggestionsView.addView(toAdd[space], suggestionViewParams);
                     } else {
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 36f40e3..c376ca3 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/tuils/Tuils.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/tuils/Tuils.java
@@ -8,11 +8,14 @@ import android.app.ActivityManager;
 import android.app.ActivityManager.MemoryInfo;
 import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
+import android.database.Cursor;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Environment;
+import android.provider.MediaStore;
 import android.provider.Settings;
 import android.text.TextUtils;
 import android.util.Patterns;
@@ -393,4 +396,35 @@ public class Tuils {
         return new File(Tuils.getInternalDirectoryPath(), TUI_FOLDER);
     }
 
+    public static List<File> getMediastoreSongs(Context activity) {
+        ContentResolver cr = activity.getContentResolver();
+
+        List<File> paths = new ArrayList<>();
+
+        Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
+        String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0";
+        String sortOrder = MediaStore.Audio.Media.TITLE + " ASC";
+        Cursor cur = cr.query(uri, null, selection, null, sortOrder);
+        int count = 0;
+
+        if(cur != null)
+        {
+            count = cur.getCount();
+
+            if(count > 0)
+            {
+                while(cur.moveToNext())
+                {
+                    String data = cur.getString(cur.getColumnIndex(MediaStore.Audio.Media.DATA));
+                    paths.add(new File(data));
+                }
+
+            }
+        }
+
+        cur.close();
+
+        return paths;
+    }
+
 }
diff --git a/app/src/main/res/drawable/cursor.xml b/app/src/main/res/drawable/cursor.xml
index 20e05b5..bff8d95 100644
--- a/app/src/main/res/drawable/cursor.xml
+++ b/app/src/main/res/drawable/cursor.xml
@@ -4,6 +4,5 @@
 
     <solid android:color="#FFFFFFFF" />
     <size
-        android:width="@dimen/cursor_width"
-        android:height="@dimen/input_height" />
+        android:width="@dimen/cursor_width"/>
 </shape>
\ No newline at end of file
diff --git a/app/src/main/res/layout-v12/input_group.xml b/app/src/main/res/layout-v12/input_group.xml
index fa03d42..f7ae2b6 100644
--- a/app/src/main/res/layout-v12/input_group.xml
+++ b/app/src/main/res/layout-v12/input_group.xml
@@ -3,24 +3,27 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:weightSum="9"
-    android:orientation="horizontal">
+    android:orientation="horizontal"
+    android:gravity="center_vertical">
 
     <TextView
         android:id="@+id/prefix_view"
         android:layout_width="wrap_content"
-        android:layout_height="wrap_content"/>
+        android:layout_height="wrap_content"
+
+        android:paddingTop="@dimen/input_padding"/>
 
     <EditText
         android:id="@+id/input_view"
         android:layout_width="0dp"
-        android:layout_height="@dimen/input_height"
+        android:layout_height="wrap_content"
         android:layout_weight="7"
 
-        android:paddingTop="@dimen/input_padding"
-
         android:background="@null"
         android:imeOptions="actionGo|flagNoFullscreen"
 
+        android:paddingTop="@dimen/input_padding"
+
         android:lines="1"
         android:singleLine="true"
         android:textCursorDrawable="@drawable/cursor" />
@@ -28,10 +31,12 @@
     <Button
         android:id="@+id/submit_tv"
         android:layout_width="0dp"
-        android:layout_height="match_parent"
+        android:layout_height="wrap_content"
         android:layout_weight="2"
 
         android:background="@null"
-        android:text="&#8626;" />
+        android:text="&#8626;"
+
+        android:paddingTop="@dimen/input_padding"/>
 
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/input_group.xml b/app/src/main/res/layout/input_group.xml
index e92ea59..1fed2c3 100644
--- a/app/src/main/res/layout/input_group.xml
+++ b/app/src/main/res/layout/input_group.xml
@@ -2,34 +2,39 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:orientation="horizontal">
+    android:orientation="horizontal"
+    android:gravity="center_vertical">
 
     <TextView
         android:id="@+id/prefix_view"
         android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
+        android:layout_height="wrap_content"
+
+        android:paddingTop="@dimen/input_padding"/>
 
     <EditText
         android:id="@+id/input_view"
         android:layout_width="0dp"
-        android:layout_height="@dimen/input_height"
+        android:layout_height="wrap_content"
         android:layout_weight="1"
 
-        android:paddingTop="@dimen/input_padding"
-
         android:background="@null"
         android:imeOptions="actionGo|flagNoFullscreen"
 
+        android:paddingTop="@dimen/input_padding"
+
         android:lines="1"
         android:singleLine="true"/>
 
     <Button
         android:id="@+id/submit_tv"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
+        android:layout_height="wrap_content"
         android:layout_marginRight="20dp"
 
         android:background="@null"
-        android:text="&#8626;" />
+        android:text="&#8626;"
+
+        android:paddingTop="@dimen/input_padding"/>
 
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
index 60d00418be924803ce64c9116e51d1c1749fff20..e7a121f85d03925ed743e20939aaa181232497f6 100755
GIT binary patch
literal 1065
zcmeAS@N?(olHy`uVBq!ia0y~yVDJE84mJh`hS0a0-5D5|KX|%0hE&A8ogUi}k}7e$
z{`?ueq@RxWDi(GxkxtUv{k*5^lB?>ZkZG;ru36@Z9g8I5I^xB%SnsV+S()k*w?gAm
zs}uL#8*WR*jh^?+ZcJGHrBOcn2jjM;cV~p(zl*fcvo=1n@4>rU#d&GZ=6s*?*>3;$
z@_*+g4{qyXIr1Y!EumqRL{bCKg!qmbj%gDlpSU03`SdtlGKFoXV;##G1^c>bL<|3W
z&(?aX+aaJO`K?p>T9f%Nc(Q`jt{skd*n6PUqaytXBiEGatbV&YwRQA4+_QBT-TCqI
z)Q#m2gbV^7Z1(uE;#xNUPDkBSf6gp!=(`f-vh<_zRL)X^r#5rkHLg~@b!0rHnJr?K
z^kd&0-{%^^@`rv$TFek%$7{0D;io`^&Ih-mJ2Oi(+pbRS;+%55ar+%h{>01qhjhQ&
z281!|O74*6lnzj7`O7tv=Z^?yyFB*-2TQ##Hs|*<v+sI1JHGYy%h}JTq?N9|7R-EK
zt0qpM&a<C$YVv{If7RCZ2Gl!gOw(3do)h@vi0t_TQ}%pV{##B<UAEvsmX41X!_MF7
zqI_a4Q~S9u$TgNa%x{ckau@k_^b&Jx<f$z}bC~CO`mTC#EahQF+zYO$HxH~naNLva
zEn}U|0nH<>mk!+Cz&?d(gGdGcjEmu2ht4y3Cp}DCY?S4r->{S^pK0;r!tE?(?uVv7
zHPQ%)V~+Ds7W$zm<k!#P@UnBe2DkACQv=J3b#8GxX2=<POU5_dJ;0u~-&jv*S~$ZN
z?uh&R7ruGiFjHbU8*;3tX}jng*Yymgo`&!CCdcW-l<toeo0>55%dBe?dJ2DTQWh(l
z!aOB-8Uy#G2CoZI0{f)DH8`azZxF4p(sW?G6|=9WeR8hTcbTONIo5Ldu2lNJ@cI_!
zjUU=?+s`nwf5W(R*A3eT1%ltUa*LlTG2Cwbe%Fl*i@LBK_t#I}%d$oFci7QG;#aMF
zSFB<Ergm`O3WY7_LXX)tY(DVW`QFi@Q_EFfoH?{`PeJ*DrlMQIch<@7KKD$`?!mP+
zHnUq#pFF6yU@@QAJmGcIt<?jV8Z}-n;@c5D=UB*bnOkP@xvkl@a$50>+P}_eJ2~(E
zP`>na%PGGE=U1VRy*|Y~`}E-?)0C9J8I3EM=3ai_vsC=3T|wig7`9nm1<&IxjKz+L
zCOX-cJa6SQUl%#^ot<~V^QMBu*N#eGiSLcdH=1-@dV$vJ^ah>@_nGt9W;&)#kY_YL
v(LX<Rf@BKYPeFs`KR+T#6b^m(U4F;J?1(Az4$fs@U|{fc^>bP0l+XkKB+ln?

delta 2508
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

diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
index 65649542e03fafe3c6531ec96081d9a02028ce2c..627c57a57a199a5414c97bd0820ca511a6964ab2 100755
GIT binary patch
delta 668
zcmZqT+sryaxt^)Y)5S3)!};wLe~*wrkz@7gS*k0$6`I5x!&aZFG){12&HKIi%z~x`
zE6fC0#8h+_EfCX<Iw^8R>0p?ngrHytm*7Ex_kFD_qN2J{E-GEZme1zwn0(NH$L660
z-=W&s?C<w{-ut_DfAPExhx8*KK3A8>Fgxg=AYh;-;C4b{!OnVH0R#685e}9f##y(S
z8H-!o8XXQuEZ7MWj&N64Tf$t-`Y?4;oij(u)UsCLR1J}qjZ2)bTvL9^9#C@V*php0
zk}ot4yDzxU`Fs*zVDx#7-6H=i9+n2ZU&P~bYQlldkrf7tXa0zv)i6IDAhP3iOa8x~
zeoNP~<S&?XZ_0tc5f=6F&nGl<-JUby+g1-v24O!7G0nvX^wnh|w3z)H{~lO!sNvAt
z!iTj{JCzC~10GCt$dme%y&(L7mBFL;8x4ZeecV_#ZM^U-TQW6DvCOG_NsW-ku|wZf
z4Ij8#O<l|6&T@|7b)&6c#a8FY?NU`De!s6b+!L``C%4eUk|pM=6_-7C{h_$|pEgOp
z2)cI8k-tFX25*h;!F^#rj9gha*T3WZ%jUOqK|t<;;FnRZM_bGd9=Bwl&Qb`nV~{<t
z!6}d1rc&dK`zeM3nF{VFUIs79RaS>gyU`z_GiR+i+eD)`hcz63>v(AUF#T-n35a^>
zeK0_0&uTlLC3AERKQEMU)~XKJDONA`^EcDPYQG%;>Fjw7wSS_2h$RSrSft1{No-}D
z?P8e_3!Mr5t^aP7Z}K{A6T@P*{K3vcZ2zwp9h&R0lV!@B0_~T#yMOhnb((CJ<1sO=
o{r?szZb5N~BWhv7|3#T(tFIaEahj>cz`(%Z>FVdQ&MBb@0FsFv&Hw-a

delta 1779
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
IIVCg!09WN(tN;K2

diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index 54b0160cd0da9b609f0207cffb4216144236539f..12cc9cba8c3a38efce86d264369f320e5d1dda89 100755
GIT binary patch
literal 1439
zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^SB(>z@qLn`9l&WP;@4HY?F
z|N2$N%%vBdmt>~2wJ!U9CZ*A3=28}+tIkVP{cT<K1HS}BNJ<KR5&7Zj#g#gr#qGj!
zqaYQ-JC^0k^mX3~D=Q1+`W&}5*8VoP_)Uq#^LdGCV#ez#cNKrX^}GJu|Ly<N*B7(?
zH!gMXxf(0Op0I~grh(a@>_Egl;Rg&ovIf(>vsf@Bv-do;W#l_>gE6_%pKj6`8uFUv
z467TXIK#qQzBL82>wabtDcQJ2MqtL&DepU5U0Ij+$uj7kDy{ucROP;R!<yh9g(^K6
zTilk^aK}u%^0u$_Xzw!-N%>IDhy^;@2isrvemyvc@8NDGbE`YE(w4eDG+eNpC0pyz
zy@%^0pIJ9dEGU%7?vZHlh~$5xdvIG<!IF!nuBUvNR{u(<4b6~VQ#Y?DQ8<TLk73=p
zD|K9dVw<*#KHTg!E72zC9rHWivitMj9$NKgk4L5HMaPF*S6wO9)IQIx!!cj9EWGu3
z*9+5ClAa9Kjj9I%8^arX-#R^iskdN_j(CN>?Ujb!;0I^J9=g<>t9g2<@WWvR^Wt=!
zJ$GNE2{ZUJ`>SnbPk#7FrlI-3mM6QnZv5c#<Ib8lK|2h8{_Bm12y|H=c=kV|!qt$*
zu-4Mx1ozb!Chwgg(@^qa!U3^HU(tutznu1%x$HyVfhlJkCEBb-{H8qkSe6*Rc(&|o
zhA<5qjVre|2c7Gg-+1<MV)5(`)e_Mw&b)Yezq5SF#PerXGQMY$PP)<Ba^<jx%%O=!
zX2KI@Z4a0k+Pu59%H{cUhZ1g^3wr;zP1-!QbMiy6#;FI^9$0c`PL_^~D}zf^z25nA
z>W&Yuuln#|hTj2)kMRr6=pJ-F@ONh4>zNULw$1;IbNh<ksqB!g5SuZPXI@9^W^Se*
zOgqvVvVW?HJ)399@Jws+><4BEtp|(}oQ_RlWZaTr@jPN>fw+Nj@Oy?XnY`|)AKepH
z9<sf(zgzwJGuf~kTzeu!>$s8^?$-S3%+)`Cb<x*{JNHXROfR$OJ=d_ws8puseEfUQ
z7k`5+Y?cWNWd6OtbN<7h_|SyMhBx;4|In7r37e)-V{@SK?$QmmG6zBz&Wc?l*q|i6
zG%|AWhmfG((K<fo&vj2Ryx7*Jm*$?~xH?f>J=W)&8+(THe(@Ut&1+xgot2IXo5oc$
z<>x*bZdunJ|7@kFf)84s{Ey;It5KElIyd8`>J9celY9DieQ(fi)K#s}ynUQMC4ecR
z{Q&zz)i*{J|8*CZ8yFw9yvRP)=j`)<ddFLlqEX!q9Qh9psL#AL;lc+Yb5k2TWBtU1
zDPI^gw7YjL*cAUlFUh6bC^*q+_lEr*wJS0MXZ?EMu*`Xte`v)Pt>tB37o2Y0{7T~p
z*Jr=r3Zu&=J#q}LzA|~SOJex<@Wo77XDY&w=oh&&=GXO%b1~-y7uMP7u;<B@_AhuS
zWj*C*_tedO*W#C1#y{xqys**T!fuLbz>=N&Kkr&1zN>1%+w6s}qn_@Ww<LGn!H<3q
zBPQ+pVC)h6;|}ZHn{7!RyLLVj{H>c|Azr9<zLeqE7g@R$97Gga63jo?y_TFWxS{ky
RhJk^B!PC{xWt~$(69A6;jYt3h

literal 3555
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
N;OXk;vd$@?2>@&$mj(a;

diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index de31fd30c541092f07b0504462496691db1e827e..41fc64a8a383145d56c4d7fa84e66596b54a8a84 100755
GIT binary patch
literal 2271
zcmeAS@N?(olHy`uVBq!ia0y~yV3+{H9Bd2>4A0#j?O<TwSmx>C7*Y}Uc6M%0OsM4X
z`tutix~Dzx4iUL1v0%Z(cXvf6Dr{6`>rtD*;Of((?|a3=;3EIAAC4{h`&{iay%ugU
z$?S1D$mYy^M8nmIF|mA^w^VeifM|$I@?wrJsm~45<7VAHedgSoId3cY{^W1Uw5p!>
z{LlCQ|KIL?ey{lY1x0oxnGGFLQ%^CnOi<`3a$s=1xjczcg>8|HfJ5N7l@Sb`jT-DM
z0aI$V#2k_oPBAiyq|WbRoggtXmCiIacq{Y1VA|n_R&S1G^nG?0a(G-)-T7Q=PAH$f
zc}4j0(#34@^9}!PITHLeSH0ob(=UcImKT&U$!l#lyJ3`F^G?F&`sSq!Olot>uPxB9
zzS5E|b!=TBtKlh|*3aP&bf?~mEq(ka@K<k;azlgWb8bHK5S~5D^J-E=f{%w9KfUwv
z!^TrJ_UokM<)*VSPBC<Nc!o2_G%8)jd`C8u-RJ1X^O-VY_)>TRt}ps-oo~VMnK${r
zL~ge4QsWD!85R^e2S;w{&;NC3C!2)<zxjE|`u>?a3-XL_lre03Z^);&?YiZ;+x&;k
ztxDgoyLXnMp6%V6KhtFAnC{zj!}8Q)ZuK*Tr9X}H^{=ddeYO13&uIr|YbXBAxb`FV
z`{qMGO+GYwotNcJcJH}%^h)1X9+Q_jW>MQ`oR_|nwIT6XMTKFL_cL4OJ)9M%9xhYM
znPogrYTI?K<tq-pneaG%g|s@4<+kS=G@mE6@78vBGu!msn^1$NZ%QK~8y_!f`*`|Y
zdhofkeDl|S*^_r|hnd^!q^$q(3{y?*o@_|8yz^_p$3q()aWCf%*#3lJgY6w((+74u
z@hhe?NL_o`dVDEEK={M^GG>xFYozOCzC8ZQ@WP|haWCg<{)6YgNu2-sO0|K_(&o<h
zV5SwTe+YcwPH>j3yPKb%uGrvZU$tZI-AgUf<<k50ql@Nk{^M$~`18%w1LoS(TH8Cq
zThC`*m}4j>eeTk|#U-5Gh3kWF@4UO`$^)(hQv<^VZ{?a__qVU*m;SHUZ+km3vRT`D
z?;)nrg~@U|jwk+oS@7LV`Op6ohJEavOc|UEs~8GSv8?%O=JTAdVu`@K{F?1~HSbl8
zWM;Q~zxsfyed_^hu}N7Q^5ynzxxHh%b)F%EueG|lb^0>KX*QAOX49WtP^#*bw7Qfx
zwb;#K_Jw~|tIyk5zdkmr)nrX+-*4uagtvANH+?x4_gHq{HG?_>E{E<2YuTmY=?juw
z{dcZU4&JbAvwmq*>ZwMCsmIrs#qE{fm+>Lj;+I$qgKq4M<XD&QlV#(&X0>-`eeirB
z)Glg!jF0s~^_=Va&8PR?ea-Y>N0vV0mm-E0d&?}(KM>w>T~D1qV)vhvYd=EP8(u!g
z>H8z&xsb%a*nJM`4<FdIYh&pY?;Bf+U)eOvU%8s_e$B_)wT;vGu7xc>r~G$=8|Q<P
z{Kdb|3T@Na#{BwqLH*B%53<se?AN?xsL=edi!o?EtJ(R(yv4^RKi$|J>C&Ioe$8RA
zRro6HIqw<b<&%WJ>mOLgdE-aN)^AJVibT%kJ$R#-Vk<OH^Xy^W;$!vIz2XkeJ8q<(
zh`8>sbnk|`uJ`=6rOqFG+b^A%z39E+1II_*eA`(Iq>eE+zmXJn5V!iXYSGh|y9&MJ
zS8NpzGhN2-aNhb((nF(E8!L@B@4o+L5IGlS-nxF5;JGAc*~#ag^X9GLsoRn_$2g=}
zk<HioeeR){(hS~Z>2F^6-t~N5!|ng@Vd&G3e7AhwzB$GoKaatz?^l*P=YkEHRq;1&
z%74AucW9@~jWEvZbFZxy+nu%HjeyOE86VdxM!d9qVv>H7>j(RXTc;Y-W!9}cXxBcu
zfxkTN_liF5-G|rbG;rn5mAxmX7p#7;Z?4-8WvQ1MbB-_knsvBs*Vb#!%JP%Xy*zfY
zI@NZT@3C{i7WQxNX!b4nD$0MsEB&b5V|(SD;hI+0EjRA67rVUu`ur0izg(HG?Cfd%
zK3}Zr%!RpTZ~o3*;T_?#DtXP^vU54x#CPVuHO@70SeXC3XeVoh@BB(W>6q7V?Zsl$
z8;)@}z6nWOeC6S4KJj+n$mS^Fd20{OIT&hu?U(hM7s;nMZ<~Z$$8gM%dRAC*>!JC9
zue^%`EyCNp!&n!{zcc$*Vy``?luv#Q$F9YRcLa5dPOv5K?UfIj+?M*Jf#H<K8j+=3
m3q*oXdQ2YW&^rwN@w+QrTfcPE)Nc$73=E#GelF{r5}E+NzW#my

literal 5497
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

diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index bdaef34cd2ee2444c86048747e66753b7cb8223f..7acc991f0d64732d6cd0895bcbe4b3bdfdd313b2 100755
GIT binary patch
literal 2970
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Bd2>3_*8t*clkO6FprVLn`9l&du(LNtHZa
z|31fiWx#DMF14fFiv%u~onIrmSVF2-F>vwLZ5%BL2LzHPtT?hD{?|e8rkVgBpVqrv
z8H^L#yj2}GWU;g=tlVv^E21l&FA``Hq7m{UPVV!$bJK3VwKRTy=G>OccK?4`J>T>G
zXMA1tyUmQXPa2Zho08v7(qk83&}z(PXK8r-Lp6?J1@k&t0fu#tr&lm8;M-B=z_6n)
z{t;_~)q`7%j1R2pI>i}YHH<2zduYg(KM;BRLixcN25;VDjqKuwmQ^z+%g)c4#>~|a
zDYfG2a_bFuEb4g7nAOeegcCm7MEp#6P`~%dOokUrP57E~J$vMt=X*~UdT?ptfvI~{
zf*HO9Nwpu`rgBX9!0pRRB<{rVu6d<8lW9SBrpmGBji!>R5z)LkFCTqjPkpiJqk8jX
zBa{3!Y<ATFW;)41j2DiY{OZ+aikTMJ)*sGXUS9aC*{Edy$Gr^kCok00nO@<WSoKVq
zVV6X!I|Ex!t8jsFfm`!dHlDBtNle1ATlRdoz_egP>d){G91dq?mA@Q*$$08OL<74U
z)8U_UtqZ)l8uY5(iZ$p}-Fmr@)nU18u7p2B$;CT-ymyNkzDSF+S;*~JCiEk^y~Iy?
z+5I0{1upV2<}ww_f{TyLc6eOy?MelkJhR_<iT}44tflr<m#7q^FW;7$HOJKL{^Np7
z&Tpr0J(xfBKwDa|+ObN;KJVyfqCft9J8<vVd$yj-Ja!Yd{jtcoB~`KJvQ)Zp+<C?c
z64{OUPG@i2_S%qVQSd*<<y?%pVI4z_;Em+T>N(-1k0zz;->7sT|JKcG4CZ|-=W^5U
zroEn%aVDCfx*_OP(c!5Fs-qb`uqP<w&fL2pq58qmWABAlr-~c<{9dz;CGYK)V>f%Q
zpJsS-IrT$8!`JGB$9)Ih-Q?(dZN{+SegD>j%#3Y)Ez!63#_BU<-Q#MwDY7Mze}dVW
z`Uc*|23vG}tZOt(Qn?s<U)v`a=zdt7^<cd#n-~Mr0+0Bh>A8#tu2_BKJRE-{`!x5%
zcZ>Wbw=pDS^#wlQYd)y;$LjpoY(@nJJ`slA&o*KYRt5ezdAKpQ(o8{}q1QRLzxYh+
zYk96c6HMK2T3mcEsqMY}jM6_c51TTpXH?kS`_f|4zisB}7cvWWX78=wE0Ej3XR#~c
z!NwWpz6Ty$b69$FSL)-_Y}1+D#pXP=Z01#!kmCHa@#?O<1(G2QGD!?a&b~DlWBrlR
zV9aYLr60LXEBf&FkK2CNe*BPOe&?UdgQ;6e*?W?YJ-l4Vm%wVU{D92IvVYGiDz31X
z^RhpBc&SdFal?GoU0fjxQntEImp<NmXqC_!vmXHm7ron3VZ?nutBhy=m5591t9h=q
zoXozFIh|*-*<bww0jeM7&g4GB*0AYgU30m}m)Gy71~k{-cdu@6F5sWA^<?Kqu?IS8
z`DVJOBl|82$xQtkUiD1kbWi!TxVg!<qJ4dzRqqpuxZ=qm^f>FmqB&B_#ddEMiqK{F
zwEJ4|bB0QDTf=*y?23mb{9<yeUE{=Ha?U<s3h%jXCl4<%=Wck(_rfjW-nO#Bos5r7
zg+B_g?_>G0)aR-hLvZrk6rCCT)7gJG9eX(O8$;>l66H1BsrSvd1bV5RXMc3tbw1<0
z8!5N8F+?PuxydT8=X-9WP{rJD47ZqNI;zsoO^kTE!(PltZjy=hn@kyHdj_`%w$rbd
z_OCZO*8b^J%@+0xati+bUHZcFH^{VZKJ=tBv*zHU6VEl9SFip!t6m{a&iAj5={+(3
z8t;O>gS)$Z7>=xVc&*j={#;DHS$N~4tLqCRVp5`yJ#1auxLo@B#n1)M_`W^y{7~I<
zv^X*K?~~8U2ktPrcDVk}{cCq1H}X59&|}`OhnMeg?`#jwe9j+v`PgrU{X7N|5B%=3
zS6o$_%Pf+Sb!*YbpT!T_4+Oflac!t(%6rv(@ZkZE&86vu>K1lcg|%=0UOTXO?Y4Zg
z>V~l7=YQj>8=Q0aCwxxa;TF2Fqq+KF+uO$HpF|e-rZ=u)d;R;tv4;mfS3c`F{e_8v
z`PiM#liwLHy(<aVZd@{R-jNHx87i6IA1ShA>}Xf`F0p3yA=}D%S90!bo5OJA{>DE)
zS=QX<`fg_3e&W(yrUw5I=JL`*o5PY-!m2$A_Dh!@SSKWN`;A)S%?gXxdpy1~Mp@oJ
z_Fb1jql9CUX)QOyJl1vE2Y)?0Fge%b#&)lyt?cji%`<B|c=T$3^_ADZ)D7hr{Z7u%
z`22Iuuh%P`Bc(MMb_v9?F&zHbyMe)8yNDx*rQyf5NKUrn36HlO@SZy%%uLUChf?yI
z<K6`aPY1m1wpU^5-p*Q9mUM4svdS_4*X3s~xBV|~@P2ks_M`8PiW4Smo}79tdKuqh
zrZBv4isEJ1BXgf~-Twub-rurhImzgt^XshOx`_wgTk9^r|0ATqSNGW5T{ge_y%Ic^
zZ&&OKH#@g}|I=$ZKVE#VZ)`pA$L6*o!>1h~1v57lPCPit(qN0~hmeC;i*@Ho#2dem
zZqAnD{G)x{D_7@>-Q%x|ub4d1ymI+2(}R%5TdP<8&B)#J<@UyYh8HuYw!e4iyxRBq
zv9ZfqyI5ugzc~@P(zh(1choEN`QENzyr30SYyY*#|If-P|HR5lL>qn-x2Ep6q$V$Q
z=5uHGt$k;oyysl{?@TAdiR8u86!+DdIlc|-ES|OJ!sS?oSC&(Hi`5@UGx}u+`P#@w
zMRWdHRd?Co>-;DVhN-(JF#kOk?Okw;Wll_!tJ%-P8_!F<nZf)$pYzYo3k|t?G5aqS
zM{)Y~zPDtVk^dp7LH+o{eaFgIJ$}7XwIcXdi1NqjZ`1zVDy})Aa=<Y2^nMm=>yNwr
za!>iiu2rAU`f7<ouPXa2O9h52{MY$77_NWx-op^U9%HS*5OZArBa?${!P^Fg0@?jX
wxEV?hY-MITQ2IwmpWzDQsN%s88vo^2UFv(s|J7;>0|Nttr>mdKI;Vst0D3)0A^-pY

literal 7110
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
E03P2)r~m)}

diff --git a/app/src/main/res/raw/settings.txt b/app/src/main/res/raw/settings.txt
index f2d6a6f..bc15a21 100755
--- a/app/src/main/res/raw/settings.txt
+++ b/app/src/main/res/raw/settings.txt
@@ -1,5 +1,5 @@
 // do not edit the settingsVersion property!
-settingsVersion=4.4
+settingsVersion=4.7
 
 // when you are ready go back to t-ui and type "restart" to see changes
 
@@ -39,6 +39,7 @@ keepAliveWithNotification=true
 openKeyboardOnStart=true
 
 // music
+fromMediastore=true
 playRandom=true
 songsFolder=/sdcard/Music
 
diff --git a/app/src/main/res/values-h1024dp/dimension.xml b/app/src/main/res/values-h1024dp/dimension.xml
index 37ce161..8b27ae1 100755
--- a/app/src/main/res/values-h1024dp/dimension.xml
+++ b/app/src/main/res/values-h1024dp/dimension.xml
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
 
-    <dimen name="input_height">60dp</dimen>
-    <dimen name="input_padding">45dp</dimen>
+    <dimen name="input_padding">35dp</dimen>
     <dimen name="suggestion_height">60dp</dimen>
 
 </resources>
diff --git a/app/src/main/res/values-h320dp/dimension.xml b/app/src/main/res/values-h320dp/dimension.xml
index 19c2112..a2b8595 100755
--- a/app/src/main/res/values-h320dp/dimension.xml
+++ b/app/src/main/res/values-h320dp/dimension.xml
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
 
-    <dimen name="input_height">50dp</dimen>
-    <dimen name="input_padding">35dp</dimen>
+    <dimen name="input_padding">25dp</dimen>
     <dimen name="suggestion_height">50dp</dimen>
 
 </resources>
diff --git a/app/src/main/res/values-h720dp/dimension.xml b/app/src/main/res/values-h720dp/dimension.xml
index 307ab51..1a3e50a 100755
--- a/app/src/main/res/values-h720dp/dimension.xml
+++ b/app/src/main/res/values-h720dp/dimension.xml
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
 
-    <dimen name="input_height">60dp</dimen>
-    <dimen name="input_padding">45dp</dimen>
+    <dimen name="input_padding">30dp</dimen>
     <dimen name="suggestion_height">55dp</dimen>
 
 </resources>
diff --git a/app/src/main/res/values/dimension.xml b/app/src/main/res/values/dimension.xml
index d5200cf..91adf6a 100755
--- a/app/src/main/res/values/dimension.xml
+++ b/app/src/main/res/values/dimension.xml
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
 
-    <dimen name="input_height">35dp</dimen>
-    <dimen name="input_padding">25dp</dimen>
+    <dimen name="input_padding">15dp</dimen>
     <dimen name="suggestion_height">40dp</dimen>
     <dimen name="cursor_width">8dp</dimen>
 
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index fb7bf7e..3ae93fe 100755
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -4,10 +4,10 @@
     <string name="app_name">T-UI</string>
     <string name="separator_text">>></string>
     <string name="separator_text_su">$</string>
-    <string name="su">T-UI got SU permissions</string>
-    <string name="nosu">Seems that your device isn\'t properly rooted</string>
+    <string name="su">T-UI got SU permission</string>
+    <string name="nosu">Your device isn\'t rooted</string>
     <string name="permissions_toast">You have to grant at least Storage permission to make t-ui work</string>
-    <string name="permission_error">t-ui has not the permissions to do this</string>
+    <string name="permission_error">t-ui hasn\'t the permission to do that</string>
     <string name="version_label">Version:</string>
 
     <!-- app mgr -->
@@ -21,13 +21,13 @@
     <string name="error_label">Errors:</string>
 
     <!-- pending operation -->
-    <string name="starting_app">Starting:</string>
+    <string name="starting_app">Launching:</string>
     <string name="calling">Calling:</string>
     <string name="sharing">Sharing:</string>
 
     <!-- various outputs -->
     <string name="output_nothingfound">No matches</string>
-    <string name="output_nopermissions">You didn\'t grant the permission to do this</string>
+    <string name="output_nopermissions">You didn\'t grant the permission to do that</string>
 
     <!-- search-->
     <string name="output_searchingplaystore">Play Store search:</string>
diff --git a/build.gradle b/build.gradle
index c8451c0..8f59b38 100644
--- a/build.gradle
+++ b/build.gradle
@@ -8,8 +8,7 @@ buildscript {
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.1.2'
-        classpath 'com.github.hamsterksu:android-appversion-gradle-plugin:1.2.0'
+        classpath 'com.android.tools.build:gradle:2.2.3'
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
-- 
GitLab