added data persistency for WebView (API19-)
parent
459e044f06
commit
cd1068e090
|
|
@ -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!!)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue