Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 88e0c16f authored by Ricki Hirner's avatar Ricki Hirner
Browse files

AboutActivity: use ViewModel

parent b348f54f
Loading
Loading
Loading
Loading
+26 −32
Original line number Original line Diff line number Diff line
@@ -8,7 +8,7 @@


package at.bitfire.davdroid.ui
package at.bitfire.davdroid.ui


import android.content.Context
import android.app.Application
import android.os.Bundle
import android.os.Bundle
import android.text.Spanned
import android.text.Spanned
import android.view.*
import android.view.*
@@ -17,19 +17,20 @@ import androidx.core.text.HtmlCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import androidx.fragment.app.FragmentPagerAdapter
import androidx.loader.app.LoaderManager
import androidx.lifecycle.AndroidViewModel
import androidx.loader.content.AsyncTaskLoader
import androidx.lifecycle.MutableLiveData
import androidx.loader.content.Loader
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import at.bitfire.davdroid.App
import at.bitfire.davdroid.App
import at.bitfire.davdroid.BuildConfig
import at.bitfire.davdroid.BuildConfig
import at.bitfire.davdroid.R
import at.bitfire.davdroid.R
import at.bitfire.davdroid.log.Logger
import com.mikepenz.aboutlibraries.LibsBuilder
import com.mikepenz.aboutlibraries.LibsBuilder
import kotlinx.android.synthetic.main.about_davdroid.*
import kotlinx.android.synthetic.main.about.*
import kotlinx.android.synthetic.main.activity_about.*
import kotlinx.android.synthetic.main.activity_about.*
import org.apache.commons.io.IOUtils
import org.apache.commons.io.IOUtils
import java.text.SimpleDateFormat
import java.text.SimpleDateFormat
import java.util.*
import java.util.*
import kotlin.concurrent.thread


class AboutActivity: AppCompatActivity() {
class AboutActivity: AppCompatActivity() {


@@ -44,7 +45,6 @@ class AboutActivity: AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_about)
        setContentView(R.layout.activity_about)


        setSupportActionBar(toolbar)
        setSupportActionBar(toolbar)
@@ -83,15 +83,15 @@ class AboutActivity: AppCompatActivity() {
                            .withFields(R.string::class.java.fields)
                            .withFields(R.string::class.java.fields)
                            .withLicenseShown(true)
                            .withLicenseShown(true)
                            .supportFragment()
                            .supportFragment()
                    else -> DavdroidFragment()
                    else -> AppFragment()
                }!!
                }!!
    }
    }




    class DavdroidFragment: Fragment(), LoaderManager.LoaderCallbacks<Spanned> {
    class AppFragment: Fragment() {


        override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?) =
        override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?) =
                inflater.inflate(R.layout.about_davdroid, container, false)!!
                inflater.inflate(R.layout.about, container, false)!!


        override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
            app_name.text = getString(R.string.app_name)
            app_name.text = getString(R.string.app_name)
@@ -102,35 +102,29 @@ class AboutActivity: AppCompatActivity() {


            if (true /* open-source version */) {
            if (true /* open-source version */) {
                warranty.setText(R.string.about_license_info_no_warranty)
                warranty.setText(R.string.about_license_info_no_warranty)
                LoaderManager.getInstance(this).initLoader(0, null, this)
            }
        }

        override fun onCreateLoader(id: Int, args: Bundle?) =
                HtmlAssetLoader(requireActivity(), "gplv3.html")


        override fun onLoadFinished(loader: Loader<Spanned>, license: Spanned?) {
                val model = ViewModelProviders.of(this).get(LicenseModel::class.java)
            Logger.log.info("LOAD FINISHED")
                model.htmlText.observe(this, Observer { spanned ->
            license_text.text = license
                    license_text.text = spanned
                })
            }
            }

        override fun onLoaderReset(loader: Loader<Spanned>) {
        }
        }


    }
    }


    class HtmlAssetLoader(
    class LicenseModel(
            context: Context,
            application: Application
            val fileName: String
    ): AndroidViewModel(application) {
    ): AsyncTaskLoader<Spanned>(context) {


        override fun onStartLoading() {
        val htmlText = MutableLiveData<Spanned>()
            forceLoad()
        }


        override fun loadInBackground(): Spanned =
        init {
                context.resources.assets.open(fileName).use {
            thread {
                    HtmlCompat.fromHtml(IOUtils.toString(it, Charsets.UTF_8), HtmlCompat.FROM_HTML_MODE_LEGACY)
                getApplication<Application>().resources.assets.open("gplv3.html").use {
                    val spanned = HtmlCompat.fromHtml(IOUtils.toString(it, Charsets.UTF_8), HtmlCompat.FROM_HTML_MODE_LEGACY)
                    htmlText.postValue(spanned)
                }
            }
        }
        }


    }
    }