diff --git a/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt b/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt index 97a312a..59deb3e 100644 --- a/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt @@ -7,13 +7,19 @@ import android.view.View import android.view.WindowManager import android.widget.Toast import androidx.appcompat.app.AppCompatActivity -import androidx.recyclerview.widget.LinearLayoutManager -import com.finnmglas.launcher.choose.AppsRecyclerAdapter +import androidx.viewpager.widget.ViewPager +import com.finnmglas.launcher.choose.ChooseSectionsPagerAdapter import com.finnmglas.launcher.extern.* +import com.google.android.material.tabs.TabLayout import kotlinx.android.synthetic.main.activity_choose.* var intendedChoosePause = false // know when to close +// TODO: Better solution for this (used in choose-fragments) +var action = "view" +var forApp = "" + + class ChooseActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -42,24 +48,27 @@ class ChooseActivity : AppCompatActivity() { // get info about which action this activity is open for val bundle = intent.extras - val action = bundle!!.getString("action") // why choose an app - val forApp = bundle.getString("forApp") // which app we choose + if (bundle != null) { + action = bundle.getString("action")!! // why choose an app + if (action != "view") + forApp = bundle.getString("forApp")!! // which app we choose + } + + // Hide tabs for the "view" action + if (action == "view") { + activity_choose_tabs.visibility = View.GONE + } when (action) { "view" -> activity_choose_heading.text = getString(R.string.choose_title_view) "pick" -> activity_choose_heading.text = getString(R.string.choose_title) } - // set up the list / recycler - viewManager = LinearLayoutManager(this) - viewAdapter = AppsRecyclerAdapter( this, action, forApp) - - /*activity_choose_apps_recycler_view.apply { - // improve performance (since content changes don't change the layout size) - setHasFixedSize(true) - layoutManager = viewManager - adapter = viewAdapter - }*/ + val sectionsPagerAdapter = ChooseSectionsPagerAdapter(this, supportFragmentManager) + val viewPager: ViewPager = findViewById(R.id.activity_choose_view_pager) + viewPager.adapter = sectionsPagerAdapter + val tabs: TabLayout = findViewById(R.id.activity_choose_tabs) + tabs.setupWithViewPager(viewPager) } override fun onPause() { diff --git a/app/src/main/java/com/finnmglas/launcher/SettingsActivity.kt b/app/src/main/java/com/finnmglas/launcher/SettingsActivity.kt index eca175f..4907750 100644 --- a/app/src/main/java/com/finnmglas/launcher/SettingsActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/SettingsActivity.kt @@ -10,7 +10,7 @@ import android.view.WindowManager import androidx.appcompat.app.AppCompatActivity import androidx.viewpager.widget.ViewPager import com.finnmglas.launcher.extern.* -import com.finnmglas.launcher.settings.SectionsPagerAdapter +import com.finnmglas.launcher.settings.SettingsSectionsPagerAdapter import com.google.android.material.tabs.TabLayout import kotlinx.android.synthetic.main.activity_settings.* @@ -36,7 +36,7 @@ class SettingsActivity : AppCompatActivity() { window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) - val sectionsPagerAdapter = SectionsPagerAdapter(this, supportFragmentManager) + val sectionsPagerAdapter = SettingsSectionsPagerAdapter(this, supportFragmentManager) val viewPager: ViewPager = findViewById(R.id.activity_settings_view_pager) viewPager.adapter = sectionsPagerAdapter val tabs: TabLayout = findViewById(R.id.activity_settings_tabs) diff --git a/app/src/main/java/com/finnmglas/launcher/choose/ChooseFragmentApps.kt b/app/src/main/java/com/finnmglas/launcher/choose/ChooseFragmentApps.kt new file mode 100644 index 0000000..b2ff40d --- /dev/null +++ b/app/src/main/java/com/finnmglas/launcher/choose/ChooseFragmentApps.kt @@ -0,0 +1,49 @@ +package com.finnmglas.launcher.choose + +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 androidx.recyclerview.widget.RecyclerView +import com.finnmglas.launcher.R +import com.finnmglas.launcher.action +import com.finnmglas.launcher.extern.* +import com.finnmglas.launcher.forApp +import kotlinx.android.synthetic.main.fragment_choose_apps.* + + +/** The 'Apps' Tab associated Fragment in the Chooser */ + +class ChooseFragmentApps : Fragment() { + + /** Lifecycle functions */ + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.fragment_choose_apps, container, false) + } + + override fun onStart() { + super.onStart() + + if (getSavedTheme(context!!) == "custom") { + fragment_choose_apps_container.setBackgroundColor(dominantColor) + } + + // set up the list / recycler + val viewManager = LinearLayoutManager(context) + val viewAdapter = AppsRecyclerAdapter( activity!!, action, forApp) + + fragment_choose_apps_recycler_view.apply { + // improve performance (since content changes don't change the layout size) + setHasFixedSize(true) + layoutManager = viewManager + adapter = viewAdapter + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/finnmglas/launcher/choose/ChooseFragmentOther.kt b/app/src/main/java/com/finnmglas/launcher/choose/ChooseFragmentOther.kt new file mode 100644 index 0000000..62c2f43 --- /dev/null +++ b/app/src/main/java/com/finnmglas/launcher/choose/ChooseFragmentOther.kt @@ -0,0 +1,33 @@ +package com.finnmglas.launcher.choose + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.finnmglas.launcher.R +import com.finnmglas.launcher.extern.dominantColor +import com.finnmglas.launcher.extern.getSavedTheme +import kotlinx.android.synthetic.main.fragment_choose_other.* + +/** The 'Other' Tab associated Fragment in the Chooser */ + +class ChooseFragmentOther : Fragment() { + + /** Lifecycle functions */ + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.fragment_choose_other, container, false) + } + + override fun onStart() { + if (getSavedTheme(context!!) == "custom") { + fragment_choose_other_container.setBackgroundColor(dominantColor) + } + + super.onStart() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/finnmglas/launcher/choose/ChooseSectionsPagerAdapter.kt b/app/src/main/java/com/finnmglas/launcher/choose/ChooseSectionsPagerAdapter.kt new file mode 100644 index 0000000..5e021bf --- /dev/null +++ b/app/src/main/java/com/finnmglas/launcher/choose/ChooseSectionsPagerAdapter.kt @@ -0,0 +1,36 @@ +package com.finnmglas.launcher.choose + +import android.content.Context +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter +import com.finnmglas.launcher.* + +private val TAB_TITLES = arrayOf( + R.string.choose_tab_app, + R.string.choose_tab_other +) + +/** Returns the fragment corresponding to the selected tab.*/ +class ChooseSectionsPagerAdapter(private val context: Context, fm: FragmentManager) + : FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { + + override fun getItem(position: Int): Fragment { + return when (position){ + 0 -> ChooseFragmentApps() + 1 -> ChooseFragmentOther() + else -> Fragment() + } + } + + override fun getPageTitle(position: Int): CharSequence? { + return context.resources.getString(TAB_TITLES[position]) + } + + override fun getCount(): Int { + return when (action) { + "view" -> 1 + else -> 2 + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/finnmglas/launcher/settings/SettingsSectionsPagerAdapter.kt b/app/src/main/java/com/finnmglas/launcher/settings/SettingsSectionsPagerAdapter.kt index 2b304ef..21f5cc5 100644 --- a/app/src/main/java/com/finnmglas/launcher/settings/SettingsSectionsPagerAdapter.kt +++ b/app/src/main/java/com/finnmglas/launcher/settings/SettingsSectionsPagerAdapter.kt @@ -13,7 +13,7 @@ private val TAB_TITLES = arrayOf( ) /** Returns the fragment corresponding to the selected tab.*/ -class SectionsPagerAdapter(private val context: Context, fm: FragmentManager) +class SettingsSectionsPagerAdapter(private val context: Context, fm: FragmentManager) : FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { override fun getItem(position: Int): Fragment { diff --git a/app/src/main/res/layout/activity_choose.xml b/app/src/main/res/layout/activity_choose.xml index cf56657..6ce958d 100644 --- a/app/src/main/res/layout/activity_choose.xml +++ b/app/src/main/res/layout/activity_choose.xml @@ -74,18 +74,4 @@ app:layout_constraintTop_toBottomOf="@id/activity_choose_app_bar" custom:layout_behavior="@string/appbar_scrolling_view_behavior" /> - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_choose_apps.xml b/app/src/main/res/layout/fragment_choose_apps.xml new file mode 100644 index 0000000..d5248bf --- /dev/null +++ b/app/src/main/res/layout/fragment_choose_apps.xml @@ -0,0 +1,33 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_choose_other.xml b/app/src/main/res/layout/fragment_choose_other.xml new file mode 100644 index 0000000..56f5609 --- /dev/null +++ b/app/src/main/res/layout/fragment_choose_other.xml @@ -0,0 +1,19 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9e65424..3996666 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -61,6 +61,9 @@ Choose App All Apps + Apps + Other + Back to Settings Removed the selected application