diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 28bb6c4..5eae4e4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,6 +15,7 @@ android:theme="@style/baseTheme"> diff --git a/app/src/main/java/com/finnmglas/launcher/Functions.kt b/app/src/main/java/com/finnmglas/launcher/Functions.kt index 82a5529..d7e0635 100644 --- a/app/src/main/java/com/finnmglas/launcher/Functions.kt +++ b/app/src/main/java/com/finnmglas/launcher/Functions.kt @@ -213,6 +213,17 @@ private fun getIntent(packageName: String, context: Context): Intent? { return intent } +fun canReachSettings(): Boolean { + var availableActions = ACTIONS; + if(!launcherPreferences.getBoolean(PREF_DOUBLE_ACTIONS_ENABLED, false)){ + availableActions = listOf( + ACTION_UP, ACTION_DOWN, ACTION_RIGHT, ACTION_LEFT, ACTION_VOL_UP, + ACTION_VOL_DOWN, ACTION_DOUBLE_CLICK, ACTION_LONG_CLICK, ACTION_DATE, ACTION_TIME + ) + } + return availableActions.contains("launcher:settings") || availableActions.contains("launcher:choose") +} + fun launch( data: String, activity: Activity, animationIn: Int = android.R.anim.fade_in, animationOut: Int = android.R.anim.fade_out diff --git a/app/src/main/java/com/finnmglas/launcher/HomeActivity.kt b/app/src/main/java/com/finnmglas/launcher/HomeActivity.kt index ef83a3c..5fed5d3 100644 --- a/app/src/main/java/com/finnmglas/launcher/HomeActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/HomeActivity.kt @@ -198,18 +198,20 @@ class HomeActivity: UIObject, AppCompatActivity(), true -> { hideSettingsIcon() } - false -> showSettingsIcon() + false -> {showSettingsIcon()} } return false } private fun showSettingsIcon(){ - home_settings_icon.fadeRotateIn() - home_settings_icon.visibility = View.VISIBLE - settingsIconShown = true + if(!canReachSettings()) { + home_settings_icon.fadeRotateIn() + home_settings_icon.visibility = View.VISIBLE + settingsIconShown = true - tooltipTimer = fixedRateTimer("tooltipTimer", true, 10000, 1000) { - this@HomeActivity.runOnUiThread { hideSettingsIcon() } + tooltipTimer = fixedRateTimer("tooltipTimer", true, 10000, 1000) { + this@HomeActivity.runOnUiThread { hideSettingsIcon() } + } } } diff --git a/app/src/main/java/com/finnmglas/launcher/list/ListActivity.kt b/app/src/main/java/com/finnmglas/launcher/list/ListActivity.kt index 9eda1c3..f1c3af4 100644 --- a/app/src/main/java/com/finnmglas/launcher/list/ListActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/list/ListActivity.kt @@ -17,6 +17,8 @@ import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentPagerAdapter import com.finnmglas.launcher.list.apps.ListFragmentApps import com.finnmglas.launcher.list.other.ListFragmentOther +import kotlinx.android.synthetic.main.home.* +import kotlinx.android.synthetic.main.list_apps.* var intendedChoosePause = false // know when to close @@ -38,6 +40,10 @@ class ListActivity : AppCompatActivity(), UIObject { // Initialise layout setContentView(R.layout.list) + + list_settings.setOnClickListener() { + launch("launcher:settings", this, R.anim.bottom_up) + } } override fun onStart(){ diff --git a/app/src/main/java/com/finnmglas/launcher/list/apps/AppsRecyclerAdapter.kt b/app/src/main/java/com/finnmglas/launcher/list/apps/AppsRecyclerAdapter.kt index a24e97d..774a3ef 100644 --- a/app/src/main/java/com/finnmglas/launcher/list/apps/AppsRecyclerAdapter.kt +++ b/app/src/main/java/com/finnmglas/launcher/list/apps/AppsRecyclerAdapter.kt @@ -156,20 +156,31 @@ class AppsRecyclerAdapter(val activity: Activity, * The function [filter] is used to search elements within this [RecyclerView]. */ fun filter(text: String) { + // normalize text for search + fun normalize(text: String): String{ + return text.toLowerCase(Locale.ROOT).replace("[^a-z0-9]", "") + } appsListDisplayed.clear() if (text.isEmpty()) { appsListDisplayed.addAll(appsList) } else { + var appsSecondary: MutableList = ArrayList(); + var normalizedText: String = normalize(text); for (item in appsList) { - if (item.label.toString().toLowerCase(Locale.ROOT).contains(text.toLowerCase(Locale.ROOT))) { + var itemLabel: String = normalize(item.label.toString()); + + if (itemLabel.startsWith(normalizedText)) { appsListDisplayed.add(item) + }else if(itemLabel.contains(normalizedText)){ + appsSecondary.add(item) } } + appsListDisplayed.addAll(appsSecondary); } // Launch apps automatically if only one result is found and the user wants it // Disabled at the moment. The Setting 'PREF_SEARCH_AUTO_LAUNCH' may be - // modifyable at some later point. + // modifiable at some later point. if (appsListDisplayed.size == 1 && intention == "view" && launcherPreferences.getBoolean(PREF_SEARCH_AUTO_LAUNCH, false)) { launch(appsListDisplayed[0].packageName.toString(), activity) diff --git a/app/src/main/res/layout/list.xml b/app/src/main/res/layout/list.xml index 5656b68..cf293a4 100644 --- a/app/src/main/res/layout/list.xml +++ b/app/src/main/res/layout/list.xml @@ -23,6 +23,24 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + +