diff --git a/app/src/main/java/com/finnmglas/launcher/Functions.kt b/app/src/main/java/com/finnmglas/launcher/Functions.kt index 278f76b..640f59c 100644 --- a/app/src/main/java/com/finnmglas/launcher/Functions.kt +++ b/app/src/main/java/com/finnmglas/launcher/Functions.kt @@ -12,6 +12,7 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.provider.Settings +import android.util.DisplayMetrics import android.view.View import android.view.animation.* import android.widget.Button @@ -27,6 +28,8 @@ import kotlin.math.roundToInt lateinit var launcherPreferences: SharedPreferences /** Variables containing settings */ +val displayMetrics = DisplayMetrics() + var upApp = "" var downApp = "" var rightApp = "" diff --git a/app/src/main/java/com/finnmglas/launcher/HomeActivity.kt b/app/src/main/java/com/finnmglas/launcher/HomeActivity.kt index fb69aac..0a9b048 100644 --- a/app/src/main/java/com/finnmglas/launcher/HomeActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/HomeActivity.kt @@ -6,11 +6,9 @@ import android.net.Uri import android.os.AsyncTask import android.os.Bundle import android.provider.MediaStore -import android.util.DisplayMetrics import android.view.* import androidx.appcompat.app.AppCompatActivity import androidx.core.view.GestureDetectorCompat -import androidx.recyclerview.widget.RecyclerView import com.finnmglas.launcher.list.apps.AppsRecyclerAdapter import com.finnmglas.launcher.tutorial.TutorialActivity import kotlinx.android.synthetic.main.home.* @@ -19,20 +17,16 @@ import java.util.* import kotlin.concurrent.fixedRateTimer import kotlin.math.abs -// used for the apps drawer / menu (ChooseActivity) -lateinit var viewAdapter: RecyclerView.Adapter<*> +// used in `ListFragmentApps` +lateinit var appListViewAdapter: AppsRecyclerAdapter class HomeActivity: UIObject, AppCompatActivity(), GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener { private var currentTheme = "" // keep track of theme changes - /** Variables for this activity */ private lateinit var mDetector: GestureDetectorCompat - // get device dimensions - private val displayMetrics = DisplayMetrics() - // timers private var clockTimer = Timer() private var tooltipTimer = Timer() @@ -43,48 +37,38 @@ class HomeActivity: UIObject, AppCompatActivity(), override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + // Initialise globals launcherPreferences = this.getSharedPreferences( getString(R.string.preference_file_key), Context.MODE_PRIVATE) - loadSettings() - currentTheme = getSavedTheme(this) + windowManager.defaultDisplay.getMetrics(displayMetrics) - // TODO: Don't use actual themes, rather create them on the fly - setTheme( - when (getSavedTheme(this)) { - "dark" -> R.style.darkTheme - "finn" -> R.style.finnmglasTheme - else -> R.style.customTheme - } - ) + loadSettings() + + // Preload list of apps (speed up loading time) + AsyncTask.execute { + appListViewAdapter = AppsRecyclerAdapter(this) + } + + // First time opening the app: show Tutorial + if (!launcherPreferences.getBoolean("startedBefore", false)) + startActivity(Intent(this, TutorialActivity::class.java)) + + // Initialise layout setContentView(R.layout.home) - // Load apps list first - speed up settings that way - AsyncTask.execute { viewAdapter = - AppsRecyclerAdapter(this, "", "") - } - - // First Startup - if (!launcherPreferences.getBoolean("startedBefore", false)){ - startActivity(Intent(this, TutorialActivity::class.java)) - tooltipTimer.cancel() - } + currentTheme = getSavedTheme(this) } override fun onStart(){ super.onStart() - super.onStart() mDetector = GestureDetectorCompat(this, this) mDetector.setOnDoubleTapListener(this) - windowManager.defaultDisplay.getMetrics(displayMetrics) - // for if the settings changed loadSettings() - - setTheme() - setOnClicks() + super.onStart() } override fun onResume() { @@ -124,14 +108,10 @@ class HomeActivity: UIObject, AppCompatActivity(), override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { if (keyCode == KeyEvent.KEYCODE_BACK) { if (settingsIconShown) hideSettingsIcon() } - else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { - launch(volumeUpApp, this) - overridePendingTransition(0, 0) - } - else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { - launch(volumeDownApp, this) - overridePendingTransition(0, 0) - } + else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) + launch(volumeUpApp, this,0, 0) + else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) + launch(volumeDownApp, this,0, 0) return true } diff --git a/app/src/main/java/com/finnmglas/launcher/UIObject.kt b/app/src/main/java/com/finnmglas/launcher/UIObject.kt index 2ed809a..265ea2a 100644 --- a/app/src/main/java/com/finnmglas/launcher/UIObject.kt +++ b/app/src/main/java/com/finnmglas/launcher/UIObject.kt @@ -10,9 +10,14 @@ interface UIObject { window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } + + setTheme() + setOnClicks() + configure() } - fun setTheme() - fun setOnClicks() - fun configure() {} + // Don't use actual themes, rather create them on the fly for faster theme-switching + fun setTheme() { } // colors + fun setOnClicks() { } // onClicks + fun configure() { } // layoutElements } \ No newline at end of file diff --git a/app/src/main/java/com/finnmglas/launcher/list/ListActivity.kt b/app/src/main/java/com/finnmglas/launcher/list/ListActivity.kt index 251b3f2..87e7028 100644 --- a/app/src/main/java/com/finnmglas/launcher/list/ListActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/list/ListActivity.kt @@ -30,19 +30,8 @@ class ListActivity : AppCompatActivity(), UIObject { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - // TODO: Don't use actual themes, rather create them on the fly - setTheme( - when (getSavedTheme(this)) { - "dark" -> R.style.darkTheme - "finn" -> R.style.finnmglasTheme - else -> R.style.finnmglasTheme - } - ) + // Initialise layout setContentView(R.layout.list) - - setTheme() - setOnClicks() - configure() } override fun onStart(){ diff --git a/app/src/main/java/com/finnmglas/launcher/list/apps/AppInfo.kt b/app/src/main/java/com/finnmglas/launcher/list/apps/AppInfo.kt index 3266d63..c7bdcb8 100644 --- a/app/src/main/java/com/finnmglas/launcher/list/apps/AppInfo.kt +++ b/app/src/main/java/com/finnmglas/launcher/list/apps/AppInfo.kt @@ -2,6 +2,9 @@ package com.finnmglas.launcher.list.apps import android.graphics.drawable.Drawable +/** + * Stores information used in [AppsRecyclerAdapter] rows. + */ class AppInfo { var label: CharSequence? = null var packageName: CharSequence? = null diff --git a/app/src/main/java/com/finnmglas/launcher/list/apps/AppsRecyclerAdapter.kt b/app/src/main/java/com/finnmglas/launcher/list/apps/AppsRecyclerAdapter.kt index 082c211..3800bad 100644 --- a/app/src/main/java/com/finnmglas/launcher/list/apps/AppsRecyclerAdapter.kt +++ b/app/src/main/java/com/finnmglas/launcher/list/apps/AppsRecyclerAdapter.kt @@ -16,7 +16,7 @@ import com.finnmglas.launcher.* import com.finnmglas.launcher.libraries.* import com.finnmglas.launcher.list.intendedChoosePause -class AppsRecyclerAdapter(val activity: Activity, val action: String?, val forApp: String?): +class AppsRecyclerAdapter(val activity: Activity, val action: String? = "view", val forApp: String? = ""): RecyclerView.Adapter() { private val appsList: MutableList diff --git a/app/src/main/java/com/finnmglas/launcher/list/apps/ListFragmentApps.kt b/app/src/main/java/com/finnmglas/launcher/list/apps/ListFragmentApps.kt index 6ee8f14..ad3676f 100644 --- a/app/src/main/java/com/finnmglas/launcher/list/apps/ListFragmentApps.kt +++ b/app/src/main/java/com/finnmglas/launcher/list/apps/ListFragmentApps.kt @@ -31,9 +31,6 @@ class ListFragmentApps : Fragment(), UIObject { override fun onStart() { super.onStart() super.onStart() - - setTheme() - configure() } override fun setTheme() { diff --git a/app/src/main/java/com/finnmglas/launcher/list/other/OtherInfo.kt b/app/src/main/java/com/finnmglas/launcher/list/other/OtherInfo.kt index db96a31..7397336 100644 --- a/app/src/main/java/com/finnmglas/launcher/list/other/OtherInfo.kt +++ b/app/src/main/java/com/finnmglas/launcher/list/other/OtherInfo.kt @@ -1,5 +1,8 @@ package com.finnmglas.launcher.list.other +/** + * Stores information used in [OtherRecyclerAdapter] rows. + */ class OtherInfo(label: String, data: String, icon: String) { var label: CharSequence? = label var data: CharSequence? = data 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 6da610b..e16eaf8 100644 --- a/app/src/main/java/com/finnmglas/launcher/settings/SettingsActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/settings/SettingsActivity.kt @@ -26,25 +26,15 @@ class SettingsActivity: AppCompatActivity(), UIObject { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - // TODO: Don't use actual themes, rather create them on the fly - setTheme( - when (getSavedTheme(this)) { - "dark" -> R.style.darkTheme - "finn" -> R.style.finnmglasTheme - else -> R.style.customTheme - } - ) - + // Initialise layout setContentView(R.layout.settings) - setTheme() - setOnClicks() + // set up tabs and swiping in settings val sectionsPagerAdapter = SettingsSectionsPagerAdapter(this, supportFragmentManager) val viewPager: ViewPager = findViewById(R.id.settings_viewpager) viewPager.adapter = sectionsPagerAdapter val tabs: TabLayout = findViewById(R.id.settings_tabs) tabs.setupWithViewPager(viewPager) - } override fun onStart() { diff --git a/app/src/main/java/com/finnmglas/launcher/settings/actions/ActionInfo.kt b/app/src/main/java/com/finnmglas/launcher/settings/actions/ActionInfo.kt index 7b1efcb..753abff 100644 --- a/app/src/main/java/com/finnmglas/launcher/settings/actions/ActionInfo.kt +++ b/app/src/main/java/com/finnmglas/launcher/settings/actions/ActionInfo.kt @@ -1,7 +1,10 @@ package com.finnmglas.launcher.settings.actions +/** + * Stores information used in [ActionsRecyclerAdapter] rows. + */ class ActionInfo(actionText: CharSequence, actionName: CharSequence, content: CharSequence) { - var actionName: CharSequence? = actionName - var actionText: CharSequence? = actionText - var content: CharSequence? = content + val actionName: CharSequence? = actionName + val actionText: CharSequence? = actionText + val content: CharSequence? = content } \ No newline at end of file diff --git a/app/src/main/java/com/finnmglas/launcher/settings/actions/ActionsRecyclerAdapter.kt b/app/src/main/java/com/finnmglas/launcher/settings/actions/ActionsRecyclerAdapter.kt index 26b609d..83f7b87 100644 --- a/app/src/main/java/com/finnmglas/launcher/settings/actions/ActionsRecyclerAdapter.kt +++ b/app/src/main/java/com/finnmglas/launcher/settings/actions/ActionsRecyclerAdapter.kt @@ -29,9 +29,7 @@ class ActionsRecyclerAdapter(val activity: Activity): var chooseButton: Button = itemView.findViewById(R.id.settings_actions_row_button_choose) var removeAction: FontAwesome = itemView.findViewById(R.id.settings_actions_row_remove) - override fun onClick(v: View) { - val pos = adapterPosition - } + override fun onClick(v: View) { } init { itemView.setOnClickListener(this) } } 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 850acf3..f2a27a6 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 @@ -33,9 +33,6 @@ class SettingsFragmentActions : Fragment(), UIObject { super.onStart() super.onStart() - setTheme() - setOnClicks() - // set up the list / recycler val actionViewManager = LinearLayoutManager(context) val actionViewAdapter = ActionsRecyclerAdapter( activity!! ) diff --git a/app/src/main/java/com/finnmglas/launcher/settings/meta/SettingsFragmentMeta.kt b/app/src/main/java/com/finnmglas/launcher/settings/meta/SettingsFragmentMeta.kt index abce8b1..c46f778 100644 --- a/app/src/main/java/com/finnmglas/launcher/settings/meta/SettingsFragmentMeta.kt +++ b/app/src/main/java/com/finnmglas/launcher/settings/meta/SettingsFragmentMeta.kt @@ -33,9 +33,6 @@ class SettingsFragmentMeta : Fragment(), UIObject { override fun onStart() { super.onStart() super.onStart() - - setTheme() - setOnClicks() } /** Extra functions */ diff --git a/app/src/main/java/com/finnmglas/launcher/settings/theme/SettingsFragmentTheme.kt b/app/src/main/java/com/finnmglas/launcher/settings/theme/SettingsFragmentTheme.kt index d2de8ba..b3bcc9b 100644 --- a/app/src/main/java/com/finnmglas/launcher/settings/theme/SettingsFragmentTheme.kt +++ b/app/src/main/java/com/finnmglas/launcher/settings/theme/SettingsFragmentTheme.kt @@ -33,9 +33,6 @@ class SettingsFragmentTheme : Fragment(), UIObject { override fun onStart(){ super.onStart() super.onStart() - - setTheme() - setOnClicks() } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 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 a889628..489f99c 100644 --- a/app/src/main/java/com/finnmglas/launcher/tutorial/TutorialActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/tutorial/TutorialActivity.kt @@ -9,41 +9,24 @@ import com.finnmglas.launcher.* import kotlinx.android.synthetic.main.tutorial.* -class TutorialActivity : AppCompatActivity(), UIObject{ - - /** Variables for this activity */ +class TutorialActivity : AppCompatActivity(), UIObject { private var menuNumber = 0 private var defaultApps = mutableListOf() private var isFirstTime = false - /** Activity Lifecycle functions */ - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - // TODO: Don't use actual themes, rather create them on the fly - setTheme( - when (getSavedTheme(this)) { - "dark" -> R.style.darkTheme - "finn" -> R.style.finnmglasTheme - else -> R.style.finnmglasTheme - } - ) - + // Initialise layout setContentView(R.layout.tutorial) - setTheme() - setOnClicks() - - loadMenu(this) + // Check if it is the first time starting the app isFirstTime = !launcherPreferences.getBoolean("startedBefore", false) - if (isFirstTime) defaultApps = resetSettings(this) // UP, DOWN, RIGHT, LEFT, VOLUME_UP, VOLUME_DOWN - else - tutorial_appbar.visibility = View.VISIBLE + else tutorial_appbar.visibility = View.VISIBLE } override fun onStart() { @@ -51,7 +34,6 @@ class TutorialActivity : AppCompatActivity(), UIObject{ super.onStart() } - /** Touch- and Key-related functions to navigate */ override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { if (keyCode == KeyEvent.KEYCODE_VOLUME_UP){ menuNumber++