Added work profile app indicators and long click to select app toast for shortcuts

This commit is contained in:
ottoptj 2024-05-20 01:34:08 +03:00
commit 27bca8260f
8 changed files with 166 additions and 32 deletions

View file

@ -65,6 +65,11 @@ class AppMenuActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener,
binding = ActivityAppMenuBinding.inflate(layoutInflater) binding = ActivityAppMenuBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
setSupportActionBar(null) setSupportActionBar(null)
if (menuMode == "shortcut") {
binding.menutitle.visibility = View.VISIBLE
}
launcherApps = getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps launcherApps = getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
searchView = findViewById(R.id.searchView) searchView = findViewById(R.id.searchView)

View file

@ -2,6 +2,7 @@ package eu.ottop.yamlauncher
import android.content.Context import android.content.Context
import android.content.pm.LauncherActivityInfo import android.content.pm.LauncherActivityInfo
import android.content.res.Resources
import android.os.UserHandle import android.os.UserHandle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -12,6 +13,7 @@ import android.widget.FrameLayout
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.widget.AppCompatButton import androidx.appcompat.widget.AppCompatButton
import androidx.core.content.res.ResourcesCompat
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
class AppMenuAdapter( class AppMenuAdapter(
@ -55,22 +57,20 @@ class AppMenuAdapter(
actionMenuLayout.visibility = View.INVISIBLE actionMenuLayout.visibility = View.INVISIBLE
editView.visibility = View.INVISIBLE editView.visibility = View.INVISIBLE
itemView.setOnClickListener { textView.setOnClickListener {
val position = bindingAdapterPosition val position = bindingAdapterPosition
if (position != RecyclerView.NO_POSITION) {
val app = apps[position].first val app = apps[position].first
if (menuMode == "shortcut") { if (menuMode == "shortcut") {
shortcutListener.onShortcut(app, apps[position].second.first, textView, apps[position].second.second ) shortcutListener.onShortcut(app, apps[position].second.first, textView, apps[position].second.second)
} }
else if (menuMode == "app") { else if (menuMode == "app") {
itemClickListener.onItemClick(app, apps[position].second.first) itemClickListener.onItemClick(app, apps[position].second.first)
} }
}
} }
if (menuMode == "app") { if (menuMode == "app") {
itemView.setOnLongClickListener { textView.setOnLongClickListener {
val position = bindingAdapterPosition val position = bindingAdapterPosition
if (position != RecyclerView.NO_POSITION) {
val app = apps[position].first val app = apps[position].first
itemLongClickListener.onItemLongClick( itemLongClickListener.onItemLongClick(
app, app,
@ -82,8 +82,8 @@ class AppMenuAdapter(
) )
return@setOnLongClickListener true return@setOnLongClickListener true
} }
false
}
} }
} }
} }
@ -96,6 +96,17 @@ class AppMenuAdapter(
override fun onBindViewHolder(holder: AppViewHolder, position: Int) { override fun onBindViewHolder(holder: AppViewHolder, position: Int) {
val app = apps[position] val app = apps[position]
holder.textView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null)
if (app.second.second != 0) {
holder.textView.setCompoundDrawablesWithIntrinsicBounds(ResourcesCompat.getDrawable(activity.resources, R.drawable.ic_work_app, null),null,null,null)
}
else {
holder.textView.setCompoundDrawablesWithIntrinsicBounds(ResourcesCompat.getDrawable(activity.resources, R.drawable.ic_empty, null),null,null,null)
}
holder.textView.compoundDrawablePadding = 0
val appInfo = app.first.activityInfo.applicationInfo val appInfo = app.first.activityInfo.applicationInfo
holder.textView.text = sharedPreferenceManager.getAppName(activity, app.first.applicationInfo.packageName,app.second.second, appInfo.loadLabel(holder.itemView.context.packageManager)) holder.textView.text = sharedPreferenceManager.getAppName(activity, app.first.applicationInfo.packageName,app.second.second, appInfo.loadLabel(holder.itemView.context.packageManager))
holder.editView.findViewById<EditText>(R.id.app_name_edit).setText(holder.textView.text) holder.editView.findViewById<EditText>(R.id.app_name_edit).setText(holder.textView.text)

View file

@ -15,6 +15,7 @@ import android.widget.Toast
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.res.ResourcesCompat
import androidx.core.view.children import androidx.core.view.children
import eu.ottop.yamlauncher.databinding.ActivityMainBinding import eu.ottop.yamlauncher.databinding.ActivityMainBinding
import kotlin.math.abs import kotlin.math.abs
@ -40,12 +41,27 @@ class MainActivity : AppCompatActivity() {
val savedView = sharedPreferenceManager.getShortcut(this, textView) val savedView = sharedPreferenceManager.getShortcut(this, textView)
textView.setCompoundDrawablesWithIntrinsicBounds(ResourcesCompat.getDrawable(resources, R.drawable.ic_empty, null),null,null,null)
textView.compoundDrawablePadding = 0
i.setOnClickListener {
Toast.makeText(this, "Long click to select an app", Toast.LENGTH_SHORT).show()
}
if (savedView?.get(1) != "e") { if (savedView?.get(1) != "e") {
if (savedView?.get(1) != "0") {
textView.setCompoundDrawablesWithIntrinsicBounds(ResourcesCompat.getDrawable(resources, R.drawable.ic_work_app, null),null,null,null)
}
else {
textView.setCompoundDrawablesWithIntrinsicBounds(ResourcesCompat.getDrawable(resources, R.drawable.ic_empty, null),null,null,null)
}
textView.text = savedView?.get(2) textView.text = savedView?.get(2)
textView.setOnClickListener { textView.setOnClickListener {
val mainActivity = launcherApps.getActivityList(savedView?.get(0).toString(), launcherApps.profiles[savedView?.get(1)!!.toInt()]).firstOrNull() val mainActivity = launcherApps.getActivityList(savedView?.get(0).toString(), launcherApps.profiles[savedView?.get(1)!!.toInt()]).firstOrNull()
if (mainActivity != null) { if (mainActivity != null) {
launcherApps.startMainActivity(mainActivity.componentName, launcherApps.profiles[savedView[1]!!.toInt()], null, null) launcherApps.startMainActivity(mainActivity.componentName, launcherApps.profiles[savedView[1].toInt()], null, null)
} else { } else {
Toast.makeText(this, "Cannot launch app", Toast.LENGTH_SHORT).show() Toast.makeText(this, "Cannot launch app", Toast.LENGTH_SHORT).show()
} }
@ -54,6 +70,13 @@ class MainActivity : AppCompatActivity() {
i.setOnLongClickListener { i.setOnLongClickListener {
AppMenuActivity.start(this@MainActivity, "shortcut") { newText -> AppMenuActivity.start(this@MainActivity, "shortcut") { newText ->
if (newText.first.second != 0) {
textView.setCompoundDrawablesWithIntrinsicBounds(ResourcesCompat.getDrawable(resources, R.drawable.ic_work_app, null),null,null,null)
}
else {
textView.setCompoundDrawablesWithIntrinsicBounds(ResourcesCompat.getDrawable(resources, R.drawable.ic_empty, null),null,null,null)
}
textView.text = newText.first.first textView.text = newText.first.first
i.setOnClickListener { i.setOnClickListener {
val mainActivity = launcherApps.getActivityList(newText.second.first.applicationInfo.packageName, newText.second.second).firstOrNull() val mainActivity = launcherApps.getActivityList(newText.second.first.applicationInfo.packageName, newText.second.second).firstOrNull()

View file

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="15dp"
android:height="15dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:alpha="0">
<group>
<path/>
</group>
</vector>

View file

@ -0,0 +1,17 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="15dp"
android:height="15dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="#F3F3F3"
android:alpha="1">
<group android:scaleX="0.5"
android:scaleY="0.5"
android:translateX="0
"
android:translateY="6">
<path
android:fillColor="@android:color/white"
android:pathData="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2z"/>
</group>
</vector>

View file

@ -6,11 +6,30 @@
android:gravity="bottom" android:gravity="bottom"
android:orientation="vertical"> android:orientation="vertical">
<Space
android:layout_width="match_parent"
android:layout_height="60dp" />
<TextView
android:id="@+id/menutitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:gravity="start"
android:paddingLeft="40dp"
android:paddingTop="20dp"
android:paddingRight="40dp"
android:paddingBottom="20dp"
android:text="Select an app"
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textColor="#C1F3F3F3"
android:textSize="36sp"
android:visibility="gone" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view" android:id="@+id/recycler_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginTop="25dp"
android:layout_weight="1" android:layout_weight="1"
android:clipToPadding="false" android:clipToPadding="false"
android:fadingEdgeLength="20dp" android:fadingEdgeLength="20dp"

View file

@ -15,19 +15,19 @@
<TextClock <TextClock
android:id="@+id/text_clock" android:id="@+id/text_clock"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="wrap_content"
android:layout_marginVertical="20dp" android:layout_marginVertical="20dp"
android:layout_weight="1" android:fontFamily="@null"
android:textAlignment="center" android:textAlignment="center"
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textColor="#F3F3F3" android:textColor="#F3F3F3"
android:textSize="70sp" android:textSize="70sp" />
android:fontFamily= "@null"
android:textAppearance= "@android:style/TextAppearance.DeviceDefault" />
<LinearLayout <LinearLayout
android:id="@+id/shortcuts" android:id="@+id/shortcuts"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
@ -109,6 +109,54 @@
android:textColor="#F3F3F3" android:textColor="#F3F3F3"
android:textSize="28sp" android:textSize="28sp"
android:visibility="visible" /> android:visibility="visible" />
<TextView
android:id="@+id/app6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:gravity="start"
android:paddingLeft="40dp"
android:paddingTop="20dp"
android:paddingRight="40dp"
android:paddingBottom="20dp"
android:text="App"
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textColor="#F3F3F3"
android:textSize="28sp"
android:visibility="visible" />
<TextView
android:id="@+id/app7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:gravity="start"
android:paddingLeft="40dp"
android:paddingTop="20dp"
android:paddingRight="40dp"
android:paddingBottom="20dp"
android:text="App"
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textColor="#F3F3F3"
android:textSize="28sp"
android:visibility="visible" />
<TextView
android:id="@+id/app8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:gravity="start"
android:paddingLeft="40dp"
android:paddingTop="20dp"
android:paddingRight="40dp"
android:paddingBottom="20dp"
android:text="App"
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textColor="#F3F3F3"
android:textSize="28sp"
android:visibility="visible" />
</LinearLayout> </LinearLayout>
<Space <Space

View file

@ -31,8 +31,8 @@
android:paddingBottom="10dp" android:paddingBottom="10dp"
android:selectAllOnFocus="true" android:selectAllOnFocus="true"
android:singleLine="true" android:singleLine="true"
android:textSize="28sp" android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textAppearance="@android:style/TextAppearance.DeviceDefault" /> android:textSize="28sp" />
<androidx.appcompat.widget.AppCompatButton <androidx.appcompat.widget.AppCompatButton
android:id="@+id/reset" android:id="@+id/reset"
@ -45,8 +45,8 @@
android:insetTop="0dp" android:insetTop="0dp"
android:insetBottom="0dp" android:insetBottom="0dp"
android:text="Reset" android:text="Reset"
android:textColor="#F3F3F3" android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textAppearance="@android:style/TextAppearance.DeviceDefault"/> android:textColor="#F3F3F3" />
</LinearLayout> </LinearLayout>
<TextView <TextView
@ -62,7 +62,8 @@
android:textAppearance="@android:style/TextAppearance.DeviceDefault" android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textColor="#F3F3F3" android:textColor="#F3F3F3"
android:textSize="28sp" android:textSize="28sp"
android:visibility="visible" /> android:visibility="visible"
app:drawableLeftCompat="@drawable/ic_work_app" />
<LinearLayout <LinearLayout
android:id="@+id/action_menu" android:id="@+id/action_menu"
@ -80,9 +81,9 @@
android:foreground="@drawable/app_action_foreground" android:foreground="@drawable/app_action_foreground"
android:text="Info" android:text="Info"
android:textAlignment="center" android:textAlignment="center"
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textColor="#F3F3F3FF" android:textColor="#F3F3F3FF"
app:drawableTopCompat="@android:drawable/ic_menu_info_details" app:drawableTopCompat="@android:drawable/ic_menu_info_details" />
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
<TextView <TextView
android:id="@+id/uninstall" android:id="@+id/uninstall"
@ -93,9 +94,9 @@
android:foreground="@drawable/app_action_foreground" android:foreground="@drawable/app_action_foreground"
android:text="Uninstall" android:text="Uninstall"
android:textAlignment="center" android:textAlignment="center"
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textColor="#F3F3F3FF" android:textColor="#F3F3F3FF"
app:drawableTopCompat="@android:drawable/ic_menu_delete" app:drawableTopCompat="@android:drawable/ic_menu_delete" />
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
<TextView <TextView
android:id="@+id/rename" android:id="@+id/rename"
@ -106,9 +107,9 @@
android:foreground="@drawable/app_action_foreground" android:foreground="@drawable/app_action_foreground"
android:text="Rename" android:text="Rename"
android:textAlignment="center" android:textAlignment="center"
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textColor="#F3F3F3FF" android:textColor="#F3F3F3FF"
app:drawableTopCompat="@android:drawable/ic_menu_edit" app:drawableTopCompat="@android:drawable/ic_menu_edit" />
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
<TextView <TextView
android:id="@+id/hide" android:id="@+id/hide"
@ -119,9 +120,9 @@
android:foreground="@drawable/app_action_foreground" android:foreground="@drawable/app_action_foreground"
android:text="Hide" android:text="Hide"
android:textAlignment="center" android:textAlignment="center"
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textColor="#F3F3F3FF" android:textColor="#F3F3F3FF"
app:drawableTopCompat="@android:drawable/ic_menu_view" app:drawableTopCompat="@android:drawable/ic_menu_view" />
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
<TextView <TextView
android:id="@+id/close" android:id="@+id/close"
@ -132,9 +133,9 @@
android:foreground="@drawable/app_action_foreground" android:foreground="@drawable/app_action_foreground"
android:text="Close" android:text="Close"
android:textAlignment="center" android:textAlignment="center"
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textColor="#F3F3F3FF" android:textColor="#F3F3F3FF"
app:drawableTopCompat="@android:drawable/ic_menu_close_clear_cancel" app:drawableTopCompat="@android:drawable/ic_menu_close_clear_cancel" />
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
</LinearLayout> </LinearLayout>