diff --git a/app/src/main/kotlin/com/simplemobiletools/applauncher/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/applauncher/activities/MainActivity.kt index 6a4ae54..1384b7c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/applauncher/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/applauncher/activities/MainActivity.kt @@ -37,18 +37,14 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) appLaunched(BuildConfig.APPLICATION_ID) + setupEmptyView() setupLaunchers() checkWhatsNewDialog() storeStateVariables() setupGridLayoutManager() fab.setOnClickListener { - if (allLaunchers != null) { - val shownLaunchers = (launchers_grid.adapter as LaunchersAdapter).launchers - AddLaunchersDialog(this, allLaunchers!!, shownLaunchers) { - setupLaunchers() - } - } + fabClicked() } } @@ -58,7 +54,8 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { getGridAdapter()?.updateTextColor(getProperTextColor()) } - if (mStoredPrimaryColor != getProperPrimaryColor()) { + val properPrimaryColor = getProperPrimaryColor() + if (mStoredPrimaryColor != properPrimaryColor) { getGridAdapter()?.apply { updatePrimaryColor() notifyDataSetChanged() @@ -66,7 +63,8 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { } updateTextColors(coordinator_layout) - launchers_fastscroller.updateColors(getProperPrimaryColor()) + add_icons_placeholder.setTextColor(properPrimaryColor) + launchers_fastscroller.updateColors(properPrimaryColor) } override fun onPause() { @@ -126,13 +124,19 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { checkInvalidApps() initZoomListener() setupAdapter(displayedLaunchers) + maybeShowEmptyView() } private fun setupAdapter(launchers: ArrayList) { AppLauncher.sorting = config.sorting launchers.sort() - LaunchersAdapter(this, launchers, this, launchers_grid) { + LaunchersAdapter( + activity = this, + launchers = launchers, + listener = this, + recyclerView = launchers_grid, + ) { hideKeyboard() val launchIntent = packageManager.getLaunchIntentForPackage((it as AppLauncher).packageName) if (launchIntent != null) { @@ -256,4 +260,33 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { checkWhatsNew(this, BuildConfig.VERSION_CODE) } } + + private fun fabClicked() { + if (allLaunchers != null) { + val shownLaunchers = (launchers_grid.adapter as LaunchersAdapter).launchers + AddLaunchersDialog(this, allLaunchers!!, shownLaunchers) { + setupLaunchers() + } + } + } + + private fun setupEmptyView() { + val properPrimaryColor = getProperPrimaryColor() + add_icons_placeholder.underlineText() + add_icons_placeholder.setTextColor(properPrimaryColor) + add_icons_placeholder.setOnClickListener { + fabClicked() + } + } + + private fun maybeShowEmptyView() { + val emptyViews = arrayOf(add_icons_placeholder, no_items_placeholder) + if (displayedLaunchers.isEmpty()) { + launchers_fastscroller.fadeOut() + emptyViews.forEach { it.fadeIn() } + } else { + emptyViews.forEach { it.fadeOut() } + launchers_fastscroller.fadeIn() + } + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/applauncher/adapters/LaunchersAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/applauncher/adapters/LaunchersAdapter.kt index 5fa2aa2..55d6c6e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/applauncher/adapters/LaunchersAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/applauncher/adapters/LaunchersAdapter.kt @@ -27,8 +27,11 @@ import kotlinx.android.synthetic.main.item_launcher_label.view.* import java.util.* class LaunchersAdapter( - activity: SimpleActivity, val launchers: ArrayList, val listener: RefreshRecyclerViewListener?, - recyclerView: MyRecyclerView, itemClick: (Any) -> Unit + activity: SimpleActivity, + val launchers: ArrayList, + val listener: RefreshRecyclerViewListener, + recyclerView: MyRecyclerView, + itemClick: (Any) -> Unit ) : MyRecyclerViewAdapter(activity, recyclerView, itemClick), ItemTouchHelperContract, RecyclerViewFastScroller.OnPopupTextUpdate { private var isChangingOrder = false @@ -125,7 +128,7 @@ class LaunchersAdapter( private fun showEditDialog() { EditDialog(activity, getItemWithKey(selectedKeys.first())!!) { finishActMode() - listener?.refreshItems() + listener.refreshItems() } } @@ -171,10 +174,13 @@ class LaunchersAdapter( } } - launchers.removeAll(removeLaunchers) + launchers.removeAll(removeLaunchers.toSet()) activity.dbHelper.deleteLaunchers(removeIds) positions.sortDescending() removeSelectedItems(positions) + if (launchers.isEmpty()) { + listener?.refreshItems() + } } private fun setupView(view: View, launcher: AppLauncher, holder: ViewHolder) { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 6aab43a..7ed1dbc 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,6 +1,7 @@ @@ -10,6 +11,36 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> + + + +