added data persistency for WebView (API19-)

remotes/origin/devel
yattoz 2019-12-10 19:19:40 +01:00
parent 459e044f06
commit cd1068e090
3 changed files with 15 additions and 20 deletions

View File

@ -6,7 +6,6 @@ import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.WindowManager
import android.webkit.WebView import android.webkit.WebView
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProviders import androidx.lifecycle.ViewModelProviders
@ -26,24 +25,20 @@ class NewsFragment : Fragment() {
container: ViewGroup?, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View? { ): View? {
var root = inflater.inflate(R.layout.fragment_news, container, false) as View
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT)
{ {
root = inflater.inflate(R.layout.fragment_news, container, false) as androidx.coordinatorlayout.widget.CoordinatorLayout
activity?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
val webView = WebView(context)
newsViewModel = newsViewModel =
ViewModelProviders.of(this).get(NewsViewModel::class.java) ViewModelProviders.of(this).get(NewsViewModel::class.java)
if (!newsViewModel.isWebViewLoaded) if (!newsViewModel.isWebViewLoaded)
{ {
try { try {
val webViewS = root.findViewById<WebView>(R.id.news_webview) newsViewModel.root = inflater.inflate(R.layout.fragment_chat, container, false)
val webViewChat = WebViewNews(webViewS as WebView) newsViewModel.webView = newsViewModel.root.findViewById(R.id.news_webview)
webViewChat.start() newsViewModel.webViewNews = WebViewNews(newsViewModel.webView as WebView)
newsViewModel.webViewNews!!.start()
} catch (e: Exception) { } catch (e: Exception) {
root = inflater.inflate(R.layout.fragment_error_chat, container, false) newsViewModel.root = inflater.inflate(R.layout.fragment_error_chat, container, false)
} }
newsViewModel.isWebViewLoaded = true newsViewModel.isWebViewLoaded = true
@ -52,13 +47,13 @@ class NewsFragment : Fragment() {
Log.d(tag, "webview already created!?") Log.d(tag, "webview already created!?")
} }
return root return newsViewModel.root
} }
newsViewModel = newsViewModel =
ViewModelProviders.of(this).get(NewsViewModel::class.java) ViewModelProviders.of(this).get(NewsViewModel::class.java)
root = inflater.inflate(R.layout.fragment_news, container, false) as androidx.swiperefreshlayout.widget.SwipeRefreshLayout val root = inflater.inflate(R.layout.fragment_news, container, false) as androidx.swiperefreshlayout.widget.SwipeRefreshLayout
viewManager = LinearLayoutManager(context) viewManager = LinearLayoutManager(context)
viewAdapter = NewsAdapter(newsViewModel.newsArray, context!!) viewAdapter = NewsAdapter(newsViewModel.newsArray, context!!)

View File

@ -2,6 +2,8 @@ package fr.forum_thalie.tsumugi.ui.news
import android.os.Build import android.os.Build
import android.util.Log import android.util.Log
import android.view.View
import android.webkit.WebView
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.prof.rssparser.Parser import com.prof.rssparser.Parser
@ -17,12 +19,15 @@ import java.net.URL
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
import kotlin.math.max
import kotlin.math.min import kotlin.math.min
class NewsViewModel : ViewModel() { class NewsViewModel : ViewModel() {
lateinit var root: View
var webView: WebView? = null
var webViewNews: WebViewNews? = null
val newsArray : ArrayList<News> = ArrayList() val newsArray : ArrayList<News> = ArrayList()
var isWebViewLoaded = false var isWebViewLoaded = false

View File

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