From 03b86c8ab9bd4e534f8b0c9804b4869d1393be15 Mon Sep 17 00:00:00 2001 From: denizk0461 Date: Sat, 8 Apr 2023 18:53:51 +0200 Subject: [PATCH] TODO implement custom Chrome tabs --- app/build.gradle | 4 ++- app/src/main/AndroidManifest.xml | 3 ++ .../studip/activity/MainActivity.kt | 8 ++--- .../studip/adapter/StudIPEventAdapter.kt | 2 +- .../studip/adapter/StudIPEventPageAdapter.kt | 2 +- .../com/denizk0461/studip/data/DummyData.kt | 2 ++ .../denizk0461/studip/data/StudIPScraper.kt | 29 +++++++++++++++++ .../java/com/denizk0461/studip/db/EventDAO.kt | 2 +- .../com/denizk0461/studip/db/EventDatabase.kt | 2 +- .../denizk0461/studip/db/EventRepository.kt | 2 +- .../studip/fragment/EventFragment.kt | 3 ++ .../studip/fragment/SecondFragment.kt | 12 ++++--- .../studip/{data => model}/StudIPEvent.kt | 2 +- .../studip/viewmodel/EventViewModel.kt | 2 +- app/src/main/res/layout/fragment_second.xml | 32 ++++--------------- 15 files changed, 65 insertions(+), 42 deletions(-) create mode 100644 app/src/main/java/com/denizk0461/studip/data/StudIPScraper.kt rename app/src/main/java/com/denizk0461/studip/{data => model}/StudIPEvent.kt (98%) diff --git a/app/build.gradle b/app/build.gradle index 7926703..0479c28 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,7 @@ android { minSdk 24 targetSdk 33 versionCode 1 - versionName "1.0" + versionName "0.0.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -51,4 +51,6 @@ dependencies { implementation "androidx.room:room-runtime:2.5.1" kapt "androidx.room:room-compiler:2.5.1" + + implementation 'org.jsoup:jsoup:1.15.4' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7946a3e..0ff7434 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,9 @@ + + + - Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) - .setAnchorView(R.id.fab) - .setAction("Action", null).show() + findNavController(R.id.nav_host_fragment_content_main).navigate(R.id.action_FirstFragment_to_SecondFragment) +// Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) +// .setAnchorView(R.id.fab) +// .setAction("Action", null).show() } } diff --git a/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventAdapter.kt b/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventAdapter.kt index d29398a..c9f368e 100644 --- a/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventAdapter.kt +++ b/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventAdapter.kt @@ -3,7 +3,7 @@ package com.denizk0461.studip.adapter import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.denizk0461.studip.data.StudIPEvent +import com.denizk0461.studip.model.StudIPEvent import com.denizk0461.studip.databinding.ItemEventBinding class StudIPEventAdapter(private val events: List) : RecyclerView.Adapter() { diff --git a/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventPageAdapter.kt b/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventPageAdapter.kt index 9d30e8b..96f6380 100644 --- a/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventPageAdapter.kt +++ b/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventPageAdapter.kt @@ -4,7 +4,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.denizk0461.studip.data.StudIPEvent +import com.denizk0461.studip.model.StudIPEvent import com.denizk0461.studip.databinding.ItemEventPageBinding class StudIPEventPageAdapter(private val events: List) : RecyclerView.Adapter() { diff --git a/app/src/main/java/com/denizk0461/studip/data/DummyData.kt b/app/src/main/java/com/denizk0461/studip/data/DummyData.kt index 74ed152..16caf40 100644 --- a/app/src/main/java/com/denizk0461/studip/data/DummyData.kt +++ b/app/src/main/java/com/denizk0461/studip/data/DummyData.kt @@ -1,5 +1,7 @@ package com.denizk0461.studip.data +import com.denizk0461.studip.model.StudIPEvent + object DummyData { val events: Array = arrayOf( diff --git a/app/src/main/java/com/denizk0461/studip/data/StudIPScraper.kt b/app/src/main/java/com/denizk0461/studip/data/StudIPScraper.kt new file mode 100644 index 0000000..ee9e092 --- /dev/null +++ b/app/src/main/java/com/denizk0461/studip/data/StudIPScraper.kt @@ -0,0 +1,29 @@ +package com.denizk0461.studip.data + +import android.content.Context +import android.graphics.Bitmap +import android.webkit.WebView +import android.webkit.WebViewClient + +class StudIPScraper : WebViewClient() { + + fun parse(context: Context) { + +// val res = Jsoup.connect("https://elearning.uni-bremen.de/index.php?again=yes") +// .data("loginname", "deniz7", "password", "xSh4d0wZ3r0_+nbrmn") +// .method(Connection.Method.POST) +// .execute() +// val doc = Jsoup.connect("https://elearning.uni-bremen.de/dispatch.php/calendar/schedule").get() +// Log.d("HELLO", doc.toString()) + } + + override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { + super.onPageStarted(view, url, favicon) + + } + + override fun onPageFinished(view: WebView?, url: String?) { + super.onPageFinished(view, url) + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/denizk0461/studip/db/EventDAO.kt b/app/src/main/java/com/denizk0461/studip/db/EventDAO.kt index 4a570b3..fd17936 100644 --- a/app/src/main/java/com/denizk0461/studip/db/EventDAO.kt +++ b/app/src/main/java/com/denizk0461/studip/db/EventDAO.kt @@ -4,7 +4,7 @@ import androidx.lifecycle.LiveData import androidx.room.Dao import androidx.room.Insert import androidx.room.Query -import com.denizk0461.studip.data.StudIPEvent +import com.denizk0461.studip.model.StudIPEvent @Dao interface EventDAO { diff --git a/app/src/main/java/com/denizk0461/studip/db/EventDatabase.kt b/app/src/main/java/com/denizk0461/studip/db/EventDatabase.kt index 8c14563..b0e2e16 100644 --- a/app/src/main/java/com/denizk0461/studip/db/EventDatabase.kt +++ b/app/src/main/java/com/denizk0461/studip/db/EventDatabase.kt @@ -4,7 +4,7 @@ import android.content.Context import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase -import com.denizk0461.studip.data.StudIPEvent +import com.denizk0461.studip.model.StudIPEvent @Database(entities = [StudIPEvent::class], version = 1) abstract class EventDatabase : RoomDatabase() { diff --git a/app/src/main/java/com/denizk0461/studip/db/EventRepository.kt b/app/src/main/java/com/denizk0461/studip/db/EventRepository.kt index e03705d..bf48597 100644 --- a/app/src/main/java/com/denizk0461/studip/db/EventRepository.kt +++ b/app/src/main/java/com/denizk0461/studip/db/EventRepository.kt @@ -2,7 +2,7 @@ package com.denizk0461.studip.db import android.app.Application import androidx.lifecycle.LiveData -import com.denizk0461.studip.data.StudIPEvent +import com.denizk0461.studip.model.StudIPEvent class EventRepository(app: Application) { diff --git a/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt b/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt index d03a966..ad2f898 100644 --- a/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt +++ b/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt @@ -11,6 +11,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.PagerSnapHelper import com.denizk0461.studip.adapter.StudIPEventPageAdapter import com.denizk0461.studip.data.DummyData +import com.denizk0461.studip.data.StudIPScraper import com.denizk0461.studip.databinding.FragmentEventBinding import com.denizk0461.studip.viewmodel.EventViewModel @@ -47,6 +48,8 @@ class EventFragment : Fragment() { binding.recyclerView.scheduleLayoutAnimation() } + viewModel.doAsync { StudIPScraper().parse(requireContext()) } + // binding.buttonFirst.setOnClickListener { // findNavController().navigate(R.id.action_FirstFragment_to_SecondFragment) // } diff --git a/app/src/main/java/com/denizk0461/studip/fragment/SecondFragment.kt b/app/src/main/java/com/denizk0461/studip/fragment/SecondFragment.kt index 94194cd..68173cd 100644 --- a/app/src/main/java/com/denizk0461/studip/fragment/SecondFragment.kt +++ b/app/src/main/java/com/denizk0461/studip/fragment/SecondFragment.kt @@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.webkit.WebChromeClient import androidx.navigation.fragment.findNavController import com.denizk0461.studip.R import com.denizk0461.studip.databinding.FragmentSecondBinding @@ -23,7 +24,7 @@ class SecondFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ): View { _binding = FragmentSecondBinding.inflate(inflater, container, false) return binding.root @@ -33,9 +34,12 @@ class SecondFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - binding.buttonSecond.setOnClickListener { - findNavController().navigate(R.id.action_SecondFragment_to_FirstFragment) - } +// binding.buttonSecond.setOnClickListener { +// findNavController().navigate(R.id.action_SecondFragment_to_FirstFragment) +// } + + binding.webview.webChromeClient = WebChromeClient() + binding.webview.loadUrl("https://elearning.uni-bremen.de/index.php?again=yes") } override fun onDestroyView() { diff --git a/app/src/main/java/com/denizk0461/studip/data/StudIPEvent.kt b/app/src/main/java/com/denizk0461/studip/model/StudIPEvent.kt similarity index 98% rename from app/src/main/java/com/denizk0461/studip/data/StudIPEvent.kt rename to app/src/main/java/com/denizk0461/studip/model/StudIPEvent.kt index fe244e9..ee19487 100644 --- a/app/src/main/java/com/denizk0461/studip/data/StudIPEvent.kt +++ b/app/src/main/java/com/denizk0461/studip/model/StudIPEvent.kt @@ -1,4 +1,4 @@ -package com.denizk0461.studip.data +package com.denizk0461.studip.model import androidx.room.Entity import androidx.room.Ignore diff --git a/app/src/main/java/com/denizk0461/studip/viewmodel/EventViewModel.kt b/app/src/main/java/com/denizk0461/studip/viewmodel/EventViewModel.kt index 6798ca3..0e05bd7 100644 --- a/app/src/main/java/com/denizk0461/studip/viewmodel/EventViewModel.kt +++ b/app/src/main/java/com/denizk0461/studip/viewmodel/EventViewModel.kt @@ -2,7 +2,7 @@ package com.denizk0461.studip.viewmodel import android.app.Application import androidx.lifecycle.LiveData -import com.denizk0461.studip.data.StudIPEvent +import com.denizk0461.studip.model.StudIPEvent class EventViewModel(app: Application) : TemplateViewModel(app) { diff --git a/app/src/main/res/layout/fragment_second.xml b/app/src/main/res/layout/fragment_second.xml index cd46189..c67776c 100644 --- a/app/src/main/res/layout/fragment_second.xml +++ b/app/src/main/res/layout/fragment_second.xml @@ -1,35 +1,15 @@ - - + android:layout_height="match_parent"/> -