diff options
| author | Tanuj <thetanuj@hotmail.com> | 2023-03-04 16:02:06 +0530 |
|---|---|---|
| committer | Tanuj <thetanuj@hotmail.com> | 2023-03-04 16:02:06 +0530 |
| commit | f00cff2c396a9efd6728dce25027101867ec4db9 (patch) | |
| tree | aadb26046d5a69516953c5345694a718823c47d8 /app/src | |
| parent | 674492e48e072e4e760826babb112433497c4b5d (diff) | |
| download | SidePhOnelauncher-f00cff2c396a9efd6728dce25027101867ec4db9.tar.gz SidePhOnelauncher-f00cff2c396a9efd6728dce25027101867ec4db9.tar.bz2 SidePhOnelauncher-f00cff2c396a9efd6728dce25027101867ec4db9.zip | |
Added rename app feature
Diffstat (limited to 'app/src')
| -rw-r--r-- | app/src/main/java/app/olauncher/MainViewModel.kt | 2 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/data/Prefs.kt | 4 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/helper/Utils.kt | 11 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt | 28 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt | 4 | ||||
| -rw-r--r-- | app/src/main/res/drawable/ic_rename.xml | 9 | ||||
| -rw-r--r-- | app/src/main/res/layout/adapter_app_drawer.xml | 51 |
7 files changed, 103 insertions, 6 deletions
diff --git a/app/src/main/java/app/olauncher/MainViewModel.kt b/app/src/main/java/app/olauncher/MainViewModel.kt index 09be03e..3f749fe 100644 --- a/app/src/main/java/app/olauncher/MainViewModel.kt +++ b/app/src/main/java/app/olauncher/MainViewModel.kt @@ -161,7 +161,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { fun getAppList(includeHiddenApps: Boolean = false) { viewModelScope.launch { - appList.value = getAppsList(appContext, includeHiddenApps) + appList.value = getAppsList(appContext, prefs, includeHiddenApps) } } diff --git a/app/src/main/java/app/olauncher/data/Prefs.kt b/app/src/main/java/app/olauncher/data/Prefs.kt index 4957516..38389ac 100644 --- a/app/src/main/java/app/olauncher/data/Prefs.kt +++ b/app/src/main/java/app/olauncher/data/Prefs.kt @@ -399,4 +399,8 @@ class Prefs(context: Context) { else -> "" } } + + fun getAppRenameLabel(appPackage: String): String = prefs.getString(appPackage, "").toString() + + fun setAppRenameLabel(appPackage: String, renameLabel: String) = prefs.edit().putString(appPackage, renameLabel).apply() }
\ No newline at end of file diff --git a/app/src/main/java/app/olauncher/helper/Utils.kt b/app/src/main/java/app/olauncher/helper/Utils.kt index 26aa209..0787486 100644 --- a/app/src/main/java/app/olauncher/helper/Utils.kt +++ b/app/src/main/java/app/olauncher/helper/Utils.kt @@ -52,7 +52,7 @@ fun Context.showToast(stringResource: Int, duration: Int = Toast.LENGTH_SHORT) { Toast.makeText(this, getString(stringResource), duration).show() } -suspend fun getAppsList(context: Context, includeHiddenApps: Boolean = false): MutableList<AppModel> { +suspend fun getAppsList(context: Context, prefs: Prefs, includeHiddenApps: Boolean = false): MutableList<AppModel> { return withContext(Dispatchers.IO) { val appList: MutableList<AppModel> = mutableListOf() @@ -66,10 +66,13 @@ suspend fun getAppsList(context: Context, includeHiddenApps: Boolean = false): M for (profile in userManager.userProfiles) { for (app in launcherApps.getActivityList(null, profile)) { + + val appLabelShown = prefs.getAppRenameLabel(app.applicationInfo.packageName).ifBlank { app.label.toString() } + if (includeHiddenApps && app.applicationInfo.packageName != BuildConfig.APPLICATION_ID) appList.add( AppModel( - app.label.toString(), + appLabelShown, collator.getCollationKey(app.label.toString()), app.applicationInfo.packageName, app.componentName.className, @@ -81,7 +84,7 @@ suspend fun getAppsList(context: Context, includeHiddenApps: Boolean = false): M ) appList.add( AppModel( - app.label.toString(), + appLabelShown, collator.getCollationKey(app.label.toString()), app.applicationInfo.packageName, app.componentName.className, @@ -90,7 +93,7 @@ suspend fun getAppsList(context: Context, includeHiddenApps: Boolean = false): M ) } } - appList.sort() + appList.sortBy { it.appLabel.lowercase() } } catch (e: Exception) { e.printStackTrace() diff --git a/app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt b/app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt index 4394c9d..1cd7e13 100644 --- a/app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt +++ b/app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt @@ -13,6 +13,7 @@ import app.olauncher.data.AppModel import app.olauncher.data.Constants import app.olauncher.databinding.AdapterAppDrawerBinding import app.olauncher.helper.isSystemApp +import app.olauncher.helper.showKeyboard import java.text.Normalizer @SuppressLint("NotifyDataSetChanged") @@ -23,6 +24,7 @@ class AppDrawerAdapter( private val appInfoListener: (AppModel) -> Unit, private val appDeleteListener: (AppModel) -> Unit, private val appHideListener: (AppModel, Int) -> Unit, + private val appRenameListener: (AppModel, String) -> Unit, ) : RecyclerView.Adapter<AppDrawerAdapter.ViewHolder>(), Filterable { private var autoLaunch = true @@ -40,7 +42,17 @@ class AppDrawerAdapter( try { if (appFilteredList.size == 0) return val appModel = appFilteredList[holder.bindingAdapterPosition] - holder.bind(flag, appLabelGravity, myUserHandle, appModel, appClickListener, appDeleteListener, appInfoListener, appHideListener) + holder.bind( + flag, + appLabelGravity, + myUserHandle, + appModel, + appClickListener, + appDeleteListener, + appInfoListener, + appHideListener, + appRenameListener + ) } catch (e: Exception) { e.printStackTrace() } @@ -117,6 +129,7 @@ class AppDrawerAdapter( appDeleteListener: (AppModel) -> Unit, appInfoListener: (AppModel) -> Unit, appHideListener: (AppModel, Int) -> Unit, + appRenameListener: (AppModel, String) -> Unit, ) = with(binding) { appHideLayout.visibility = View.GONE @@ -133,6 +146,19 @@ class AppDrawerAdapter( } true } + appRename.setOnClickListener { + if (appModel.appPackage.isNotEmpty()) { + etAppRename.hint = appModel.appLabel + renameLayout.visibility = View.VISIBLE + appHideLayout.visibility = View.GONE + etAppRename.showKeyboard() + } + } + tvSaveRename.setOnClickListener { + val renameLabel = etAppRename.text.toString().trim() + if (renameLabel.isNotBlank() && appModel.appPackage.isNotBlank()) + appRenameListener(appModel, renameLabel) + } appInfo.setOnClickListener { appInfoListener(appModel) } appDelete.setOnClickListener { appDeleteListener(appModel) } appHideLayout.setOnClickListener { appHideLayout.visibility = View.GONE } diff --git a/app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt b/app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt index 5588e0f..3ded041 100644 --- a/app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt +++ b/app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt @@ -138,6 +138,10 @@ class AppDrawerFragment : Fragment() { viewModel.showMessageDialog(getString(R.string.hidden_apps_message)) findNavController().navigate(R.id.action_appListFragment_to_settingsFragment2) } + }, + appRenameListener = { appModel, renameLabel -> + prefs.setAppRenameLabel(appModel.appPackage, renameLabel) + viewModel.getAppList() } ) binding.recyclerView.adapter = adapter diff --git a/app/src/main/res/drawable/ic_rename.xml b/app/src/main/res/drawable/ic_rename.xml new file mode 100644 index 0000000..b07e067 --- /dev/null +++ b/app/src/main/res/drawable/ic_rename.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="?attr/primaryColor" + android:pathData="M18.41,5.8L17.2,4.59c-0.78,-0.78 -2.05,-0.78 -2.83,0l-2.68,2.68L3,15.96V20h4.04l8.74,-8.74 2.63,-2.63c0.79,-0.78 0.79,-2.05 0,-2.83zM6.21,18H5v-1.21l8.66,-8.66 1.21,1.21L6.21,18zM11,20l4,-4h6v4H11z" /> +</vector> diff --git a/app/src/main/res/layout/adapter_app_drawer.xml b/app/src/main/res/layout/adapter_app_drawer.xml index a9a9c64..f2fdc05 100644 --- a/app/src/main/res/layout/adapter_app_drawer.xml +++ b/app/src/main/res/layout/adapter_app_drawer.xml @@ -52,6 +52,18 @@ app:drawableTopCompat="@drawable/ic_delete" /> <TextView + android:id="@+id/appRename" + style="@style/TextSmall" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:drawablePadding="2dp" + android:gravity="center" + android:paddingHorizontal="12dp" + android:text="@string/rename" + android:textSize="12sp" + app:drawableTopCompat="@drawable/ic_rename" /> + + <TextView android:id="@+id/appHide" style="@style/TextSmall" android:layout_width="wrap_content" @@ -77,4 +89,43 @@ </LinearLayout> + <LinearLayout + android:id="@+id/renameLayout" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:animateLayoutChanges="true" + android:background="?attr/primaryColorInverseTrans80" + android:clickable="true" + android:focusable="true" + android:gravity="end|center_vertical" + android:orientation="horizontal" + android:visibility="gone" + tools:visibility="visible"> + + <EditText + android:id="@+id/etAppRename" + style="@style/TextLarge" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_marginStart="20dp" + android:layout_weight="1" + android:background="@null" + android:gravity="center_vertical" + android:inputType="textCapWords" + android:maxLength="30" + android:maxLines="1" + android:textColorHint="?attr/primaryColorTrans50" /> + + <TextView + android:id="@+id/tvSaveRename" + style="@style/TextSmallBold" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:gravity="center" + android:paddingHorizontal="20dp" + android:text="@string/rename" + android:textAllCaps="true" /> + + </LinearLayout> + </FrameLayout> |
