Browse Source

added data persistency for WebView (API19-)

yattoz 4 years ago
parent
commit
cd1068e090

+ 8 - 13
app/src/main/java/fr/forum_thalie/tsumugi/ui/news/NewsFragment.kt View File

6
 import android.view.LayoutInflater
6
 import android.view.LayoutInflater
7
 import android.view.View
7
 import android.view.View
8
 import android.view.ViewGroup
8
 import android.view.ViewGroup
9
-import android.view.WindowManager
10
 import android.webkit.WebView
9
 import android.webkit.WebView
11
 import androidx.fragment.app.Fragment
10
 import androidx.fragment.app.Fragment
12
 import androidx.lifecycle.ViewModelProviders
11
 import androidx.lifecycle.ViewModelProviders
26
         container: ViewGroup?,
25
         container: ViewGroup?,
27
         savedInstanceState: Bundle?
26
         savedInstanceState: Bundle?
28
     ): View? {
27
     ): View? {
29
-        var root = inflater.inflate(R.layout.fragment_news, container, false) as View
30
         if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT)
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
             newsViewModel =
30
             newsViewModel =
37
-                ViewModelProviders.of(this).get(NewsViewModel::class.java)
31
+            ViewModelProviders.of(this).get(NewsViewModel::class.java)
38
 
32
 
39
             if (!newsViewModel.isWebViewLoaded)
33
             if (!newsViewModel.isWebViewLoaded)
40
             {
34
             {
41
                 try {
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
                 } catch (e: Exception) {
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
                 newsViewModel.isWebViewLoaded = true
44
                 newsViewModel.isWebViewLoaded = true
52
                 Log.d(tag, "webview already created!?")
47
                 Log.d(tag, "webview already created!?")
53
             }
48
             }
54
 
49
 
55
-            return root
50
+            return newsViewModel.root
56
         }
51
         }
57
 
52
 
58
         newsViewModel =
53
         newsViewModel =
59
                 ViewModelProviders.of(this).get(NewsViewModel::class.java)
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
         viewManager = LinearLayoutManager(context)
58
         viewManager = LinearLayoutManager(context)
64
         viewAdapter = NewsAdapter(newsViewModel.newsArray, context!!)
59
         viewAdapter = NewsAdapter(newsViewModel.newsArray, context!!)

+ 6 - 1
app/src/main/java/fr/forum_thalie/tsumugi/ui/news/NewsViewModel.kt View File

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

+ 1 - 6
app/src/main/java/fr/forum_thalie/tsumugi/ui/news/WebViewNews.kt View File

15
         webSetting.javaScriptEnabled = true
15
         webSetting.javaScriptEnabled = true
16
         webSetting.setSupportZoom(true)
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
         webSetting.setSupportMultipleWindows(true)
20
         webSetting.setSupportMultipleWindows(true)
26
         // needs to open target="_blank" links as KiwiIRC links have this attribute.
21
         // needs to open target="_blank" links as KiwiIRC links have this attribute.