Skip to content

Commit

Permalink
Filter teilweise hinzugefügt
Browse files Browse the repository at this point in the history
  • Loading branch information
DonMarv00 committed Feb 16, 2024
1 parent c5de11b commit 7673949
Show file tree
Hide file tree
Showing 16 changed files with 422 additions and 41 deletions.
2 changes: 1 addition & 1 deletion .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
</activity>
<activity android:name=".AppIntroActivity"
android:theme="@style/AppThemeNoToolbar"/>
<activity android:name=".FilterActivity"/>
<activity android:name=".SettingsActivity"
android:label="@string/settings"/>
<activity android:name=".AboutActivity"
Expand Down
64 changes: 64 additions & 0 deletions app/src/main/assets/offline_list_hoerbuecher.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{
"folgen":[
{
"name":"Die drei Fragezeichen und der Ameisenmensch",
"beschreibung":"Kribbelnde Spannung im wahrsten Sinne des Wortes verheißt dieser Fall - die drei ??? juckt das nicht. Gilt es doch der attraktiven Letitia Radford beizustehen, die zwar im Luxus lebt, sich aber von allerlei Krabbelndem und odendrein einer lebendig gewordenen Vogelscheuche bedroht sieht! Der mutige Entschluss, es mit Ameisen und Schlimmerem aufzunehmen, bringt die drei ??? mit sonderbaren Zeitgenossen in Berührung ... ",
"nummer":"1"
},
{
"name":"Die drei Fragezeichen und der Zauberspiegel",
"beschreibung":"Wenn jemand erzählt, in einem spanischen Spiegel spuke es, und nachts sind auch noch seltsame Geräusche zu hören, dann kriegt vor allem Justus weniger eine Gänsehaut, als vielmehr Lust, diesen Dingen auf den Grund zu gehen. Doch kaum beginnen die drei ??? zu ermitteln, häufen sich merkwürdige Zwischenfälle.  ",
"nummer":"2"
},
{
"name":"Die drei Fragezeichen und die schwarze Katze",
"beschreibung":"Mit Ermittlungen kennt er sich bestens aus: Axel Prahl. Nun hat er mit großem Vergnügen (wie er selbst sagt) für unser Hörbuchprojekt Die drei ??? und die schwarze Katze eingelesen. Ein bisschen Herzklopfen war auch dabei - und Respekt vor der großen ???-Fan-Gemeinde. Wir freuen uns über seine Interpretation der schwarzen Katze. Und auch über das Interview, in dem er nicht nur erzählt wie er sich auf die Hörbuchaufnahmen vorbereitet hat.",
"nummer":"3"
},
{
"name":"Die drei Fragezeichen und der gestohlene Preis",
"beschreibung":"Aufregende Zeiten für die drei ???... Der Diebstahl der silbernen Pokale im Fernsehstudio ist erst der Anfang. Aber dann versucht jemand, Justus als Quizteilnehmer aus dem Verkehr zu ziehen, und dasselbe passiert der ehrgeizigen Peggy, die ebenfalls gewinnen möchte. Die Freunde Bob und Peter helfen wie immer tatkräftig mit, als Justus zu ermitteln beginnt. Wer spielt hier falsch? An Verdächtigen fehlt es nicht.",
"nummer":"4"
},
{
"name":"Die drei Fragezeichen und der sprechende Totenkopf",
"beschreibung":"Sie gehört von Anbeginn zu den drei ???: Karin Lieneweg in ihrer Rolle als resolute Tante Mathilda. Wir freuen uns über ein lebendiges Interview mit einer großartigen Frau, die von ihren Anfängen am Theater erzählt und uns interessante Einblicke in ihr Leben mit und ohne die drei ??? gewährt. Das Hörbuch Die drei ??? und der sprechende Totenkopf ist tatsächlich das erste Hörbuch, das Karin Lieneweg eingelesen hat. Wir finden, sie hat das grandios gemacht - und sind gemeinsam mit ihr sehr gespannt, wie es euch gefällt. ",
"nummer":"5"
},
{
"name":"Die drei Fragezeichen und die flüsternde Mumie",
"beschreibung":"Kann eine 3000 Jahre alte Mumie flüstern? Noch dazu in einem altägyptischen Dialekt, den niemand verstehen kann? Die drei ??? sind entschlossen, das Geheimnis zu lösen, auch wenn der Fluch der Mumie sie treffen sollte. ",
"nummer":"6"
},
{
"name":"Die drei Fragezeichen und die silberne Spinne",
"beschreibung":"Er bezeichnet sich selbst als ???-Über-Fan: Nicholas Müller – Sänger der Band Jupiter Jones. Im Interview erzählt er, wie schnell die Band zu ihrem Namen kam und wie es sich anfühlt seit 20 Jahren mit dem Originalnamen von Justus Jonas auf dem Band-T-Shirt rumzulaufen. Nicholas hat nicht nur zu den ??? eine Verbindung, sondern auch eine zu den drei !!! – und so wie es sich anhört auch noch einen Rucksack in Berlin ... Danke, lieber Nicholas für das Interview – und insbesondere auch für deine Hörbuchlesung Die drei ??? und die silberne Spinne!",
"nummer":"7"
},
{
"name":"Die drei Fragezeichen und der Höhlenmensch",
"beschreibung":"Der beliebte Schauspieler und Sprecher Eckart Dux liest: Die drei ??? und der Höhlenmensch. Dank seiner unverwechselbaren Stimme wird es extra spannend, wenn in Citrus-Grove seltsame Dinge passieren, nachdem dort ein vorgeschichtliches Skelett gefunden wurde. Trailer-John, der vor dem Museum Wache hält, behauptet sogar, er habe in der Nacht den lebendig gewordenen Höhlenmenschen weglaufen sehen! Neugierig und ahnungsvoll machen sich die drei ??? ans Beobachten. Und tatsächlich - allmählich kristallisiert sich heraus, dass hier verschiedene kriminelle Vorgänge parallel laufen...  ",
"nummer":"8"
},
{
"name":"Die drei Fragezeichen und die gefährliche Erbschaft",
"beschreibung":"Endlich wieder ??? Podcast & Hörbuchzeit! Diesmal im Interview: Holger Mahlich alias Inspektor Cotta, der uns seine ganz persönliche ‚Vor‘-Geschichte erzählt. Von Weimar über Ost-Berlin, über die Grenze der DDF nach Wien, Köln bis zu seiner Wahlheimat Hamburg, wo er dann auch früh Heikedine Körting kennenlernte. Für unsere ???-Hörbuchreihe hat er den Rätsel-Klassiker Die drei ??? und die gefährliche Erbschaft gelesen – und sich gefreut, dass er einmal mehr als in der Rolle Inspektor Cotta gewohnt zu Wort kommt. ",
"nummer":"9"
},
{
"name":"Die drei Fragezeichen und die rätselhaften Bilder",
"beschreibung":"Wir setzen unsere Die drei ??? Hörbuchreihe fort! Diesmal direkt nach der Hörbuchaufnahme im Interview: Dr. Mai Thi Nguyen-Kim. Mai erzählt, wie sie früher mit ihrem älteren Bruder Die drei ??? Kassetten gehört hat, erklärt die berühmte Telefonlawine aus ihrer wissenschaftlichen Perspektive und wir erfahren, warum sie bei den Hörbuchaufnahmen zu Die drei ??? und die rätselhaften Bilder zwischendurch immer mal lachend abbrechen musste. ",
"nummer":"10"
},
{
"name":"Die drei Fragezeichen und der schrullige Millionär",
"beschreibung":"Schau doch in den Audio & Video Podcast mit Klaas Heufer-Umlauf rein, hier siehst du einen Ausschnitt aus den Aufnahmen und während des Gesprächs mit Oliver Rohrbeck verrät Klaas, dass er Die drei ??? und der schrullige Millionär ausgesucht hat, damit es nicht zu gruselig wird. Als Kind waren ihm die drei ??? Hörspiele oft zu spannend. Dabei ist Klaas ist ein erfahrener Hörspielhörer - und hat sogar gemeinsam mit Jan Böhmermann selbst ein Hörspiel aufgenommen. ",
"nummer":"11"
},
{
"name":"Die drei Fragezeichen und das Bergmonster",
"beschreibung":"Die drei ??? Family & Friends: Kai Schwind liest Die drei ??? und das Bergmonster. Wir freuen uns, dass Kai, der schon so lange als Regisseur der letzten drei Live-Hörspiele, als Skriptautor einiger Specials, als Bobcast-Host und auch mit seiner Ferienbande die drei ??? begleitet, den Weg ins Studio gefunden hat, um einen echten ???-Klassiker einzulesen. Wir sprechen über eine klassische Kassettenkinder-Biografie, Mutproben, knackende Türen - und übernatürliche Elemente. Passt auf eure Bergmonster auf!",
"nummer":"12"
}
]
}
95 changes: 95 additions & 0 deletions app/src/main/java/de/msdevs/einschlafhilfe/FilterActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
package de.msdevs.einschlafhilfe


import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.AutoCompleteTextView
import androidx.lifecycle.lifecycleScope
import com.google.android.material.textfield.MaterialAutoCompleteTextView
import de.msdevs.einschlafhilfe.databinding.ActivityFilterBinding
import de.msdevs.einschlafhilfe.models.JsonResponse
import de.msdevs.einschlafhilfe.utils.NetworkUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import okhttp3.OkHttpClient
import okhttp3.Request
import org.json.JSONObject
import ru.gildor.coroutines.okhttp.await


class FilterActivity : BaseActivity(){

private lateinit var binding : ActivityFilterBinding
private lateinit var tvInput : MaterialAutoCompleteTextView
private val episodeList = ArrayList<JsonResponse>()
private lateinit var networkUtils: NetworkUtils
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityFilterBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
iniViews()

lifecycleScope.launch {
withContext(Dispatchers.IO) {
apiCall()
}
}

}
private suspend fun apiCall() {
val urlExtraParameter = "folgen.json"
episodeList.clear()
try {
if(networkUtils.isConnected(this)){
val client = OkHttpClient.Builder().build()
val request =
Request.Builder().url(getString(R.string.base_url) + urlExtraParameter)
.build()

val folgenListe = client.newCall(request).await().body()?.string().toString()
val jsonObject = JSONObject(folgenListe)
val jsonArray = jsonObject.optJSONArray("folgen")
if (jsonArray != null) {
for (i in 0 until jsonArray.length()) {
val jsonObject = jsonArray.getJSONObject(i)
episodeList.add(
JsonResponse(
name = jsonObject.optString("name"),
beschreibung = jsonObject.optString("beschreibung"),
spotify = jsonObject.optString("spotify")
)
)
}
runOnUiThread {
iniAutoComplete()
}
}

}
}catch (e : Exception){
Log.e("","Error: " + e.message)
}
}
private fun iniAutoComplete(){
val nameArray = episodeList.map { it.name }.toTypedArray()

val adapter: ArrayAdapter<String> = ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, nameArray)
val textView : MaterialAutoCompleteTextView = binding.tvFolge
textView.threshold = 3
textView.setAdapter(adapter)

textView.setOnItemClickListener { parent, view, position, id ->
val selectedName = parent.getItemAtPosition(position) as String

}
}
private fun iniViews(){
networkUtils = NetworkUtils()
tvInput = binding.tvFolge
}
}
27 changes: 10 additions & 17 deletions app/src/main/java/de/msdevs/einschlafhilfe/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import android.content.DialogInterface
import android.content.Intent
import android.content.SharedPreferences
import android.content.pm.PackageManager
import android.net.ConnectivityManager
import android.net.Uri
import android.os.Bundle
import android.view.Menu
Expand All @@ -19,6 +18,8 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import de.msdevs.einschlafhilfe.databinding.ActivityMainBinding
import de.msdevs.einschlafhilfe.models.JsonResponse
import de.msdevs.einschlafhilfe.utils.NetworkUtils
import de.msdevs.einschlafhilfe.utils.Utility
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
Expand All @@ -31,7 +32,7 @@ import java.io.BufferedReader
import java.io.IOException


class MainActivity : BaseActivity() { //Extends Base Activity
class MainActivity : BaseActivity() {

private lateinit var binding: ActivityMainBinding
private var urlExtraParameter = "folgen.json"
Expand All @@ -41,11 +42,13 @@ class MainActivity : BaseActivity() { //Extends Base Activity
private lateinit var sharedPreferencesEditor: SharedPreferences.Editor
private lateinit var folgenListe : String
private var selectedTheme : Int = 0
var random : Int = 0
private lateinit var networkUtils: NetworkUtils
private var random : Int = 0

/*
Copyright 2017 - 2023 by Marvin Stelter
Copyright 2017 - 2024 by Marvin Stelter
*/

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
Expand All @@ -54,7 +57,7 @@ class MainActivity : BaseActivity() { //Extends Base Activity

sharedPreferences = getSharedPreferences(packageName,0)
sharedPreferencesEditor = sharedPreferences.edit()

networkUtils = NetworkUtils()

if(sharedPreferences.getInt("first",0) == 0){
sharedPreferencesEditor.putBoolean("update_list", true)
Expand Down Expand Up @@ -235,7 +238,7 @@ class MainActivity : BaseActivity() { //Extends Base Activity
when {
episodeList.isEmpty() -> {

if(sharedPreferences.getBoolean("update_list",false) && isConnected()){
if(sharedPreferences.getBoolean("update_list",false) && networkUtils.isConnected(this)){
val client = OkHttpClient.Builder().build()
val request =
Request.Builder().url(getString(R.string.base_url) + urlExtraParameter)
Expand Down Expand Up @@ -351,19 +354,13 @@ class MainActivity : BaseActivity() { //Extends Base Activity
return url
}
private fun loadEpisodeCover(coverUrl : String){
if(isConnected() && sharedPreferences.getBoolean("update_list",false)){
if(networkUtils.isConnected(this) && sharedPreferences.getBoolean("update_list",false)){
Glide.with(this)
.load(coverUrl)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(binding.ivCover)
}
}
class JsonResponse(
val name: String,
val beschreibung: String,
val spotify: String
)

private fun isSpotifyInstalled() : Boolean{
val packageManager: PackageManager = packageManager
val intent = Intent(Intent.ACTION_VIEW)
Expand All @@ -376,10 +373,6 @@ class MainActivity : BaseActivity() { //Extends Base Activity
}
return false
}
private fun isConnected() : Boolean{
val currentNetwork = getSystemService(ConnectivityManager::class.java).activeNetwork
return currentNetwork != null
}
private fun refresh(){
lifecycleScope.launch {
withContext(Dispatchers.IO) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import android.content.res.Resources
import android.graphics.Color
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.ImageView
import android.widget.RelativeLayout
import android.widget.TextView
Expand Down Expand Up @@ -39,6 +40,7 @@ class SettingsActivity : BaseActivity() {
lateinit var rlJustus : RelativeLayout
lateinit var rlBob : RelativeLayout
lateinit var rlPeter: RelativeLayout
lateinit var btnFilter : Button

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand Down Expand Up @@ -124,6 +126,9 @@ class SettingsActivity : BaseActivity() {
sharedPreferencesEditor.apply()
}
})
btnFilter.setOnClickListener {
startActivity(Intent(this@SettingsActivity, FilterActivity::class.java))
}


rlJustus.setOnClickListener{
Expand Down Expand Up @@ -166,6 +171,8 @@ class SettingsActivity : BaseActivity() {
ivCheckPeter = binding.ivCheckPeter
ivCheckBob = binding.ivCheckBob

btnFilter = binding.btnFilter

rlJustus = binding.rlJustus
rlBob = binding.rlBob
rlPeter = binding.rlPeter
Expand Down Expand Up @@ -216,8 +223,6 @@ class SettingsActivity : BaseActivity() {

fun changeViewThemes(){
if(Utility.getTheme(this) == 4){
// switchUpdatelist.thumbDrawable = getDrawable(R.drawable.thumb_style_white)

val thumbTintSelector = ColorStateList(
arrayOf(
intArrayOf(android.R.attr.state_checked),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package de.msdevs.einschlafhilfe.adapter

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.TextView
import de.msdevs.einschlafhilfe.models.JsonResponse
import de.msdevs.einschlafhilfe.R

class AutoCompleteTextViewAdapter(context: Context, resource: Int, objects: ArrayList<JsonResponse>) :
ArrayAdapter<JsonResponse>(context, resource, objects) {

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val item = getItem(position)
val view = convertView ?: LayoutInflater.from(context)
.inflate(R.layout.layout_autocomplete, parent, false)

val textView: TextView = view.findViewById(R.id.tv_folgen_name)
textView.text = item?.name

return view
}

override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {
return getView(position, convertView, parent)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package de.msdevs.einschlafhilfe.models

class JsonResponse(
val name: String,
val beschreibung: String,
val spotify: String
)
13 changes: 13 additions & 0 deletions app/src/main/java/de/msdevs/einschlafhilfe/utils/NetworkUtils.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package de.msdevs.einschlafhilfe.utils

import android.content.Context
import android.net.ConnectivityManager

class NetworkUtils {

public fun isConnected(context : Context) : Boolean{
val currentNetwork = context.getSystemService(ConnectivityManager::class.java).activeNetwork
return currentNetwork != null
}

}
Loading

0 comments on commit 7673949

Please sign in to comment.