diff --git a/README.MD b/README.MD index 410353a0..ab37e4bf 100644 --- a/README.MD +++ b/README.MD @@ -61,6 +61,7 @@ + ## 💬 Contact diff --git a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt index 985826d5..25686649 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt @@ -16,6 +16,7 @@ import android.provider.Settings import android.util.Log import android.view.View import android.view.WindowInsets +import android.widget.CheckBox import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat @@ -34,6 +35,7 @@ import com.deniscerri.ytdlnis.ui.more.settings.SettingsActivity import com.deniscerri.ytdlnis.util.UpdateUtil import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.navigation.NavigationBarView +import com.google.android.material.navigation.NavigationView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import java.io.BufferedReader @@ -50,7 +52,7 @@ class MainActivity : AppCompatActivity() { private lateinit var preferences: SharedPreferences private lateinit var resultViewModel: ResultViewModel private lateinit var cookieViewModel: CookieViewModel - private lateinit var navigationView: NavigationBarView + private lateinit var navigationView: View private lateinit var navHostFragment : NavHostFragment @@ -72,18 +74,25 @@ class MainActivity : AppCompatActivity() { navHostFragment = supportFragmentManager.findFragmentById(R.id.frame_layout) as NavHostFragment val navController = navHostFragment.findNavController() - navigationView = findViewById(R.id.bottomNavigationView) - - window.decorView.setOnApplyWindowInsetsListener { view: View, windowInsets: WindowInsets? -> - val windowInsetsCompat = WindowInsetsCompat.toWindowInsetsCompat( - windowInsets!!, view - ) - val isImeVisible = windowInsetsCompat.isVisible(WindowInsetsCompat.Type.ime()) - navigationView.visibility = - if (isImeVisible) View.GONE else View.VISIBLE - view.onApplyWindowInsets(windowInsets) + navigationView = try { + findViewById(R.id.bottomNavigationView) + }catch (e: Exception){ + findViewById(R.id.navigationView) } - var sharedPreferences = getSharedPreferences("root_preferences", Activity.MODE_PRIVATE) + + if (navigationView is NavigationBarView){ + window.decorView.setOnApplyWindowInsetsListener { view: View, windowInsets: WindowInsets? -> + val windowInsetsCompat = WindowInsetsCompat.toWindowInsetsCompat( + windowInsets!!, view + ) + val isImeVisible = windowInsetsCompat.isVisible(WindowInsetsCompat.Type.ime()) + navigationView.visibility = + if (isImeVisible) View.GONE else View.VISIBLE + view.onApplyWindowInsets(windowInsets) + } + } + + val sharedPreferences = getSharedPreferences("root_preferences", Activity.MODE_PRIVATE) val startDestination = sharedPreferences.getString("start_destination", "") val graph = navHostFragment.navController.navInflater.inflate(R.navigation.nav_graph) @@ -96,35 +105,58 @@ class MainActivity : AppCompatActivity() { - navigationView.setupWithNavController(navController) - navigationView.setOnItemReselectedListener { - when (it.itemId) { - R.id.homeFragment -> { - (navHostFragment.childFragmentManager.primaryNavigationFragment!! as HomeFragment).scrollToTop() - } - R.id.historyFragment -> { - val intent = Intent(context, DownloadQueueActivity::class.java) - startActivity(intent) - } - R.id.moreFragment -> { - //navController.navigate(R.id.settingsFragment) - val intent = Intent(context, SettingsActivity::class.java) - startActivity(intent) + if (navigationView is NavigationBarView){ + (navigationView as NavigationBarView).setupWithNavController(navController) + (navigationView as NavigationBarView).setOnItemReselectedListener { + when (it.itemId) { + R.id.homeFragment -> { + (navHostFragment.childFragmentManager.primaryNavigationFragment!! as HomeFragment).scrollToTop() + } + R.id.historyFragment -> { + val intent = Intent(context, DownloadQueueActivity::class.java) + startActivity(intent) + } + R.id.moreFragment -> { + //navController.navigate(R.id.settingsFragment) + val intent = Intent(context, SettingsActivity::class.java) + startActivity(intent) + } } } } + if (navigationView is NavigationView){ + (navigationView as NavigationView).setupWithNavController(navController) + //terminate button + (navigationView as NavigationView).menu.getItem(7).setOnMenuItemClickListener { + if (sharedPreferences.getBoolean("ask_terminate_app", true)){ + var doNotShowAgain = false + val terminateDialog = MaterialAlertDialogBuilder(this) + terminateDialog.setTitle(getString(R.string.confirm_delete_history)) + val dialogView = layoutInflater.inflate(R.layout.dialog_terminate_app, null) + val checkbox = dialogView.findViewById(R.id.doNotShowAgain) + terminateDialog.setView(dialogView) + checkbox.setOnCheckedChangeListener { compoundButton, b -> + doNotShowAgain = compoundButton.isChecked + } + + terminateDialog.setNegativeButton(getString(R.string.cancel)) { dialogInterface: DialogInterface, _: Int -> dialogInterface.cancel() } + terminateDialog.setPositiveButton(getString(R.string.ok)) { _: DialogInterface?, _: Int -> + if (doNotShowAgain){ + sharedPreferences.edit().putBoolean("ask_terminate_app", false).apply() + } + finishAndRemoveTask() + exitProcess(0) + } + terminateDialog.show() + }else{ + finishAndRemoveTask() + exitProcess(0) + } + true + } + } + cookieViewModel.updateCookiesFile() - - //TODO PLAYLIST FORMAT UPDATING -// val infoUtil = InfoUtil(context) -// val list = arrayOf( -// "https://www.youtube.com/watch?v=tYcqn48SMT8", -// "https://www.youtube.com/watch?v=QNrNKPKe5oc" -// ) -// infoUtil.getFormatsTest(list.toList()){ -// Log.e("gff", it.toString()) -// } - val intent = intent handleIntents(intent) } @@ -138,11 +170,11 @@ class MainActivity : AppCompatActivity() { } fun disableBottomNavigation(){ - navigationView.menu.forEach { it.isEnabled = false } + (navigationView as NavigationView).menu.forEach { it.isEnabled = false } } fun enableBottomNavigation(){ - navigationView.menu.forEach { it.isEnabled = true } + (navigationView as NavigationView).menu.forEach { it.isEnabled = true } } override fun onResume() { diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadBottomSheetDialog.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadBottomSheetDialog.kt index 87e16b90..2e46c02f 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadBottomSheetDialog.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadBottomSheetDialog.kt @@ -67,7 +67,7 @@ class DownloadBottomSheetDialog(private val resultItem: ResultItem, private val behavior = BottomSheetBehavior.from(view.parent as View) val displayMetrics = DisplayMetrics() requireActivity().windowManager.defaultDisplay.getMetrics(displayMetrics) - behavior.peekHeight = displayMetrics.heightPixels - 400 + behavior.peekHeight = displayMetrics.heightPixels - 700 } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/ActiveDownloadsFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/ActiveDownloadsFragment.kt index 31c54bc2..ffbf7994 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/ActiveDownloadsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/ActiveDownloadsFragment.kt @@ -66,11 +66,14 @@ class ActiveDownloadsFragment() : Fragment(), ActiveDownloadAdapter.OnItemClickL activeRecyclerView = view.findViewById(R.id.download_recyclerview) activeRecyclerView.adapter = activeDownloads - val landScape = resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE && ! resources.getBoolean(R.bool.isTablet) - if (landScape){ + val landScape = resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE + val displayMetrics: DisplayMetrics = requireContext().resources.displayMetrics + val dpWidth: Float = displayMetrics.widthPixels / displayMetrics.density + if (dpWidth > 1200 && landScape){ + activeRecyclerView.layoutManager = GridLayoutManager(context, 3) + }else if (landScape || dpWidth >= 700){ activeRecyclerView.layoutManager = GridLayoutManager(context, 2) } - if (resources.getBoolean(R.bool.isTablet)) activeRecyclerView.layoutManager = GridLayoutManager(context, 3) downloadViewModel.activeDownloads.observe(viewLifecycleOwner) { activeDownloads.submitList(it) diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/CancelledDownloadsFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/CancelledDownloadsFragment.kt index 0ed7479f..f4887209 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/CancelledDownloadsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/CancelledDownloadsFragment.kt @@ -6,6 +6,7 @@ import android.content.res.Configuration import android.graphics.Canvas import android.graphics.Color import android.os.Bundle +import android.util.DisplayMetrics import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -76,11 +77,14 @@ class CancelledDownloadsFragment : Fragment(), GenericDownloadAdapter.OnItemClic val itemTouchHelper = ItemTouchHelper(simpleCallback) itemTouchHelper.attachToRecyclerView(cancelledRecyclerView) - val landScape = resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE && ! resources.getBoolean(R.bool.isTablet) - if (landScape){ + val landScape = resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE + val displayMetrics: DisplayMetrics = requireContext().resources.displayMetrics + val dpWidth: Float = displayMetrics.widthPixels / displayMetrics.density + if (dpWidth > 1200 && landScape){ + cancelledRecyclerView.layoutManager = GridLayoutManager(context, 3) + }else if (landScape || dpWidth >= 700){ cancelledRecyclerView.layoutManager = GridLayoutManager(context, 2) } - if (resources.getBoolean(R.bool.isTablet)) cancelledRecyclerView.layoutManager = GridLayoutManager(context, 3) downloadViewModel.cancelledDownloads.observe(viewLifecycleOwner) { items = it.toMutableList() diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/ErroredDownloadsFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/ErroredDownloadsFragment.kt index 94123a36..e5c803d0 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/ErroredDownloadsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/ErroredDownloadsFragment.kt @@ -80,11 +80,14 @@ class ErroredDownloadsFragment : Fragment(), GenericDownloadAdapter.OnItemClickL val itemTouchHelper = ItemTouchHelper(simpleCallback) itemTouchHelper.attachToRecyclerView(erroredRecyclerView) - val landScape = resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE && ! resources.getBoolean(R.bool.isTablet) - if (landScape){ + val landScape = resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE + val displayMetrics: DisplayMetrics = requireContext().resources.displayMetrics + val dpWidth: Float = displayMetrics.widthPixels / displayMetrics.density + if (dpWidth > 1200 && landScape){ + erroredRecyclerView.layoutManager = GridLayoutManager(context, 3) + }else if (landScape || dpWidth >= 700){ erroredRecyclerView.layoutManager = GridLayoutManager(context, 2) } - if (resources.getBoolean(R.bool.isTablet)) erroredRecyclerView.layoutManager = GridLayoutManager(context, 3) downloadViewModel.erroredDownloads.observe(viewLifecycleOwner) { items = it.toMutableList() diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/HistoryFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/HistoryFragment.kt index 8dcc831b..957d5c73 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/HistoryFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/HistoryFragment.kt @@ -113,13 +113,16 @@ class HistoryFragment : Fragment(), HistoryAdapter.OnItemClickListener{ requireActivity() ) recyclerView = view.findViewById(R.id.recyclerviewhistorys) - if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE && ! resources.getBoolean(R.bool.isTablet)){ - recyclerView?.layoutManager = GridLayoutManager(context, 2) - } - if (resources.getBoolean(R.bool.isTablet)) recyclerView?.layoutManager = GridLayoutManager(context, 3) - recyclerView?.adapter = historyAdapter + val landScape = resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE + val displayMetrics: DisplayMetrics = requireContext().resources.displayMetrics + val dpWidth: Float = displayMetrics.widthPixels / displayMetrics.density + if (dpWidth > 1200 && landScape){ + recyclerView?.layoutManager = GridLayoutManager(context, 3) + }else if (landScape || dpWidth >= 700){ + recyclerView?.layoutManager = GridLayoutManager(context, 2) + } noResults?.visibility = GONE diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/QueuedDownloadsFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/QueuedDownloadsFragment.kt index 62d0f2cb..1d69809f 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/QueuedDownloadsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/QueuedDownloadsFragment.kt @@ -88,11 +88,14 @@ class QueuedDownloadsFragment : Fragment(), GenericDownloadAdapter.OnItemClickLi val itemTouchHelper = ItemTouchHelper(simpleCallback) itemTouchHelper.attachToRecyclerView(queuedRecyclerView) - val landScape = resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE && ! resources.getBoolean(R.bool.isTablet) - if (landScape){ + val landScape = resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE + val displayMetrics: DisplayMetrics = requireContext().resources.displayMetrics + val dpWidth: Float = displayMetrics.widthPixels / displayMetrics.density + if (dpWidth > 1200 && landScape){ + queuedRecyclerView.layoutManager = GridLayoutManager(context, 3) + }else if (landScape || dpWidth >= 700){ queuedRecyclerView.layoutManager = GridLayoutManager(context, 2) } - if (resources.getBoolean(R.bool.isTablet)) queuedRecyclerView.layoutManager = GridLayoutManager(context, 3) downloadViewModel.queuedDownloads.observe(viewLifecycleOwner) { items = it.toMutableList() diff --git a/app/src/main/res/layout-sw800dp-land/activity_main.xml b/app/src/main/res/layout-sw800dp-land/activity_main.xml new file mode 100644 index 00000000..0be84496 --- /dev/null +++ b/app/src/main/res/layout-sw800dp-land/activity_main.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp-land/fragment_home.xml b/app/src/main/res/layout-sw800dp-land/fragment_home.xml new file mode 100644 index 00000000..36365c1c --- /dev/null +++ b/app/src/main/res/layout-sw800dp-land/fragment_home.xml @@ -0,0 +1,279 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/activity_main.xml b/app/src/main/res/layout-sw800dp/activity_main.xml index 8e74f56b..22ec92b3 100644 --- a/app/src/main/res/layout-sw800dp/activity_main.xml +++ b/app/src/main/res/layout-sw800dp/activity_main.xml @@ -13,6 +13,7 @@ android:gravity="center" android:text="Incognito" android:textStyle="bold" + android:translationZ="20dp" android:visibility="gone" android:padding="5dp" android:background="?colorPrimaryContainer" @@ -20,29 +21,40 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - - + app:layout_constraintTop_toBottomOf="@+id/incognito_header"> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_home.xml b/app/src/main/res/layout-sw800dp/fragment_home.xml index 0729b4bc..86bf9a4b 100644 --- a/app/src/main/res/layout-sw800dp/fragment_home.xml +++ b/app/src/main/res/layout-sw800dp/fragment_home.xml @@ -153,7 +153,7 @@ android:layout_marginRight="10dp" android:clipToPadding="false" android:paddingBottom="100dp" - app:spanCount="3" + app:spanCount="2" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" /> @@ -172,15 +172,74 @@ android:layout_margin="10dp" android:orientation="vertical"> - + - + + + - + - + - + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/download_bottom_sheet.xml b/app/src/main/res/layout/download_bottom_sheet.xml index 6ae34a10..57b2dfe6 100644 --- a/app/src/main/res/layout/download_bottom_sheet.xml +++ b/app/src/main/res/layout/download_bottom_sheet.xml @@ -109,9 +109,10 @@