diff --git a/README.md b/README.md
index 0309ef8..1ea7d5f 100644
--- a/README.md
+++ b/README.md
@@ -22,21 +22,11 @@
------------
**Easy Launcher - the minimalist productivity launcher for focus, productivity, keep your focus on what really counts.**
------------
-[
](https://github.com/DroidWorksStudio/EasyLauncher/releases)
-[
](https://f-droid.org/en/packages/com.github.droidworksstuido.easylauncher/)
-[
](https://play.google.com/store/apps/details?id=com.github.droidworksstyido.easulauncher)
-[
](https://www.gnu.org/licenses/gpl-3.0)
-[
](https://github.com/DroidWorksStudio/EasyLauncher/releases)
+[
](https://github.com/DroidWorksStudio/EasyLauncher/releases)
+[
](https://f-droid.org/en/packages/com.github.droidworksstuido.easylauncher/)
+[
](https://play.google.com/store/apps/details?id=com.github.droidworksstyido.easulauncher)
+[
](https://www.gnu.org/licenses/gpl-3.0)
+[
](https://github.com/DroidWorksStudio/EasyLauncher/releases)
**Features**
------------
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index e0ba9c5..c6ef06b 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -29,14 +29,14 @@ android {
isDebuggable = true
applicationIdSuffix = ".debug"
proguardFiles (getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
- resValue("string", "app_name", "EasyLauncher Debug")
+ resValue("string", "app_name", "Easy Launcher (Debug)")
}
getByName("release") {
- isMinifyEnabled = false
- isShrinkResources = false
+ isMinifyEnabled = true
+ isShrinkResources = true
proguardFiles (getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
- resValue("string", "app_name", "EasyLauncher")
+ resValue("string", "app_name", "Easy Launcher")
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0af068a..3532599 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,8 +4,7 @@
-
+
-
@@ -30,8 +28,7 @@
android:icon="@drawable/app_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
- android:theme="@style/Theme.Launcher"
- tools:targetApi="31">
+ android:theme="@style/Theme.Launcher">
diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/Constants.kt b/app/src/main/java/com/github/droidworksstudio/launcher/Constants.kt
index 7ce4c84..92702d4 100644
--- a/app/src/main/java/com/github/droidworksstudio/launcher/Constants.kt
+++ b/app/src/main/java/com/github/droidworksstudio/launcher/Constants.kt
@@ -3,7 +3,7 @@ package com.github.droidworksstudio.launcher
object Constants {
const val PACKAGE_NAME = "com.github.droidworksstudio.launcher"
- const val PREFS_FILENAME = "droidworksstudioLauncher.pref"
+ const val PREFS_FILENAME = "EasyLauncher.pref"
const val FIRST_LAUNCH = "FIRST_LAUNCH"
const val SHOW_DATE = "SHOW_DATE"
const val SHOW_TIME = "SHOW_TIME"
@@ -18,9 +18,13 @@ object Constants {
const val DAILY_WORD_COLOR = "DAILY_WORD_COLOR"
const val APP_COLOR = "APP_COLOR"
+ const val BATTERY_TEXT_SIZE = "BATTERY_TEXT_SIZE"
const val DATE_TEXT_SIZE = "DATE_TEXT_SIZE"
const val TIME_TEXT_SIZE = "TIME_TEXT_SIZE"
const val APP_TEXT_SIZE = "APP_TEXT_SIZE"
+ const val DAILY_WORD_TEXT_SIZE = "DAILY_WORD_TEXT_SIZE"
+
+ const val APP_TEXT_PADDING = "APP_TEXT_PADDING"
const val SHOW_APP_ICON = "SHOW_APP_ICON"
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 6672560..2c30e30 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
@@ -2,11 +2,13 @@ package com.github.droidworksstudio.launcher.helper
import android.annotation.SuppressLint
import android.app.SearchManager
+import android.content.ActivityNotFoundException
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.content.res.Configuration
+import android.content.res.Resources
import android.net.Uri
import android.os.Build
import android.provider.AlarmClock
@@ -27,6 +29,8 @@ 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.ui.activities.FakeHomeActivity
+import java.util.Calendar
+import java.util.Date
import javax.inject.Inject
class AppHelper @Inject constructor() {
@@ -92,11 +96,11 @@ 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.whiteTrans25))
+ view.setBackgroundColor(context.resources.getColor(R.color.blackTrans50, context.theme))
}
Configuration.UI_MODE_NIGHT_NO -> {
- view.setBackgroundColor(context.resources.getColor(R.color.blackTrans50))
+ view.setBackgroundColor(context.resources.getColor(R.color.whiteTrans50, context.theme))
}
}
}
@@ -132,21 +136,53 @@ class AppHelper @Inject constructor() {
}
fun launchCalendar(context: Context) {
- val intent = Intent(Intent.ACTION_VIEW)
- intent.data = CalendarContract.CONTENT_URI
try {
- context.startActivity(intent)
+ val cal: Calendar = Calendar.getInstance()
+ cal.time = Date()
+ val time = cal.time.time
+ val builder: Uri.Builder = CalendarContract.CONTENT_URI.buildUpon()
+ builder.appendPath("time")
+ builder.appendPath(time.toString())
+ context.startActivity(Intent(Intent.ACTION_VIEW, builder.build()))
} catch (e: Exception) {
- val pickerIntent = Intent(Intent.ACTION_MAIN)
- pickerIntent.addCategory(Intent.CATEGORY_APP_CALENDAR)
try {
- context.startActivity(pickerIntent)
+ val intent = Intent(Intent.ACTION_MAIN)
+ intent.addCategory(Intent.CATEGORY_APP_CALENDAR)
+ context.startActivity(intent)
} catch (e: Exception) {
- e.printStackTrace()
+ Log.d("openCalendar", e.toString())
}
}
}
+ fun openDigitalWellbeing(context: Context) {
+ try {
+ val packageName = "com.google.android.apps.wellbeing"
+ val className = "com.google.android.apps.wellbeing.settings.TopLevelSettingsActivity"
+
+ val intent = Intent()
+ intent.component = ComponentName(packageName, className)
+ intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
+ context.startActivity(intent)
+ } 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.")
+ }
+ }
+
+ fun openBatteryManager(context: Context) {
+ try {
+ val intent = Intent(Intent.ACTION_POWER_USAGE_SUMMARY)
+ intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
+ context.startActivity(intent)
+ } catch (e: ActivityNotFoundException) {
+ // Battery manager settings cannot be opened
+ // Handle this case as needed
+ showToast(context, "Battery manager settings are not available on this device.")
+ }
+ }
+
fun unInstallApp(context: Context, appInfo: AppInfo) {
val intent = Intent(Intent.ACTION_DELETE)
intent.data = Uri.parse("package:${appInfo.packageName}")
@@ -215,6 +251,14 @@ class AppHelper @Inject constructor() {
}
}
+ fun View.showSoftKeyboard() {
+ if (this.requestFocus()) {
+ val inputMethodManager: InputMethodManager =
+ context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
+ inputMethodManager.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
+ }
+ }
+
fun hideKeyboard(context: Context, view: View) {
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(view.windowToken, 0)
@@ -224,13 +268,21 @@ class AppHelper @Inject constructor() {
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(this.windowToken, 0)
}
+
+ fun wordOfTheDay(resources: Resources): String {
+ 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
+ return dailyWordsArray[wordIndex]
+ }
+
fun enableAppAsAccessibilityService(context: Context, accessibilityState: Boolean) {
val myAccessibilityService = MyAccessibilityService.instance()
val state: String = if (myAccessibilityService != null) {
context.getString(R.string.accessibility_settings_disable)
- }else{
+ } else {
context.getString(R.string.accessibility_settings_enable)
}
@@ -242,8 +294,10 @@ class AppHelper @Inject constructor() {
val intent = Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)
context.startActivity(intent)
}
- .setNegativeButton(android.R.string.cancel) { dialog, _ -> dialog.dismiss() }
- .show()
+ builder.setNegativeButton(android.R.string.cancel) { dialog, _ ->
+ dialog.dismiss()
+ }
+ builder.show()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt b/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt
index 881acf7..13be789 100644
--- a/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt
+++ b/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt
@@ -31,7 +31,7 @@ class PreferenceHelper @Inject constructor(@ApplicationContext context: Context)
set(value) = prefs.edit().putBoolean(Constants.SHOW_BATTERY, value).apply()
var showDailyWord: Boolean
- get() = prefs.getBoolean(Constants.SHOW_DAILY_WORD, true)
+ get() = prefs.getBoolean(Constants.SHOW_DAILY_WORD, false)
set(value) = prefs.edit().putBoolean(Constants.SHOW_DAILY_WORD, value).apply()
var dateColor: Int
@@ -45,6 +45,7 @@ class PreferenceHelper @Inject constructor(@ApplicationContext context: Context)
var batteryColor: Int
get() = prefs.getInt(Constants.BATTERY_COLOR, 0xFFFFFFFF.toInt())
set(value) = prefs.edit().putInt(Constants.BATTERY_COLOR, value).apply()
+
var dailyWordColor: Int
get() = prefs.getInt(Constants.DAILY_WORD_COLOR, 0xFFFFFFFF.toInt())
set(value) = prefs.edit().putInt(Constants.DAILY_WORD_COLOR, value).apply()
@@ -69,6 +70,10 @@ class PreferenceHelper @Inject constructor(@ApplicationContext context: Context)
get() = prefs.getInt(Constants.HOME_APP_ALIGNMENT, Gravity.START)
set(value) = prefs.edit().putInt(Constants.HOME_APP_ALIGNMENT, value).apply()
+ var homeAppPadding: Float
+ get() = prefs.getFloat(Constants.APP_TEXT_PADDING, 10f)
+ set(value) = prefs.edit().putFloat(Constants.APP_TEXT_PADDING, value).apply()
+
var homeDateAlignment: Int
get() = prefs.getInt(Constants.HOME_DATE_ALIGNMENT, Gravity.START)
set(value) = prefs.edit().putInt(Constants.HOME_DATE_ALIGNMENT, value).apply()
@@ -81,6 +86,10 @@ class PreferenceHelper @Inject constructor(@ApplicationContext context: Context)
get() = prefs.getInt(Constants.HOME_DAILY_WORD_ALIGNMENT, Gravity.START)
set(value) = prefs.edit().putInt(Constants.HOME_DAILY_WORD_ALIGNMENT,value).apply()
+ var batteryTextSize: Float
+ get() = prefs.getFloat(Constants.BATTERY_TEXT_SIZE, 12f)
+ set(value) = prefs.edit().putFloat(Constants.BATTERY_TEXT_SIZE, value).apply()
+
var dateTextSize: Float
get() = prefs.getFloat(Constants.DATE_TEXT_SIZE, 32f)
set(value) = prefs.edit().putFloat(Constants.DATE_TEXT_SIZE, value).apply()
@@ -93,6 +102,10 @@ class PreferenceHelper @Inject constructor(@ApplicationContext context: Context)
get() = prefs.getFloat(Constants.APP_TEXT_SIZE, 24f)
set(value) = prefs.edit().putFloat(Constants.APP_TEXT_SIZE, value).apply()
+ var dailyWordTextSize: Float
+ get() = prefs.getFloat(Constants.DAILY_WORD_TEXT_SIZE, 18f)
+ set(value) = prefs.edit().putFloat(Constants.DAILY_WORD_TEXT_SIZE, value).apply()
+
var tapLockScreen: Boolean
get() = prefs.getBoolean(Constants.DOUBLE_TAP_LOCK, false)
set(value) = prefs.edit().putBoolean(Constants.DOUBLE_TAP_LOCK, value).apply()
diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/activities/MainActivity.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/activities/MainActivity.kt
index 2ca3cca..97fba24 100644
--- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/activities/MainActivity.kt
+++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/activities/MainActivity.kt
@@ -10,6 +10,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.findNavController
import androidx.navigation.fragment.NavHostFragment
+import androidx.navigation.fragment.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
import com.github.droidworksstudio.launcher.R
@@ -145,6 +146,7 @@ class MainActivity : AppCompatActivity() {
}
private fun backToHomeScreen() {
+ navController = findNavController(R.id.nav_host_fragment_content_main)
if (navController.currentDestination?.id != R.id.HomeFragment)
navController.popBackStack(R.id.HomeFragment, false)
}
diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/AlignmentBottomSheetDialogFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/AlignmentBottomSheetDialogFragment.kt
index 3d99fe7..2c7af19 100644
--- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/AlignmentBottomSheetDialogFragment.kt
+++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/AlignmentBottomSheetDialogFragment.kt
@@ -70,6 +70,10 @@ class AlignmentBottomSheetDialogFragment(context: Context) : BottomSheetDialogFr
binding.selectAppTextSize.apply {
text = appHelper.gravityToString(preferenceHelper.homeAppAlignment)
}
+
+ binding.selectWordTextSize.apply {
+ text = appHelper.gravityToString(preferenceHelper.homeDailyWordAlignment)
+ }
}
private fun observeClickListener(){
@@ -87,6 +91,11 @@ class AlignmentBottomSheetDialogFragment(context: Context) : BottomSheetDialogFr
selectedAlignment = REQUEST_KEY_APP_ALIGNMENT
showListDialog(selectedAlignment)
}
+
+ binding.bottomAlignmentWordView.setOnClickListener {
+ selectedAlignment = REQUEST_KEY_WORD_ALIGNMENT
+ showListDialog(selectedAlignment)
+ }
}
@@ -127,6 +136,15 @@ class AlignmentBottomSheetDialogFragment(context: Context) : BottomSheetDialogFr
binding.selectDateTextSize
)
}
+
+ REQUEST_KEY_WORD_ALIGNMENT -> {
+ setAlignment(
+ selectedAlignment,
+ selectedItem,
+ gravity,
+ binding.selectWordTextSize
+ )
+ }
}
}
dialog.show()
@@ -157,6 +175,11 @@ class AlignmentBottomSheetDialogFragment(context: Context) : BottomSheetDialogFr
alignmentGetter = { preferenceHelper.homeDateAlignment }
}
+ REQUEST_KEY_WORD_ALIGNMENT -> {
+ alignmentPreference = { preferenceViewModel.setHomeDailyWordAppAlignment(it) }
+ alignmentGetter = { preferenceHelper.homeDailyWordAlignment }
+ }
+
else -> return
}
@@ -169,5 +192,6 @@ class AlignmentBottomSheetDialogFragment(context: Context) : BottomSheetDialogFr
private const val REQUEST_KEY_DATE_ALIGNMENT = "REQUEST_KEY_DATE_ALIGNMENT"
private const val REQUEST_KEY_TIME_ALIGNMENT = "REQUEST_KEY_TIME_ALIGNMENT"
private const val REQUEST_KEY_APP_ALIGNMENT = "REQUEST_KEY_APP_ALIGNMENT"
+ private const val REQUEST_KEY_WORD_ALIGNMENT = "REQUEST_KEY_WORD_ALIGNMENT"
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/ColorBottomSheetDialogFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/ColorBottomSheetDialogFragment.kt
index 038b31e..3bdcf67 100644
--- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/ColorBottomSheetDialogFragment.kt
+++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/ColorBottomSheetDialogFragment.kt
@@ -75,6 +75,11 @@ class ColorBottomSheetDialogFragment(context: Context) : BottomSheetDialogFragme
text = bottomDialogHelper.getColorText(preferenceHelper.batteryColor)
setTextColor(preferenceHelper.batteryColor)
}
+
+ binding.selectWordTextColor.apply {
+ text = bottomDialogHelper.getColorText(preferenceHelper.dailyWordColor)
+ setTextColor(preferenceHelper.dailyWordColor)
+ }
}
@@ -110,6 +115,14 @@ class ColorBottomSheetDialogFragment(context: Context) : BottomSheetDialogFragme
preferenceHelper.batteryColor
)
}
+
+ binding.bottomColorWordView.setOnClickListener {
+ showColorPickerDialog(
+ binding.selectWordTextColor,
+ REQUEST_KEY_DAILY_WORD_COLOR,
+ preferenceHelper.dailyWordColor
+ )
+ }
}
private fun showColorPickerDialog(view: View, requestCode: String, color: Int) {
@@ -123,7 +136,6 @@ class ColorBottomSheetDialogFragment(context: Context) : BottomSheetDialogFragme
ColorChooserDialog.registerListener(this, requestCode, { pickedColor ->
this.color = pickedColor
(view as TextView).apply {
- //text = getColorText(pickedColor)
text = bottomDialogHelper.getColorText(pickedColor)
setTextColor(pickedColor)
}
diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/PaddingBottomSheetDialogFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/PaddingBottomSheetDialogFragment.kt
new file mode 100644
index 0000000..a85ef4a
--- /dev/null
+++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/PaddingBottomSheetDialogFragment.kt
@@ -0,0 +1,75 @@
+package com.github.droidworksstudio.launcher.ui.bottomsheetdialog
+
+import android.content.Context
+import android.content.DialogInterface
+import android.os.Build
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.annotation.RequiresApi
+import androidx.fragment.app.viewModels
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment
+import com.github.droidworksstudio.launcher.databinding.BottomsheetdialogPaddingSettingsBinding
+import com.github.droidworksstudio.launcher.helper.BottomDialogHelper
+import com.github.droidworksstudio.launcher.helper.PreferenceHelper
+import com.github.droidworksstudio.launcher.viewmodel.PreferenceViewModel
+import dagger.hilt.android.AndroidEntryPoint
+import javax.inject.Inject
+@AndroidEntryPoint
+class PaddingBottomSheetDialogFragment(context: Context) : BottomSheetDialogFragment() {
+
+ private var _binding: BottomsheetdialogPaddingSettingsBinding? = null
+ private val binding get() = _binding!!
+
+ @Inject
+ lateinit var preferenceHelper: PreferenceHelper
+
+ @Inject
+ lateinit var bottomDialogHelper: BottomDialogHelper
+
+ private val preferenceViewModel: PreferenceViewModel by viewModels()
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ _binding = BottomsheetdialogPaddingSettingsBinding.inflate(inflater, container, false)
+ return binding.root
+ }
+
+ @RequiresApi(Build.VERSION_CODES.O)
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ initView()
+ }
+
+ private fun initView(){
+ bottomDialogHelper.setupDialogStyle(dialog)
+
+ binding.selectAppPaddingSize.setText(preferenceHelper.homeAppPadding.toString())
+ }
+
+ private fun observeValueChange(){
+ val appValue = binding.selectAppPaddingSize.text.toString()
+
+ val appFloatValue = parseFloatValue(appValue, preferenceHelper.homeAppPadding)
+ dismiss()
+
+ preferenceViewModel.setAppPaddingSize(appFloatValue)
+ }
+
+ private fun parseFloatValue(text: String, defaultValue: Float): Float {
+ if (text.isEmpty() || text == "0") {
+ return defaultValue
+ }
+ return text.toFloat()
+ }
+
+ override fun onDismiss(dialog: DialogInterface) {
+ super.onDismiss(dialog)
+
+ observeValueChange()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/TextBottomSheetDialogFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/TextBottomSheetDialogFragment.kt
index 1e481af..1f542b0 100644
--- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/TextBottomSheetDialogFragment.kt
+++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/bottomsheetdialog/TextBottomSheetDialogFragment.kt
@@ -51,21 +51,25 @@ class TextBottomSheetDialogFragment(context: Context) : BottomSheetDialogFragmen
binding.selectDateTextSize.setText(preferenceHelper.dateTextSize.toString())
binding.selectTimeTextSize.setText(preferenceHelper.timeTextSize.toString())
binding.selectAppTextSize.setText(preferenceHelper.appTextSize.toString())
+ binding.selectBatteryTextSize.setText(preferenceHelper.batteryTextSize.toString())
}
private fun observeValueChange(){
val dateValue = binding.selectDateTextSize.text.toString()
val timeValue = binding.selectTimeTextSize.text.toString()
val appValue = binding.selectAppTextSize.text.toString()
+ val batteryValue = binding.selectBatteryTextSize.text.toString()
val dateFloatValue = parseFloatValue(dateValue, preferenceHelper.dateTextSize)
val timeFloatValue = parseFloatValue(timeValue, preferenceHelper.timeTextSize)
val appFloatValue = parseFloatValue(appValue, preferenceHelper.appTextSize)
+ val batteryFloatValue = parseFloatValue(batteryValue, preferenceHelper.batteryTextSize)
dismiss()
preferenceViewModel.setDateTextSize(dateFloatValue)
preferenceViewModel.setTimeTextSize(timeFloatValue)
preferenceViewModel.setAppTextSize(appFloatValue)
+ preferenceViewModel.setBatteryTextSize(batteryFloatValue)
}
private fun parseFloatValue(text: String, defaultValue: Float): Float {
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 08849bd..079a80a 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
@@ -107,6 +107,7 @@ class HomeFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener,
binding.clock.setOnClickListener { appHelper.launchClock(context) }
binding.date.setOnClickListener { appHelper.launchCalendar(context) }
+ binding.battery.setOnClickListener { appHelper.openBatteryManager(context) }
}
private fun setupBattery() {
@@ -129,13 +130,12 @@ class HomeFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener,
val marginTopInPixels = 128
val params: ViewGroup.MarginLayoutParams = binding.appListAdapter.layoutParams as ViewGroup.MarginLayoutParams
params.topMargin = marginTopInPixels
- binding.appListAdapter.layoutParams = params
binding.appListAdapter.apply {
adapter = homeAdapter
+ layoutParams = params
setHasFixedSize(false)
layoutManager = StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL)
- //itemAnimator = false
isNestedScrollingEnabled = false
}
}
@@ -143,6 +143,7 @@ class HomeFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener,
private fun observeFavoriteAppList() {
viewModel.compareInstalledAppInfo()
+ @Suppress("DEPRECATION")
viewLifecycleOwner.lifecycleScope.launchWhenCreated {
viewModel.favoriteApps.flowOn(Dispatchers.Main).collect {
homeAdapter.submitList(it)
@@ -176,17 +177,21 @@ class HomeFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener,
)
}
preferenceViewModel.showBatteryLiveData.observe(viewLifecycleOwner){
- //binding.battery.setTextColor(preferenceHelper.batteryColor)
- appHelper.updateUI(binding.battery, Gravity.END,
+ appHelper.updateUI(binding.battery,
+ Gravity.END,
preferenceHelper.batteryColor,
- preferenceHelper.timeTextSize,
+ preferenceHelper.batteryTextSize,
preferenceHelper.showBattery
)
}
preferenceViewModel.showDailyWordLiveData.observe(viewLifecycleOwner) {
-// updateViewVisibility(binding.word, showDailyWord)
-// appHelper.updateUI(binding.word, preferenceHelper.homeDailyWordAlignment, preferenceHelper.dailyWordColor, preferenceHelper.showDailyWord)
+ appHelper.updateUI(binding.word,
+ preferenceHelper.homeDailyWordAlignment,
+ preferenceHelper.dailyWordColor,
+ preferenceHelper.dailyWordTextSize,
+ preferenceHelper.showDailyWord
+ )
}
val is24HourFormat = DateFormat.is24HourFormat(requireContext())
val localLocale = Locale.getDefault()
@@ -199,6 +204,8 @@ class HomeFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener,
val datePattern = DateFormat.getBestDateTimePattern(localLocale, "eeeddMMM")
binding.date.format12Hour = datePattern
binding.date.format24Hour = datePattern
+
+ binding.word.text = appHelper.wordOfTheDay(resources)
}
private fun observeBioAuthCheck(appInfo: AppInfo) {
@@ -225,7 +232,11 @@ class HomeFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener,
@RequiresApi(Build.VERSION_CODES.P)
override fun onDoubleClick() {
super.onDoubleClick()
- if(preferenceHelper.tapLockScreen) { MyAccessibilityService.instance()?.lockScreen() } else { return }
+ if(preferenceHelper.tapLockScreen) {
+ MyAccessibilityService.instance()?.lockScreen()
+ } else {
+ return
+ }
}
}
}
diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeViewHolder.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeViewHolder.kt
index 8f4fd2f..e52d468 100644
--- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeViewHolder.kt
+++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeViewHolder.kt
@@ -1,5 +1,6 @@
package com.github.droidworksstudio.launcher.ui.home
+import android.content.Context
import android.util.Log
import android.view.View
import androidx.appcompat.widget.LinearLayoutCompat
@@ -15,16 +16,17 @@ class HomeViewHolder @Inject constructor(
private val binding: ItemHomeBinding,
private val onAppClickedListener: OnItemClickedListener.OnAppsClickedListener,
private val onAppLongClickedListener: OnItemClickedListener.OnAppLongClickedListener,
- private val preferenceHelper: PreferenceHelper
+ private val preferenceHelper: PreferenceHelper,
) : RecyclerView.ViewHolder(binding.root) {
fun bind(appInfo: AppInfo) {
-
binding.apply {
val layoutParams = LinearLayoutCompat.LayoutParams(
LinearLayoutCompat.LayoutParams.WRAP_CONTENT,
LinearLayoutCompat.LayoutParams.WRAP_CONTENT
).apply {
gravity = preferenceHelper.homeAppAlignment
+ topMargin = preferenceHelper.homeAppPadding.toInt()
+ bottomMargin = preferenceHelper.homeAppPadding.toInt()
}
appHomeName.layoutParams = layoutParams
@@ -32,6 +34,11 @@ class HomeViewHolder @Inject constructor(
appHomeName.setTextColor(preferenceHelper.appColor)
appHomeName.textSize = preferenceHelper.appTextSize
Log.d("Tag", "Home Adapter Color: ${preferenceHelper.appColor}")
+
+ val appIcon = binding.root.context.packageManager.getApplicationIcon(appInfo.packageName)
+ appHomeIcon.setImageDrawable(appIcon)
+ appHomeIcon.layoutParams.width = preferenceHelper.appTextSize.toInt() * 3
+ appHomeIcon.layoutParams.height = preferenceHelper.appTextSize.toInt() * 3
appHomeIcon.visibility = View.GONE
}
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 799a334..fa5af15 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
@@ -1,5 +1,6 @@
package com.github.droidworksstudio.launcher.ui.settings
+import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.util.Log
@@ -17,6 +18,7 @@ import com.github.droidworksstudio.launcher.helper.PreferenceHelper
import com.github.droidworksstudio.launcher.listener.ScrollEventListener
import com.github.droidworksstudio.launcher.ui.bottomsheetdialog.AlignmentBottomSheetDialogFragment
import com.github.droidworksstudio.launcher.ui.bottomsheetdialog.ColorBottomSheetDialogFragment
+import com.github.droidworksstudio.launcher.ui.bottomsheetdialog.PaddingBottomSheetDialogFragment
import com.github.droidworksstudio.launcher.ui.bottomsheetdialog.TextBottomSheetDialogFragment
import com.github.droidworksstudio.launcher.viewmodel.PreferenceViewModel
import dagger.hilt.android.AndroidEntryPoint
@@ -52,6 +54,7 @@ class SettingsFragment : Fragment(), ScrollEventListener {
// Called after the fragment view is created
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ navController = findNavController()
// Set according to the system theme mode
appHelper.dayNightMod(requireContext(), binding.nestScrollView)
super.onViewCreated(view, savedInstanceState)
@@ -60,8 +63,8 @@ class SettingsFragment : Fragment(), ScrollEventListener {
observeClickListener()
}
+ @SuppressLint("SetTextI18n")
private fun initializeInjectedDependencies() {
- navController = findNavController()
binding.nestScrollView.scrollEventListener = this
// Set initial values and listeners for switches
@@ -69,6 +72,7 @@ class SettingsFragment : Fragment(), ScrollEventListener {
binding.timeSwitchCompat.isChecked = preferenceHelper.showTime
binding.dateSwitchCompat.isChecked = preferenceHelper.showDate
binding.batterySwitchCompat.isChecked = preferenceHelper.showBattery
+ binding.dailyWordSwitchCompat.isChecked = preferenceHelper.showDailyWord
binding.gesturesLockSwitchCompat1.isChecked = preferenceHelper.tapLockScreen
}
@@ -103,6 +107,11 @@ class SettingsFragment : Fragment(), ScrollEventListener {
bottomSheetFragment.show(parentFragmentManager, "BottomSheetDialog")
}
+ binding.selectAppearancePadding.setOnClickListener {
+ val bottomSheetFragment = PaddingBottomSheetDialogFragment(this.requireContext())
+ bottomSheetFragment.show(parentFragmentManager, "BottomSheetDialog")
+ }
+
binding.selectAppearanceColor.setOnClickListener {
val bottomSheetFragment = ColorBottomSheetDialogFragment(this.requireContext())
bottomSheetFragment.show(parentFragmentManager, "BottomSheetDialog")
@@ -121,9 +130,15 @@ class SettingsFragment : Fragment(), ScrollEventListener {
binding.dateSwitchCompat.setOnCheckedChangeListener { _, isChecked ->
preferenceViewModel.setShowDate(isChecked)
}
+
binding.batterySwitchCompat.setOnCheckedChangeListener { _, isChecked ->
preferenceViewModel.setShowBattery(isChecked)
}
+
+ binding.dailyWordSwitchCompat.setOnCheckedChangeListener { _, isChecked ->
+ preferenceViewModel.setShowDailyWord(isChecked)
+ }
+
binding.gesturesLockSwitchCompat1.setOnCheckedChangeListener { _, isChecked ->
appHelper.enableAppAsAccessibilityService(requireContext(), preferenceHelper.tapLockScreen)
preferenceViewModel.setDoubleTapLock(isChecked)
diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/viewmodel/PreferenceViewModel.kt b/app/src/main/java/com/github/droidworksstudio/launcher/viewmodel/PreferenceViewModel.kt
index f763b0a..580ec2f 100644
--- a/app/src/main/java/com/github/droidworksstudio/launcher/viewmodel/PreferenceViewModel.kt
+++ b/app/src/main/java/com/github/droidworksstudio/launcher/viewmodel/PreferenceViewModel.kt
@@ -20,6 +20,7 @@ class PreferenceViewModel @Inject constructor(
val homeAppAlignmentLiveData: MutableLiveData = MutableLiveData()
val homeDateAlignmentLiveData: MutableLiveData = MutableLiveData()
val homeTimeAlignmentLiveData: MutableLiveData = MutableLiveData()
+ val homeDailyWordAlignmentLiveData: MutableLiveData = MutableLiveData()
val dateColorLiveData: MutableLiveData = MutableLiveData()
val timeColorLiveData: MutableLiveData = MutableLiveData()
val batteryColorLiveData: MutableLiveData = MutableLiveData()
@@ -28,7 +29,9 @@ class PreferenceViewModel @Inject constructor(
val dateTextSizeLiveData: MutableLiveData = MutableLiveData()
val timeTextSizeLiveData: MutableLiveData = MutableLiveData()
val appTextSizeLiveData: MutableLiveData = MutableLiveData()
+ val batteryTextSizeLiveData: MutableLiveData = MutableLiveData()
val tapLockScreenLiveData: MutableLiveData = MutableLiveData()
+ val appPaddingSizeLiveData: MutableLiveData = MutableLiveData()
fun setFirstLaunch(firstLaunch: Boolean) {
preferenceHelper.firstLaunch = firstLaunch
@@ -100,6 +103,11 @@ class PreferenceViewModel @Inject constructor(
homeTimeAlignmentLiveData.postValue(preferenceHelper.homeTimeAlignment)
}
+ fun setHomeDailyWordAppAlignment(homeDailyWordAlignment: Int) {
+ preferenceHelper.homeDailyWordAlignment = homeDailyWordAlignment
+ homeDailyWordAlignmentLiveData.postValue(preferenceHelper.homeDailyWordAlignment)
+ }
+
fun setDateTextSize(dateTextSize: Float) {
preferenceHelper.dateTextSize = dateTextSize
dateTextSizeLiveData.postValue(preferenceHelper.dateTextSize)
@@ -115,6 +123,16 @@ class PreferenceViewModel @Inject constructor(
appTextSizeLiveData.postValue(preferenceHelper.appTextSize)
}
+ fun setBatteryTextSize(batteryTextSize: Float) {
+ preferenceHelper.batteryTextSize = batteryTextSize
+ batteryTextSizeLiveData.postValue(preferenceHelper.batteryTextSize)
+ }
+
+ fun setAppPaddingSize(appPaddingSize: Float) {
+ preferenceHelper.homeAppPadding = appPaddingSize
+ appPaddingSizeLiveData.postValue(preferenceHelper.homeAppPadding)
+ }
+
fun setDoubleTapLock(tapLockScreen: Boolean){
preferenceHelper.tapLockScreen = tapLockScreen
tapLockScreenLiveData.postValue((preferenceHelper.tapLockScreen))
diff --git a/app/src/main/res/layout/bottomsheetdialog_alignment_settings.xml b/app/src/main/res/layout/bottomsheetdialog_alignment_settings.xml
index 9143dd8..fc3c324 100644
--- a/app/src/main/res/layout/bottomsheetdialog_alignment_settings.xml
+++ b/app/src/main/res/layout/bottomsheetdialog_alignment_settings.xml
@@ -32,6 +32,7 @@
+ tools:ignore="RtlHardcoded,TouchTargetSizeCheck" />
+ tools:ignore="RtlHardcoded,TouchTargetSizeCheck" />
+ tools:ignore="RtlHardcoded,TouchTargetSizeCheck" />
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/bottomsheetdialog_color_settings.xml b/app/src/main/res/layout/bottomsheetdialog_color_settings.xml
index 7a9a123..4a89a14 100644
--- a/app/src/main/res/layout/bottomsheetdialog_color_settings.xml
+++ b/app/src/main/res/layout/bottomsheetdialog_color_settings.xml
@@ -32,6 +32,7 @@
+ tools:ignore="RtlHardcoded,TouchTargetSizeCheck" />
+ tools:ignore="RtlHardcoded,TouchTargetSizeCheck" />
+ tools:ignore="RtlHardcoded,TouchTargetSizeCheck" />
+ tools:ignore="RtlHardcoded,TouchTargetSizeCheck" />
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/bottomsheetdialog_padding_settings.xml b/app/src/main/res/layout/bottomsheetdialog_padding_settings.xml
new file mode 100644
index 0000000..8e0a709
--- /dev/null
+++ b/app/src/main/res/layout/bottomsheetdialog_padding_settings.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/bottomsheetdialog_text_settings.xml b/app/src/main/res/layout/bottomsheetdialog_text_settings.xml
index cfd739c..23376d1 100644
--- a/app/src/main/res/layout/bottomsheetdialog_text_settings.xml
+++ b/app/src/main/res/layout/bottomsheetdialog_text_settings.xml
@@ -32,6 +32,7 @@
+ tools:ignore="RtlHardcoded,TouchTargetSizeCheck" />
+ tools:ignore="RtlHardcoded,SpeakableTextPresentCheck,TouchTargetSizeCheck,VisualLintTextFieldSize" />
@@ -70,32 +70,32 @@
+ tools:ignore="RtlHardcoded,TouchTargetSizeCheck" />
+ tools:ignore="RtlHardcoded,SpeakableTextPresentCheck,TouchTargetSizeCheck,VisualLintTextFieldSize" />
@@ -106,36 +106,70 @@
+ tools:ignore="RtlHardcoded,TouchTargetSizeCheck" />
+ tools:ignore="RtlHardcoded,SpeakableTextPresentCheck,TouchTargetSizeCheck,VisualLintTextFieldSize" />
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_draw.xml b/app/src/main/res/layout/fragment_draw.xml
index 77b45e9..362b66f 100644
--- a/app/src/main/res/layout/fragment_draw.xml
+++ b/app/src/main/res/layout/fragment_draw.xml
@@ -37,11 +37,11 @@
-
+ android:visibility="gone"/>
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index c6bc7cf..f9c98da 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -43,7 +43,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
- android:text="Battery"
+ android:text="@string/battery_level"
android:textSize="16sp"
style="@style/TextDefaultStyle"/>
@@ -52,7 +52,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
- android:layout_marginVertical="16dp"
+ android:layout_marginVertical="8dp"
android:fontFamily="sans-serif-light"
android:format12Hour="h:mm"
android:textSize="48sp"
@@ -64,7 +64,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
- android:layout_marginBottom="8dp"
android:format12Hour="EEE, dd MMM"
android:format24Hour="EEE, dd MMM"
android:gravity="start"
@@ -73,15 +72,13 @@
tools:text="Thu, 30 Dec"
style="@style/TextDefaultStyle"/>
-
+ android:visibility="gone" />
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index d7d2d2d..a34e99b 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -44,7 +44,6 @@
android:textSize="@dimen/text_large"
style="@style/TextDefaultStyle"/>
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ tools:ignore="MissingConstraints">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/item_home.xml b/app/src/main/res/layout/item_home.xml
index 9992318..b88b76d 100644
--- a/app/src/main/res/layout/item_home.xml
+++ b/app/src/main/res/layout/item_home.xml
@@ -21,25 +21,16 @@
-
-
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d9257dc..e25372b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -20,6 +20,7 @@
Uninstall App
Launcher Settings
+ Version
Home
Display
@@ -36,11 +37,10 @@
Show Battery
Show Daily Word
- Keep Going
-
- Color
Size
+ Color
Alignment
+ Padding
Select Date Color
Select Time Color
@@ -54,9 +54,11 @@
Size
Color
Alignment
+ Padding
Date\u0020:\u0020
Time\u0020:\u0020
App\u0020:\u0020
+ Word\u0020:\u0020
Battery\u0020:\u0020
Custom Wallpaper
@@ -94,10 +96,461 @@
Allows to lock the screen
Aster launcher promises to use lock screen permission responsibly.Aster launcher does not collect or share any data.
+
+
+ - Stay resilient!
+ - You got this!
+ - Shine bright!
+ - Create destiny.
+ - Embrace journey.
+ - Strength within.
+ - Keep pushing!
+ - You\'re amazing!
+ - Trust, never give.
+ - Limitless potential.
+ - Progress over perfection.
+ - Challenges = growth.
+ - Worthy of success.
+ - Chase your dreams.
+ - Overcome all!
+ - Determination wins.
+ - Every step counts.
+ - Stay positive!
+ - Resilience rocks.
+ - Strength in you.
+ - Celebrate progress.
+ - Hard work pays.
+ - Trust, have faith.
+ - Unique journey.
+ - Eyes on prize.
+ - Achieve anything!
+ - Take bold steps.
+ - Passion fuels you.
+ - Focus on goals.
+ - Persevere, win.
+ - Self-belief key.
+ - Deserving of good.
+ - Reach for dreams.
+ - Brave, strong, smart.
+ - Positive attitude.
+ - Trust the journey.
+ - Unwavering determination.
+ - Setbacks = comeback.
+ - Turn dreams reality.
+ - Commit to goals.
+ - Strength, no bounds.
+ - Head up, breakthrough.
+ - Your potential shines.
+ - Dreams within reach.
+ - You\'re unstoppable!
+ - Believe, achieve.
+ - Push past limits.
+ - Perseverance pays.
+ - Stay fearless!
+ - Rise above challenges.
+ - Keep dreaming big.
+ - Live with purpose.
+ - Focus on the good.
+ - Strength from within.
+ - Believe in magic.
+ - Smile, you\'ve got this.
+ - Never lose hope.
+ - Embrace every moment.
+ - Be your own hero.
+ - You\'re enough.
+ - Conquer your fears.
+ - Seize the day!
+ - Love yourself first.
+ - Stay positive, always.
+ - You\'re a warrior.
+ - Believe in yourself.
+ - Embrace possibilities.
+ - Live with passion.
+ - Keep moving forward.
+ - You\'re unstoppable!
+ - Stay true to you.
+ - Live boldly.
+ - Keep the faith.
+ - Strength in adversity.
+ - Every day, grow.
+ - Perseverance, victory.
+ - Chase your passions.
+ - Find joy in journey.
+ - Take risks, thrive.
+ - Stay strong, brave.
+ - Trust inner wisdom.
+ - Keep shining bright.
+ - Dream, believe, achieve.
+ - Be unstoppable.
+ - Own your greatness.
+ - Embrace the unknown.
+ - Keep pushing forward.
+ - Trust in yourself.
+ - Spread kindness always.
+ - Believe in your dreams.
+ - Stay focused, determined.
+ - Embrace your journey.
+ - Keep your head up.
+ - Never give up hope.
+ - Strength from within.
+ - Stay resilient, strong.
+ - You\'re unstoppable!
+ - Embrace the challenge.
+ - Keep the fire burning.
+ - Focus on what\'s possible.
+ - Dream big, work hard.
+ - Keep your eyes on prize.
+ - Trust the process.
+ - Stay true to yourself.
+ - Believe, achieve, succeed.
+ - Stay inspired always.
+ - Be fearless in pursuit.
+ - Stay grounded, rise.
+ - Find strength in struggle.
+ - Embrace every challenge.
+ - Stay bold, stay bright.
+ - You\'re capable of greatness.
+ - Trust your journey.
+ - Keep fighting, keep rising.
+ - Believe in the impossible.
+ - Stay resilient, never give.
+ - You\'re stronger than you know.
+ - Live with passion and purpose.
+ - Find joy in every journey.
+ - Dream, believe, achieve!
+ - Stay positive, stay strong.
+ - Every day is a new chance.
+ - Embrace every opportunity.
+ - Keep pushing past limits.
+ - Trust your inner strength.
+ - You\'re destined for greatness.
+ - Believe in your dreams!
+ - Stay determined, succeed.
+ - Keep moving towards your goals.
+ - Chase your dreams relentlessly.
+ - Strength comes from within.
+ - Stay focused on your goals.
+ - You\'re capable of anything.
+ - Stay fearless, stay strong.
+ - Believe, achieve, succeed!
+ - Trust in your journey.
+ - Stay resilient, rise above.
+ - You have the power within you.
+ - Dream big, work hard, achieve.
+ - Stay focused, stay strong.
+ - You\'re stronger than you think!
+ - Believe in yourself, always.
+ - Stay determined, stay strong.
+ - Embrace every opportunity.
+ - You\'re capable of greatness!
+ - Stay true to yourself.
+ - Trust in your journey.
+ - Keep pushing forward.
+ - Dream, believe, achieve!
+ - Stay fearless, stay strong.
+ - You\'re destined for greatness!
+ - Believe in your dreams!
+ - Stay determined, succeed.
+ - Keep moving towards your goals.
+ - Chase your dreams relentlessly.
+ - Strength comes from within.
+ - Stay focused on your goals.
+ - You\'re capable of anything.
+ - Stay fearless, stay strong.
+ - Believe, achieve, succeed!
+ - Trust in your journey.
+ - Stay resilient, rise above.
+ - You have the power within you.
+ - Dream big, work hard, achieve.
+ - Stay focused, stay strong.
+ - You\'re stronger than you think!
+ - Believe in yourself, always.
+ - Stay determined, stay strong.
+ - Embrace every opportunity.
+ - You\'re capable of greatness!
+ - Stay true to yourself.
+ - Trust in your journey.
+ - Keep pushing forward.
+ - Dream, believe, achieve!
+ - Stay fearless, stay strong.
+ - You\'re destined for greatness!
+ - Believe in your dreams!
+ - Stay determined, succeed.
+ - Keep moving towards your goals.
+ - Chase your dreams relentlessly.
+ - Strength comes from within.
+ - Stay focused on your goals.
+ - You\'re capable of anything.
+ - Stay fearless, stay strong.
+ - Believe, achieve, succeed!
+ - Trust in your journey.
+ - Stay resilient, rise above.
+ - You have the power within you.
+ - Dream big, work hard, achieve.
+ - Stay focused, stay strong.
+ - You\'re stronger than you think!
+ - Believe in yourself, always.
+ - Stay determined, stay strong.
+ - Embrace every opportunity.
+ - You\'re capable of greatness!
+ - Stay true to yourself.
+ - Trust in your journey.
+ - Keep pushing forward.
+ - Dream, believe, achieve!
+ - Stay fearless, stay strong.
+ - You\'re destined for greatness!
+ - Believe in your dreams!
+ - Stay determined, succeed.
+ - Keep moving towards your goals.
+ - Chase your dreams relentlessly.
+ - Strength comes from within.
+ - Stay focused on your goals.
+ - You\'re capable of anything.
+ - Stay fearless, stay strong.
+ - Believe, achieve, succeed!
+ - Trust in your journey.
+ - Stay resilient, rise above.
+ - You have the power within you.
+ - Dream big, work hard, achieve.
+ - Stay focused, stay strong.
+ - You\'re stronger than you think!
+ - Believe in yourself, always.
+ - Stay determined, stay strong.
+ - Embrace every opportunity.
+ - You\'re capable of greatness!
+ - Stay true to yourself.
+ - Trust in your journey.
+ - Keep pushing forward.
+ - Dream, believe, achieve!
+ - Stay fearless, stay strong.
+ - You\'re destined for greatness!
+ - Believe in your dreams!
+ - Stay determined, succeed.
+ - Keep moving towards your goals.
+ - Chase your dreams relentlessly.
+ - Strength comes from within.
+ - Stay focused on your goals.
+ - You\'re capable of anything.
+ - Stay fearless, stay strong.
+ - Believe, achieve, succeed!
+ - Trust in your journey.
+ - Stay resilient, rise above.
+ - You have the power within you.
+ - Dream big, work hard, achieve.
+ - Stay focused, stay strong.
+ - You\'re stronger than you think!
+ - Believe in yourself, always.
+ - Stay determined, stay strong.
+ - Embrace every opportunity.
+ - You\'re capable of greatness!
+ - Stay true to yourself.
+ - Trust in your journey.
+ - Keep pushing forward.
+ - Dream, believe, achieve!
+ - Stay fearless, stay strong.
+ - You\'re destined for greatness!
+ - Believe in your dreams!
+ - Stay determined, succeed.
+ - Keep moving towards your goals.
+ - Chase your dreams relentlessly.
+ - Strength comes from within.
+ - Stay focused on your goals.
+ - You\'re capable of anything.
+ - Stay fearless, stay strong.
+ - Believe, achieve, succeed!
+ - Trust in your journey.
+ - Stay resilient, rise above.
+ - You have the power within you.
+ - Dream big, work hard, achieve.
+ - Stay focused, stay strong.
+ - You\'re stronger than you think!
+ - Believe in yourself, always.
+ - Stay determined, stay strong.
+ - Embrace every opportunity.
+ - You\'re capable of greatness!
+ - Stay true to yourself.
+ - Trust in your journey.
+ - Keep pushing forward.
+ - Dream, believe, achieve!
+ - Stay fearless, stay strong.
+ - You\'re destined for greatness!
+ - Believe in your dreams!
+ - Stay determined, succeed.
+ - Keep moving towards your goals.
+ - Chase your dreams relentlessly.
+ - Strength comes from within.
+ - Stay focused on your goals.
+ - You\'re capable of anything.
+ - Stay fearless, stay strong.
+ - Believe, achieve, succeed!
+ - Trust in your journey.
+ - Stay resilient, rise above.
+ - You have the power within you.
+ - Dream big, work hard, achieve.
+ - Stay focused, stay strong.
+ - You\'re stronger than you think!
+ - Believe in yourself, always.
+ - Stay determined, stay strong.
+ - Embrace every opportunity.
+ - You\'re capable of greatness!
+ - Stay true to yourself.
+ - Trust in your journey.
+ - Keep pushing forward.
+ - Dream, believe, achieve!
+ - Stay fearless, stay strong.
+ - You\'re destined for greatness!
+ - Believe in your dreams!
+ - Stay determined, succeed.
+ - Keep moving towards your goals.
+ - Chase your dreams relentlessly.
+ - Strength comes from within.
+ - Stay focused on your goals.
+ - You\'re capable of anything.
+ - Stay fearless, stay strong.
+ - Believe, achieve, succeed!
+ - Trust in your journey.
+ - Stay resilient, rise above.
+ - You have the power within you.
+ - Dream big, work hard, achieve.
+ - Stay focused, stay strong.
+ - You\'re stronger than you think!
+ - Believe in yourself, always.
+ - Stay determined, stay strong.
+ - Embrace every opportunity.
+ - You\'re capable of greatness!
+ - Stay true to yourself.
+ - Trust in your journey.
+ - Keep pushing forward.
+ - Dream, believe, achieve!
+ - Stay fearless, stay strong.
+ - You\'re destined for greatness!
+ - Believe in your dreams!
+ - Stay determined, succeed.
+ - Keep moving towards your goals.
+ - Chase your dreams relentlessly.
+ - Strength comes from within.
+ - Stay focused on your goals.
+ - You\'re capable of anything.
+ - Stay fearless, stay strong.
+ - Believe, achieve, succeed!
+ - Trust in your journey.
+ - Stay resilient, rise above.
+ - You have the power within you.
+ - Dream big, work hard, achieve.
+ - Stay focused, stay strong.
+ - You\'re stronger than you think!
+ - Believe in yourself, always.
+ - Stay determined, stay strong.
+ - Embrace every opportunity.
+ - You\'re capable of greatness!
+ - Stay true to yourself.
+ - Trust in your journey.
+ - Keep pushing forward.
+ - Dream, believe, achieve!
+ - Stay fearless, stay strong.
+ - You\'re destined for greatness!
+ - Believe in your dreams!
+ - Stay determined, succeed.
+ - Keep moving towards your goals.
+ - Chase your dreams relentlessly.
+ - Strength comes from within.
+ - Stay focused on your goals.
+ - You\'re capable of anything.
+ - Stay fearless, stay strong.
+ - Believe, achieve, succeed!
+ - Trust in your journey.
+ - Stay resilient, rise above.
+ - You have the power within you.
+ - Dream big, work hard, achieve.
+ - Stay focused, stay strong.
+ - You\'re stronger than you think!
+ - Believe in yourself, always.
+ - Stay determined, stay strong.
+ - Embrace every opportunity.
+ - You\'re capable of greatness!
+ - Stay true to yourself.
+ - Trust in your journey.
+ - Keep pushing forward.
+ - Dream, believe, achieve!
+ - Stay fearless, stay strong.
+ - You\'re destined for greatness!
+ - Believe in your dreams!
+ - Stay determined, succeed.
+ - Keep moving towards your goals.
+ - Chase your dreams relentlessly.
+ - Strength comes from within.
+ - Stay focused on your goals.
+ - You\'re capable of anything.
+ - Stay fearless, stay strong.
+ - Believe, achieve, succeed!
+ - Trust in your journey.
+ - Stay resilient, rise above.
+ - You have the power within you.
+ - Dream big, work hard, achieve.
+ - Stay focused, stay strong.
+ - You\'re stronger than you think!
+ - Believe in yourself, always.
+ - Stay determined, stay strong.
+ - Embrace every opportunity.
+ - You\'re capable of greatness!
+ - Stay true to yourself.
+ - Trust in your journey.
+ - Keep pushing forward.
+ - Dream, believe, achieve!
+ - Stay fearless, stay strong.
+ - You\'re destined for greatness!
+ - Believe in your dreams!
+ - Stay determined, succeed.
+ - Keep moving towards your goals.
+ - Chase your dreams relentlessly.
+ - Strength comes from within.
+ - Stay focused on your goals.
+ - You\'re capable of anything.
+ - Stay fearless, stay strong.
+ - Believe, achieve, succeed!
+ - Trust in your journey.
+ - Stay resilient, rise above.
+ - You have the power within you.
+ - Dream big, work hard, achieve.
+ - Stay focused, stay strong.
+ - You\'re stronger than you think!
+ - Believe in yourself, always.
+ - Stay determined, stay strong.
+ - Embrace every opportunity.
+ - You\'re capable of greatness!
+ - Stay true to yourself.
+ - Trust in your journey.
+ - Keep pushing forward.
+ - Dream, believe, achieve!
+ - Stay fearless, stay strong.
+ - You\'re destined for greatness!
+ - Believe in your dreams!
+ - Stay determined, succeed.
+ - Keep moving towards your goals.
+ - Chase your dreams relentlessly.
+ - Strength comes from within.
+ - Stay focused on your goals.
+ - You\'re capable of anything.
+ - Stay fearless, stay strong.
+ - Believe, achieve, succeed!
+ - Trust in your journey.
+ - Stay resilient, rise above.
+ - You have the power within you.
+ - Dream big, work hard, achieve.
+ - Stay focused, stay strong.
+ - You\'re stronger than you think!
+ - Believe in yourself, always.
+ - Stay determined, stay strong.
+ - Embrace every opportunity.
+ - You\'re capable of greatness!
+ - Stay true to yourself.
+ - Trust in your journey.
+ - Keep pushing forward.
+ - Dream, believe, achieve!
+
- Left
- Center
- Right
-
\ No newline at end of file