diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 098b551..11b032f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -10,9 +11,9 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme.Light">
+ android:theme="@style/AppTheme.Dark">
@@ -22,20 +23,28 @@
+
+
+ android:theme="@style/PlayerTheme"
+ tools:targetApi="n" />
\ No newline at end of file
diff --git a/app/src/main/java/org/mosad/teapod/SplashActivity.kt b/app/src/main/java/org/mosad/teapod/activity/SplashActivity.kt
similarity index 81%
rename from app/src/main/java/org/mosad/teapod/SplashActivity.kt
rename to app/src/main/java/org/mosad/teapod/activity/SplashActivity.kt
index 54515b2..39b6744 100644
--- a/app/src/main/java/org/mosad/teapod/SplashActivity.kt
+++ b/app/src/main/java/org/mosad/teapod/activity/SplashActivity.kt
@@ -1,8 +1,9 @@
-package org.mosad.teapod
+package org.mosad.teapod.activity
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
+import org.mosad.teapod.activity.main.MainActivity
class SplashActivity : AppCompatActivity() {
diff --git a/app/src/main/java/org/mosad/teapod/MainActivity.kt b/app/src/main/java/org/mosad/teapod/activity/main/MainActivity.kt
similarity index 79%
rename from app/src/main/java/org/mosad/teapod/MainActivity.kt
rename to app/src/main/java/org/mosad/teapod/activity/main/MainActivity.kt
index 880f5d1..dc8d1ad 100644
--- a/app/src/main/java/org/mosad/teapod/MainActivity.kt
+++ b/app/src/main/java/org/mosad/teapod/activity/main/MainActivity.kt
@@ -20,7 +20,7 @@
*
*/
-package org.mosad.teapod
+package org.mosad.teapod.activity.main
import android.content.Intent
import android.os.Bundle
@@ -34,16 +34,18 @@ import com.afollestad.materialdialogs.callbacks.onDismiss
import com.google.android.material.bottomnavigation.BottomNavigationView
import kotlinx.coroutines.joinAll
import kotlinx.coroutines.runBlocking
+import org.mosad.teapod.R
import org.mosad.teapod.databinding.ActivityMainBinding
import org.mosad.teapod.parser.AoDParser
-import org.mosad.teapod.player.PlayerActivity
+import org.mosad.teapod.activity.player.PlayerActivity
import org.mosad.teapod.preferences.EncryptedPreferences
import org.mosad.teapod.preferences.Preferences
import org.mosad.teapod.ui.components.LoginDialog
-import org.mosad.teapod.ui.fragments.AccountFragment
-import org.mosad.teapod.ui.fragments.HomeFragment
-import org.mosad.teapod.ui.fragments.LibraryFragment
-import org.mosad.teapod.ui.fragments.SearchFragment
+import org.mosad.teapod.activity.main.fragments.AccountFragment
+import org.mosad.teapod.activity.main.fragments.HomeFragment
+import org.mosad.teapod.activity.main.fragments.LibraryFragment
+import org.mosad.teapod.activity.main.fragments.SearchFragment
+import org.mosad.teapod.activity.onboarding.OnboardingActivity
import org.mosad.teapod.util.DataTypes
import org.mosad.teapod.util.StorageController
import java.net.SocketTimeoutException
@@ -120,8 +122,8 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
private fun getThemeResource(): Int {
return when (Preferences.theme) {
- DataTypes.Theme.DARK -> R.style.AppTheme_Dark
- else -> R.style.AppTheme_Light
+ DataTypes.Theme.LIGHT -> R.style.AppTheme_Light
+ else -> R.style.AppTheme_Dark
}
}
@@ -138,22 +140,23 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
EncryptedPreferences.readCredentials(this)
StorageController.load(this)
- try {
- // make sure credentials are set, run's async
- if (EncryptedPreferences.password.isEmpty()) {
- showLoginDialog(true)
- } else {
- // try to login in, as most sites can only bee loaded once loged in
- if (!AoDParser.login()) showLoginDialog(false)
- }
- } catch (ex: SocketTimeoutException) {
- Log.w(javaClass.name, "Timeout during login!")
+ // show onbaording
+ if (EncryptedPreferences.password.isEmpty()) {
+ showOnboarding()
+ } else {
+ try {
+ if (!AoDParser.login()) {
+ showLoginDialog()
+ }
+ } catch (ex: SocketTimeoutException) {
+ Log.w(javaClass.name, "Timeout during login!")
- // show waring dialog before finishing
- MaterialDialog(this).show {
- title(R.string.dialog_timeout_head)
- message(R.string.dialog_timeout_desc)
- onDismiss { exitAndRemoveTask() }
+ // show waring dialog before finishing
+ MaterialDialog(this).show {
+ title(R.string.dialog_timeout_head)
+ message(R.string.dialog_timeout_desc)
+ onDismiss { exitAndRemoveTask() }
+ }
}
}
@@ -164,12 +167,12 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
wasInitialized = true
}
- private fun showLoginDialog(firstTry: Boolean) {
- LoginDialog(this, firstTry).positiveButton {
+ private fun showLoginDialog() {
+ LoginDialog(this, false).positiveButton {
EncryptedPreferences.saveCredentials(login, password, context)
if (!AoDParser.login()) {
- showLoginDialog(false)
+ showLoginDialog()
Log.w(javaClass.name, "Login failed, please try again.")
}
}.negativeButton {
@@ -178,6 +181,14 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
}.show()
}
+ /**
+ * start the onboarding activity and finish the main activity
+ */
+ private fun showOnboarding() {
+ startActivity(Intent(this, OnboardingActivity::class.java))
+ finish()
+ }
+
/**
* Show a fragment on top of the current fragment.
* The current fragment is replaced and the new one is added
diff --git a/app/src/main/java/org/mosad/teapod/ui/fragments/AboutFragment.kt b/app/src/main/java/org/mosad/teapod/activity/main/fragments/AboutFragment.kt
similarity index 98%
rename from app/src/main/java/org/mosad/teapod/ui/fragments/AboutFragment.kt
rename to app/src/main/java/org/mosad/teapod/activity/main/fragments/AboutFragment.kt
index b1c7fb2..6ab9714 100644
--- a/app/src/main/java/org/mosad/teapod/ui/fragments/AboutFragment.kt
+++ b/app/src/main/java/org/mosad/teapod/activity/main/fragments/AboutFragment.kt
@@ -1,4 +1,4 @@
-package org.mosad.teapod.ui.fragments
+package org.mosad.teapod.activity.main.fragments
import android.os.Bundle
import android.view.LayoutInflater
diff --git a/app/src/main/java/org/mosad/teapod/ui/fragments/AccountFragment.kt b/app/src/main/java/org/mosad/teapod/activity/main/fragments/AccountFragment.kt
similarity index 97%
rename from app/src/main/java/org/mosad/teapod/ui/fragments/AccountFragment.kt
rename to app/src/main/java/org/mosad/teapod/activity/main/fragments/AccountFragment.kt
index b87a753..04c55f2 100644
--- a/app/src/main/java/org/mosad/teapod/ui/fragments/AccountFragment.kt
+++ b/app/src/main/java/org/mosad/teapod/activity/main/fragments/AccountFragment.kt
@@ -1,4 +1,4 @@
-package org.mosad.teapod.ui.fragments
+package org.mosad.teapod.activity.main.fragments
import android.os.Bundle
import android.util.Log
@@ -9,7 +9,7 @@ import androidx.fragment.app.Fragment
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.list.listItemsSingleChoice
import org.mosad.teapod.BuildConfig
-import org.mosad.teapod.MainActivity
+import org.mosad.teapod.activity.main.MainActivity
import org.mosad.teapod.R
import org.mosad.teapod.databinding.FragmentAccountBinding
import org.mosad.teapod.parser.AoDParser
diff --git a/app/src/main/java/org/mosad/teapod/ui/fragments/HomeFragment.kt b/app/src/main/java/org/mosad/teapod/activity/main/fragments/HomeFragment.kt
similarity index 98%
rename from app/src/main/java/org/mosad/teapod/ui/fragments/HomeFragment.kt
rename to app/src/main/java/org/mosad/teapod/activity/main/fragments/HomeFragment.kt
index c63ed15..7120b82 100644
--- a/app/src/main/java/org/mosad/teapod/ui/fragments/HomeFragment.kt
+++ b/app/src/main/java/org/mosad/teapod/activity/main/fragments/HomeFragment.kt
@@ -1,4 +1,4 @@
-package org.mosad.teapod.ui.fragments
+package org.mosad.teapod.activity.main.fragments
import android.graphics.drawable.Drawable
import android.os.Bundle
@@ -14,7 +14,7 @@ import com.bumptech.glide.request.transition.Transition
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
-import org.mosad.teapod.MainActivity
+import org.mosad.teapod.activity.main.MainActivity
import org.mosad.teapod.R
import org.mosad.teapod.databinding.FragmentHomeBinding
import org.mosad.teapod.parser.AoDParser
diff --git a/app/src/main/java/org/mosad/teapod/ui/fragments/LibraryFragment.kt b/app/src/main/java/org/mosad/teapod/activity/main/fragments/LibraryFragment.kt
similarity index 94%
rename from app/src/main/java/org/mosad/teapod/ui/fragments/LibraryFragment.kt
rename to app/src/main/java/org/mosad/teapod/activity/main/fragments/LibraryFragment.kt
index 4429e6a..036f3f6 100644
--- a/app/src/main/java/org/mosad/teapod/ui/fragments/LibraryFragment.kt
+++ b/app/src/main/java/org/mosad/teapod/activity/main/fragments/LibraryFragment.kt
@@ -1,4 +1,4 @@
-package org.mosad.teapod.ui.fragments
+package org.mosad.teapod.activity.main.fragments
import android.os.Bundle
import android.view.LayoutInflater
@@ -9,7 +9,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
-import org.mosad.teapod.MainActivity
+import org.mosad.teapod.activity.main.MainActivity
import org.mosad.teapod.databinding.FragmentLibraryBinding
import org.mosad.teapod.parser.AoDParser
import org.mosad.teapod.util.adapter.MediaItemAdapter
diff --git a/app/src/main/java/org/mosad/teapod/ui/fragments/MediaFragment.kt b/app/src/main/java/org/mosad/teapod/activity/main/fragments/MediaFragment.kt
similarity index 98%
rename from app/src/main/java/org/mosad/teapod/ui/fragments/MediaFragment.kt
rename to app/src/main/java/org/mosad/teapod/activity/main/fragments/MediaFragment.kt
index ca9373d..6d781e9 100644
--- a/app/src/main/java/org/mosad/teapod/ui/fragments/MediaFragment.kt
+++ b/app/src/main/java/org/mosad/teapod/activity/main/fragments/MediaFragment.kt
@@ -1,4 +1,4 @@
-package org.mosad.teapod.ui.fragments
+package org.mosad.teapod.activity.main.fragments
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
@@ -12,8 +12,8 @@ import com.bumptech.glide.Glide
import com.bumptech.glide.request.RequestOptions
import jp.wasabeef.glide.transformations.BlurTransformation
import kotlinx.coroutines.*
-import org.mosad.teapod.MainActivity
import org.mosad.teapod.R
+import org.mosad.teapod.activity.main.MainActivity
import org.mosad.teapod.databinding.FragmentMediaBinding
import org.mosad.teapod.parser.AoDParser
import org.mosad.teapod.util.*
diff --git a/app/src/main/java/org/mosad/teapod/ui/fragments/SearchFragment.kt b/app/src/main/java/org/mosad/teapod/activity/main/fragments/SearchFragment.kt
similarity index 95%
rename from app/src/main/java/org/mosad/teapod/ui/fragments/SearchFragment.kt
rename to app/src/main/java/org/mosad/teapod/activity/main/fragments/SearchFragment.kt
index 6810030..c7581a3 100644
--- a/app/src/main/java/org/mosad/teapod/ui/fragments/SearchFragment.kt
+++ b/app/src/main/java/org/mosad/teapod/activity/main/fragments/SearchFragment.kt
@@ -1,4 +1,4 @@
-package org.mosad.teapod.ui.fragments
+package org.mosad.teapod.activity.main.fragments
import android.os.Bundle
import android.view.LayoutInflater
@@ -7,7 +7,7 @@ import android.view.ViewGroup
import android.widget.SearchView
import androidx.fragment.app.Fragment
import kotlinx.coroutines.*
-import org.mosad.teapod.MainActivity
+import org.mosad.teapod.activity.main.MainActivity
import org.mosad.teapod.databinding.FragmentSearchBinding
import org.mosad.teapod.parser.AoDParser
import org.mosad.teapod.util.decoration.MediaItemDecoration
diff --git a/app/src/main/java/org/mosad/teapod/activity/onboarding/OnLoginFragment.kt b/app/src/main/java/org/mosad/teapod/activity/onboarding/OnLoginFragment.kt
new file mode 100644
index 0000000..b60646e
--- /dev/null
+++ b/app/src/main/java/org/mosad/teapod/activity/onboarding/OnLoginFragment.kt
@@ -0,0 +1,54 @@
+package org.mosad.teapod.activity.onboarding
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import kotlinx.coroutines.*
+import org.mosad.teapod.R
+import org.mosad.teapod.databinding.FragmentOnLoginBinding
+import org.mosad.teapod.parser.AoDParser
+import org.mosad.teapod.preferences.EncryptedPreferences
+
+class OnLoginFragment: Fragment() {
+
+ private lateinit var binding: FragmentOnLoginBinding
+ private var loginJob: Job? = null
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ binding = FragmentOnLoginBinding.inflate(inflater, container, false)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ initActions()
+ }
+
+ private fun initActions() {
+ binding.buttonLogin.setOnClickListener {
+ // get login credentials from gui
+ val email = binding.editTextLogin.text.toString()
+ val password = binding.editTextPassword.text.toString()
+
+ EncryptedPreferences.saveCredentials(email, password, requireContext()) // save the credentials
+
+ binding.buttonLogin.isClickable = false
+ loginJob = GlobalScope.launch {
+ if (AoDParser.login()) {
+ // if login was successful, switch to main
+ if (activity is OnboardingActivity) {
+ (activity as OnboardingActivity).launchMainActivity()
+ }
+ } else {
+ withContext(Dispatchers.Main) {
+ binding.textLoginDesc.text = getString(R.string.on_login_failed)
+ binding.buttonLogin.isClickable = true
+ }
+ }
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/mosad/teapod/activity/onboarding/OnWelcomeFragment.kt b/app/src/main/java/org/mosad/teapod/activity/onboarding/OnWelcomeFragment.kt
new file mode 100644
index 0000000..28e221c
--- /dev/null
+++ b/app/src/main/java/org/mosad/teapod/activity/onboarding/OnWelcomeFragment.kt
@@ -0,0 +1,31 @@
+package org.mosad.teapod.activity.onboarding
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import org.mosad.teapod.databinding.FragmentOnWelcomeBinding
+
+class OnWelcomeFragment: Fragment() {
+
+ private lateinit var binding: FragmentOnWelcomeBinding
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ binding = FragmentOnWelcomeBinding.inflate(inflater, container, false)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ initActions()
+ }
+
+ private fun initActions() {
+ binding.buttonGetStarted.setOnClickListener {
+ if (activity is OnboardingActivity) {
+ (activity as OnboardingActivity).nextFragment()
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/mosad/teapod/activity/onboarding/OnboardingActivity.kt b/app/src/main/java/org/mosad/teapod/activity/onboarding/OnboardingActivity.kt
new file mode 100644
index 0000000..a5a11bd
--- /dev/null
+++ b/app/src/main/java/org/mosad/teapod/activity/onboarding/OnboardingActivity.kt
@@ -0,0 +1,78 @@
+package org.mosad.teapod.activity.onboarding
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentActivity
+import androidx.viewpager2.adapter.FragmentStateAdapter
+import com.google.android.material.tabs.TabLayoutMediator
+import org.mosad.teapod.activity.main.MainActivity
+import org.mosad.teapod.databinding.ActivityOnboardingBinding
+
+class OnboardingActivity : AppCompatActivity() {
+
+ private lateinit var binding: ActivityOnboardingBinding
+ private lateinit var pagerAdapter: FragmentStateAdapter
+
+ private val fragments = arrayOf(OnLoginFragment())
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ binding = ActivityOnboardingBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ pagerAdapter = ScreenSlidePagerAdapter(this)
+ binding.viewPager.adapter = pagerAdapter
+ TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, position ->
+
+ }.attach()
+
+ // we don't use the skip button, instead we use the start button to skip the last fragment
+ binding.buttonSkip.visibility = View.GONE
+
+ // hide tab layout if only one tab is displayed
+ if (fragments.size <= 1) {
+ binding.tabLayout.visibility = View.GONE
+ }
+ }
+
+ override fun onBackPressed() {
+ if (binding.viewPager.currentItem == 0) {
+ super.onBackPressed()
+ } else {
+ binding.viewPager.currentItem = binding.viewPager.currentItem - 1
+ }
+ }
+
+ fun nextFragment() {
+ if (binding.viewPager.currentItem < fragments.size - 1) {
+ binding.viewPager.currentItem++
+ } else {
+ launchMainActivity()
+ }
+ }
+
+ fun btnSkipClick(@Suppress("UNUSED_PARAMETER")v: View) {
+ //launchMainActivity() // currently not used in Teapod
+ }
+
+ fun launchMainActivity() {
+ startActivity(Intent(this, MainActivity::class.java))
+ finish()
+ }
+
+ /**
+ * A simple pager adapter that represents 5 ScreenSlidePageFragment objects, in
+ * sequence.
+ */
+ private inner class ScreenSlidePagerAdapter(fa: FragmentActivity) : FragmentStateAdapter(fa) {
+ override fun getItemCount(): Int = fragments.size
+
+ override fun createFragment(position: Int): Fragment = fragments[position]
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/mosad/teapod/player/PlayerActivity.kt b/app/src/main/java/org/mosad/teapod/activity/player/PlayerActivity.kt
similarity index 99%
rename from app/src/main/java/org/mosad/teapod/player/PlayerActivity.kt
rename to app/src/main/java/org/mosad/teapod/activity/player/PlayerActivity.kt
index 0b82c0d..d3e66ec 100644
--- a/app/src/main/java/org/mosad/teapod/player/PlayerActivity.kt
+++ b/app/src/main/java/org/mosad/teapod/activity/player/PlayerActivity.kt
@@ -1,4 +1,4 @@
-package org.mosad.teapod.player
+package org.mosad.teapod.activity.player
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
diff --git a/app/src/main/java/org/mosad/teapod/player/PlayerViewModel.kt b/app/src/main/java/org/mosad/teapod/activity/player/PlayerViewModel.kt
similarity index 98%
rename from app/src/main/java/org/mosad/teapod/player/PlayerViewModel.kt
rename to app/src/main/java/org/mosad/teapod/activity/player/PlayerViewModel.kt
index 35117f4..8a1eb89 100644
--- a/app/src/main/java/org/mosad/teapod/player/PlayerViewModel.kt
+++ b/app/src/main/java/org/mosad/teapod/activity/player/PlayerViewModel.kt
@@ -1,4 +1,4 @@
-package org.mosad.teapod.player
+package org.mosad.teapod.activity.player
import android.app.Application
import android.net.Uri
@@ -15,7 +15,6 @@ import kotlinx.coroutines.runBlocking
import org.mosad.teapod.R
import org.mosad.teapod.parser.AoDParser
import org.mosad.teapod.preferences.Preferences
-import org.mosad.teapod.ui.fragments.MediaFragment
import org.mosad.teapod.util.DataTypes
import org.mosad.teapod.util.Episode
import org.mosad.teapod.util.Media
diff --git a/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt b/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt
index 6905a19..a8a5716 100644
--- a/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt
+++ b/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt
@@ -56,7 +56,7 @@ object AoDParser {
fun login(): Boolean = runBlocking {
- withContext(Dispatchers.Default) {
+ withContext(Dispatchers.IO) {
// get the authenticity token
val resAuth = Jsoup.connect(baseUrl + loginPath)
.header("User-Agent", userAgent)
diff --git a/app/src/main/java/org/mosad/teapod/preferences/Preferences.kt b/app/src/main/java/org/mosad/teapod/preferences/Preferences.kt
index 172fb92..0c8b0c2 100644
--- a/app/src/main/java/org/mosad/teapod/preferences/Preferences.kt
+++ b/app/src/main/java/org/mosad/teapod/preferences/Preferences.kt
@@ -11,7 +11,7 @@ object Preferences {
internal set
var autoplay = true
internal set
- var theme = DataTypes.Theme.LIGHT
+ var theme = DataTypes.Theme.DARK
internal set
private fun getSharedPref(context: Context): SharedPreferences {
@@ -62,8 +62,8 @@ object Preferences {
)
theme = DataTypes.Theme.valueOf(
sharedPref.getString(
- context.getString(R.string.save_key_theme), DataTypes.Theme.LIGHT.toString()
- ) ?: DataTypes.Theme.LIGHT.toString()
+ context.getString(R.string.save_key_theme), DataTypes.Theme.DARK.toString()
+ ) ?: DataTypes.Theme.DARK.toString()
)
}
diff --git a/app/src/main/java/org/mosad/teapod/ui/components/EpisodesListPlayer.kt b/app/src/main/java/org/mosad/teapod/ui/components/EpisodesListPlayer.kt
index 9f41056..259305f 100644
--- a/app/src/main/java/org/mosad/teapod/ui/components/EpisodesListPlayer.kt
+++ b/app/src/main/java/org/mosad/teapod/ui/components/EpisodesListPlayer.kt
@@ -6,7 +6,7 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.LinearLayout
import org.mosad.teapod.databinding.PlayerEpisodesListBinding
-import org.mosad.teapod.player.PlayerViewModel
+import org.mosad.teapod.activity.player.PlayerViewModel
import org.mosad.teapod.util.adapter.PlayerEpisodeItemAdapter
class EpisodesListPlayer @JvmOverloads constructor(
diff --git a/app/src/main/java/org/mosad/teapod/ui/components/LanguageSettingsPlayer.kt b/app/src/main/java/org/mosad/teapod/ui/components/LanguageSettingsPlayer.kt
index ff4510a..a1b1d92 100644
--- a/app/src/main/java/org/mosad/teapod/ui/components/LanguageSettingsPlayer.kt
+++ b/app/src/main/java/org/mosad/teapod/ui/components/LanguageSettingsPlayer.kt
@@ -13,7 +13,7 @@ import android.widget.TextView
import androidx.core.view.children
import org.mosad.teapod.R
import org.mosad.teapod.databinding.PlayerLanguageSettingsBinding
-import org.mosad.teapod.player.PlayerViewModel
+import org.mosad.teapod.activity.player.PlayerViewModel
import java.util.*
class LanguageSettingsPlayer @JvmOverloads constructor(
diff --git a/app/src/main/res/drawable/dot_default.xml b/app/src/main/res/drawable/dot_default.xml
new file mode 100644
index 0000000..cb7aef7
--- /dev/null
+++ b/app/src/main/res/drawable/dot_default.xml
@@ -0,0 +1,12 @@
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/dot_selected.xml b/app/src/main/res/drawable/dot_selected.xml
new file mode 100644
index 0000000..078fd8f
--- /dev/null
+++ b/app/src/main/res/drawable/dot_selected.xml
@@ -0,0 +1,12 @@
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/dot_tab_selector.xml b/app/src/main/res/drawable/dot_tab_selector.xml
new file mode 100644
index 0000000..b32d447
--- /dev/null
+++ b/app/src/main/res/drawable/dot_tab_selector.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_onboarding.xml b/app/src/main/res/layout/activity_onboarding.xml
new file mode 100644
index 0000000..1bdea86
--- /dev/null
+++ b/app/src/main/res/layout/activity_onboarding.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_player.xml b/app/src/main/res/layout/activity_player.xml
index 57ffcec..050d442 100644
--- a/app/src/main/res/layout/activity_player.xml
+++ b/app/src/main/res/layout/activity_player.xml
@@ -7,7 +7,7 @@
android:layout_height="match_parent"
android:background="#000000"
android:keepScreenOn="true"
- tools:context=".player.PlayerActivity">
+ tools:context=".activity.player.PlayerActivity">
+ tools:context=".activity.main.fragments.AboutFragment">
+ tools:context=".activity.main.fragments.AccountFragment">
+ tools:context=".activity.main.fragments.HomeFragment">
+ tools:context=".activity.main.fragments.LibraryFragment">
+ tools:context=".activity.main.fragments.MediaFragment">
+ app:tint="?buttonBackground" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_on_welcome.xml b/app/src/main/res/layout/fragment_on_welcome.xml
new file mode 100644
index 0000000..fb8ada8
--- /dev/null
+++ b/app/src/main/res/layout/fragment_on_welcome.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml
index 548aa84..02fd428 100644
--- a/app/src/main/res/layout/fragment_search.xml
+++ b/app/src/main/res/layout/fragment_search.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?themePrimary"
- tools:context=".ui.fragments.SearchFragment">
+ tools:context=".activity.main.fragments.SearchFragment">
diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml
index bc52c0a..6b9e96e 100644
--- a/app/src/main/res/values-de-rDE/strings.xml
+++ b/app/src/main/res/values-de-rDE/strings.xml
@@ -56,6 +56,16 @@
Folgen
Folge
+
+ Überspringen
+ Weiter
+ Fertig
+ Willkommen!\nTeapod ist eine inoffizielle App für AoD.
+ Los geht\'s
+ Login
+ Um Teapod verwenden zu können musst du dich mit deinem AoD Account anmelden. Deine Login-Daten werden verschlüsselt auf deinem Gerät gespeichert.
+ Login nicht erfolgreich! Stelle sicher das deine Login-Daten korrekt sind und versuche es erneut.
+
speichern
@android:string/cancel
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5ddf5ad..39decf5 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -72,6 +72,16 @@
Episodes
Episode
+
+ Skip
+ Next
+ Start
+ Welcome!\nTeapod is an unofficial App for AoD.
+ Get started
+ Login
+ To use Teapod you need to log in with your AoD account. Your Login-Data will be stored encrypted on your device.
+ Could not login! Make sure Username and Password are correct and try again.
+
save
@android:string/cancel
@@ -81,7 +91,7 @@
Login
You need to login before you can use Teapod. The Login-Data will be stored encrypted on your device.
- Could not login. Please try again.
+ Please try again.
Password