Warning, /network/kdeconnect-android/src/org/kde/kdeconnect/UserInterface/About/LicensesActivity.kt is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: 2021 Maxim Leshchenko <cnmaks90@gmail.com>
0003 *
0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006
0007 package org.kde.kdeconnect.UserInterface.About
0008
0009 import android.os.Bundle
0010 import android.util.DisplayMetrics
0011 import android.view.Menu
0012 import android.view.MenuItem
0013 import androidx.appcompat.app.AppCompatActivity
0014 import androidx.recyclerview.widget.LinearLayoutManager
0015 import androidx.recyclerview.widget.LinearSmoothScroller
0016 import org.apache.commons.io.IOUtils
0017 import org.kde.kdeconnect_tp.R
0018 import org.kde.kdeconnect_tp.databinding.ActivityLicensesBinding
0019 import java.nio.charset.Charset
0020
0021 class LicensesActivity : AppCompatActivity() {
0022 private lateinit var binding: ActivityLicensesBinding
0023
0024 override fun onCreate(savedInstanceState: Bundle?) {
0025 super.onCreate(savedInstanceState)
0026
0027 binding = ActivityLicensesBinding.inflate(layoutInflater)
0028 setContentView(binding.root)
0029
0030 setSupportActionBar(binding.toolbarLayout.toolbar)
0031 supportActionBar!!.setDisplayHomeAsUpEnabled(true)
0032 supportActionBar!!.setDisplayShowHomeEnabled(true)
0033
0034 binding.licensesText.layoutManager = LinearLayoutManager(this)
0035 binding.licensesText.adapter = StringListAdapter(getLicenses().split("\n\n"))
0036 }
0037
0038 private fun getLicenses(): String = resources.openRawResource(R.raw.license).use { inputStream -> IOUtils.toString(inputStream, Charset.defaultCharset()) }
0039
0040 override fun onCreateOptionsMenu(menu: Menu): Boolean {
0041 menuInflater.inflate(R.menu.menu_licenses, menu)
0042 return super.onCreateOptionsMenu(menu)
0043 }
0044
0045 private fun smoothScrollToPosition(position: Int) {
0046 val linearSmoothScroller: LinearSmoothScroller = object : LinearSmoothScroller(this) {
0047 override fun calculateSpeedPerPixel(displayMetrics: DisplayMetrics): Float = 2.5F / displayMetrics.densityDpi
0048 }
0049
0050 linearSmoothScroller.targetPosition = position
0051 binding.licensesText.layoutManager?.startSmoothScroll(linearSmoothScroller)
0052 }
0053
0054 override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
0055 R.id.menu_rise_up -> {
0056 smoothScrollToPosition(0)
0057 true
0058 }
0059 R.id.menu_rise_down -> {
0060 smoothScrollToPosition(binding.licensesText.adapter!!.itemCount - 1)
0061 true
0062 }
0063 else -> super.onOptionsItemSelected(item)
0064 }
0065
0066 override fun onSupportNavigateUp(): Boolean {
0067 super.onBackPressed()
0068 return true
0069 }
0070 }