Skip to content

Commit 63bd57b

Browse files
committed
list hidden icons at the proper activity
1 parent 645dee4 commit 63bd57b

File tree

5 files changed

+136
-1
lines changed

5 files changed

+136
-1
lines changed

app/src/main/kotlin/com/simplemobiletools/launcher/activities/HiddenIconsActivity.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,38 @@ package com.simplemobiletools.launcher.activities
22

33
import android.os.Bundle
44
import com.simplemobiletools.commons.helpers.NavigationIcon
5+
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
6+
import com.simplemobiletools.commons.views.MyGridLayoutManager
57
import com.simplemobiletools.launcher.R
8+
import com.simplemobiletools.launcher.adapters.HiddenIconsAdapter
9+
import com.simplemobiletools.launcher.extensions.getColumnCount
10+
import com.simplemobiletools.launcher.extensions.hiddenIconsDB
11+
import com.simplemobiletools.launcher.models.HiddenIcon
612
import kotlinx.android.synthetic.main.activity_hidden_icons.*
713

814
class HiddenIconsActivity : SimpleActivity() {
915
override fun onCreate(savedInstanceState: Bundle?) {
1016
super.onCreate(savedInstanceState)
1117
setContentView(R.layout.activity_hidden_icons)
18+
updateIcons()
19+
20+
val layoutManager = manage_hidden_icons_list.layoutManager as MyGridLayoutManager
21+
layoutManager.spanCount = getColumnCount()
1222
}
1323

1424
override fun onResume() {
1525
super.onResume()
1626
setupToolbar(manage_hidden_icons_toolbar, NavigationIcon.Arrow)
1727
}
28+
29+
private fun updateIcons() {
30+
ensureBackgroundThread {
31+
val hiddenIcons = hiddenIconsDB.getHiddenIcons().toMutableList() as ArrayList<HiddenIcon>
32+
HiddenIconsAdapter(this, hiddenIcons) {
33+
34+
}.apply {
35+
manage_hidden_icons_list.adapter = this
36+
}
37+
}
38+
}
1839
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package com.simplemobiletools.launcher.adapters
2+
3+
import android.view.LayoutInflater
4+
import android.view.View
5+
import android.view.ViewGroup
6+
import androidx.recyclerview.widget.RecyclerView
7+
import com.bumptech.glide.Glide
8+
import com.bumptech.glide.load.engine.DiskCacheStrategy
9+
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
10+
import com.bumptech.glide.request.transition.DrawableCrossFadeFactory
11+
import com.simplemobiletools.commons.extensions.getProperTextColor
12+
import com.simplemobiletools.commons.extensions.portrait
13+
import com.simplemobiletools.commons.extensions.realScreenSize
14+
import com.simplemobiletools.commons.helpers.mydebug
15+
import com.simplemobiletools.launcher.R
16+
import com.simplemobiletools.launcher.activities.SimpleActivity
17+
import com.simplemobiletools.launcher.models.HiddenIcon
18+
import kotlinx.android.synthetic.main.item_hidden_icon.view.*
19+
20+
class HiddenIconsAdapter(
21+
val activity: SimpleActivity,
22+
var hiddenIcons: ArrayList<HiddenIcon>,
23+
val itemClick: (Any) -> Unit
24+
) : RecyclerView.Adapter<HiddenIconsAdapter.ViewHolder>() {
25+
26+
private var textColor = activity.getProperTextColor()
27+
private var iconPadding = 0
28+
29+
init {
30+
calculateIconWidth()
31+
}
32+
33+
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
34+
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_hidden_icon, parent, false)
35+
return ViewHolder(view)
36+
}
37+
38+
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
39+
holder.bindView(hiddenIcons[position])
40+
}
41+
42+
override fun getItemCount() = hiddenIcons.size
43+
44+
private fun calculateIconWidth() {
45+
val currentColumnCount = activity.resources.getInteger(
46+
if (activity.portrait) {
47+
R.integer.portrait_column_count
48+
} else {
49+
R.integer.landscape_column_count
50+
}
51+
)
52+
53+
mydebug("size ${activity.realScreenSize.x}")
54+
val iconWidth = activity.realScreenSize.x / currentColumnCount
55+
iconPadding = (iconWidth * 0.1f).toInt()
56+
}
57+
58+
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
59+
fun bindView(icon: HiddenIcon): View {
60+
itemView.apply {
61+
hidden_icon_label.text = icon.title
62+
hidden_icon_label.setTextColor(textColor)
63+
hidden_icon.setPadding(iconPadding, iconPadding, iconPadding, 0)
64+
65+
val factory = DrawableCrossFadeFactory.Builder(150).setCrossFadeEnabled(true).build()
66+
67+
Glide.with(activity)
68+
.load(icon.drawable)
69+
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
70+
.transition(DrawableTransitionOptions.withCrossFade(factory))
71+
.into(hidden_icon)
72+
73+
setOnClickListener {
74+
itemClick(icon)
75+
}
76+
}
77+
78+
return itemView
79+
}
80+
}
81+
}

app/src/main/kotlin/com/simplemobiletools/launcher/interfaces/AppLaunchersDao.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,7 @@ interface AppLaunchersDao {
1616

1717
@Query("DELETE FROM apps WHERE package_name = :packageName")
1818
fun deleteApp(packageName: String)
19+
20+
@Query("DELETE FROM apps WHERE id = :id")
21+
fun deleteById(id: Long)
1922
}

app/src/main/res/layout/activity_hidden_icons.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
android:layout_height="match_parent"
3333
android:clipToPadding="false"
3434
android:scrollbars="vertical"
35-
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
35+
app:layoutManager="com.simplemobiletools.commons.views.MyGridLayoutManager" />
3636

3737
<com.simplemobiletools.commons.views.MyTextView
3838
android:id="@+id/manage_hidden_icons_placeholder"
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:id="@+id/hidden_icon_holder"
4+
android:layout_width="wrap_content"
5+
android:layout_height="wrap_content"
6+
android:background="?attr/selectableItemBackground"
7+
android:clickable="true"
8+
android:focusable="true"
9+
android:paddingStart="@dimen/small_margin"
10+
android:paddingTop="@dimen/medium_margin"
11+
android:paddingEnd="@dimen/small_margin"
12+
android:paddingBottom="@dimen/small_margin">
13+
14+
<com.simplemobiletools.commons.views.MySquareImageView
15+
android:id="@+id/hidden_icon"
16+
android:layout_width="match_parent"
17+
android:layout_height="@dimen/launcher_icon_size"
18+
android:layout_gravity="center_horizontal|bottom" />
19+
20+
<TextView
21+
android:id="@+id/hidden_icon_label"
22+
android:layout_width="match_parent"
23+
android:layout_height="wrap_content"
24+
android:layout_below="@+id/hidden_icon"
25+
android:ellipsize="end"
26+
android:gravity="center_horizontal|top"
27+
android:maxLines="2"
28+
android:textSize="@dimen/smaller_text_size" />
29+
30+
</RelativeLayout>

0 commit comments

Comments
 (0)