diff options
| author | Tanuj <thetanuj@hotmail.com> | 2022-09-15 14:13:38 +0530 |
|---|---|---|
| committer | Tanuj <thetanuj@hotmail.com> | 2022-09-15 14:13:38 +0530 |
| commit | a0e3f1693afdec0724dec182c8c366dc349970ee (patch) | |
| tree | c0e95a0168083a228b9983820d98ee62554f6773 /app/src/main/java | |
| parent | c85bff62776fe0ce054a5f976e9dc490858c4d9b (diff) | |
| download | SidePhOnelauncher-a0e3f1693afdec0724dec182c8c366dc349970ee.tar.gz SidePhOnelauncher-a0e3f1693afdec0724dec182c8c366dc349970ee.tar.bz2 SidePhOnelauncher-a0e3f1693afdec0724dec182c8c366dc349970ee.zip | |
Using viewbinding
Diffstat (limited to 'app/src/main/java')
| -rw-r--r-- | app/src/main/java/app/olauncher/MainActivity.kt | 30 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt | 18 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt | 70 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/ui/HomeFragment.kt | 162 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/ui/SettingsFragment.kt | 225 |
5 files changed, 265 insertions, 240 deletions
diff --git a/app/src/main/java/app/olauncher/MainActivity.kt b/app/src/main/java/app/olauncher/MainActivity.kt index 887ee1d..a868a51 100644 --- a/app/src/main/java/app/olauncher/MainActivity.kt +++ b/app/src/main/java/app/olauncher/MainActivity.kt @@ -18,8 +18,8 @@ import androidx.navigation.NavController import androidx.navigation.Navigation import app.olauncher.data.Constants import app.olauncher.data.Prefs +import app.olauncher.databinding.ActivityMainBinding import app.olauncher.helper.* -import kotlinx.android.synthetic.main.activity_main.* import java.util.* class MainActivity : AppCompatActivity() { @@ -27,6 +27,7 @@ class MainActivity : AppCompatActivity() { private lateinit var prefs: Prefs private lateinit var navController: NavController private lateinit var viewModel: MainViewModel + private lateinit var binding: ActivityMainBinding override fun onBackPressed() { if (navController.currentDestination?.id != R.id.mainFragment) @@ -37,7 +38,8 @@ class MainActivity : AppCompatActivity() { prefs = Prefs(this) AppCompatDelegate.setDefaultNightMode(prefs.appTheme) super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) + binding = ActivityMainBinding.inflate(layoutInflater) + setContentView(binding.root) navController = Navigation.findNavController(this, R.id.nav_host_fragment) viewModel = ViewModelProvider(this).get(MainViewModel::class.java) @@ -81,18 +83,18 @@ class MainActivity : AppCompatActivity() { } private fun initClickListeners() { - okay.setOnClickListener { - messageLayout.visibility = View.GONE + binding.okay.setOnClickListener { + binding.messageLayout.visibility = View.GONE viewModel.showMessageDialog("") } - closeOneLink.setOnClickListener { - supportOlauncherLayout.visibility = View.GONE + binding.closeOneLink.setOnClickListener { + binding.supportOlauncherLayout.visibility = View.GONE } - copyOneLink.setOnClickListener { + binding.copyOneLink.setOnClickListener { copyToClipboard(getAffiliateUrl()) - supportOlauncherLayout.visibility = View.GONE + binding.supportOlauncherLayout.visibility = View.GONE } - openOneLink.setOnClickListener { + binding.openOneLink.setOnClickListener { openUrl(getAffiliateUrl()) } } @@ -105,7 +107,7 @@ class MainActivity : AppCompatActivity() { showMessage(it) } viewModel.showSupportDialog.observe(this) { - supportOlauncherLayout.isVisible = it + binding.supportOlauncherLayout.isVisible = it } } @@ -118,8 +120,8 @@ class MainActivity : AppCompatActivity() { } private fun backToHomeScreen() { - messageLayout.visibility = View.GONE - supportOlauncherLayout.visibility = View.GONE + binding.messageLayout.visibility = View.GONE + binding.supportOlauncherLayout.visibility = View.GONE // Whenever home button is pressed or user leaves the launcher, // pop all the fragments except main if (navController.currentDestination?.id != R.id.mainFragment) @@ -148,8 +150,8 @@ class MainActivity : AppCompatActivity() { private fun showMessage(message: String) { if (message.isEmpty()) return - messageTextView.text = message - messageLayout.visibility = View.VISIBLE + binding.messageTextView.text = message + binding.messageLayout.visibility = View.VISIBLE } private fun getAffiliateUrl(): String { diff --git a/app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt b/app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt index 15d6ddb..23466f4 100644 --- a/app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt +++ b/app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt @@ -7,10 +7,9 @@ import android.widget.Filter import android.widget.Filterable import android.widget.TextView import androidx.recyclerview.widget.RecyclerView -import app.olauncher.R import app.olauncher.data.AppModel import app.olauncher.data.Constants -import kotlinx.android.synthetic.main.adapter_app_drawer.view.* +import app.olauncher.databinding.AdapterAppDrawerBinding import java.text.Normalizer class AppDrawerAdapter( @@ -18,7 +17,7 @@ class AppDrawerAdapter( private val appLabelGravity: Int, private val clickListener: (AppModel) -> Unit, private val appInfoListener: (AppModel) -> Unit, - private val appHideListener: (Int, AppModel) -> Unit + private val appHideListener: (Int, AppModel) -> Unit, ) : RecyclerView.Adapter<AppDrawerAdapter.ViewHolder>(), Filterable { private var appFilter = createAppFilter() @@ -26,10 +25,7 @@ class AppDrawerAdapter( var appFilteredList: MutableList<AppModel> = mutableListOf() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder = - ViewHolder( - LayoutInflater.from(parent.context) - .inflate(R.layout.adapter_app_drawer, parent, false) - ) + ViewHolder(AdapterAppDrawerBinding.inflate(LayoutInflater.from(parent.context), parent, false)) override fun onBindViewHolder(holder: ViewHolder, position: Int) { if (appFilteredList.size == 0) return @@ -93,17 +89,17 @@ class AppDrawerAdapter( clickListener(appFilteredList[0]) } - class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val appHideButton: TextView = itemView.appHide + class ViewHolder(private val binding: AdapterAppDrawerBinding) : RecyclerView.ViewHolder(binding.root) { + val appHideButton: TextView = binding.appHide fun bind( flag: Int, appLabelGravity: Int, appModel: AppModel, listener: (AppModel) -> Unit, - appInfoListener: (AppModel) -> Unit + appInfoListener: (AppModel) -> Unit, ) = - with(itemView) { + with(binding) { appHideLayout.visibility = View.GONE appHideButton.text = (if (flag == Constants.FLAG_HIDDEN_APPS) "SHOW" else "HIDE") appTitle.text = appModel.appLabel diff --git a/app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt b/app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt index b7b7fed..cf9516c 100644 --- a/app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt +++ b/app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt @@ -21,22 +21,22 @@ import app.olauncher.R import app.olauncher.data.AppModel import app.olauncher.data.Constants import app.olauncher.data.Prefs +import app.olauncher.databinding.FragmentAppDrawerBinding import app.olauncher.helper.openAppInfo import app.olauncher.helper.openUrl import app.olauncher.helper.showToastShort -import kotlinx.android.synthetic.main.fragment_app_drawer.* class AppDrawerFragment : Fragment() { private lateinit var prefs: Prefs private lateinit var viewModel: MainViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle?, - ): View? { - return inflater.inflate(R.layout.fragment_app_drawer, container, false) + private var _binding: FragmentAppDrawerBinding? = null + private val binding get() = _binding!! + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + _binding = FragmentAppDrawerBinding.inflate(inflater, container, false) + return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -49,10 +49,10 @@ class AppDrawerFragment : Fragment() { val flag = arguments?.getInt("flag", Constants.FLAG_LAUNCH_APP) ?: Constants.FLAG_LAUNCH_APP val rename = arguments?.getBoolean("rename", false) ?: false if (rename) { - appRename.setOnClickListener { renameListener(flag) } + binding.appRename.setOnClickListener { renameListener(flag) } if (prefs.renameTipShown.not()) { - appDrawerTip.text = getString(R.string.tip_start_typing_for_rename) - appDrawerTip.visibility = View.VISIBLE + binding.appDrawerTip.text = getString(R.string.tip_start_typing_for_rename) + binding.appDrawerTip.visibility = View.VISIBLE prefs.renameTipShown = true } } @@ -65,17 +65,17 @@ class AppDrawerFragment : Fragment() { appShowHideListener() ) - val searchTextView = search.findViewById<TextView>(R.id.search_src_text) + val searchTextView = binding.search.findViewById<TextView>(R.id.search_src_text) if (searchTextView != null) searchTextView.gravity = prefs.appLabelAlignment initViewModel(flag, viewModel, appAdapter) - recyclerView.layoutManager = LinearLayoutManager(requireContext()) - recyclerView.adapter = appAdapter - recyclerView.addOnScrollListener(getRecyclerViewOnScrollListener()) + binding.recyclerView.layoutManager = LinearLayoutManager(requireContext()) + binding.recyclerView.adapter = appAdapter + binding.recyclerView.addOnScrollListener(getRecyclerViewOnScrollListener()) - if (flag == Constants.FLAG_HIDDEN_APPS) search.queryHint = "Hidden apps" - search.setOnQueryTextListener(object : SearchView.OnQueryTextListener { + if (flag == Constants.FLAG_HIDDEN_APPS) binding.search.queryHint = "Hidden apps" + binding.search.setOnQueryTextListener(object : SearchView.OnQueryTextListener { override fun onQueryTextSubmit(query: String?): Boolean { if (query?.startsWith("!") == true) requireContext().openUrl(Constants.URL_DUCK_SEARCH + query.replace(" ", "%20")) @@ -87,15 +87,15 @@ class AppDrawerFragment : Fragment() { override fun onQueryTextChange(newText: String?): Boolean { newText?.let { appAdapter.filter.filter(it.trim()) - appRename.isVisible = rename && it.trim().isNotEmpty() - appDrawerTip.visibility = View.GONE + binding.appRename.isVisible = rename && it.trim().isNotEmpty() + binding.appDrawerTip.visibility = View.GONE } return false } }) - appDrawerTip.setOnClickListener { - appDrawerTip.isSelected = false - appDrawerTip.isSelected = true + binding.appDrawerTip.setOnClickListener { + binding.appDrawerTip.isSelected = false + binding.appDrawerTip.isSelected = true } } @@ -120,21 +120,18 @@ class AppDrawerFragment : Fragment() { }) viewModel.firstOpen.observe(viewLifecycleOwner) { - if (it) appDrawerTip.visibility = View.VISIBLE - appDrawerTip.postDelayed({ - if (appDrawerTip != null) - appDrawerTip.isSelected = true - }, 1500) + if (it) binding.appDrawerTip.visibility = View.VISIBLE + binding.appDrawerTip.isSelected = true } } override fun onStart() { super.onStart() - search.showKeyboard() + binding.search.showKeyboard() } override fun onStop() { - search.hideKeyboard() + binding.search.hideKeyboard() super.onStop() } @@ -153,7 +150,7 @@ class AppDrawerFragment : Fragment() { private fun populateAppList(apps: List<AppModel>, appAdapter: AppDrawerAdapter) { val animation = AnimationUtils.loadLayoutAnimation(requireContext(), R.anim.layout_anim_from_bottom) - recyclerView.layoutAnimation = animation + binding.recyclerView.layoutAnimation = animation appAdapter.setAppList(apps.toMutableList()) } @@ -197,10 +194,10 @@ class AppDrawerFragment : Fragment() { } private fun renameListener(flag: Int) { - val name = search.query.toString().trim() + val name = binding.search.query.toString().trim() if (name.isEmpty()) { showToastShort(requireContext(), "Type a new app name first") - search.showKeyboard(true) + binding.search.showKeyboard(true) return } @@ -228,21 +225,26 @@ class AppDrawerFragment : Fragment() { RecyclerView.SCROLL_STATE_DRAGGING -> { onTop = !recyclerView.canScrollVertically(-1) - if (onTop) search.hideKeyboard() + if (onTop) binding.search.hideKeyboard() if (onTop && !recyclerView.canScrollVertically(1)) findNavController().popBackStack() } RecyclerView.SCROLL_STATE_IDLE -> { if (!recyclerView.canScrollVertically(1)) { - search.hideKeyboard() + binding.search.hideKeyboard() } else if (!recyclerView.canScrollVertically(-1)) { if (onTop) findNavController().popBackStack() - else search.showKeyboard() + else binding.search.showKeyboard() } } } } } } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } }
\ No newline at end of file diff --git a/app/src/main/java/app/olauncher/ui/HomeFragment.kt b/app/src/main/java/app/olauncher/ui/HomeFragment.kt index 6afe4d3..5855d6f 100644 --- a/app/src/main/java/app/olauncher/ui/HomeFragment.kt +++ b/app/src/main/java/app/olauncher/ui/HomeFragment.kt @@ -19,10 +19,10 @@ import app.olauncher.R import app.olauncher.data.AppModel import app.olauncher.data.Constants import app.olauncher.data.Prefs +import app.olauncher.databinding.FragmentHomeBinding import app.olauncher.helper.* import app.olauncher.listener.OnSwipeTouchListener import app.olauncher.listener.ViewSwipeTouchListener -import kotlinx.android.synthetic.main.fragment_home.* class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener { @@ -32,8 +32,12 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener private lateinit var deviceManager: DevicePolicyManager private lateinit var vibrator: Vibrator - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_home, container, false) + private var _binding: FragmentHomeBinding? = null + private val binding get() = _binding!! + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + _binding = FragmentHomeBinding.inflate(inflater, container, false) + return binding.root } override fun onActivityCreated(savedInstanceState: Bundle?) { @@ -93,9 +97,9 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener private fun initObservers() { if (prefs.firstSettingsOpen) { - firstRunTips.visibility = View.VISIBLE - setDefaultLauncher.visibility = View.GONE - } else firstRunTips.visibility = View.GONE + binding.firstRunTips.visibility = View.VISIBLE + binding.setDefaultLauncher.visibility = View.GONE + } else binding.firstRunTips.visibility = View.GONE viewModel.refreshHome.observe(viewLifecycleOwner) { populateHomeScreen(it) @@ -105,9 +109,9 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener prefs.homeBottomAlignment = false setHomeAlignment() } - if (firstRunTips.visibility == View.VISIBLE) return@Observer - if (it) setDefaultLauncher.visibility = View.GONE - else setDefaultLauncher.visibility = View.VISIBLE + if (binding.firstRunTips.visibility == View.VISIBLE) return@Observer + if (it) binding.setDefaultLauncher.visibility = View.GONE + else binding.setDefaultLauncher.visibility = View.VISIBLE }) viewModel.homeAppAlignment.observe(viewLifecycleOwner) { setHomeAlignment(it) @@ -119,51 +123,51 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener private fun initSwipeTouchListener() { val context = requireContext() - mainLayout.setOnTouchListener(getSwipeGestureListener(context)) - homeApp1.setOnTouchListener(getViewSwipeTouchListener(context, homeApp1)) - homeApp2.setOnTouchListener(getViewSwipeTouchListener(context, homeApp2)) - homeApp3.setOnTouchListener(getViewSwipeTouchListener(context, homeApp3)) - homeApp4.setOnTouchListener(getViewSwipeTouchListener(context, homeApp4)) - homeApp5.setOnTouchListener(getViewSwipeTouchListener(context, homeApp5)) - homeApp6.setOnTouchListener(getViewSwipeTouchListener(context, homeApp6)) - homeApp7.setOnTouchListener(getViewSwipeTouchListener(context, homeApp7)) - homeApp8.setOnTouchListener(getViewSwipeTouchListener(context, homeApp8)) + binding.mainLayout.setOnTouchListener(getSwipeGestureListener(context)) + binding.homeApp1.setOnTouchListener(getViewSwipeTouchListener(context, binding.homeApp1)) + binding.homeApp2.setOnTouchListener(getViewSwipeTouchListener(context, binding.homeApp2)) + binding.homeApp3.setOnTouchListener(getViewSwipeTouchListener(context, binding.homeApp3)) + binding.homeApp4.setOnTouchListener(getViewSwipeTouchListener(context, binding.homeApp4)) + binding.homeApp5.setOnTouchListener(getViewSwipeTouchListener(context, binding.homeApp5)) + binding.homeApp6.setOnTouchListener(getViewSwipeTouchListener(context, binding.homeApp6)) + binding.homeApp7.setOnTouchListener(getViewSwipeTouchListener(context, binding.homeApp7)) + binding.homeApp8.setOnTouchListener(getViewSwipeTouchListener(context, binding.homeApp8)) } private fun initClickListeners() { - lock.setOnClickListener(this) - clock.setOnClickListener(this) - date.setOnClickListener(this) - setDefaultLauncher.setOnClickListener(this) + binding.lock.setOnClickListener(this) + binding.clock.setOnClickListener(this) + binding.date.setOnClickListener(this) + binding.setDefaultLauncher.setOnClickListener(this) } private fun setHomeAlignment(horizontalGravity: Int = prefs.homeAlignment) { val verticalGravity = if (prefs.homeBottomAlignment) Gravity.BOTTOM else Gravity.CENTER_VERTICAL - homeAppsLayout.gravity = horizontalGravity or verticalGravity - dateTimeLayout.gravity = horizontalGravity - homeApp1.gravity = horizontalGravity - homeApp2.gravity = horizontalGravity - homeApp3.gravity = horizontalGravity - homeApp4.gravity = horizontalGravity - homeApp5.gravity = horizontalGravity - homeApp6.gravity = horizontalGravity - homeApp7.gravity = horizontalGravity - homeApp8.gravity = horizontalGravity + binding.homeAppsLayout.gravity = horizontalGravity or verticalGravity + binding.dateTimeLayout.gravity = horizontalGravity + binding.homeApp1.gravity = horizontalGravity + binding.homeApp2.gravity = horizontalGravity + binding.homeApp3.gravity = horizontalGravity + binding.homeApp4.gravity = horizontalGravity + binding.homeApp5.gravity = horizontalGravity + binding.homeApp6.gravity = horizontalGravity + binding.homeApp7.gravity = horizontalGravity + binding.homeApp8.gravity = horizontalGravity } private fun populateDateTime() { when (prefs.dateTimeVisibility) { Constants.DateTime.DATE_ONLY -> { - dateTimeLayout.visibility = View.VISIBLE - clock.visibility = View.GONE - date.visibility = View.VISIBLE + binding.dateTimeLayout.visibility = View.VISIBLE + binding.clock.visibility = View.GONE + binding.date.visibility = View.VISIBLE } Constants.DateTime.ON -> { - dateTimeLayout.visibility = View.VISIBLE - clock.visibility = View.VISIBLE - date.visibility = View.VISIBLE + binding.dateTimeLayout.visibility = View.VISIBLE + binding.clock.visibility = View.VISIBLE + binding.date.visibility = View.VISIBLE } - else -> dateTimeLayout.visibility = View.GONE + else -> binding.dateTimeLayout.visibility = View.GONE } } @@ -174,57 +178,57 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener val homeAppsNum = prefs.homeAppsNum if (homeAppsNum == 0) return - homeApp1.visibility = View.VISIBLE - if (!setHomeAppText(homeApp1, prefs.appName1, prefs.appPackage1, prefs.appUser1)) { + binding.homeApp1.visibility = View.VISIBLE + if (!setHomeAppText(binding.homeApp1, prefs.appName1, prefs.appPackage1, prefs.appUser1)) { prefs.appName1 = "" prefs.appPackage1 = "" } if (homeAppsNum == 1) return - homeApp2.visibility = View.VISIBLE - if (!setHomeAppText(homeApp2, prefs.appName2, prefs.appPackage2, prefs.appUser2)) { + binding.homeApp2.visibility = View.VISIBLE + if (!setHomeAppText(binding.homeApp2, prefs.appName2, prefs.appPackage2, prefs.appUser2)) { prefs.appName2 = "" prefs.appPackage2 = "" } if (homeAppsNum == 2) return - homeApp3.visibility = View.VISIBLE - if (!setHomeAppText(homeApp3, prefs.appName3, prefs.appPackage3, prefs.appUser3)) { + binding.homeApp3.visibility = View.VISIBLE + if (!setHomeAppText(binding.homeApp3, prefs.appName3, prefs.appPackage3, prefs.appUser3)) { prefs.appName3 = "" prefs.appPackage3 = "" } if (homeAppsNum == 3) return - homeApp4.visibility = View.VISIBLE - if (!setHomeAppText(homeApp4, prefs.appName4, prefs.appPackage4, prefs.appUser4)) { + binding.homeApp4.visibility = View.VISIBLE + if (!setHomeAppText(binding.homeApp4, prefs.appName4, prefs.appPackage4, prefs.appUser4)) { prefs.appName4 = "" prefs.appPackage4 = "" } if (homeAppsNum == 4) return - homeApp5.visibility = View.VISIBLE - if (!setHomeAppText(homeApp5, prefs.appName5, prefs.appPackage5, prefs.appUser5)) { + binding.homeApp5.visibility = View.VISIBLE + if (!setHomeAppText(binding.homeApp5, prefs.appName5, prefs.appPackage5, prefs.appUser5)) { prefs.appName5 = "" prefs.appPackage5 = "" } if (homeAppsNum == 5) return - homeApp6.visibility = View.VISIBLE - if (!setHomeAppText(homeApp6, prefs.appName6, prefs.appPackage6, prefs.appUser6)) { + binding.homeApp6.visibility = View.VISIBLE + if (!setHomeAppText(binding.homeApp6, prefs.appName6, prefs.appPackage6, prefs.appUser6)) { prefs.appName6 = "" prefs.appPackage6 = "" } if (homeAppsNum == 6) return - homeApp7.visibility = View.VISIBLE - if (!setHomeAppText(homeApp7, prefs.appName7, prefs.appPackage7, prefs.appUser7)) { + binding.homeApp7.visibility = View.VISIBLE + if (!setHomeAppText(binding.homeApp7, prefs.appName7, prefs.appPackage7, prefs.appUser7)) { prefs.appName7 = "" prefs.appPackage7 = "" } if (homeAppsNum == 7) return - homeApp8.visibility = View.VISIBLE - if (!setHomeAppText(homeApp8, prefs.appName8, prefs.appPackage8, prefs.appUser8)) { + binding.homeApp8.visibility = View.VISIBLE + if (!setHomeAppText(binding.homeApp8, prefs.appName8, prefs.appPackage8, prefs.appUser8)) { prefs.appName8 = "" prefs.appPackage8 = "" } @@ -240,17 +244,17 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener } private fun hideHomeApps() { - homeApp1.visibility = View.GONE - homeApp2.visibility = View.GONE - homeApp3.visibility = View.GONE - homeApp4.visibility = View.GONE - homeApp5.visibility = View.GONE - homeApp6.visibility = View.GONE - homeApp7.visibility = View.GONE - homeApp8.visibility = View.GONE - - // Added as a potential fix to clock freeze issue - dateTimeLayout.visibility = View.GONE + binding.homeApp1.visibility = View.GONE + binding.homeApp2.visibility = View.GONE + binding.homeApp3.visibility = View.GONE + binding.homeApp4.visibility = View.GONE + binding.homeApp5.visibility = View.GONE + binding.homeApp6.visibility = View.GONE + binding.homeApp7.visibility = View.GONE + binding.homeApp8.visibility = View.GONE + + // TODO: Set date time programmatically to fix the clock freeze issue + binding.dateTimeLayout.visibility = View.GONE } private fun homeAppClicked(location: Int) { @@ -263,9 +267,13 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener ) } - private fun launchApp(appName: String, packageName: String, activityClassName:String?, userString: String) { + private fun launchApp(appName: String, packageName: String, activityClassName: String?, userString: String) { viewModel.selectedApp( - AppModel(appName, null, packageName, activityClassName, getUserHandleFromString(requireContext(), userString)), + AppModel(appName, + null, + packageName, + activityClassName, + getUserHandleFromString(requireContext(), userString)), Constants.FLAG_LAUNCH_APP ) } @@ -296,14 +304,20 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener private fun openSwipeRightApp() { if (!prefs.swipeRightEnabled) return if (prefs.appPackageSwipeRight.isNotEmpty()) - launchApp(prefs.appNameSwipeRight, prefs.appPackageSwipeRight, prefs.appActivityClassNameRight, android.os.Process.myUserHandle().toString()) + launchApp(prefs.appNameSwipeRight, + prefs.appPackageSwipeRight, + prefs.appActivityClassNameRight, + android.os.Process.myUserHandle().toString()) else openDialerApp(requireContext()) } private fun openSwipeLeftApp() { if (!prefs.swipeLeftEnabled) return if (prefs.appPackageSwipeLeft.isNotEmpty()) - launchApp(prefs.appNameSwipeLeft, prefs.appPackageSwipeLeft, prefs.appActivityClassNameSwipeLeft, android.os.Process.myUserHandle().toString()) + launchApp(prefs.appNameSwipeLeft, + prefs.appPackageSwipeLeft, + prefs.appActivityClassNameSwipeLeft, + android.os.Process.myUserHandle().toString()) else openCameraApp(requireContext()) } @@ -396,7 +410,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { requireActivity().runOnUiThread { if (isAccessServiceEnabled(requireContext())) - lock.performClick() + binding.lock.performClick() else { prefs.lockModeOn = false showToastLong(requireContext(), "Please turn on accessibility service for Olauncher") @@ -447,4 +461,10 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener } } } + + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } }
\ No newline at end of file diff --git a/app/src/main/java/app/olauncher/ui/SettingsFragment.kt b/app/src/main/java/app/olauncher/ui/SettingsFragment.kt index 09344bc..8e40436 100644 --- a/app/src/main/java/app/olauncher/ui/SettingsFragment.kt +++ b/app/src/main/java/app/olauncher/ui/SettingsFragment.kt @@ -19,9 +19,9 @@ import app.olauncher.MainViewModel import app.olauncher.R import app.olauncher.data.Constants import app.olauncher.data.Prefs +import app.olauncher.databinding.FragmentSettingsBinding import app.olauncher.helper.* import app.olauncher.listener.DeviceAdmin -import kotlinx.android.synthetic.main.fragment_settings.* class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListener { @@ -30,12 +30,12 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe private lateinit var deviceManager: DevicePolicyManager private lateinit var componentName: ComponentName - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle?, - ): View? { - return inflater.inflate(R.layout.fragment_settings, container, false) + private var _binding: FragmentSettingsBinding? = null + private val binding get() = _binding!! + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + _binding = FragmentSettingsBinding.inflate(inflater, container, false) + return binding.root } override fun onActivityCreated(savedInstanceState: Bundle?) { @@ -50,7 +50,7 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe componentName = ComponentName(requireContext(), DeviceAdmin::class.java) checkAdminPermission() - homeAppsNum.text = prefs.homeAppsNum.toString() + binding.homeAppsNum.text = prefs.homeAppsNum.toString() populateKeyboardText() populateLockSettings() populateWallpaperText() @@ -66,12 +66,12 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe } override fun onClick(view: View) { - appsNumSelectLayout.visibility = View.GONE - dateTimeSelectLayout.visibility = View.GONE - appThemeSelectLayout.visibility = View.GONE - swipeDownSelectLayout.visibility = View.GONE + binding.appsNumSelectLayout.visibility = View.GONE + binding.dateTimeSelectLayout.visibility = View.GONE + binding.appThemeSelectLayout.visibility = View.GONE + binding.swipeDownSelectLayout.visibility = View.GONE if (view.id != R.id.alignmentBottom) - alignmentSelectLayout.visibility = View.GONE + binding.alignmentSelectLayout.visibility = View.GONE when (view.id) { R.id.olauncherHiddenApps -> showHiddenApps() @@ -80,20 +80,20 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe R.id.publicRoadmap -> requireContext().openUrl(Constants.URL_PUBLIC_ROADMAP) R.id.toggleLock -> toggleLockMode() R.id.autoShowKeyboard -> toggleKeyboardText() - R.id.homeAppsNum -> appsNumSelectLayout.visibility = View.VISIBLE + R.id.homeAppsNum -> binding.appsNumSelectLayout.visibility = View.VISIBLE R.id.dailyWallpaperUrl -> requireContext().openUrl(prefs.dailyWallpaperUrl) R.id.dailyWallpaper -> toggleDailyWallpaperUpdate() - R.id.alignment -> alignmentSelectLayout.visibility = View.VISIBLE + R.id.alignment -> binding.alignmentSelectLayout.visibility = View.VISIBLE R.id.alignmentLeft -> viewModel.updateHomeAlignment(Gravity.START) R.id.alignmentCenter -> viewModel.updateHomeAlignment(Gravity.CENTER) R.id.alignmentRight -> viewModel.updateHomeAlignment(Gravity.END) R.id.alignmentBottom -> updateHomeBottomAlignment() R.id.statusBar -> toggleStatusBar() - R.id.dateTime -> dateTimeSelectLayout.visibility = View.VISIBLE + R.id.dateTime -> binding.dateTimeSelectLayout.visibility = View.VISIBLE R.id.dateTimeOn -> toggleDateTime(Constants.DateTime.ON) R.id.dateTimeOff -> toggleDateTime(Constants.DateTime.OFF) R.id.dateOnly -> toggleDateTime(Constants.DateTime.DATE_ONLY) - R.id.appThemeText -> appThemeSelectLayout.visibility = View.VISIBLE + R.id.appThemeText -> binding.appThemeSelectLayout.visibility = View.VISIBLE R.id.themeLight -> updateTheme(AppCompatDelegate.MODE_NIGHT_NO) R.id.themeDark -> updateTheme(AppCompatDelegate.MODE_NIGHT_YES) R.id.themeSystem -> updateTheme(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) @@ -110,7 +110,7 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe R.id.swipeLeftApp -> showAppListIfEnabled(Constants.FLAG_SET_SWIPE_LEFT_APP) R.id.swipeRightApp -> showAppListIfEnabled(Constants.FLAG_SET_SWIPE_RIGHT_APP) - R.id.swipeDownAction -> swipeDownSelectLayout.visibility = View.VISIBLE + R.id.swipeDownAction -> binding.swipeDownSelectLayout.visibility = View.VISIBLE R.id.notifications -> updateSwipeDownAction(Constants.SwipeDownAction.NOTIFICATIONS) R.id.search -> updateSwipeDownAction(Constants.SwipeDownAction.SEARCH) @@ -143,8 +143,8 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe } R.id.dailyWallpaper -> removeWallpaper() R.id.appThemeText -> { - appThemeSelectLayout.visibility = View.VISIBLE - themeSystem.visibility = View.VISIBLE + binding.appThemeSelectLayout.visibility = View.VISIBLE + binding.themeSystem.visibility = View.VISIBLE } R.id.swipeLeftApp -> toggleSwipeLeft() R.id.swipeRightApp -> toggleSwipeRight() @@ -157,62 +157,62 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe } private fun initClickListeners() { - olauncherHiddenApps.setOnClickListener(this) - scrollLayout.setOnClickListener(this) - appInfo.setOnClickListener(this) - setLauncher.setOnClickListener(this) - publicRoadmap.setOnClickListener(this) - autoShowKeyboard.setOnClickListener(this) - toggleLock.setOnClickListener(this) - homeAppsNum.setOnClickListener(this) - dailyWallpaperUrl.setOnClickListener(this) - dailyWallpaper.setOnClickListener(this) - alignment.setOnClickListener(this) - alignmentLeft.setOnClickListener(this) - alignmentCenter.setOnClickListener(this) - alignmentRight.setOnClickListener(this) - alignmentBottom.setOnClickListener(this) - statusBar.setOnClickListener(this) - dateTime.setOnClickListener(this) - dateTimeOn.setOnClickListener(this) - dateTimeOff.setOnClickListener(this) - dateOnly.setOnClickListener(this) - swipeLeftApp.setOnClickListener(this) - swipeRightApp.setOnClickListener(this) - swipeDownAction.setOnClickListener(this) - search.setOnClickListener(this) - notifications.setOnClickListener(this) - appThemeText.setOnClickListener(this) - themeLight.setOnClickListener(this) - themeDark.setOnClickListener(this) - themeSystem.setOnClickListener(this) - - about.setOnClickListener(this) - share.setOnClickListener(this) - rate.setOnClickListener(this) - twitter.setOnClickListener(this) - instagram.setOnClickListener(this) - privacy.setOnClickListener(this) - github.setOnClickListener(this) - affiliate.setOnClickListener(this) - moreApps.setOnClickListener(this) - - maxApps0.setOnClickListener(this) - maxApps1.setOnClickListener(this) - maxApps2.setOnClickListener(this) - maxApps3.setOnClickListener(this) - maxApps4.setOnClickListener(this) - maxApps5.setOnClickListener(this) - maxApps6.setOnClickListener(this) - maxApps7.setOnClickListener(this) - maxApps8.setOnClickListener(this) - - dailyWallpaper.setOnLongClickListener(this) - alignment.setOnLongClickListener(this) - appThemeText.setOnLongClickListener(this) - swipeLeftApp.setOnLongClickListener(this) - swipeRightApp.setOnLongClickListener(this) - toggleLock.setOnLongClickListener(this) + binding.olauncherHiddenApps.setOnClickListener(this) + binding.scrollLayout.setOnClickListener(this) + binding.appInfo.setOnClickListener(this) + binding.setLauncher.setOnClickListener(this) + binding.publicRoadmap.setOnClickListener(this) + binding.autoShowKeyboard.setOnClickListener(this) + binding.toggleLock.setOnClickListener(this) + binding.homeAppsNum.setOnClickListener(this) + binding.dailyWallpaperUrl.setOnClickListener(this) + binding.dailyWallpaper.setOnClickListener(this) + binding.alignment.setOnClickListener(this) + binding.alignmentLeft.setOnClickListener(this) + binding.alignmentCenter.setOnClickListener(this) + binding.alignmentRight.setOnClickListener(this) + binding.alignmentBottom.setOnClickListener(this) + binding.statusBar.setOnClickListener(this) + binding.dateTime.setOnClickListener(this) + binding.dateTimeOn.setOnClickListener(this) + binding.dateTimeOff.setOnClickListener(this) + binding.dateOnly.setOnClickListener(this) + binding.swipeLeftApp.setOnClickListener(this) + binding.swipeRightApp.setOnClickListener(this) + binding.swipeDownAction.setOnClickListener(this) + binding.search.setOnClickListener(this) + binding.notifications.setOnClickListener(this) + binding.appThemeText.setOnClickListener(this) + binding.themeLight.setOnClickListener(this) + binding.themeDark.setOnClickListener(this) + binding.themeSystem.setOnClickListener(this) + + binding.about.setOnClickListener(this) + binding.share.setOnClickListener(this) + binding.rate.setOnClickListener(this) + binding.twitter.setOnClickListener(this) + binding.instagram.setOnClickListener(this) + binding.privacy.setOnClickListener(this) + binding.github.setOnClickListener(this) + binding.affiliate.setOnClickListener(this) + binding.moreApps.setOnClickListener(this) + + binding.maxApps0.setOnClickListener(this) + binding.maxApps1.setOnClickListener(this) + binding.maxApps2.setOnClickListener(this) + binding.maxApps3.setOnClickListener(this) + binding.maxApps4.setOnClickListener(this) + binding.maxApps5.setOnClickListener(this) + binding.maxApps6.setOnClickListener(this) + binding.maxApps7.setOnClickListener(this) + binding.maxApps8.setOnClickListener(this) + + binding.dailyWallpaper.setOnLongClickListener(this) + binding.alignment.setOnLongClickListener(this) + binding.appThemeText.setOnLongClickListener(this) + binding.swipeLeftApp.setOnLongClickListener(this) + binding.swipeRightApp.setOnLongClickListener(this) + binding.toggleLock.setOnLongClickListener(this) } private fun initObservers() { @@ -221,9 +221,9 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe } viewModel.isOlauncherDefault.observe(viewLifecycleOwner) { if (it) { - setLauncher.text = getString(R.string.change_default_launcher) + binding.setLauncher.text = getString(R.string.change_default_launcher) prefs.toShowHintCounter = prefs.toShowHintCounter + 1 - publicRoadmap.visibility = View.VISIBLE + binding.publicRoadmap.visibility = View.VISIBLE } } viewModel.homeAppAlignment.observe(viewLifecycleOwner) { @@ -237,10 +237,10 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe private fun toggleSwipeLeft() { prefs.swipeLeftEnabled = !prefs.swipeLeftEnabled if (prefs.swipeLeftEnabled) { - swipeLeftApp.setTextColor(requireContext().getColorFromAttr(R.attr.primaryColor)) + binding.swipeLeftApp.setTextColor(requireContext().getColorFromAttr(R.attr.primaryColor)) showToastShort(requireContext(), "Swipe left app enabled") } else { - swipeLeftApp.setTextColor(requireContext().getColorFromAttr(R.attr.primaryColorTrans50)) + binding.swipeLeftApp.setTextColor(requireContext().getColorFromAttr(R.attr.primaryColorTrans50)) showToastShort(requireContext(), "Swipe left app disabled") } } @@ -248,10 +248,10 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe private fun toggleSwipeRight() { prefs.swipeRightEnabled = !prefs.swipeRightEnabled if (prefs.swipeRightEnabled) { - swipeRightApp.setTextColor(requireContext().getColorFromAttr(R.attr.primaryColor)) + binding.swipeRightApp.setTextColor(requireContext().getColorFromAttr(R.attr.primaryColor)) showToastShort(requireContext(), "Swipe right app enabled") } else { - swipeRightApp.setTextColor(requireContext().getColorFromAttr(R.attr.primaryColorTrans50)) + binding.swipeRightApp.setTextColor(requireContext().getColorFromAttr(R.attr.primaryColorTrans50)) showToastShort(requireContext(), "Swipe right app disabled") } } @@ -264,10 +264,10 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe private fun populateStatusBar() { if (prefs.showStatusBar) { showStatusBar() - statusBar.text = getString(R.string.on) + binding.statusBar.text = getString(R.string.on) } else { hideStatusBar() - statusBar.text = getString(R.string.off) + binding.statusBar.text = getString(R.string.off) } } @@ -278,7 +278,7 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe } private fun populateDateTime() { - dateTime.text = getString(when (prefs.dateTimeVisibility) { + binding.dateTime.text = getString(when (prefs.dateTimeVisibility) { Constants.DateTime.DATE_ONLY -> R.string.date Constants.DateTime.ON -> R.string.on else -> R.string.off @@ -381,8 +381,8 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe } private fun updateHomeAppsNum(num: Int) { - homeAppsNum.text = num.toString() - appsNumSelectLayout.visibility = View.GONE + binding.homeAppsNum.text = num.toString() + binding.appsNumSelectLayout.visibility = View.GONE prefs.homeAppsNum = num viewModel.refreshHome(true) } @@ -427,20 +427,20 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe private fun populateAppThemeText(appTheme: Int = prefs.appTheme) { when (appTheme) { - AppCompatDelegate.MODE_NIGHT_YES -> appThemeText.text = getString(R.string.dark) - AppCompatDelegate.MODE_NIGHT_NO -> appThemeText.text = getString(R.string.light) - else -> appThemeText.text = getString(R.string.system_default) + AppCompatDelegate.MODE_NIGHT_YES -> binding.appThemeText.text = getString(R.string.dark) + AppCompatDelegate.MODE_NIGHT_NO -> binding.appThemeText.text = getString(R.string.light) + else -> binding.appThemeText.text = getString(R.string.system_default) } } private fun populateKeyboardText() { - if (prefs.autoShowKeyboard) autoShowKeyboard.text = getString(R.string.on) - else autoShowKeyboard.text = getString(R.string.off) + if (prefs.autoShowKeyboard) binding.autoShowKeyboard.text = getString(R.string.on) + else binding.autoShowKeyboard.text = getString(R.string.off) } private fun populateWallpaperText() { - if (prefs.dailyWallpaper) dailyWallpaper.text = getString(R.string.on) - else dailyWallpaper.text = getString(R.string.off) + if (prefs.dailyWallpaper) binding.dailyWallpaper.text = getString(R.string.on) + else binding.dailyWallpaper.text = getString(R.string.off) } private fun updateHomeBottomAlignment() { @@ -455,22 +455,22 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe private fun populateAlignment() { when (prefs.homeAlignment) { - Gravity.START -> alignment.text = getString(R.string.left) - Gravity.CENTER -> alignment.text = getString(R.string.center) - Gravity.END -> alignment.text = getString(R.string.right) + Gravity.START -> binding.alignment.text = getString(R.string.left) + Gravity.CENTER -> binding.alignment.text = getString(R.string.center) + Gravity.END -> binding.alignment.text = getString(R.string.right) } - alignmentBottom.text = if (prefs.homeBottomAlignment) + binding.alignmentBottom.text = if (prefs.homeBottomAlignment) getString(R.string.bottom_on) else getString(R.string.bottom_off) } private fun populateLockSettings() { - if (prefs.lockModeOn) toggleLock.text = getString(R.string.on) - else toggleLock.text = getString(R.string.off) + if (prefs.lockModeOn) binding.toggleLock.text = getString(R.string.on) + else binding.toggleLock.text = getString(R.string.off) } private fun populateSwipeDownAction() { - swipeDownAction.text = when (prefs.swipeDownAction) { + binding.swipeDownAction.text = when (prefs.swipeDownAction) { Constants.SwipeDownAction.NOTIFICATIONS -> getString(R.string.notifications) else -> getString(R.string.search) } @@ -507,12 +507,12 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe } private fun populateSwipeApps() { - swipeLeftApp.text = prefs.appNameSwipeLeft - swipeRightApp.text = prefs.appNameSwipeRight + binding.swipeLeftApp.text = prefs.appNameSwipeLeft + binding.swipeRightApp.text = prefs.appNameSwipeRight if (!prefs.swipeLeftEnabled) - swipeLeftApp.setTextColor(requireContext().getColorFromAttr(R.attr.primaryColorTrans50)) + binding.swipeLeftApp.setTextColor(requireContext().getColorFromAttr(R.attr.primaryColorTrans50)) if (!prefs.swipeRightEnabled) - swipeRightApp.setTextColor(requireContext().getColorFromAttr(R.attr.primaryColorTrans50)) + binding.swipeRightApp.setTextColor(requireContext().getColorFromAttr(R.attr.primaryColorTrans50)) } private fun showAppListIfEnabled(flag: Int) { @@ -536,16 +536,21 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe when (prefs.toShowHintCounter) { Constants.HINT_RATE_US -> { viewModel.showMessageDialog(getString(R.string.rate_us_message)) - rate.setCompoundDrawablesWithIntrinsicBounds(0, android.R.drawable.arrow_down_float, 0, 0) - scrollView.post { - scrollView.fullScroll(View.FOCUS_DOWN) + binding.rate.setCompoundDrawablesWithIntrinsicBounds(0, android.R.drawable.arrow_down_float, 0, 0) + binding.scrollView.post { + binding.scrollView.fullScroll(View.FOCUS_DOWN) } } } if (viewModel.isOlauncherDefault.value != true) return if (prefs.aboutClicked.not() && prefs.toShowHintCounter < Constants.HINT_RATE_US) - about.setCompoundDrawablesWithIntrinsicBounds(0, android.R.drawable.arrow_down_float, 0, 0) + binding.about.setCompoundDrawablesWithIntrinsicBounds(0, android.R.drawable.arrow_down_float, 0, 0) if (prefs.rateClicked.not() && prefs.toShowHintCounter > Constants.HINT_RATE_US && prefs.toShowHintCounter < Constants.HINT_RATE_US + 10) - rate.setCompoundDrawablesWithIntrinsicBounds(0, android.R.drawable.arrow_down_float, 0, 0) + binding.rate.setCompoundDrawablesWithIntrinsicBounds(0, android.R.drawable.arrow_down_float, 0, 0) + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null } }
\ No newline at end of file |
