mirror of
https://github.com/SimpleMobileTools/Simple-Launcher.git
synced 2025-03-11 08:40:13 +01:00
add app icons at the widget list too
This commit is contained in:
parent
d8129e2e55
commit
92d0d8a958
@ -30,10 +30,12 @@ class WidgetsAdapter(
|
|||||||
override fun getItemCount() = appWidgets.size
|
override fun getItemCount() = appWidgets.size
|
||||||
|
|
||||||
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||||
fun bindView(widget: AppWidget): View {
|
fun bindView(appWidget: AppWidget): View {
|
||||||
itemView.apply {
|
itemView.apply {
|
||||||
widget_app_title.text = widget.appTitle
|
widget_app_title.text = appWidget.appTitle
|
||||||
widget_app_title.setTextColor(textColor)
|
widget_app_title.setTextColor(textColor)
|
||||||
|
|
||||||
|
widget_app_icon.setImageDrawable(appWidget.appIcon)
|
||||||
}
|
}
|
||||||
|
|
||||||
return itemView
|
return itemView
|
||||||
|
@ -2,6 +2,8 @@ package com.simplemobiletools.launcher.fragments
|
|||||||
|
|
||||||
import android.appwidget.AppWidgetManager
|
import android.appwidget.AppWidgetManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.pm.LauncherApps
|
||||||
|
import android.os.Process
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.Surface
|
import android.view.Surface
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
@ -11,6 +13,7 @@ import com.simplemobiletools.commons.helpers.isRPlus
|
|||||||
import com.simplemobiletools.launcher.R
|
import com.simplemobiletools.launcher.R
|
||||||
import com.simplemobiletools.launcher.activities.MainActivity
|
import com.simplemobiletools.launcher.activities.MainActivity
|
||||||
import com.simplemobiletools.launcher.adapters.WidgetsAdapter
|
import com.simplemobiletools.launcher.adapters.WidgetsAdapter
|
||||||
|
import com.simplemobiletools.launcher.models.AppMetadata
|
||||||
import com.simplemobiletools.launcher.models.AppWidget
|
import com.simplemobiletools.launcher.models.AppWidget
|
||||||
import kotlinx.android.synthetic.main.widgets_fragment.view.*
|
import kotlinx.android.synthetic.main.widgets_fragment.view.*
|
||||||
|
|
||||||
@ -37,11 +40,13 @@ class WidgetsFragment(context: Context, attributeSet: AttributeSet) : MyFragment
|
|||||||
val infoList = manager.installedProviders
|
val infoList = manager.installedProviders
|
||||||
for (info in infoList) {
|
for (info in infoList) {
|
||||||
val appPackageName = info.provider.packageName
|
val appPackageName = info.provider.packageName
|
||||||
val appTitle = getAppNameFromPackage(appPackageName) ?: continue
|
val appMetadata = getAppMetadataFromPackage(appPackageName) ?: continue
|
||||||
|
val appTitle = appMetadata.appTitle
|
||||||
|
val appIcon = appMetadata.appIcon
|
||||||
val widgetTitle = info.loadLabel(activity?.packageManager)
|
val widgetTitle = info.loadLabel(activity?.packageManager)
|
||||||
val width = info.minWidth
|
val width = info.minWidth
|
||||||
val height = info.minHeight
|
val height = info.minHeight
|
||||||
val widget = AppWidget(appPackageName, appTitle, widgetTitle, width, height)
|
val widget = AppWidget(appPackageName, appTitle, appIcon, widgetTitle, width, height)
|
||||||
appWidgets.add(widget)
|
appWidgets.add(widget)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,11 +100,24 @@ class WidgetsFragment(context: Context, attributeSet: AttributeSet) : MyFragment
|
|||||||
widgets_fastscroller.setPadding(leftListPadding, 0, rightListPadding, 0)
|
widgets_fastscroller.setPadding(leftListPadding, 0, rightListPadding, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getAppNameFromPackage(packageName: String): String? {
|
private fun getAppMetadataFromPackage(packageName: String): AppMetadata? {
|
||||||
try {
|
try {
|
||||||
val appInfo = activity!!.packageManager.getApplicationInfo(packageName, 0)
|
val appInfo = activity!!.packageManager.getApplicationInfo(packageName, 0)
|
||||||
return activity!!.packageManager.getApplicationLabel(appInfo).toString()
|
val appTitle = activity!!.packageManager.getApplicationLabel(appInfo).toString()
|
||||||
|
|
||||||
|
val launcher = context.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||||
|
val activityList = launcher.getActivityList(packageName, Process.myUserHandle())
|
||||||
|
var appIcon = activityList.firstOrNull()?.getBadgedIcon(0)
|
||||||
|
|
||||||
|
if (appIcon == null) {
|
||||||
|
appIcon = context.packageManager.getApplicationIcon(packageName)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (appTitle.isNotEmpty()) {
|
||||||
|
return AppMetadata(appTitle, appIcon)
|
||||||
|
}
|
||||||
} catch (ignored: Exception) {
|
} catch (ignored: Exception) {
|
||||||
|
} catch (error: Error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return null
|
return null
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
package com.simplemobiletools.launcher.models
|
||||||
|
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
|
|
||||||
|
data class AppMetadata(var appTitle: String, var appIcon: Drawable)
|
@ -1,3 +1,5 @@
|
|||||||
package com.simplemobiletools.launcher.models
|
package com.simplemobiletools.launcher.models
|
||||||
|
|
||||||
data class AppWidget(var appPackageName: String, var appTitle: String, val widgetTitle: String, var width: Int, val height: Int)
|
import android.graphics.drawable.Drawable
|
||||||
|
|
||||||
|
data class AppWidget(var appPackageName: String, var appTitle: String, val appIcon: Drawable, val widgetTitle: String, var width: Int, val height: Int)
|
||||||
|
@ -3,15 +3,30 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/widget_app_holder"
|
android:id="@+id/widget_app_holder"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="@dimen/medium_margin">
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MySquareImageView
|
||||||
|
android:id="@+id/widget_app_icon"
|
||||||
|
android:layout_width="@dimen/launcher_icon_size"
|
||||||
|
android:layout_height="@dimen/launcher_icon_size"
|
||||||
|
android:layout_gravity="center_horizontal|bottom"
|
||||||
|
android:padding="@dimen/small_margin"
|
||||||
|
tools:src="@mipmap/ic_launcher" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/widget_app_title"
|
android:id="@+id/widget_app_title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
|
android:layout_alignTop="@+id/widget_app_icon"
|
||||||
|
android:layout_alignBottom="@+id/widget_app_icon"
|
||||||
|
android:layout_toEndOf="@+id/widget_app_icon"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
|
android:gravity="center_vertical"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:padding="@dimen/normal_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:textSize="@dimen/bigger_text_size"
|
android:textSize="@dimen/bigger_text_size"
|
||||||
tools:text="@string/app_name" />
|
tools:text="@string/app_name" />
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user