Преглед изворни кода

added data persistency for WebView (API19-)

yattoz пре 4 година
родитељ
комит
cd1068e090

+ 8 - 13
app/src/main/java/fr/forum_thalie/tsumugi/ui/news/NewsFragment.kt Прегледај датотеку

@@ -6,7 +6,6 @@ import android.util.Log
6 6
 import android.view.LayoutInflater
7 7
 import android.view.View
8 8
 import android.view.ViewGroup
9
-import android.view.WindowManager
10 9
 import android.webkit.WebView
11 10
 import androidx.fragment.app.Fragment
12 11
 import androidx.lifecycle.ViewModelProviders
@@ -26,24 +25,20 @@ class NewsFragment : Fragment() {
26 25
         container: ViewGroup?,
27 26
         savedInstanceState: Bundle?
28 27
     ): View? {
29
-        var root = inflater.inflate(R.layout.fragment_news, container, false) as View
30 28
         if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT)
31 29
         {
32
-            root = inflater.inflate(R.layout.fragment_news, container, false) as androidx.coordinatorlayout.widget.CoordinatorLayout
33
-            activity?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
34
-            val webView = WebView(context)
35
-
36 30
             newsViewModel =
37
-                ViewModelProviders.of(this).get(NewsViewModel::class.java)
31
+            ViewModelProviders.of(this).get(NewsViewModel::class.java)
38 32
 
39 33
             if (!newsViewModel.isWebViewLoaded)
40 34
             {
41 35
                 try {
42
-                    val webViewS = root.findViewById<WebView>(R.id.news_webview)
43
-                    val webViewChat = WebViewNews(webViewS as WebView)
44
-                    webViewChat.start()
36
+                    newsViewModel.root = inflater.inflate(R.layout.fragment_chat, container, false)
37
+                    newsViewModel.webView = newsViewModel.root.findViewById(R.id.news_webview)
38
+                    newsViewModel.webViewNews = WebViewNews(newsViewModel.webView as WebView)
39
+                    newsViewModel.webViewNews!!.start()
45 40
                 } catch (e: Exception) {
46
-                    root = inflater.inflate(R.layout.fragment_error_chat, container, false)
41
+                    newsViewModel.root = inflater.inflate(R.layout.fragment_error_chat, container, false)
47 42
                 }
48 43
 
49 44
                 newsViewModel.isWebViewLoaded = true
@@ -52,13 +47,13 @@ class NewsFragment : Fragment() {
52 47
                 Log.d(tag, "webview already created!?")
53 48
             }
54 49
 
55
-            return root
50
+            return newsViewModel.root
56 51
         }
57 52
 
58 53
         newsViewModel =
59 54
                 ViewModelProviders.of(this).get(NewsViewModel::class.java)
60 55
 
61
-        root = inflater.inflate(R.layout.fragment_news, container, false) as androidx.swiperefreshlayout.widget.SwipeRefreshLayout
56
+        val root = inflater.inflate(R.layout.fragment_news, container, false) as androidx.swiperefreshlayout.widget.SwipeRefreshLayout
62 57
 
63 58
         viewManager = LinearLayoutManager(context)
64 59
         viewAdapter = NewsAdapter(newsViewModel.newsArray, context!!)

+ 6 - 1
app/src/main/java/fr/forum_thalie/tsumugi/ui/news/NewsViewModel.kt Прегледај датотеку

@@ -2,6 +2,8 @@ package fr.forum_thalie.tsumugi.ui.news
2 2
 
3 3
 import android.os.Build
4 4
 import android.util.Log
5
+import android.view.View
6
+import android.webkit.WebView
5 7
 import androidx.lifecycle.ViewModel
6 8
 import androidx.recyclerview.widget.RecyclerView
7 9
 import com.prof.rssparser.Parser
@@ -17,12 +19,15 @@ import java.net.URL
17 19
 import java.text.SimpleDateFormat
18 20
 import java.util.*
19 21
 import kotlin.collections.ArrayList
20
-import kotlin.math.max
21 22
 import kotlin.math.min
22 23
 
23 24
 
24 25
 class NewsViewModel : ViewModel() {
25 26
 
27
+    lateinit var root: View
28
+    var webView: WebView? = null
29
+    var webViewNews: WebViewNews? = null
30
+
26 31
     val newsArray : ArrayList<News> = ArrayList()
27 32
     var isWebViewLoaded = false
28 33
 

+ 1 - 6
app/src/main/java/fr/forum_thalie/tsumugi/ui/news/WebViewNews.kt Прегледај датотеку

@@ -15,12 +15,7 @@ class WebViewNews(private val webView: WebView) {
15 15
         webSetting.javaScriptEnabled = true
16 16
         webSetting.setSupportZoom(true)
17 17
 
18
-        /* TODO: in the future, it could be nice to have a parameters screen where you can:
19
-     - Set the text zoom
20
-     - Set your username (to not type it every time, would it be possible?)
21
-     - Hide the chat?
22
-     - do more? */
23
-        webSetting.textZoom = 90
18
+        webSetting.textZoom = 100
24 19
 
25 20
         webSetting.setSupportMultipleWindows(true)
26 21
         // needs to open target="_blank" links as KiwiIRC links have this attribute.