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)
setContentView(binding.root)
setSupportActionBar(null)
if (menuMode == "shortcut") {
binding.menutitle.visibility = View.VISIBLE
}
launcherApps = getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
searchView = findViewById(R.id.searchView)

View file

@ -2,6 +2,7 @@ package eu.ottop.yamlauncher
import android.content.Context
import android.content.pm.LauncherActivityInfo
import android.content.res.Resources
import android.os.UserHandle
import android.view.LayoutInflater
import android.view.View
@ -12,6 +13,7 @@ import android.widget.FrameLayout
import android.widget.LinearLayout
import android.widget.TextView
import androidx.appcompat.widget.AppCompatButton
import androidx.core.content.res.ResourcesCompat
import androidx.recyclerview.widget.RecyclerView
class AppMenuAdapter(
@ -55,9 +57,8 @@ class AppMenuAdapter(
actionMenuLayout.visibility = View.INVISIBLE
editView.visibility = View.INVISIBLE
itemView.setOnClickListener {
textView.setOnClickListener {
val position = bindingAdapterPosition
if (position != RecyclerView.NO_POSITION) {
val app = apps[position].first
if (menuMode == "shortcut") {
shortcutListener.onShortcut(app, apps[position].second.first, textView, apps[position].second.second)
@ -66,11 +67,10 @@ class AppMenuAdapter(
itemClickListener.onItemClick(app, apps[position].second.first)
}
}
}
if (menuMode == "app") {
itemView.setOnLongClickListener {
textView.setOnLongClickListener {
val position = bindingAdapterPosition
if (position != RecyclerView.NO_POSITION) {
val app = apps[position].first
itemLongClickListener.onItemLongClick(
app,
@ -82,8 +82,8 @@ class AppMenuAdapter(
)
return@setOnLongClickListener true
}
false
}
}
}
}
@ -96,6 +96,17 @@ class AppMenuAdapter(
override fun onBindViewHolder(holder: AppViewHolder, position: Int) {
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
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)

View file

@ -15,6 +15,7 @@ import android.widget.Toast
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.res.ResourcesCompat
import androidx.core.view.children
import eu.ottop.yamlauncher.databinding.ActivityMainBinding
import kotlin.math.abs
@ -40,12 +41,27 @@ class MainActivity : AppCompatActivity() {
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) != "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.setOnClickListener {
val mainActivity = launcherApps.getActivityList(savedView?.get(0).toString(), launcherApps.profiles[savedView?.get(1)!!.toInt()]).firstOrNull()
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 {
Toast.makeText(this, "Cannot launch app", Toast.LENGTH_SHORT).show()
}
@ -54,6 +70,13 @@ class MainActivity : AppCompatActivity() {
i.setOnLongClickListener {
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
i.setOnClickListener {
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: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
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="25dp"
android:layout_weight="1"
android:clipToPadding="false"
android:fadingEdgeLength="20dp"

View file

@ -15,19 +15,19 @@
<TextClock
android:id="@+id/text_clock"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_height="wrap_content"
android:layout_marginVertical="20dp"
android:layout_weight="1"
android:textAlignment="center"
android:textColor="#F3F3F3"
android:textSize="70sp"
android:fontFamily="@null"
android:textAppearance= "@android:style/TextAppearance.DeviceDefault" />
android:textAlignment="center"
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textColor="#F3F3F3"
android:textSize="70sp" />
<LinearLayout
android:id="@+id/shortcuts"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
@ -109,6 +109,54 @@
android:textColor="#F3F3F3"
android:textSize="28sp"
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>
<Space

View file

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