diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt b/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt index 88a272b..cc02f9a 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt @@ -24,14 +24,11 @@ import android.view.WindowManager import android.widget.TextView import android.widget.Toast import androidx.appcompat.widget.LinearLayoutCompat -import androidx.fragment.app.Fragment -import androidx.navigation.fragment.findNavController import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.github.droidworksstudio.launcher.Constants import com.github.droidworksstudio.launcher.R import com.github.droidworksstudio.launcher.accessibility.MyAccessibilityService import com.github.droidworksstudio.launcher.data.entities.AppInfo -import com.github.droidworksstudio.launcher.listener.OnSwipeTouchListener import com.github.droidworksstudio.launcher.ui.activities.FakeHomeActivity import java.util.Calendar import java.util.Date @@ -42,6 +39,14 @@ import kotlin.math.sqrt class AppHelper @Inject constructor() { fun resetDefaultLauncher(context: Context) { + val manufacturer = Build.MANUFACTURER.lowercase() + when (manufacturer) { + "google", "essential" -> runningStockAndroid(context) + else -> notRunningStockAndroid(context) + } + } + + private fun runningStockAndroid(context: Context) { try { val packageManager = context.packageManager val componentName = ComponentName(context, FakeHomeActivity::class.java) @@ -63,18 +68,20 @@ class AppHelper @Inject constructor() { ) } catch (e: Exception) { e.printStackTrace() - // Additional step to open the launcher settings if the first method fails + } + } + + private fun notRunningStockAndroid(context: Context) { + try { + val intent = Intent("android.settings.HOME_SETTINGS") + context.startActivity(intent) + } catch (e: ActivityNotFoundException) { + // Fallback to general settings if specific launcher settings are not found try { - val intent = Intent("android.settings.HOME_SETTINGS") + val intent = Intent(Settings.ACTION_SETTINGS) context.startActivity(intent) - } catch (e: ActivityNotFoundException) { - // Fallback to general settings if specific launcher settings are not found - try { - val intent = Intent(Settings.ACTION_SETTINGS) - context.startActivity(intent) - } catch (e: Exception) { - e.printStackTrace() - } + } catch (e: Exception) { + e.printStackTrace() } } } @@ -119,11 +126,21 @@ class AppHelper @Inject constructor() { fun dayNightMod(context: Context, view: View) { when (context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) { Configuration.UI_MODE_NIGHT_YES -> { - view.setBackgroundColor(context.resources.getColor(R.color.blackTrans25, context.theme)) + view.setBackgroundColor( + context.resources.getColor( + R.color.blackTrans25, + context.theme + ) + ) } Configuration.UI_MODE_NIGHT_NO -> { - view.setBackgroundColor(context.resources.getColor(R.color.whiteTrans25, context.theme)) + view.setBackgroundColor( + context.resources.getColor( + R.color.whiteTrans25, + context.theme + ) + ) } } } @@ -149,6 +166,7 @@ class AppHelper @Inject constructor() { showToast(context, "Failed to open the application") } } + fun launchClock(context: Context) { try { val intent = Intent(AlarmClock.ACTION_SHOW_ALARMS) @@ -190,7 +208,7 @@ class AppHelper @Inject constructor() { } catch (e: ActivityNotFoundException) { // Digital Wellbeing app is not installed or cannot be opened // Handle this case as needed - showToast(context,"Digital Wellbeing is not available on this device.") + showToast(context, "Digital Wellbeing is not available on this device.") } } @@ -239,7 +257,7 @@ class AppHelper @Inject constructor() { } - fun showToast(context: Context,message: String) { + fun showToast(context: Context, message: String) { Toast.makeText(context, message, Toast.LENGTH_SHORT).show() } @@ -273,33 +291,39 @@ class AppHelper @Inject constructor() { windowManager.defaultDisplay.getMetrics(metrics) val widthInches = metrics.widthPixels / metrics.xdpi val heightInches = metrics.heightPixels / metrics.ydpi - val diagonalInches = sqrt(widthInches.toDouble().pow(2.0) + heightInches.toDouble().pow(2.0)) + val diagonalInches = + sqrt(widthInches.toDouble().pow(2.0) + heightInches.toDouble().pow(2.0)) if (diagonalInches >= 7.0) return true return false } fun wordOfTheDay(resources: Resources): String { - val dailyWordsArray = resources.getStringArray(R.array.settings_appearance_daily_word_default) + val dailyWordsArray = + resources.getStringArray(R.array.settings_appearance_daily_word_default) val dayOfYear = Calendar.getInstance().get(Calendar.DAY_OF_YEAR) - val wordIndex = (dayOfYear - 1) % dailyWordsArray.size // Subtracting 1 to align with array indexing + val wordIndex = + (dayOfYear - 1) % dailyWordsArray.size // Subtracting 1 to align with array indexing return dailyWordsArray[wordIndex] } - fun shareAppButton(context: Context){ + fun shareAppButton(context: Context) { val shareIntent = Intent(Intent.ACTION_SEND) shareIntent.type = "text/plain" shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Share Application") - shareIntent.putExtra(Intent.EXTRA_TEXT, "https://f-droid.org/packages/" + context.packageName) + shareIntent.putExtra( + Intent.EXTRA_TEXT, + "https://f-droid.org/packages/" + context.packageName + ) context.startActivity(Intent.createChooser(shareIntent, "Share Application")) } - fun githubButton(context: Context){ + fun githubButton(context: Context) { val uri = Uri.parse("https://github.com/DroidWorksStudio/EasyLauncher") val intent = Intent(Intent.ACTION_VIEW, uri) context.startActivity(intent) } - fun feedbackButton(context: Context){ + fun feedbackButton(context: Context) { val emailIntent = Intent(Intent.ACTION_SENDTO) emailIntent.data = Uri.parse("mailto:droidworksstuido@063240.xyz") emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Easy Launcher") @@ -336,6 +360,7 @@ class AppHelper @Inject constructor() { } builder.show() } + else -> { return } diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/drawer/DrawFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/drawer/DrawFragment.kt index 3a5d46d..8bfcc13 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/drawer/DrawFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/drawer/DrawFragment.kt @@ -143,7 +143,7 @@ class DrawFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener, @SuppressLint("ClickableViewAccessibility") private fun observeSwipeTouchListener() { - binding.touchArea.setOnTouchListener(getSwipeGestureListener(context)) + binding.mainView.setOnTouchListener(getSwipeGestureListener(context)) } private fun getSwipeGestureListener(context: Context): View.OnTouchListener { diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/favorite/FavoriteFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/favorite/FavoriteFragment.kt index 2839bdb..d0d7589 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/favorite/FavoriteFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/favorite/FavoriteFragment.kt @@ -13,7 +13,6 @@ import androidx.annotation.RequiresApi import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope -import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.StaggeredGridLayoutManager @@ -25,7 +24,6 @@ import com.github.droidworksstudio.launcher.helper.FingerprintHelper import com.github.droidworksstudio.launcher.helper.PreferenceHelper import com.github.droidworksstudio.launcher.listener.OnItemClickedListener import com.github.droidworksstudio.launcher.listener.OnItemMoveListener -import com.github.droidworksstudio.launcher.listener.OnSwipeTouchListener import com.github.droidworksstudio.launcher.viewmodel.AppViewModel import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch @@ -77,7 +75,6 @@ class FavoriteFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener context = requireContext() setupRecyclerView() - observeSwipeTouchListener() observeFavorite() observeHomeAppOrder() } @@ -91,20 +88,6 @@ class FavoriteFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener } } - @SuppressLint("ClickableViewAccessibility") - private fun observeSwipeTouchListener() { - binding.touchArea.setOnTouchListener(getSwipeGestureListener(context)) - } - - private fun getSwipeGestureListener(context: Context): View.OnTouchListener { - return object : OnSwipeTouchListener(context) { - override fun onSwipeLeft() { - super.onSwipeLeft() - findNavController().popBackStack() - } - } - } - private fun handleDragAndDrop(oldPosition: Int, newPosition: Int) { val items = favoriteAdapter.currentList.toMutableList() Collections.swap(items, oldPosition, newPosition) diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenFragment.kt index 08460e8..399f2b2 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenFragment.kt @@ -12,7 +12,6 @@ import androidx.annotation.RequiresApi import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope -import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.StaggeredGridLayoutManager import com.github.droidworksstudio.launcher.R import com.github.droidworksstudio.launcher.data.entities.AppInfo @@ -20,7 +19,6 @@ import com.github.droidworksstudio.launcher.databinding.FragmentHiddenBinding import com.github.droidworksstudio.launcher.helper.AppHelper import com.github.droidworksstudio.launcher.helper.FingerprintHelper import com.github.droidworksstudio.launcher.listener.OnItemClickedListener -import com.github.droidworksstudio.launcher.listener.OnSwipeTouchListener import com.github.droidworksstudio.launcher.ui.bottomsheetdialog.AppInfoBottomSheetFragment import com.github.droidworksstudio.launcher.viewmodel.AppViewModel import dagger.hilt.android.AndroidEntryPoint @@ -66,7 +64,6 @@ class HiddenFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener, context = requireContext() setupRecyclerView() - observeSwipeTouchListener() observeHiddenApps() } @@ -79,20 +76,6 @@ class HiddenFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener, } - @SuppressLint("ClickableViewAccessibility") - private fun observeSwipeTouchListener() { - binding.touchArea.setOnTouchListener(getSwipeGestureListener(context)) - } - - private fun getSwipeGestureListener(context: Context): View.OnTouchListener { - return object : OnSwipeTouchListener(context) { - override fun onSwipeLeft() { - super.onSwipeLeft() - findNavController().popBackStack() - } - } - } - private fun observeHiddenApps() { viewModel.compareInstalledAppInfo() @Suppress("DEPRECATION") diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt index af89d4b..5652018 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt @@ -113,7 +113,7 @@ class HomeFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener, @SuppressLint("ClickableViewAccessibility") private fun initSwipeTouchListener() { - binding.touchArea.setOnTouchListener(getSwipeGestureListener(context)) + binding.nestScrollView.setOnTouchListener(getSwipeGestureListener(context)) binding.clock.setOnClickListener { appHelper.launchClock(context) } binding.date.setOnClickListener { appHelper.launchCalendar(context) } diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsFragment.kt index 142bf50..0093e94 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsFragment.kt @@ -3,7 +3,6 @@ package com.github.droidworksstudio.launcher.ui.settings import android.annotation.SuppressLint import android.content.Intent import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -63,8 +62,13 @@ class SettingsFragment : Fragment(), ScrollEventListener { initializeInjectedDependencies() observeClickListener() - val packageInfo = requireContext().packageManager.getPackageInfo(requireContext().packageName, 0) - binding.versionInfo.text = getString(R.string.settings_version, getString(R.string.app_name), packageInfo.versionName) + val packageInfo = + requireContext().packageManager.getPackageInfo(requireContext().packageName, 0) + binding.versionInfo.text = getString( + R.string.settings_version, + getString(R.string.app_name), + packageInfo.versionName + ) } @SuppressLint("SetTextI18n") @@ -142,12 +146,20 @@ class SettingsFragment : Fragment(), ScrollEventListener { binding.backupView.setOnClickListener { appHelper.backupSharedPreferences(requireContext()) - Toast.makeText(requireContext(), getString(R.string.settings_reload_app_backup), Toast.LENGTH_SHORT).show() + Toast.makeText( + requireContext(), + getString(R.string.settings_reload_app_backup), + Toast.LENGTH_SHORT + ).show() } binding.restoreView.setOnClickListener { appHelper.restoreSharedPreferences(requireContext()) - Toast.makeText(requireContext(), getString(R.string.settings_reload_app_restore), Toast.LENGTH_SHORT).show() + Toast.makeText( + requireContext(), + getString(R.string.settings_reload_app_restore), + Toast.LENGTH_SHORT + ).show() restartApp() } } @@ -178,7 +190,10 @@ class SettingsFragment : Fragment(), ScrollEventListener { } binding.gesturesLockSwitchCompat.setOnCheckedChangeListener { _, isChecked -> - appHelper.enableAppAsAccessibilityService(requireContext(), preferenceHelper.tapLockScreen) + appHelper.enableAppAsAccessibilityService( + requireContext(), + preferenceHelper.tapLockScreen + ) preferenceViewModel.setDoubleTapLock(isChecked) } diff --git a/app/src/main/res/layout/content_settings.xml b/app/src/main/res/layout/content_settings.xml index f9b504c..19064c4 100644 --- a/app/src/main/res/layout/content_settings.xml +++ b/app/src/main/res/layout/content_settings.xml @@ -15,6 +15,6 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:navGraph="@navigation/settings_graph" /> + app:navGraph="@navigation/nav_graph" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_draw.xml b/app/src/main/res/layout/fragment_draw.xml index 7894f61..11eedbb 100644 --- a/app/src/main/res/layout/fragment_draw.xml +++ b/app/src/main/res/layout/fragment_draw.xml @@ -40,7 +40,7 @@ app:queryBackground="@null" app:searchIcon="@null" app:queryHint="@string/search" - tools:ignore="VisualLintTextFieldSize"/> + tools:ignore="VisualLintTextFieldSize" /> @@ -51,13 +51,6 @@ - - - - diff --git a/app/src/main/res/layout/fragment_hidden.xml b/app/src/main/res/layout/fragment_hidden.xml index da33aa4..440cc4a 100644 --- a/app/src/main/res/layout/fragment_hidden.xml +++ b/app/src/main/res/layout/fragment_hidden.xml @@ -37,11 +37,4 @@ android:layout_marginTop="92dp" app:layout_constraintTop_toBottomOf="@id/topTextView" /> - - diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index df19ea4..5bbaec7 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -1,18 +1,15 @@ - + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + android:layout_height="wrap_content" /> - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index eaeedc3..8d78a2b 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -32,7 +32,7 @@ android:layout_marginTop="48dp" android:text="@string/settings_name" android:textSize="@dimen/text_super_large" - style="@style/TextDefaultStyle"/> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> @@ -125,7 +125,7 @@ android:layout_margin="20dp" android:text="@string/settings_title_home_behavior_preferences" android:textSize="@dimen/text_super_large" - style="@style/TextDefaultStyle"/> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> @@ -487,7 +487,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" tools:ignore="RtlHardcoded" - style="@style/TextDefaultStyle"/> + style="@style/TextDefaultStyle" /> @@ -576,7 +576,7 @@ android:layout_margin="20dp" android:text="@string/settings_title_gestures" android:textSize="@dimen/text_super_large" - style="@style/TextDefaultStyle"/> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + android:scaleX="0.7" /> @@ -627,7 +627,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" tools:ignore="RtlHardcoded" - style="@style/TextDefaultStyle"/> + style="@style/TextDefaultStyle" /> + android:scaleX="0.7" /> @@ -658,7 +658,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" tools:ignore="RtlHardcoded" - style="@style/TextDefaultStyle"/> + style="@style/TextDefaultStyle" /> + android:scaleX="0.7" /> @@ -685,7 +685,7 @@ android:layout_margin="20dp" android:text="@string/settings_title_backups" android:textSize="@dimen/text_super_large" - style="@style/TextDefaultStyle"/> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + tools:ignore="MissingConstraints"> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> + style="@style/TextDefaultStyle" /> @@ -777,11 +777,4 @@ - - \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 64f6cca..d6cd2c6 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -44,8 +44,23 @@ + android:label="@string/home_fragment_label" + tools:layout="@layout/fragment_settings"> + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/settings_graph.xml b/app/src/main/res/navigation/settings_graph.xml deleted file mode 100644 index dfcb206..0000000 --- a/app/src/main/res/navigation/settings_graph.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file