Skip to content

Commit e45a918

Browse files
Refactor: Moved functions into there correct folders.
1 parent 11cddd3 commit e45a918

File tree

8 files changed

+117
-103
lines changed

8 files changed

+117
-103
lines changed

app/src/main/java/com/github/droidworksstudio/ktx/ContextExtensions.kt

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,16 @@ import android.graphics.drawable.AdaptiveIconDrawable
1313
import android.net.Uri
1414
import android.os.Build
1515
import android.os.UserHandle
16+
import android.provider.AlarmClock
17+
import android.provider.CalendarContract
1618
import android.provider.Settings
19+
import android.util.DisplayMetrics
20+
import android.util.Log
1721
import android.view.ContextThemeWrapper
1822
import android.view.LayoutInflater
1923
import android.view.View
2024
import android.view.ViewGroup
25+
import android.view.WindowManager
2126
import android.widget.Toast
2227
import androidx.annotation.ColorRes
2328
import androidx.annotation.DrawableRes
@@ -27,11 +32,29 @@ import androidx.core.graphics.drawable.toBitmap
2732
import androidx.core.os.ConfigurationCompat
2833
import androidx.lifecycle.LifecycleObserver
2934
import androidx.lifecycle.LifecycleOwner
35+
import com.github.droidworksstudio.launcher.data.entities.AppInfo
3036
import com.github.droidworksstudio.launcher.ui.activities.FakeHomeActivity
37+
import java.util.Calendar
38+
import java.util.Date
39+
import kotlin.math.pow
40+
import kotlin.math.sqrt
3141

3242
fun Context.isTabletConfig(): Boolean =
3343
resources.configuration.smallestScreenWidthDp >= SMALLEST_WIDTH_600
3444

45+
fun Context.isTablet(): Boolean {
46+
val windowManager = this.getSystemService(Context.WINDOW_SERVICE) as WindowManager
47+
val metrics = DisplayMetrics()
48+
@Suppress("DEPRECATION")
49+
windowManager.defaultDisplay.getMetrics(metrics)
50+
val widthInches = metrics.widthPixels / metrics.xdpi
51+
val heightInches = metrics.heightPixels / metrics.ydpi
52+
val diagonalInches =
53+
sqrt(widthInches.toDouble().pow(2.0) + heightInches.toDouble().pow(2.0))
54+
if (diagonalInches >= 7.0) return true
55+
return false
56+
}
57+
3558
fun Context.isPortraitSw600Config(): Boolean =
3659
resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT &&
3760
resources.configuration.smallestScreenWidthDp >= SMALLEST_WIDTH_600
@@ -173,6 +196,74 @@ private fun Context.notRunningStockAndroid() {
173196
}
174197
}
175198

199+
fun Context.searchView() {
200+
val intent = Intent(Intent.ACTION_WEB_SEARCH)
201+
intent.putExtra(SearchManager.QUERY, "")
202+
this.startActivity(intent)
203+
}
204+
205+
fun Context.unInstallApp(appInfo: AppInfo) {
206+
val intent = Intent(Intent.ACTION_DELETE)
207+
intent.data = Uri.parse("package:${appInfo.packageName}")
208+
this.startActivity(intent)
209+
}
210+
211+
fun Context.appInfo(appInfo: AppInfo) {
212+
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
213+
intent.data = Uri.fromParts("package", appInfo.packageName, null)
214+
this.startActivity(intent)
215+
}
216+
217+
fun Context.launchApp(appInfo: AppInfo) {
218+
val intent = this.packageManager.getLaunchIntentForPackage(appInfo.packageName)
219+
if (intent != null) {
220+
this.startActivity(intent)
221+
} else {
222+
showLongToast("Failed to open the application")
223+
}
224+
}
225+
226+
fun Context.launchClock() {
227+
try {
228+
val intent = Intent(AlarmClock.ACTION_SHOW_ALARMS)
229+
this.startActivity(intent)
230+
} catch (e: Exception) {
231+
Log.e("launchClock", "Error launching clock app: ${e.message}")
232+
}
233+
}
234+
235+
fun Context.launchCalendar() {
236+
try {
237+
val cal: Calendar = Calendar.getInstance()
238+
cal.time = Date()
239+
val time = cal.time.time
240+
val builder: Uri.Builder = CalendarContract.CONTENT_URI.buildUpon()
241+
builder.appendPath("time")
242+
builder.appendPath(time.toString())
243+
this.startActivity(Intent(Intent.ACTION_VIEW, builder.build()))
244+
} catch (e: Exception) {
245+
try {
246+
val intent = Intent(Intent.ACTION_MAIN)
247+
intent.addCategory(Intent.CATEGORY_APP_CALENDAR)
248+
this.startActivity(intent)
249+
} catch (e: Exception) {
250+
Log.d("openCalendar", e.toString())
251+
}
252+
}
253+
}
254+
255+
fun Context.openBatteryManager() {
256+
try {
257+
val intent = Intent(Intent.ACTION_POWER_USAGE_SUMMARY)
258+
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
259+
this.startActivity(intent)
260+
} catch (e: ActivityNotFoundException) {
261+
// Battery manager settings cannot be opened
262+
// Handle this case as needed
263+
showLongToast("Battery manager settings are not available on this device.")
264+
}
265+
}
266+
176267
fun Context.isPackageInstalled(
177268
packageName: String,
178269
userHandle: UserHandle = android.os.Process.myUserHandle()

app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt

Lines changed: 0 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package com.github.droidworksstudio.launcher.helper
22

33
import android.annotation.SuppressLint
4-
import android.app.SearchManager
54
import android.content.ActivityNotFoundException
65
import android.content.ComponentName
76
import android.content.Context
87
import android.content.Intent
9-
import android.content.pm.PackageManager
108
import android.content.res.Configuration
119
import android.content.res.Resources
1210
import android.net.Uri
@@ -22,15 +20,13 @@ import android.view.Window
2220
import android.view.WindowInsets
2321
import android.view.WindowManager
2422
import android.widget.TextView
25-
import android.widget.Toast
2623
import androidx.appcompat.widget.LinearLayoutCompat
2724
import com.github.droidworksstudio.ktx.showLongToast
2825
import com.google.android.material.dialog.MaterialAlertDialogBuilder
2926
import com.github.droidworksstudio.launcher.Constants
3027
import com.github.droidworksstudio.launcher.R
3128
import com.github.droidworksstudio.launcher.accessibility.ActionService
3229
import com.github.droidworksstudio.launcher.data.entities.AppInfo
33-
import com.github.droidworksstudio.launcher.ui.activities.FakeHomeActivity
3430
import java.util.Calendar
3531
import java.util.Date
3632
import javax.inject.Inject
@@ -68,12 +64,6 @@ class AppHelper @Inject constructor() {
6864
}
6965
}
7066

71-
fun searchView(context: Context) {
72-
val intent = Intent(Intent.ACTION_WEB_SEARCH)
73-
intent.putExtra(SearchManager.QUERY, "")
74-
context.startActivity(intent)
75-
}
76-
7767
fun dayNightMod(context: Context, view: View) {
7868
when (context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
7969
Configuration.UI_MODE_NIGHT_YES -> {
@@ -109,44 +99,6 @@ class AppHelper @Inject constructor() {
10999
}
110100
}
111101

112-
fun launchApp(context: Context, appInfo: AppInfo) {
113-
val intent = context.packageManager.getLaunchIntentForPackage(appInfo.packageName)
114-
if (intent != null) {
115-
context.startActivity(intent)
116-
} else {
117-
context.showLongToast("Failed to open the application")
118-
}
119-
}
120-
121-
fun launchClock(context: Context) {
122-
try {
123-
val intent = Intent(AlarmClock.ACTION_SHOW_ALARMS)
124-
context.startActivity(intent)
125-
} catch (e: Exception) {
126-
Log.e("launchClock", "Error launching clock app: ${e.message}")
127-
}
128-
}
129-
130-
fun launchCalendar(context: Context) {
131-
try {
132-
val cal: Calendar = Calendar.getInstance()
133-
cal.time = Date()
134-
val time = cal.time.time
135-
val builder: Uri.Builder = CalendarContract.CONTENT_URI.buildUpon()
136-
builder.appendPath("time")
137-
builder.appendPath(time.toString())
138-
context.startActivity(Intent(Intent.ACTION_VIEW, builder.build()))
139-
} catch (e: Exception) {
140-
try {
141-
val intent = Intent(Intent.ACTION_MAIN)
142-
intent.addCategory(Intent.CATEGORY_APP_CALENDAR)
143-
context.startActivity(intent)
144-
} catch (e: Exception) {
145-
Log.d("openCalendar", e.toString())
146-
}
147-
}
148-
}
149-
150102
fun openDigitalWellbeing(context: Context) {
151103
try {
152104
val packageName = "com.google.android.apps.wellbeing"
@@ -163,30 +115,6 @@ class AppHelper @Inject constructor() {
163115
}
164116
}
165117

166-
fun openBatteryManager(context: Context) {
167-
try {
168-
val intent = Intent(Intent.ACTION_POWER_USAGE_SUMMARY)
169-
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
170-
context.startActivity(intent)
171-
} catch (e: ActivityNotFoundException) {
172-
// Battery manager settings cannot be opened
173-
// Handle this case as needed
174-
context.showLongToast("Battery manager settings are not available on this device.")
175-
}
176-
}
177-
178-
fun unInstallApp(context: Context, appInfo: AppInfo) {
179-
val intent = Intent(Intent.ACTION_DELETE)
180-
intent.data = Uri.parse("package:${appInfo.packageName}")
181-
context.startActivity(intent)
182-
}
183-
184-
fun appInfo(context: Context, appInfo: AppInfo) {
185-
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
186-
intent.data = Uri.fromParts("package", appInfo.packageName, null)
187-
context.startActivity(intent)
188-
}
189-
190118
fun gravityToString(gravity: Int): String? {
191119
return when (gravity) {
192120
Gravity.CENTER -> "CENTER"
@@ -230,19 +158,6 @@ class AppHelper @Inject constructor() {
230158
}
231159
}
232160

233-
fun isTablet(context: Context): Boolean {
234-
val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
235-
val metrics = DisplayMetrics()
236-
@Suppress("DEPRECATION")
237-
windowManager.defaultDisplay.getMetrics(metrics)
238-
val widthInches = metrics.widthPixels / metrics.xdpi
239-
val heightInches = metrics.heightPixels / metrics.ydpi
240-
val diagonalInches =
241-
sqrt(widthInches.toDouble().pow(2.0) + heightInches.toDouble().pow(2.0))
242-
if (diagonalInches >= 7.0) return true
243-
return false
244-
}
245-
246161
fun wordOfTheDay(resources: Resources): String {
247162
val dailyWordsArray =
248163
resources.getStringArray(R.array.settings_appearance_daily_word_default)

app/src/main/java/com/github/droidworksstudio/launcher/ui/activities/MainActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import androidx.navigation.findNavController
1818
import androidx.navigation.fragment.NavHostFragment
1919
import androidx.navigation.ui.AppBarConfiguration
2020
import androidx.navigation.ui.navigateUp
21+
import com.github.droidworksstudio.ktx.isTablet
2122
import com.github.droidworksstudio.launcher.Constants
2223
import com.github.droidworksstudio.launcher.R
2324
import com.github.droidworksstudio.launcher.databinding.ActivityMainBinding
@@ -94,7 +95,7 @@ class MainActivity : AppCompatActivity() {
9495

9596
@SuppressLint("SourceLockedOrientationActivity")
9697
private fun setupOrientation() {
97-
if (appHelper.isTablet(this)) return
98+
if (this.isTablet()) return
9899
if (Build.VERSION.SDK_INT != Build.VERSION_CODES.O)
99100
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
100101
}

app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/AppInfoBottomSheetFragment.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import android.view.ViewGroup
1111
import androidx.annotation.RequiresApi
1212
import androidx.core.content.ContextCompat
1313
import androidx.fragment.app.viewModels
14+
import com.github.droidworksstudio.ktx.appInfo
1415
import com.github.droidworksstudio.ktx.showLongToast
16+
import com.github.droidworksstudio.ktx.unInstallApp
1517
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
1618
import com.github.droidworksstudio.launcher.R
1719
import com.github.droidworksstudio.launcher.data.entities.AppInfo
@@ -167,12 +169,12 @@ class AppInfoBottomSheetFragment(private val appInfo: AppInfo) : BottomSheetDial
167169

168170
binding.bottomSheetUninstall.setOnClickListener {
169171
appStateClickListener?.onAppStateClicked(appInfo)
170-
appHelper.unInstallApp(requireContext(), appInfo)
172+
requireContext().unInstallApp(appInfo)
171173
dismiss()
172174
}
173175

174176
binding.bottomSheetInfo.setOnClickListener {
175-
appHelper.appInfo(requireContext(), appInfo)
177+
requireContext().appInfo(appInfo)
176178
dismiss()
177179
}
178180
}

app/src/main/java/com/github/droidworksstudio/launcher/ui/drawer/DrawFragment.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import androidx.lifecycle.lifecycleScope
1515
import androidx.navigation.fragment.findNavController
1616
import androidx.recyclerview.widget.StaggeredGridLayoutManager
1717
import com.github.droidworksstudio.ktx.hideKeyboard
18+
import com.github.droidworksstudio.ktx.launchApp
1819
import com.github.droidworksstudio.ktx.openSearch
1920
import com.github.droidworksstudio.ktx.showKeyboard
2021
import com.github.droidworksstudio.ktx.showLongToast
@@ -237,15 +238,15 @@ class DrawFragment : Fragment(),
237238

238239
private fun observeBioAuthCheck(appInfo: AppInfo) {
239240
if (!appInfo.lock) {
240-
appHelper.launchApp(context, appInfo)
241+
context.launchApp(appInfo)
241242
} else {
242243
fingerHelper.startFingerprintAuth(appInfo, this)
243244
}
244245
}
245246

246247
override fun onAuthenticationSucceeded(appInfo: AppInfo) {
247248
context.showLongToast(getString(R.string.authentication_succeeded))
248-
appHelper.launchApp(context, appInfo)
249+
context.launchApp(appInfo)
249250
}
250251

251252
override fun onAuthenticationFailed() {

app/src/main/java/com/github/droidworksstudio/launcher/ui/favorite/FavoriteFragment.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import androidx.navigation.fragment.findNavController
1616
import androidx.recyclerview.widget.ItemTouchHelper
1717
import androidx.recyclerview.widget.RecyclerView
1818
import androidx.recyclerview.widget.StaggeredGridLayoutManager
19+
import com.github.droidworksstudio.ktx.launchApp
1920
import com.github.droidworksstudio.ktx.showLongToast
2021
import com.github.droidworksstudio.launcher.R
2122
import com.github.droidworksstudio.launcher.data.entities.AppInfo
@@ -199,7 +200,7 @@ class FavoriteFragment : Fragment(),
199200

200201
private fun observeBioAuthCheck(appInfo: AppInfo) {
201202
if (!appInfo.lock) {
202-
appHelper.launchApp(context, appInfo)
203+
context.launchApp(appInfo)
203204
} else {
204205
fingerHelper.startFingerprintAuth(appInfo, this)
205206
}
@@ -215,7 +216,7 @@ class FavoriteFragment : Fragment(),
215216

216217
override fun onAuthenticationSucceeded(appInfo: AppInfo) {
217218
context.showLongToast(getString(R.string.authentication_succeeded))
218-
appHelper.launchApp(context, appInfo)
219+
context.launchApp(appInfo)
219220
}
220221

221222
override fun onAuthenticationFailed() {

app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenFragment.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import androidx.fragment.app.viewModels
1313
import androidx.lifecycle.lifecycleScope
1414
import androidx.navigation.fragment.findNavController
1515
import androidx.recyclerview.widget.StaggeredGridLayoutManager
16+
import com.github.droidworksstudio.ktx.launchApp
1617
import com.github.droidworksstudio.ktx.showLongToast
1718
import com.github.droidworksstudio.launcher.R
1819
import com.github.droidworksstudio.launcher.data.entities.AppInfo
@@ -112,7 +113,7 @@ class HiddenFragment : Fragment(),
112113

113114
private fun observeBioAuthCheck(appInfo: AppInfo) {
114115
if (!appInfo.lock) {
115-
appHelper.launchApp(context, appInfo)
116+
context.launchApp(appInfo)
116117
} else {
117118
fingerHelper.startFingerprintAuth(appInfo, this)
118119
}
@@ -156,7 +157,7 @@ class HiddenFragment : Fragment(),
156157

157158
override fun onAuthenticationSucceeded(appInfo: AppInfo) {
158159
context.showLongToast(getString(R.string.authentication_succeeded))
159-
appHelper.launchApp(context, appInfo)
160+
context.launchApp(appInfo)
160161
}
161162

162163
override fun onAuthenticationFailed() {

0 commit comments

Comments
 (0)