diff --git a/app/build.gradle b/app/build.gradle index 65100d7..e04cb7c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -64,7 +64,7 @@ dependencies { implementation 'com.afollestad.material-dialogs:core:3.3.0' implementation 'com.afollestad.material-dialogs:bottomsheets:3.3.0' - testImplementation 'junit:junit:4.13.1' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' 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 0c8b0c2..b5c1d60 100644 --- a/app/src/main/java/org/mosad/teapod/preferences/Preferences.kt +++ b/app/src/main/java/org/mosad/teapod/preferences/Preferences.kt @@ -11,6 +11,8 @@ object Preferences { internal set var autoplay = true internal set + var devSettings = false + internal set var theme = DataTypes.Theme.DARK internal set @@ -39,6 +41,15 @@ object Preferences { this.autoplay = autoplay } + fun saveDevSettings(context: Context, devSettings: Boolean) { + with(getSharedPref(context).edit()) { + putBoolean(context.getString(R.string.save_key_dev_settings), devSettings) + apply() + } + + this.devSettings = devSettings + } + fun saveTheme(context: Context, theme: DataTypes.Theme) { with(getSharedPref(context).edit()) { putString(context.getString(R.string.save_key_theme), theme.toString()) @@ -60,6 +71,9 @@ object Preferences { autoplay = sharedPref.getBoolean( context.getString(R.string.save_key_autoplay), true ) + devSettings = sharedPref.getBoolean( + context.getString(R.string.save_key_dev_settings), false + ) theme = DataTypes.Theme.valueOf( sharedPref.getString( context.getString(R.string.save_key_theme), DataTypes.Theme.DARK.toString() diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AboutFragment.kt b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AboutFragment.kt index a30d129..8c8da0a 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AboutFragment.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AboutFragment.kt @@ -6,6 +6,7 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast import androidx.annotation.RawRes import androidx.fragment.app.Fragment import com.afollestad.materialdialogs.MaterialDialog @@ -13,15 +14,21 @@ import org.mosad.teapod.BuildConfig import org.mosad.teapod.R import org.mosad.teapod.databinding.FragmentAboutBinding import org.mosad.teapod.databinding.ItemComponentBinding +import org.mosad.teapod.preferences.Preferences import org.mosad.teapod.util.DataTypes.License import org.mosad.teapod.util.ThirdPartyComponent import java.lang.StringBuilder +import java.util.Timer +import kotlin.concurrent.schedule class AboutFragment : Fragment() { - private val teapodRepoUrl = "https://git.mosad.xyz/Seil0/teapod" private lateinit var binding: FragmentAboutBinding + private val teapodRepoUrl = "https://git.mosad.xyz/Seil0/teapod" + private val devClickMax = 5 + private var devClickCount = 0 + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { binding = FragmentAboutBinding.inflate(inflater, container, false) return binding.root @@ -52,6 +59,10 @@ class AboutFragment : Fragment() { } private fun initActions() { + binding.imageAppIcon.setOnClickListener { + checkDevSettings() + } + binding.linearSource.setOnClickListener { startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(teapodRepoUrl))) } @@ -64,6 +75,30 @@ class AboutFragment : Fragment() { } } + /** + * check if dev settings shall be enabled + */ + private fun checkDevSettings() { + // if the dev settings are already enabled show a toast + if (Preferences.devSettings) { + Toast.makeText(context, getString(R.string.dev_settings_already), Toast.LENGTH_SHORT).show() + return + } + + // reset dev settings count after 5 seconds + if (devClickCount == 0) { + Timer("", false).schedule(5000) { + devClickCount = 0 + } + } + devClickCount++ + + if (devClickCount == devClickMax) { + Preferences.saveDevSettings(requireContext(), true) + Toast.makeText(context, getString(R.string.dev_settings_enabled), Toast.LENGTH_SHORT).show() + } + } + private fun getThirdPartyComponents(): List { return listOf( ThirdPartyComponent("AndroidX", "", "The Android Open Source Project", diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AccountFragment.kt b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AccountFragment.kt index 84a9044..5f0b4ae 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AccountFragment.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AccountFragment.kt @@ -7,6 +7,7 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.view.isVisible import androidx.fragment.app.Fragment import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.list.listItemsSingleChoice @@ -54,6 +55,8 @@ class AccountFragment : Fragment() { binding.switchSecondary.isChecked = Preferences.preferSecondary binding.switchAutoplay.isChecked = Preferences.autoplay + binding.linearDevSettings.isVisible = Preferences.devSettings + initActions() } @@ -81,6 +84,14 @@ class AccountFragment : Fragment() { binding.switchAutoplay.setOnClickListener { Preferences.saveAutoplay(requireContext(), binding.switchAutoplay.isChecked) } + + binding.linearExportData.setOnClickListener { + println("TODO") + } + + binding.linearImportData.setOnClickListener { + println("TODO") + } } private fun showLoginDialog(firstTry: Boolean) { diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml index 6401f43..3e8d0ed 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -3,17 +3,18 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - - - + + + diff --git a/app/src/main/res/drawable/ic_outline_download_24.xml b/app/src/main/res/drawable/ic_outline_download_24.xml new file mode 100644 index 0000000..b987952 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_download_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_info_24.xml b/app/src/main/res/drawable/ic_outline_info_24.xml index 24bd840..b08088e 100644 --- a/app/src/main/res/drawable/ic_outline_info_24.xml +++ b/app/src/main/res/drawable/ic_outline_info_24.xml @@ -1,5 +1,10 @@ - - + + diff --git a/app/src/main/res/drawable/ic_outline_upload_24.xml b/app/src/main/res/drawable/ic_outline_upload_24.xml new file mode 100644 index 0000000..b343e7c --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_upload_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/fragment_account.xml b/app/src/main/res/layout/fragment_account.xml index ec914a6..54fda09 100644 --- a/app/src/main/res/layout/fragment_account.xml +++ b/app/src/main/res/layout/fragment_account.xml @@ -220,7 +220,7 @@ android:padding="7dp"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Design Hell Dunkel + Entwickler Einstellungen + Daten exportieren + Speichere "meine Liste" in eine Datei + Daten importieren + Lade "meine Liste" aus einer Datei Version @@ -55,6 +60,8 @@ Eine inoffizielle App für Anime on Demand. Lizenzen von Drittanbietern © %1$s %2$s unter %3$s + Du bist jetzt ein Entwickler + Du bist schon ein Entwickler Player schließen diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e97bfc8..712e8ac 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -57,6 +57,12 @@ Theme Light Dark + Developer Settings + export data + export my list to a file + import data + import my list from a file + Version @@ -71,6 +77,8 @@ This product uses the TMDb API but is not endorsed or certified by TMDb. Third Party Licenses © %1$s %2$s under %3$s + You are now a developer + You are already a developer close player @@ -116,6 +124,7 @@ org.mosad.teapod.user_password org.mosad.teapod.prefer_secondary org.mosad.teapod.autoplay + org.mosad.teapod.dev.settings org.mosad.teapod.theme