From 01677c04eff29d2e9b086c8092abc7f596cdfc4a Mon Sep 17 00:00:00 2001 From: Seil0 Date: Sun, 23 Feb 2020 20:09:27 +0100 Subject: [PATCH 01/51] Onboarding [Part 1] this Commit adds a Onboarding Activity, it is currently not usefull or fully working, see #36 --- app/src/main/AndroidManifest.xml | 8 ++ .../mosad/seil0/projectlaogai/MainActivity.kt | 3 + .../seil0/projectlaogai/OnboardingActivity.kt | 99 +++++++++++++++++++ .../fragments/SettingsFragment.kt | 4 +- .../onboarding/ViewPagerAdapter.kt | 59 +++++++++++ .../activities/layout/activity_onboarding.xml | 53 ++++++++++ .../fragments/layout/fragment_on_course.xml | 72 ++++++++++++++ .../fragments/layout/fragment_on_login.xml | 92 +++++++++++++++++ .../fragments/layout/fragment_on_welcome.xml | 70 +++++++++++++ .../fragments/layout/fragment_settings.xml | 44 +++++---- app/src/main/res/values-de-rDE/strings.xml | 14 +++ app/src/main/res/values/strings.xml | 14 +++ 12 files changed, 512 insertions(+), 20 deletions(-) create mode 100644 app/src/main/java/org/mosad/seil0/projectlaogai/OnboardingActivity.kt create mode 100644 app/src/main/java/org/mosad/seil0/projectlaogai/onboarding/ViewPagerAdapter.kt create mode 100644 app/src/main/res/layouts/activities/layout/activity_onboarding.xml create mode 100644 app/src/main/res/layouts/fragments/layout/fragment_on_course.xml create mode 100644 app/src/main/res/layouts/fragments/layout/fragment_on_login.xml create mode 100644 app/src/main/res/layouts/fragments/layout/fragment_on_welcome.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93c91fa..737b74b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,6 +28,14 @@ android:resource="@xml/shortcuts" /> + + + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_onboarding) + + viewPager = findViewById(R.id.viewPager) + linLayoutDots = findViewById(R.id.linLayout_Dots) + + addBottomDots(0) + + viewPagerAdapter = ViewPagerAdapter(this) + viewPager.adapter = viewPagerAdapter + viewPager.addOnPageChangeListener(viewPagerPageChangeListener) + + btn_Skip.visibility = View.GONE // without the the skip button is visible + } + + fun btnNextClick(v: View) { + if (viewPager.currentItem < layouts.size - 1) { + viewPager.currentItem++ + } else { + launchHomeScreen() + } + } + + fun btnSkipClick(v: View) { + launchHomeScreen() + } + + fun btnSelectCourseClick(v: View) { + SettingsFragment().selectCourse(this) // TODO + } + + private fun addBottomDots(currentPage: Int) { + dots = Array(layouts.size) { TextView(this) } + linLayoutDots.removeAllViews() + + dots.forEach { + it.text = Html.fromHtml("•") + it.textSize = 35f + it.setTextColor(Color.parseColor("#cccccc")) + linLayoutDots.addView(it) + } + + if (dots.isNotEmpty()) + dots[currentPage].setTextColor(Color.parseColor("#000000")) + } + + private fun launchHomeScreen() { + startActivity(Intent(this, MainActivity::class.java)) + //finish() + } + + private var viewPagerPageChangeListener: ViewPager.OnPageChangeListener = object : ViewPager.OnPageChangeListener { + + override fun onPageSelected(position: Int) { + addBottomDots(position) + // changing the next button text + if (position == layouts.size - 1) { + btn_Next.text = getString(R.string.start) + btn_Next.visibility = View.VISIBLE + btn_Skip.visibility = View.GONE + } else { + btn_Next.visibility = View.GONE + btn_Skip.visibility = View.GONE + } + } + + override fun onPageScrolled(arg0: Int, arg1: Float, arg2: Int) {} + override fun onPageScrollStateChanged(arg0: Int) {} + } + + +} \ No newline at end of file diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/SettingsFragment.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/SettingsFragment.kt index 059f5e9..aa8c8f1 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/SettingsFragment.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/SettingsFragment.kt @@ -171,7 +171,9 @@ class SettingsFragment : Fragment() { resources.getString(R.string.themeDark), resources.getString(R.string.themeBlack) ) - MaterialDialog(context!!).show { + MaterialDialog(context!!) + .title(R.string.theme) + .show { listItemsSingleChoice(items = themes) { _, index, _ -> Aesthetic.config { when (index) { diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/onboarding/ViewPagerAdapter.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/onboarding/ViewPagerAdapter.kt new file mode 100644 index 0000000..d6726c6 --- /dev/null +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/onboarding/ViewPagerAdapter.kt @@ -0,0 +1,59 @@ +/** + * ProjectLaogai + * + * Copyright 2019-2020 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +package org.mosad.seil0.projectlaogai.onboarding + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.viewpager.widget.PagerAdapter +import org.mosad.seil0.projectlaogai.OnboardingActivity.Companion.layouts + +/** + * TODO + */ +class ViewPagerAdapter(cont: Context) : PagerAdapter() { + + private val context = cont + + override fun isViewFromObject(view: View, `object`: Any): Boolean { + return view === `object` + } + + override fun getCount(): Int { + return layouts.size + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = LayoutInflater.from(context).inflate(layouts[position], container, false) + container.addView(view) + + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + val view = `object` as View + container.removeView(view) + } + +} \ No newline at end of file diff --git a/app/src/main/res/layouts/activities/layout/activity_onboarding.xml b/app/src/main/res/layouts/activities/layout/activity_onboarding.xml new file mode 100644 index 0000000..5e14b73 --- /dev/null +++ b/app/src/main/res/layouts/activities/layout/activity_onboarding.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + +