diff --git a/app/src/main/java/eu/ottop/yamlauncher/AppMenuActivity.kt b/app/src/main/java/eu/ottop/yamlauncher/AppMenuActivity.kt index 23cb068..e7619bd 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/AppMenuActivity.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/AppMenuActivity.kt @@ -1,12 +1,15 @@ package eu.ottop.yamlauncher +import android.app.Activity import android.content.Context +import android.content.Intent import android.content.pm.LauncherActivityInfo import android.content.pm.LauncherApps import android.os.Bundle import android.os.UserHandle import android.text.Editable import android.text.TextWatcher +import android.util.Log import android.view.View import android.widget.EditText import android.widget.LinearLayout @@ -24,22 +27,41 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -class AppMenuActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, AppMenuAdapter.OnItemLongClickListener { +class AppMenuActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, AppMenuAdapter.OnShortcutListener, AppMenuAdapter.OnItemLongClickListener { - private lateinit var binding: ActivityAppMenuBinding - private lateinit var recyclerView: RecyclerView - private lateinit var searchView: EditText - private lateinit var adapter: AppMenuAdapter - private lateinit var filteredApps: MutableList>> - private lateinit var installedApps: List>> - private lateinit var job: Job - private var appActionMenu = AppActionMenu() - private lateinit var launcherApps: LauncherApps + private lateinit var binding: ActivityAppMenuBinding + private lateinit var recyclerView: RecyclerView + private lateinit var searchView: EditText + private lateinit var adapter: AppMenuAdapter + private lateinit var filteredApps: MutableList>> + private lateinit var installedApps: List>> + private lateinit var job: Job + private var appActionMenu = AppActionMenu() + private lateinit var launcherApps: LauncherApps private val sharedPreferenceManager = SharedPreferenceManager() + private lateinit var menuMode: String + + companion object { + private lateinit var callback: (Pair>) -> Unit + private const val MENU_MODE = "abcd" + + fun start(context: Context, param1: String = "app", callback: (Pair>) -> Unit) { + val intent = Intent(context, AppMenuActivity::class.java).apply { + putExtra(MENU_MODE, param1) + } + context.startActivity(intent) + + this.callback = callback + } + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + + menuMode = intent.getStringExtra(MENU_MODE) ?: "app" + binding = ActivityAppMenuBinding.inflate(layoutInflater) setContentView(binding.root) setSupportActionBar(null) @@ -50,7 +72,7 @@ class AppMenuActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, recyclerView.layoutManager = LinearLayoutManager(this) installedApps = getInstalledApps() filteredApps = mutableListOf() - adapter = AppMenuAdapter(this@AppMenuActivity, installedApps, this, this) + adapter = AppMenuAdapter(this@AppMenuActivity, installedApps, this, this,this, menuMode) recyclerView.adapter = adapter setupSearch() @@ -60,12 +82,17 @@ class AppMenuActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, val mainActivity = launcherApps.getActivityList(appInfo.applicationInfo.packageName, userHandle).firstOrNull() if (mainActivity != null) { launcherApps.startMainActivity(mainActivity.componentName, userHandle, null, null) + finish() } else { - // Handle the case when launch intent is null (e.g., app cannot be launched) Toast.makeText(this, "Cannot launch app", Toast.LENGTH_SHORT).show() } } + override fun onShortcut(appInfo: LauncherActivityInfo, userHandle: UserHandle, textView: TextView) { + callback.invoke(Pair(textView.text.toString(), Pair(appInfo, userHandle,))) + finish() + } + override fun onItemLongClick( appInfo: LauncherActivityInfo, userHandle: UserHandle, @@ -74,11 +101,25 @@ class AppMenuActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, actionMenuLayout: LinearLayout, editView: LinearLayout ) { - textView.visibility = View.INVISIBLE - actionMenuLayout.visibility = View.VISIBLE - val mainActivity = launcherApps.getActivityList(appInfo.applicationInfo.packageName, userHandle).firstOrNull() - appActionMenu.setActionListeners(this@AppMenuActivity, CoroutineScope(Dispatchers.Main), binding, textView, editView, actionMenuLayout, searchView, appInfo.applicationInfo, userHandle, userProfile, launcherApps, mainActivity) - + textView.visibility = View.INVISIBLE + actionMenuLayout.visibility = View.VISIBLE + val mainActivity = + launcherApps.getActivityList(appInfo.applicationInfo.packageName, userHandle) + .firstOrNull() + appActionMenu.setActionListeners( + this@AppMenuActivity, + CoroutineScope(Dispatchers.Main), + binding, + textView, + editView, + actionMenuLayout, + searchView, + appInfo.applicationInfo, + userHandle, + userProfile, + launcherApps, + mainActivity + ) } private fun setupSearch() { diff --git a/app/src/main/java/eu/ottop/yamlauncher/AppMenuAdapter.kt b/app/src/main/java/eu/ottop/yamlauncher/AppMenuAdapter.kt index 853dcc5..2527274 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/AppMenuAdapter.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/AppMenuAdapter.kt @@ -12,10 +12,16 @@ import android.widget.FrameLayout import android.widget.LinearLayout import android.widget.TextView import androidx.appcompat.widget.AppCompatButton -import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView -class AppMenuAdapter(private val activity: AppMenuActivity, var apps: List>>, private val itemClickListener: OnItemClickListener, private val itemLongClickListener: OnItemLongClickListener) : +class AppMenuAdapter( + private val activity: AppMenuActivity, + var apps: List>>, + private val itemClickListener: OnItemClickListener, + private val shortcutListener: OnShortcutListener, + private val itemLongClickListener: OnItemLongClickListener, + private val menuMode: String +) : RecyclerView.Adapter() { private val sharedPreferenceManager = SharedPreferenceManager() @@ -24,6 +30,10 @@ class AppMenuAdapter(private val activity: AppMenuActivity, var apps: List(R.id.shortcuts).children) { + + var textView = i as TextView + i.setOnClickListener { Log.d("hHJKJFAF", "Click done") } + i.setOnLongClickListener { - Log.d("hHJKJFAF", "long click done") + AppMenuActivity.start(this@MainActivity, "shortcut") { newText -> + textView.text = newText.first + i.setOnClickListener { + val mainActivity = launcherApps.getActivityList(newText.second.first.applicationInfo.packageName, newText.second.second).firstOrNull() + if (mainActivity != null) { + launcherApps.startMainActivity(mainActivity.componentName, newText.second.second, null, null) + } else { + Toast.makeText(this, "Cannot launch app", Toast.LENGTH_SHORT).show() + } + } + } + return@setOnLongClickListener true } } @@ -38,6 +62,8 @@ class MainActivity : AppCompatActivity() { } + + override fun onTouchEvent(event: MotionEvent): Boolean { gestureDetector.onTouchEvent(event) return super.onTouchEvent(event) @@ -68,7 +94,9 @@ class MainActivity : AppCompatActivity() { } fun openAppMenuActivity() { - startActivity(Intent(this, AppMenuActivity::class.java)) + AppMenuActivity.start(this) { + } } -} \ No newline at end of file +} +