From 909a3d5725e12a4a9b2d2875f4901eefb0a69ca6 Mon Sep 17 00:00:00 2001 From: Finn M Glas Date: Tue, 23 Jun 2020 16:13:06 +0200 Subject: [PATCH] Fill `Setup` tab (4) of the tutorial From there, apps can be chosen for actions (like in settings) Closes #51 --- .../launcher/settings/SettingsActivity.kt | 32 ++++++------- .../actions/SettingsFragmentActions.kt | 12 ----- ....kt => SettingsFragmentActionsRecycler.kt} | 46 +++++++++++++++++-- .../launcher/tutorial/TutorialActivity.kt | 28 +++++++++++ .../tutorial/tab/TutorialFragmentSetup.kt | 3 -- app/src/main/res/layout/settings_actions.xml | 9 ++-- .../res/layout/settings_actions_recycler.xml | 18 ++++++++ app/src/main/res/layout/tutorial_setup.xml | 34 ++++++++++++++ 8 files changed, 142 insertions(+), 40 deletions(-) rename app/src/main/java/com/finnmglas/launcher/settings/actions/{ActionsRecyclerAdapter.kt => SettingsFragmentActionsRecycler.kt} (81%) create mode 100644 app/src/main/res/layout/settings_actions_recycler.xml diff --git a/app/src/main/java/com/finnmglas/launcher/settings/SettingsActivity.kt b/app/src/main/java/com/finnmglas/launcher/settings/SettingsActivity.kt index de88bc9..da346fa 100644 --- a/app/src/main/java/com/finnmglas/launcher/settings/SettingsActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/settings/SettingsActivity.kt @@ -59,22 +59,6 @@ class SettingsActivity: AppCompatActivity(), UIObject { if (!intendedSettingsPause) finish() } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - when (requestCode) { - REQUEST_CHOOSE_APP -> { - val value = data?.getStringExtra("value") - val forApp = data?.getStringExtra("forApp") ?: return - - launcherPreferences.edit() - .putString("action_$forApp", value.toString()) - .apply() - - loadSettings() - } - else -> super.onActivityResult(requestCode, resultCode, data) - } - } - override fun applyTheme() { settings_container.setBackgroundColor(dominantColor) settings_appbar.setBackgroundColor(dominantColor) @@ -93,6 +77,22 @@ class SettingsActivity: AppCompatActivity(), UIObject { startActivity(Intent(Settings.ACTION_SETTINGS)) } } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + when (requestCode) { + REQUEST_CHOOSE_APP -> { + val value = data?.getStringExtra("value") + val forApp = data?.getStringExtra("forApp") ?: return + + launcherPreferences.edit() + .putString("action_$forApp", value.toString()) + .apply() + + loadSettings() + } + else -> super.onActivityResult(requestCode, resultCode, data) + } + } } private val TAB_TITLES = arrayOf( diff --git a/app/src/main/java/com/finnmglas/launcher/settings/actions/SettingsFragmentActions.kt b/app/src/main/java/com/finnmglas/launcher/settings/actions/SettingsFragmentActions.kt index c4a4e34..27c5c5b 100644 --- a/app/src/main/java/com/finnmglas/launcher/settings/actions/SettingsFragmentActions.kt +++ b/app/src/main/java/com/finnmglas/launcher/settings/actions/SettingsFragmentActions.kt @@ -9,7 +9,6 @@ import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.fragment.app.Fragment -import androidx.recyclerview.widget.LinearLayoutManager import com.finnmglas.launcher.* import com.finnmglas.launcher.list.ListActivity import com.finnmglas.launcher.settings.intendedSettingsPause @@ -36,17 +35,6 @@ class SettingsFragmentActions : Fragment(), UIObject { override fun onStart() { super.onStart() super.onStart() - - // set up the list / recycler - val actionViewManager = LinearLayoutManager(context) - val actionViewAdapter = ActionsRecyclerAdapter( activity!! ) - - settings_actions_rview.apply { - // improve performance (since content changes don't change the layout size) - setHasFixedSize(true) - layoutManager = actionViewManager - adapter = actionViewAdapter - } } override fun applyTheme() { diff --git a/app/src/main/java/com/finnmglas/launcher/settings/actions/ActionsRecyclerAdapter.kt b/app/src/main/java/com/finnmglas/launcher/settings/actions/SettingsFragmentActionsRecycler.kt similarity index 81% rename from app/src/main/java/com/finnmglas/launcher/settings/actions/ActionsRecyclerAdapter.kt rename to app/src/main/java/com/finnmglas/launcher/settings/actions/SettingsFragmentActionsRecycler.kt index 136075c..de24413 100644 --- a/app/src/main/java/com/finnmglas/launcher/settings/actions/ActionsRecyclerAdapter.kt +++ b/app/src/main/java/com/finnmglas/launcher/settings/actions/SettingsFragmentActionsRecycler.kt @@ -1,20 +1,56 @@ package com.finnmglas.launcher.settings.actions -import android.app.Activity -import android.content.Intent +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.LinearLayoutManager +import com.finnmglas.launcher.* +import com.finnmglas.launcher.list.ListActivity +import kotlinx.android.synthetic.main.settings_actions_recycler.* +import android.app.Activity +import android.content.Intent import android.widget.Button import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView -import com.finnmglas.launcher.* -import com.finnmglas.launcher.list.ListActivity import com.finnmglas.launcher.libraries.FontAwesome import com.finnmglas.launcher.settings.intendedSettingsPause import java.lang.Exception +/** + * The [SettingsFragmentActionsRecycler] is a fragment containing the [ActionsRecyclerAdapter], + * which displays all selected actions / apps. + * + * It is used in the Tutorial and in Settings + */ +class SettingsFragmentActionsRecycler : Fragment(), UIObject { + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.settings_actions_recycler, container, false) + } + + override fun onStart() { + super.onStart() + + // set up the list / recycler + val actionViewManager = LinearLayoutManager(context) + val actionViewAdapter = ActionsRecyclerAdapter( activity!! ) + + settings_actions_rview.apply { + // improve performance (since content changes don't change the layout size) + setHasFixedSize(true) + layoutManager = actionViewManager + adapter = actionViewAdapter + } + + super.onStart() + } +} class ActionsRecyclerAdapter(val activity: Activity): RecyclerView.Adapter() { @@ -47,6 +83,8 @@ class ActionsRecyclerAdapter(val activity: Activity): .putString("action_$actionName", "") // clear it .apply() + loadSettings() // apply new settings to the app + viewHolder.fontAwesome.visibility = View.INVISIBLE viewHolder.img.visibility = View.INVISIBLE viewHolder.removeAction.visibility = View.GONE diff --git a/app/src/main/java/com/finnmglas/launcher/tutorial/TutorialActivity.kt b/app/src/main/java/com/finnmglas/launcher/tutorial/TutorialActivity.kt index ac44570..10fbc84 100644 --- a/app/src/main/java/com/finnmglas/launcher/tutorial/TutorialActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/tutorial/TutorialActivity.kt @@ -1,6 +1,7 @@ package com.finnmglas.launcher.tutorial import android.content.Context +import android.content.Intent import android.os.Bundle import android.view.* import androidx.appcompat.app.AppCompatActivity @@ -31,6 +32,9 @@ class TutorialActivity: AppCompatActivity(), UIObject { // Check if the app was started before if (launcherPreferences.getBoolean("startedBefore", false)) tutorial_appbar.visibility = View.VISIBLE + else resetSettings(this) + + loadSettings() // set up tabs and swiping in settings val sectionsPagerAdapter = TutorialSectionsPagerAdapter(this, supportFragmentManager) @@ -54,6 +58,30 @@ class TutorialActivity: AppCompatActivity(), UIObject { override fun setOnClicks() { tutorial_close.setOnClickListener() { finish() } } + + // same as in SettingsActivity; TODO: Use same function + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + when (requestCode) { + REQUEST_CHOOSE_APP -> { + val value = data?.getStringExtra("value") + val forApp = data?.getStringExtra("forApp") ?: return + + launcherPreferences.edit() + .putString("action_$forApp", value.toString()) + .apply() + + loadSettings() + } + else -> super.onActivityResult(requestCode, resultCode, data) + } + } + + // Prevent going back, allow if viewed again later + override fun onBackPressed() { + if (launcherPreferences.getBoolean("startedBefore", false)) + super.onBackPressed() + } + } /** diff --git a/app/src/main/java/com/finnmglas/launcher/tutorial/tab/TutorialFragmentSetup.kt b/app/src/main/java/com/finnmglas/launcher/tutorial/tab/TutorialFragmentSetup.kt index e5615ae..1c21263 100644 --- a/app/src/main/java/com/finnmglas/launcher/tutorial/tab/TutorialFragmentSetup.kt +++ b/app/src/main/java/com/finnmglas/launcher/tutorial/tab/TutorialFragmentSetup.kt @@ -23,9 +23,6 @@ class TutorialFragmentSetup(): Fragment(), UIObject { } override fun onStart(){ - var defaultApps = mutableListOf() - defaultApps = resetSettings(context!!) // UP, DOWN, RIGHT, LEFT, VOLUME_UP, VOLUME_DOWN - super.onStart() super.onStart() } diff --git a/app/src/main/res/layout/settings_actions.xml b/app/src/main/res/layout/settings_actions.xml index f92d564..02ec01d 100644 --- a/app/src/main/res/layout/settings_actions.xml +++ b/app/src/main/res/layout/settings_actions.xml @@ -9,17 +9,16 @@ android:paddingTop="16sp" android:paddingRight="32sp"> - - - + app:layout_constraintTop_toTopOf="parent"/> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/tutorial_setup.xml b/app/src/main/res/layout/tutorial_setup.xml index 9ff2256..144a5b1 100644 --- a/app/src/main/res/layout/tutorial_setup.xml +++ b/app/src/main/res/layout/tutorial_setup.xml @@ -22,4 +22,38 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + + + + \ No newline at end of file