added terminate app button

This commit is contained in:
deniscerri 2023-03-25 16:27:46 +01:00
parent 660cab7702
commit 506929b453
No known key found for this signature in database
GPG key ID: 95C43D517D830350
8 changed files with 39 additions and 24 deletions

View file

@ -13,38 +13,26 @@ import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.provider.Settings import android.provider.Settings
import android.util.Log import android.util.Log
import android.view.MenuItem
import android.view.View import android.view.View
import android.view.WindowInsets import android.view.WindowInsets
import android.widget.TextView import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.findNavController
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController import androidx.navigation.ui.setupWithNavController
import com.deniscerri.ytdlnis.database.viewmodel.ResultViewModel import com.deniscerri.ytdlnis.database.viewmodel.ResultViewModel
import com.deniscerri.ytdlnis.databinding.ActivityMainBinding
import com.deniscerri.ytdlnis.ui.HomeFragment import com.deniscerri.ytdlnis.ui.HomeFragment
import com.deniscerri.ytdlnis.ui.downloads.DownloadQueueActivity import com.deniscerri.ytdlnis.ui.downloads.DownloadQueueActivity
import com.deniscerri.ytdlnis.ui.downloads.HistoryFragment
import com.deniscerri.ytdlnis.ui.more.MoreFragment
import com.deniscerri.ytdlnis.ui.more.settings.SettingsActivity import com.deniscerri.ytdlnis.ui.more.settings.SettingsActivity
import com.deniscerri.ytdlnis.util.UpdateUtil import com.deniscerri.ytdlnis.util.UpdateUtil
import com.google.android.material.appbar.MaterialToolbar
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import java.io.BufferedReader import java.io.BufferedReader
import java.io.File import java.io.File
import java.io.InputStreamReader import java.io.InputStreamReader

View file

@ -79,7 +79,7 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
private var resultsList: List<ResultItem?>? = null private var resultsList: List<ResultItem?>? = null
private var selectedObjects: ArrayList<ResultItem>? = null private var selectedObjects: ArrayList<ResultItem>? = null
private var fileUtil: FileUtil? = null private var fileUtil: FileUtil? = null
private var firstBoot = true private var quickLaunchSheet = false
private var sharedPreferences: SharedPreferences? = null private var sharedPreferences: SharedPreferences? = null
private var _binding : FragmentHomeBinding? = null private var _binding : FragmentHomeBinding? = null
@ -93,6 +93,7 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
fragmentView = inflater.inflate(R.layout.fragment_home, container, false) fragmentView = inflater.inflate(R.layout.fragment_home, container, false)
activity = getActivity() activity = getActivity()
mainActivity = activity as MainActivity? mainActivity = activity as MainActivity?
quickLaunchSheet = false
return fragmentView return fragmentView
} }
@ -147,14 +148,14 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
} }
}else if (resultViewModel.itemCount.value!! == 1){ }else if (resultViewModel.itemCount.value!! == 1){
if (sharedPreferences!!.getBoolean("download_card", true)){ if (sharedPreferences!!.getBoolean("download_card", true)){
if(it.size == 1 && !firstBoot && parentFragmentManager.findFragmentByTag("downloadSingleSheet") == null){ if(it.size == 1 && quickLaunchSheet && parentFragmentManager.findFragmentByTag("downloadSingleSheet") == null){
showSingleDownloadSheet(it[0], DownloadViewModel.Type.valueOf(sharedPreferences!!.getString("preferred_download_type", "video")!!)) showSingleDownloadSheet(it[0], DownloadViewModel.Type.valueOf(sharedPreferences!!.getString("preferred_download_type", "video")!!))
} }
} }
}else{ }else{
downloadAllFabCoordinator!!.visibility = GONE downloadAllFabCoordinator!!.visibility = GONE
} }
firstBoot = false quickLaunchSheet = true
} }
resultViewModel.loadingItems.observe(viewLifecycleOwner){ resultViewModel.loadingItems.observe(viewLifecycleOwner){

View file

@ -18,6 +18,7 @@ import com.deniscerri.ytdlnis.databinding.FragmentHomeBinding
import com.deniscerri.ytdlnis.ui.downloads.DownloadQueueActivity import com.deniscerri.ytdlnis.ui.downloads.DownloadQueueActivity
import com.deniscerri.ytdlnis.ui.more.downloadLogs.DownloadLogListActivity import com.deniscerri.ytdlnis.ui.more.downloadLogs.DownloadLogListActivity
import com.deniscerri.ytdlnis.ui.more.settings.SettingsActivity import com.deniscerri.ytdlnis.ui.more.settings.SettingsActivity
import kotlin.system.exitProcess
class MoreFragment : Fragment() { class MoreFragment : Fragment() {
private lateinit var mainSharedPreferences: SharedPreferences private lateinit var mainSharedPreferences: SharedPreferences
@ -25,6 +26,7 @@ class MoreFragment : Fragment() {
private lateinit var logs: TextView private lateinit var logs: TextView
private lateinit var commandTemplates: TextView private lateinit var commandTemplates: TextView
private lateinit var downloadQueue: TextView private lateinit var downloadQueue: TextView
private lateinit var terminateApp: TextView
private lateinit var settings: TextView private lateinit var settings: TextView
private lateinit var mainActivity: MainActivity private lateinit var mainActivity: MainActivity
override fun onCreateView( override fun onCreateView(
@ -44,10 +46,18 @@ class MoreFragment : Fragment() {
logs = view.findViewById(R.id.logs) logs = view.findViewById(R.id.logs)
commandTemplates = view.findViewById(R.id.command_templates) commandTemplates = view.findViewById(R.id.command_templates)
downloadQueue = view.findViewById(R.id.download_queue) downloadQueue = view.findViewById(R.id.download_queue)
terminateApp = view.findViewById(R.id.terminate)
settings = view.findViewById(R.id.settings) settings = view.findViewById(R.id.settings)
val navHostFragment = parentFragmentManager.findFragmentById(R.id.frame_layout) val navHostFragment = parentFragmentManager.findFragmentById(R.id.frame_layout)
if (mainSharedPreferences.getBoolean("log_downloads", false)) {
logs.visibility = View.VISIBLE
}else {
logs.visibility = View.GONE
}
terminal.setOnClickListener { terminal.setOnClickListener {
val intent = Intent(context, TerminalActivity::class.java) val intent = Intent(context, TerminalActivity::class.java)
startActivity(intent) startActivity(intent)
@ -68,6 +78,10 @@ class MoreFragment : Fragment() {
startActivity(intent) startActivity(intent)
} }
terminateApp.setOnClickListener {
exitProcess(0)
}
settings.setOnClickListener { settings.setOnClickListener {
val intent = Intent(context, SettingsActivity::class.java) val intent = Intent(context, SettingsActivity::class.java)
startActivity(intent) startActivity(intent)
@ -79,13 +93,4 @@ class MoreFragment : Fragment() {
const val TAG = "MoreFragment" const val TAG = "MoreFragment"
} }
override fun onResume() {
super.onResume()
if (mainSharedPreferences.getBoolean("log_downloads", false)) {
logs.visibility = View.VISIBLE
}else {
logs.visibility = View.GONE
}
}
} }

View file

@ -0,0 +1,5 @@
<vector android:height="24dp"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="?android:colorAccent" android:pathData="M13,3h-2v10h2L13,3zM17.83,5.17l-1.42,1.42C17.99,7.86 19,9.81 19,12c0,3.87 -3.13,7 -7,7s-7,-3.13 -7,-7c0,-2.19 1.01,-4.14 2.58,-5.42L6.17,5.17C4.23,6.82 3,9.26 3,12c0,4.97 4.03,9 9,9s9,-4.03 9,-9c0,-2.74 -1.23,-5.18 -3.17,-6.83z"/>
</vector>

View file

@ -34,6 +34,7 @@
app:layout_constraintHorizontal_weight="0.3" app:layout_constraintHorizontal_weight="0.3"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:background="?attr/colorSurfaceVariant"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="H,16:9" app:layout_constraintDimensionRatio="H,16:9"
app:layout_constraintEnd_toStartOf="@+id/download_item_data" app:layout_constraintEnd_toStartOf="@+id/download_item_data"

View file

@ -69,6 +69,19 @@
android:paddingHorizontal="15dp" android:paddingHorizontal="15dp"
app:drawableLeftCompat="@drawable/ic_concurrent_downloads" /> app:drawableLeftCompat="@drawable/ic_concurrent_downloads" />
<TextView
android:id="@+id/terminate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="35dp"
android:textSize="16sp"
android:paddingVertical="15dp"
android:text="@string/kill_app"
android:textStyle="bold"
android:paddingHorizontal="15dp"
app:drawableLeftCompat="@drawable/ic_power" />
<View style="@style/Divider.Horizontal" /> <View style="@style/Divider.Horizontal" />
<TextView <TextView

View file

@ -176,4 +176,5 @@
<string name="link_you_copied">Linku i kopjuar</string> <string name="link_you_copied">Linku i kopjuar</string>
<string name="restrict_filenames">Limito Titujt</string> <string name="restrict_filenames">Limito Titujt</string>
<string name="restrict_filenames_summary">Limito emrin e skedarit me vetëm me karakteret ASCII, dhe shmag \"&amp;\" dhe hapësirat në emrin e skedarit</string> <string name="restrict_filenames_summary">Limito emrin e skedarit me vetëm me karakteret ASCII, dhe shmag \"&amp;\" dhe hapësirat në emrin e skedarit</string>
<string name="kill_app">Ndalo Aplikacionin</string>
</resources> </resources>

View file

@ -183,4 +183,5 @@
<string name="link_you_copied">Link you copied</string> <string name="link_you_copied">Link you copied</string>
<string name="restrict_filenames">Restrict Filenames</string> <string name="restrict_filenames">Restrict Filenames</string>
<string name="restrict_filenames_summary"><![CDATA[Restrict filenames to only ASCII characters, and avoid \"&\" and spaces in filenames]]></string> <string name="restrict_filenames_summary"><![CDATA[Restrict filenames to only ASCII characters, and avoid \"&\" and spaces in filenames]]></string>
<string name="kill_app">Terminate App</string>
</resources> </resources>