reformat code

This commit is contained in:
Josia Pietsch 2024-09-10 19:54:53 +02:00
parent 99acdba262
commit 5dc2ee3901
Signed by: jrpie
GPG key ID: E70B571D66986A2D
68 changed files with 842 additions and 543 deletions

View file

@ -23,8 +23,8 @@ android {
minSdkVersion 21
targetSdkVersion 35
compileSdk 35
versionCode 22
versionName "j-0.0.9"
versionCode 23
versionName "j-0.0.10-beta1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
@ -41,8 +41,6 @@ android {
}
buildTypes {
release {
minifyEnabled true

View file

@ -3,7 +3,8 @@
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
<uses-permission
android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
<uses-permission android:name="android.permission.ACCESS_HIDDEN_PROFILES" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
@ -20,14 +21,15 @@
<activity
android:name=".HomeActivity"
android:exported="true"
android:excludeFromRecents="true"
android:clearTaskOnLaunch="true"
android:excludeFromRecents="true"
android:exported="true"
android:launchMode="singleTask"
android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
@ -36,14 +38,12 @@
<activity
android:name=".tutorial.TutorialActivity"
android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity">
</activity>
tools:ignore="LockedOrientationActivity"></activity>
<activity
android:name=".list.ListActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"
tools:ignore="LockedOrientationActivity">
</activity>
tools:ignore="LockedOrientationActivity"></activity>
<activity
android:name=".settings.SettingsActivity"
android:exported="true"

View file

@ -10,12 +10,8 @@ import android.content.pm.ApplicationInfo
import android.content.pm.LauncherActivityInfo
import android.content.pm.LauncherApps
import android.content.pm.PackageManager
import android.graphics.BlendMode
import android.graphics.BlendModeColorFilter
import android.graphics.ColorMatrix
import android.graphics.ColorMatrixColorFilter
import android.graphics.PorterDuff
import android.graphics.PorterDuffColorFilter
import android.graphics.Rect
import android.graphics.drawable.Drawable
import android.media.AudioManager
@ -30,16 +26,11 @@ import android.util.DisplayMetrics
import android.util.Log
import android.view.KeyEvent
import android.view.View
import android.view.Window
import android.view.WindowManager
import android.view.animation.AlphaAnimation
import android.view.animation.Animation
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import android.widget.ImageView
import android.widget.Switch
import android.widget.Toast
import androidx.annotation.RequiresApi
import de.jrpie.android.launcher.list.ListActivity
import de.jrpie.android.launcher.list.apps.AppInfo
import de.jrpie.android.launcher.list.apps.AppsRecyclerAdapter
@ -87,10 +78,14 @@ fun setDefaultHomeScreen(context: Context, checkDefault: Boolean = false) {
if (checkDefault
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q
&& context is Activity) {
&& context is Activity
) {
val roleManager = context.getSystemService(RoleManager::class.java)
if (!roleManager.isRoleHeld(RoleManager.ROLE_HOME)) {
context.startActivityForResult(roleManager.createRequestRoleIntent(RoleManager.ROLE_HOME), REQUEST_SET_DEFAULT_HOME)
context.startActivityForResult(
roleManager.createRequestRoleIntent(RoleManager.ROLE_HOME),
REQUEST_SET_DEFAULT_HOME
)
}
return
}
@ -116,7 +111,8 @@ fun isInstalled(uri: String, context: Context): Boolean {
try {
context.packageManager.getPackageInfo(uri, PackageManager.GET_ACTIVITIES)
return true
} catch (_: PackageManager.NameNotFoundException) { }
} catch (_: PackageManager.NameNotFoundException) {
}
return false
}
@ -134,8 +130,7 @@ fun launch(
if (LauncherAction.isOtherAction(data)) { // [type]:[info]
LauncherAction.byId(data)?.let { it.launch(activity) }
}
else launchApp(data, user, activity) // app
} else launchApp(data, user, activity) // app
activity.overridePendingTransition(animationIn, animationOut)
}
@ -148,7 +143,8 @@ fun audioNextTrack(activity: Activity) {
val eventTime: Long = SystemClock.uptimeMillis()
val downEvent = KeyEvent(eventTime, eventTime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_NEXT, 0)
val downEvent =
KeyEvent(eventTime, eventTime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_NEXT, 0)
mAudioManager.dispatchMediaKeyEvent(downEvent)
val upEvent = KeyEvent(eventTime, eventTime, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_NEXT, 0)
@ -164,7 +160,8 @@ fun audioPreviousTrack(activity: Activity) {
KeyEvent(eventTime, eventTime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PREVIOUS, 0)
mAudioManager.dispatchMediaKeyEvent(downEvent)
val upEvent = KeyEvent(eventTime, eventTime, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PREVIOUS, 0)
val upEvent =
KeyEvent(eventTime, eventTime, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PREVIOUS, 0)
mAudioManager.dispatchMediaKeyEvent(upEvent)
}
@ -199,7 +196,11 @@ fun expandNotificationsPanel(context: Context) {
val showStatusBar = statusBarManager.getMethod("expandNotificationsPanel")
showStatusBar.invoke(statusBarService)
} catch (e: Exception) {
Toast.makeText(context, context.getString(R.string.alert_cant_expand_notifications_panel), Toast.LENGTH_LONG).show()
Toast.makeText(
context,
context.getString(R.string.alert_cant_expand_notifications_panel),
Toast.LENGTH_LONG
).show()
}
}
@ -209,22 +210,29 @@ fun getUserFromId(user: Int?, context: Context): UserHandle? {
val userManager = context.getSystemService(Service.USER_SERVICE) as UserManager
return userManager.userProfiles.firstOrNull { it.hashCode() == user }
}
fun getLauncherActivityInfo(packageName: String, user: Int?, context: Context): LauncherActivityInfo? {
fun getLauncherActivityInfo(
packageName: String,
user: Int?,
context: Context
): LauncherActivityInfo? {
val launcherApps = context.getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
return getUserFromId(user,context)?.let {
userHandle -> launcherApps.getActivityList(packageName, userHandle).firstOrNull()
return getUserFromId(user, context)?.let { userHandle ->
launcherApps.getActivityList(packageName, userHandle).firstOrNull()
}
}
fun uninstallApp(packageName: String, user: Int?, activity: Activity) {
Log.i("Launcher", "uninstalling $packageName ($user)")
val intent = Intent(Intent.ACTION_UNINSTALL_PACKAGE)
intent.data = Uri.parse("package:$packageName")
getUserFromId(user, activity)?.let {
user -> intent.putExtra(Intent.EXTRA_USER, user)
getUserFromId(user, activity)?.let { user ->
intent.putExtra(Intent.EXTRA_USER, user)
}
intent.putExtra(Intent.EXTRA_RETURN_RESULT, true)
activity.startActivityForResult(intent,
activity.startActivityForResult(
intent,
REQUEST_UNINSTALL
)
}
@ -233,8 +241,8 @@ fun launchApp(packageName: String, user: Int?, context: Context, rect: Rect? = n
Log.i("Launcher", "Starting: " + packageName + " (user " + user.toString() + ")")
if (user != null) {
val launcherApps = context.getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
getLauncherActivityInfo(packageName,user,context)?.let {
app -> launcherApps.startMainActivity(app.componentName, app.user, rect, null)
getLauncherActivityInfo(packageName, user, context)?.let { app ->
launcherApps.startMainActivity(app.componentName, app.user, rect, null)
return
}
}
@ -252,7 +260,8 @@ fun launchApp(packageName: String, user: Int?, context: Context, rect: Rect? = n
)
.setTitle(context.getString(R.string.alert_cant_open_title))
.setMessage(context.getString(R.string.alert_cant_open_message))
.setPositiveButton(android.R.string.ok
.setPositiveButton(
android.R.string.ok
) { _, _ ->
openAppSettings(
packageName,
@ -283,10 +292,16 @@ fun openNewTabWindow(urls: String, context: Context) {
}
fun openAppSettings(packageName: String, user: Int?, context: Context, sourceBounds: Rect? = null, opts: Bundle? = null) {
fun openAppSettings(
packageName: String,
user: Int?,
context: Context,
sourceBounds: Rect? = null,
opts: Bundle? = null
) {
val launcherApps = context.getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
getLauncherActivityInfo(packageName, user, context)?.let {
app -> launcherApps.startAppDetailsActivity(app.componentName, app.user, sourceBounds, opts)
getLauncherActivityInfo(packageName, user, context)?.let { app ->
launcherApps.startAppDetailsActivity(app.componentName, app.user, sourceBounds, opts)
}
}
@ -307,9 +322,9 @@ fun openAppsList(activity: Activity){
fun getAppIcon(context: Context, packageName: String, user: Int?): Drawable {
if (user != null) {
val launcherApps = context.getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
getUserFromId(user,context)?.let {
userHandle -> launcherApps.getActivityList(packageName, userHandle).firstOrNull()?.let {
app -> return app.getBadgedIcon(0)
getUserFromId(user, context)?.let { userHandle ->
launcherApps.getActivityList(packageName, userHandle).firstOrNull()?.let { app ->
return app.getBadgedIcon(0)
}
}
}
@ -335,7 +350,8 @@ fun loadApps(packageManager: PackageManager, context: Context) {
app.packageName = activityInfo.applicationInfo.packageName
app.icon = activityInfo.getBadgedIcon(0)
app.user = user.hashCode()
app.isSystemApp = activityInfo.applicationInfo.flags.and(ApplicationInfo.FLAG_SYSTEM) != 0
app.isSystemApp =
activityInfo.applicationInfo.flags.and(ApplicationInfo.FLAG_SYSTEM) != 0
loadList.add(app)
}
}

View file

@ -11,32 +11,133 @@ import de.jrpie.android.launcher.preferences.LauncherPreferences
* @param animationIn res id of transition animation (in) when using the gesture to launch an app.
* @param animationOut res id of transition animation (out) when using the gesture to launch an app.
*/
enum class Gesture (val id: String, private val labelResource: Int,
enum class Gesture(
val id: String, private val labelResource: Int,
private val defaultsResource: Int,
private val animationIn: Int = android.R.anim.fade_in,
private val animationOut: Int = android.R.anim.fade_out){
VOLUME_UP("action_volumeUpApp", R.string.settings_gesture_vol_up, R.array.default_volume_up, 0,0),
VOLUME_DOWN("action_volumeDownApp", R.string.settings_gesture_vol_down, R.array.default_volume_down,0,0),
private val animationOut: Int = android.R.anim.fade_out
) {
VOLUME_UP(
"action_volumeUpApp",
R.string.settings_gesture_vol_up,
R.array.default_volume_up,
0,
0
),
VOLUME_DOWN(
"action_volumeDownApp",
R.string.settings_gesture_vol_down,
R.array.default_volume_down,
0,
0
),
TIME("action_timeApp", R.string.settings_gesture_time, R.array.default_time),
DATE("action_dateApp", R.string.settings_gesture_date, R.array.default_date),
LONG_CLICK("action_longClickApp", R.string.settings_gesture_long_click, R.array.default_long_click, 0,0),
DOUBLE_CLICK("action_doubleClickApp", R.string.settings_gesture_double_click, R.array.default_double_click,0,0),
LONG_CLICK(
"action_longClickApp",
R.string.settings_gesture_long_click,
R.array.default_long_click,
0,
0
),
DOUBLE_CLICK(
"action_doubleClickApp",
R.string.settings_gesture_double_click,
R.array.default_double_click,
0,
0
),
SWIPE_UP("action_upApp", R.string.settings_gesture_up, R.array.default_up, R.anim.bottom_up),
SWIPE_UP_LEFT_EDGE("action_up_leftApp", R.string.settings_gesture_up_left_edge, R.array.default_up_left, R.anim.bottom_up),
SWIPE_UP_RIGHT_EDGE("action_up_rightApp", R.string.settings_gesture_up_right_edge, R.array.default_up_right, R.anim.bottom_up),
SWIPE_UP_DOUBLE( "action_doubleUpApp", R.string.settings_gesture_double_up, R.array.default_double_up, R.anim.bottom_up),
SWIPE_DOWN("action_downApp", R.string.settings_gesture_down, R.array.default_down, R.anim.top_down),
SWIPE_DOWN_LEFT_EDGE("action_down_leftApp", R.string.settings_gesture_down_left_edge, R.array.default_down_left, R.anim.top_down),
SWIPE_DOWN_RIGHT_EDGE("action_down_rightApp", R.string.settings_gesture_down_right_edge, R.array.default_down_right, R.anim.top_down),
SWIPE_DOWN_DOUBLE("action_doubleDownApp", R.string.settings_gesture_double_down, R.array.default_double_down, R.anim.top_down),
SWIPE_LEFT("action_leftApp", R.string.settings_gesture_left, R.array.default_left, R.anim.right_left),
SWIPE_LEFT_TOP_EDGE("action_left_topApp", R.string.settings_gesture_left_top_edge, R.array.default_left_top, R.anim.right_left),
SWIPE_LEFT_BOTTOM_EDGE("action_left_bottomApp", R.string.settings_gesture_left_bottom_edge, R.array.default_left_bottom, R.anim.right_left),
SWIPE_LEFT_DOUBLE("action_doubleLeftApp", R.string.settings_gesture_double_left, R.array.default_double_left, R.anim.right_left),
SWIPE_RIGHT("action_rightApp", R.string.settings_gesture_right, R.array.default_right, R.anim.left_right),
SWIPE_RIGHT_TOP_EDGE("action_right_topApp", R.string.settings_gesture_right_top_edge, R.array.default_right_top, R.anim.left_right),
SWIPE_RIGHT_BOTTOM_EDGE("action_right_bottomApp", R.string.settings_gesture_right_bottom_edge, R.array.default_right_bottom, R.anim.left_right),
SWIPE_RIGHT_DOUBLE("action_doubleRightApp", R.string.settings_gesture_double_right, R.array.default_double_right, R.anim.left_right);
SWIPE_UP_LEFT_EDGE(
"action_up_leftApp",
R.string.settings_gesture_up_left_edge,
R.array.default_up_left,
R.anim.bottom_up
),
SWIPE_UP_RIGHT_EDGE(
"action_up_rightApp",
R.string.settings_gesture_up_right_edge,
R.array.default_up_right,
R.anim.bottom_up
),
SWIPE_UP_DOUBLE(
"action_doubleUpApp",
R.string.settings_gesture_double_up,
R.array.default_double_up,
R.anim.bottom_up
),
SWIPE_DOWN(
"action_downApp",
R.string.settings_gesture_down,
R.array.default_down,
R.anim.top_down
),
SWIPE_DOWN_LEFT_EDGE(
"action_down_leftApp",
R.string.settings_gesture_down_left_edge,
R.array.default_down_left,
R.anim.top_down
),
SWIPE_DOWN_RIGHT_EDGE(
"action_down_rightApp",
R.string.settings_gesture_down_right_edge,
R.array.default_down_right,
R.anim.top_down
),
SWIPE_DOWN_DOUBLE(
"action_doubleDownApp",
R.string.settings_gesture_double_down,
R.array.default_double_down,
R.anim.top_down
),
SWIPE_LEFT(
"action_leftApp",
R.string.settings_gesture_left,
R.array.default_left,
R.anim.right_left
),
SWIPE_LEFT_TOP_EDGE(
"action_left_topApp",
R.string.settings_gesture_left_top_edge,
R.array.default_left_top,
R.anim.right_left
),
SWIPE_LEFT_BOTTOM_EDGE(
"action_left_bottomApp",
R.string.settings_gesture_left_bottom_edge,
R.array.default_left_bottom,
R.anim.right_left
),
SWIPE_LEFT_DOUBLE(
"action_doubleLeftApp",
R.string.settings_gesture_double_left,
R.array.default_double_left,
R.anim.right_left
),
SWIPE_RIGHT(
"action_rightApp",
R.string.settings_gesture_right,
R.array.default_right,
R.anim.left_right
),
SWIPE_RIGHT_TOP_EDGE(
"action_right_topApp",
R.string.settings_gesture_right_top_edge,
R.array.default_right_top,
R.anim.left_right
),
SWIPE_RIGHT_BOTTOM_EDGE(
"action_right_bottomApp",
R.string.settings_gesture_right_bottom_edge,
R.array.default_right_bottom,
R.anim.left_right
),
SWIPE_RIGHT_DOUBLE(
"action_doubleRightApp",
R.string.settings_gesture_double_right,
R.array.default_double_right,
R.anim.left_right
);
enum class Edge {
TOP, BOTTOM, LEFT, RIGHT
@ -96,18 +197,21 @@ enum class Gesture (val id: String, private val labelResource: Int,
SWIPE_RIGHT -> SWIPE_RIGHT_TOP_EDGE
else -> this
}
Edge.BOTTOM ->
when (this) {
SWIPE_LEFT -> SWIPE_LEFT_BOTTOM_EDGE
SWIPE_RIGHT -> SWIPE_RIGHT_BOTTOM_EDGE
else -> this
}
Edge.LEFT ->
when (this) {
SWIPE_UP -> SWIPE_UP_LEFT_EDGE
SWIPE_DOWN -> SWIPE_DOWN_LEFT_EDGE
else -> this
}
Edge.RIGHT ->
when (this) {
SWIPE_UP -> SWIPE_UP_RIGHT_EDGE
@ -123,6 +227,7 @@ enum class Gesture (val id: String, private val labelResource: Int,
SWIPE_DOWN_DOUBLE,
SWIPE_LEFT_DOUBLE,
SWIPE_RIGHT_DOUBLE -> true
else -> false
}
}
@ -137,6 +242,7 @@ enum class Gesture (val id: String, private val labelResource: Int,
SWIPE_LEFT_BOTTOM_EDGE,
SWIPE_RIGHT_TOP_EDGE,
SWIPE_RIGHT_BOTTOM_EDGE -> true
else -> false
}
}

View file

@ -224,7 +224,11 @@ class HomeActivity: UIObject, AppCompatActivity(),
}
}
return if (mDetector.onTouchEvent(event)) { false } else { super.onTouchEvent(event) }
return if (mDetector.onTouchEvent(event)) {
false
} else {
super.onTouchEvent(event)
}
}
override fun setOnClicks() {
@ -248,11 +252,22 @@ class HomeActivity: UIObject, AppCompatActivity(),
/* TODO: Remove those. For now they are necessary
* because this inherits from GestureDetector.OnGestureListener */
override fun onDoubleTapEvent(event: MotionEvent): Boolean { return false }
override fun onDown(event: MotionEvent): Boolean { return false }
override fun onScroll(e1: MotionEvent?, e2: MotionEvent, dX: Float, dY: Float): Boolean { return false }
override fun onDoubleTapEvent(event: MotionEvent): Boolean {
return false
}
override fun onDown(event: MotionEvent): Boolean {
return false
}
override fun onScroll(e1: MotionEvent?, e2: MotionEvent, dX: Float, dY: Float): Boolean {
return false
}
override fun onShowPress(event: MotionEvent) {}
override fun onSingleTapUp(event: MotionEvent): Boolean { return false }
override fun onSingleTapUp(event: MotionEvent): Boolean {
return false
}
override fun isHomeScreen(): Boolean {
return true

View file

@ -2,7 +2,6 @@ package de.jrpie.android.launcher
import android.app.Activity
import android.content.res.Resources
import android.os.Build
import android.view.Window
import android.view.WindowManager
import de.jrpie.android.launcher.preferences.LauncherPreferences
@ -43,6 +42,7 @@ interface UIObject {
setOnClicks()
adjustLayout()
}
fun modifyTheme(theme: Resources.Theme): Resources.Theme {
LauncherPreferences.theme().colorTheme().applyToTheme(theme)
LauncherPreferences.theme().background().applyToTheme(theme)

View file

@ -44,6 +44,7 @@ class ListActivity : AppCompatActivity(), UIObject {
VIEW(R.string.list_title_view), /* view list of apps */
PICK(R.string.list_title_pick) /* choose app or action to associate to a gesture */
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -66,7 +67,8 @@ class ListActivity : AppCompatActivity(), UIObject {
binding.listContainer.context.resources.displayMetrics.heightPixels
val diff = height - r.bottom
if (diff != 0 &&
LauncherPreferences.display().fullScreen()) {
LauncherPreferences.display().fullScreen()
) {
if (binding.listContainer.paddingBottom !== diff) {
binding.listContainer.setPadding(0, 0, 0, diff)
}
@ -146,8 +148,8 @@ private val TAB_TITLES = arrayOf(
* The [ListSectionsPagerAdapter] returns the fragment,
* which corresponds to the selected tab in [ListActivity].
*/
class ListSectionsPagerAdapter(private val context: Context, fm: FragmentManager)
: FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
class ListSectionsPagerAdapter(private val context: Context, fm: FragmentManager) :
FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
override fun getItem(position: Int): Fragment {
return when (position) {

View file

@ -34,10 +34,12 @@ import kotlin.text.Regex.Companion.escapeReplacement
* @param intention - why the list is displayed ("view", "pick")
* @param forGesture - the action which an app is chosen for (when the intention is "pick")
*/
class AppsRecyclerAdapter(val activity: Activity,
class AppsRecyclerAdapter(
val activity: Activity,
private val intention: ListActivity.ListActivityIntention
= ListActivity.ListActivityIntention.VIEW,
private val forGesture: String? = ""):
private val forGesture: String? = ""
) :
RecyclerView.Adapter<AppsRecyclerAdapter.ViewHolder>() {
private val appsListDisplayed: MutableList<AppInfo>
@ -53,7 +55,9 @@ class AppsRecyclerAdapter(val activity: Activity,
selectItem(adapterPosition, rect)
}
init { itemView.setOnClickListener(this) }
init {
itemView.setOnClickListener(this)
}
}
override fun onBindViewHolder(viewHolder: ViewHolder, i: Int) {
@ -72,8 +76,22 @@ class AppsRecyclerAdapter(val activity: Activity,
// decide when to show the options popup menu about
if (intention == ListActivity.ListActivityIntention.VIEW) {
viewHolder.textView.setOnLongClickListener{ showOptionsPopup(viewHolder, appPackageName, appUser, isSystemApp) }
viewHolder.img.setOnLongClickListener{ showOptionsPopup(viewHolder, appPackageName, appUser, isSystemApp) }
viewHolder.textView.setOnLongClickListener {
showOptionsPopup(
viewHolder,
appPackageName,
appUser,
isSystemApp
)
}
viewHolder.img.setOnLongClickListener {
showOptionsPopup(
viewHolder,
appPackageName,
appUser,
isSystemApp
)
}
// ensure onClicks are actually caught
viewHolder.textView.setOnClickListener { viewHolder.onClick(viewHolder.textView) }
viewHolder.img.setOnClickListener { viewHolder.onClick(viewHolder.img) }
@ -81,7 +99,12 @@ class AppsRecyclerAdapter(val activity: Activity,
}
@Suppress("SameReturnValue")
private fun showOptionsPopup(viewHolder: ViewHolder, appPackageName: String, user: Int?, isSystemApp: Boolean): Boolean {
private fun showOptionsPopup(
viewHolder: ViewHolder,
appPackageName: String,
user: Int?,
isSystemApp: Boolean
): Boolean {
//create the popup menu
val popup = PopupMenu(activity, viewHolder.img)
@ -97,10 +120,12 @@ class AppsRecyclerAdapter(val activity: Activity,
uninstallApp(appPackageName, user, activity)
true
}
R.id.app_menu_info -> {
openAppSettings(appPackageName, user, activity)
true
}
else -> false
}
}
@ -109,7 +134,9 @@ class AppsRecyclerAdapter(val activity: Activity,
return true
}
override fun getItemCount(): Int { return appsListDisplayed.size }
override fun getItemCount(): Int {
return appsListDisplayed.size
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val inflater = LayoutInflater.from(parent.context)
@ -140,6 +167,7 @@ class AppsRecyclerAdapter(val activity: Activity,
ListActivity.ListActivityIntention.VIEW -> {
launchApp(appPackageName, appUser, activity, rect)
}
ListActivity.ListActivityIntention.PICK -> {
val returnIntent = Intent()
returnIntent.putExtra("value", appPackageName)
@ -187,11 +215,13 @@ class AppsRecyclerAdapter(val activity: Activity,
}
if (appsListDisplayed.size == 1 && intention == ListActivity.ListActivityIntention.VIEW
&& LauncherPreferences.functionality().searchAutoLaunch()) {
&& LauncherPreferences.functionality().searchAutoLaunch()
) {
val info = appsListDisplayed[0]
launch(info.packageName.toString(), info.user, activity)
val inputMethodManager = activity.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
val inputMethodManager =
activity.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(View(activity).windowToken, 0)
}

View file

@ -66,7 +66,8 @@ class ListFragmentApps : Fragment(), UIObject {
})
if (intention == ListActivity.ListActivityIntention.VIEW
&& LauncherPreferences.functionality().searchAutoOpenKeyboard()){
&& LauncherPreferences.functionality().searchAutoOpenKeyboard()
) {
openSoftKeyboard(requireContext(), binding.listAppsSearchview)
}
}

View file

@ -10,25 +10,50 @@ import de.jrpie.android.launcher.expandNotificationsPanel
import de.jrpie.android.launcher.openAppsList
import de.jrpie.android.launcher.openSettings
enum class LauncherAction(val id: String, val label: Int, val icon: Int, val launch: (Activity) -> Unit) {
SETTINGS("launcher:settings", R.string.list_other_settings, R.drawable.baseline_settings_24, ::openSettings),
CHOOSE("launcher:choose", R.string.list_other_list, R.drawable.baseline_menu_24, ::openAppsList),
VOLUME_UP("launcher:volumeUp",
enum class LauncherAction(
val id: String,
val label: Int,
val icon: Int,
val launch: (Activity) -> Unit
) {
SETTINGS(
"launcher:settings",
R.string.list_other_settings,
R.drawable.baseline_settings_24,
::openSettings
),
CHOOSE(
"launcher:choose",
R.string.list_other_list,
R.drawable.baseline_menu_24,
::openAppsList
),
VOLUME_UP(
"launcher:volumeUp",
R.string.list_other_volume_up,
R.drawable.baseline_volume_up_24, ::audioVolumeUp),
VOLUME_DOWN("launcher:volumeDown",
R.drawable.baseline_volume_up_24, ::audioVolumeUp
),
VOLUME_DOWN(
"launcher:volumeDown",
R.string.list_other_volume_down,
R.drawable.baseline_volume_down_24, ::audioVolumeDown),
TRACK_NEXT("launcher:nextTrack",
R.drawable.baseline_volume_down_24, ::audioVolumeDown
),
TRACK_NEXT(
"launcher:nextTrack",
R.string.list_other_track_next,
R.drawable.baseline_skip_next_24, ::audioNextTrack),
TRACK_PREV("launcher:previousTrack",
R.drawable.baseline_skip_next_24, ::audioNextTrack
),
TRACK_PREV(
"launcher:previousTrack",
R.string.list_other_track_previous,
R.drawable.baseline_skip_previous_24, ::audioPreviousTrack),
EXPAND_NOTIFICATIONS_PANEL("launcher:expandNotificationsPanel",
R.drawable.baseline_skip_previous_24, ::audioPreviousTrack
),
EXPAND_NOTIFICATIONS_PANEL(
"launcher:expandNotificationsPanel",
R.string.list_other_expand_notifications_panel,
R.drawable.baseline_notifications_24,
::expandNotificationsPanel),
::expandNotificationsPanel
),
NOP("launcher:nop", R.string.list_other_nop, R.drawable.baseline_not_interested_24, {});
companion object {

View file

@ -6,7 +6,6 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.databinding.ListOtherBinding
/**

View file

@ -38,7 +38,9 @@ class OtherRecyclerAdapter(val activity: Activity):
forGesture?.let { returnChoiceIntent(it, content.id) }
}
init { itemView.setOnClickListener(this) }
init {
itemView.setOnClickListener(this)
}
}
override fun onBindViewHolder(viewHolder: ViewHolder, i: Int) {
@ -49,7 +51,9 @@ class OtherRecyclerAdapter(val activity: Activity):
viewHolder.iconView.setImageResource(icon)
}
override fun getItemCount(): Int { return othersList.size }
override fun getItemCount(): Int {
return othersList.size
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val inflater = LayoutInflater.from(parent.context)

View file

@ -13,10 +13,14 @@ fun migrateToNewVersion(activity: Activity) {
when (LauncherPreferences.internal().versionCode()) {
// Check versions, make sure transitions between versions go well
VERSION_CODE -> { /* the version installed and used previously are the same */ }
VERSION_CODE -> { /* the version installed and used previously are the same */
}
21, 22, 23 -> {
// TODO
} else -> { /* The version used before was pre- v1.3.0,
}
else -> { /* The version used before was pre- v1.3.0,
as version tracking started then */
/*

View file

@ -7,14 +7,17 @@ import android.content.res.Resources
import android.os.Bundle
import android.provider.Settings
import androidx.appcompat.app.AppCompatActivity
import androidx.viewpager.widget.ViewPager
import de.jrpie.android.launcher.*
import com.google.android.material.tabs.TabLayout
import de.jrpie.android.launcher.databinding.SettingsBinding
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import androidx.viewpager.widget.ViewPager
import com.google.android.material.tabs.TabLayout
import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.REQUEST_CHOOSE_APP
import de.jrpie.android.launcher.UIObject
import de.jrpie.android.launcher.databinding.SettingsBinding
import de.jrpie.android.launcher.preferences.LauncherPreferences
import de.jrpie.android.launcher.saveListActivityChoice
import de.jrpie.android.launcher.settings.actions.SettingsFragmentActions
import de.jrpie.android.launcher.settings.launcher.SettingsFragmentLauncher
import de.jrpie.android.launcher.settings.meta.SettingsFragmentMeta
@ -56,11 +59,13 @@ class SettingsActivity: AppCompatActivity(), UIObject {
override fun onStart() {
super<AppCompatActivity>.onStart()
super<UIObject>.onStart()
LauncherPreferences.getSharedPreferences().registerOnSharedPreferenceChangeListener(sharedPreferencesListener)
LauncherPreferences.getSharedPreferences()
.registerOnSharedPreferenceChangeListener(sharedPreferencesListener)
}
override fun onPause() {
LauncherPreferences.getSharedPreferences().unregisterOnSharedPreferenceChangeListener(sharedPreferencesListener)
LauncherPreferences.getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(sharedPreferencesListener)
super.onPause()
}
@ -91,8 +96,8 @@ private val TAB_TITLES = arrayOf(
R.string.settings_tab_meta
)
class SettingsSectionsPagerAdapter(private val context: Context, fm: FragmentManager)
: FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
class SettingsSectionsPagerAdapter(private val context: Context, fm: FragmentManager) :
FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
override fun getItem(position: Int): Fragment {
return when (position) {
@ -107,5 +112,7 @@ class SettingsSectionsPagerAdapter(private val context: Context, fm: FragmentMan
return context.resources.getString(TAB_TITLES[position])
}
override fun getCount(): Int { return 3 }
override fun getCount(): Int {
return 3
}
}

View file

@ -55,7 +55,11 @@ SettingsFragmentActions : Fragment(), UIObject {
intent.addCategory(Intent.CATEGORY_APP_MARKET)
startActivity(intent)
} catch (e: ActivityNotFoundException) {
Toast.makeText(context, getString(R.string.settings_apps_toast_store_not_found), Toast.LENGTH_SHORT).show()
Toast.makeText(
context,
getString(R.string.settings_apps_toast_store_not_found),
Toast.LENGTH_SHORT
).show()
}
}
}

View file

@ -1,25 +1,28 @@
package de.jrpie.android.launcher.settings.actions
import android.app.Activity
import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import de.jrpie.android.launcher.*
import de.jrpie.android.launcher.list.ListActivity
import android.app.Activity
import android.content.Intent
import android.content.SharedPreferences
import android.util.Log
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import de.jrpie.android.launcher.list.other.LauncherAction
import de.jrpie.android.launcher.Gesture
import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.REQUEST_CHOOSE_APP
import de.jrpie.android.launcher.UIObject
import de.jrpie.android.launcher.databinding.SettingsActionsRecyclerBinding
import de.jrpie.android.launcher.getAppIcon
import de.jrpie.android.launcher.list.ListActivity
import de.jrpie.android.launcher.list.other.LauncherAction
import de.jrpie.android.launcher.preferences.LauncherPreferences
import java.lang.Exception
import de.jrpie.android.launcher.transformGrayscale
/**
* The [SettingsFragmentActionsRecycler] is a fragment containing the [ActionsRecyclerAdapter],
@ -57,13 +60,15 @@ class SettingsFragmentActionsRecycler : Fragment(), UIObject {
layoutManager = actionViewManager
adapter = actionViewAdapter
}
LauncherPreferences.getSharedPreferences().registerOnSharedPreferenceChangeListener(sharedPreferencesListener)
LauncherPreferences.getSharedPreferences()
.registerOnSharedPreferenceChangeListener(sharedPreferencesListener)
super<UIObject>.onStart()
}
override fun onDestroy() {
LauncherPreferences.getSharedPreferences().unregisterOnSharedPreferenceChangeListener(sharedPreferencesListener)
LauncherPreferences.getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(sharedPreferencesListener)
super.onDestroy()
}
@ -83,7 +88,9 @@ class ActionsRecyclerAdapter(val activity: Activity):
override fun onClick(v: View) {}
init { itemView.setOnClickListener(this) }
init {
itemView.setOnClickListener(this)
}
}
private fun updateViewHolder(gesture: Gesture, viewHolder: ViewHolder) {
@ -96,8 +103,7 @@ class ActionsRecyclerAdapter(val activity: Activity):
viewHolder.img.visibility = View.INVISIBLE
viewHolder.removeAction.visibility = View.GONE
viewHolder.chooseButton.visibility = View.VISIBLE
}
else if (LauncherAction.isOtherAction(content)) {
} else if (LauncherAction.isOtherAction(content)) {
LauncherAction.byId(content)?.let {
viewHolder.img.setImageResource(it.icon)
}
@ -126,7 +132,9 @@ class ActionsRecyclerAdapter(val activity: Activity):
viewHolder.removeAction.setOnClickListener { gesture.removeApp(activity) }
}
override fun getItemCount(): Int { return gesturesList.size }
override fun getItemCount(): Int {
return gesturesList.size
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val inflater = LayoutInflater.from(parent.context)
@ -139,7 +147,8 @@ class ActionsRecyclerAdapter(val activity: Activity):
val edgeActions = LauncherPreferences.enabled_gestures().edgeSwipe()
gesturesList = Gesture.values().filter {
(doubleActions || !it.isDoubleVariant())
&& (edgeActions || !it.isEdgeVariant())} as ArrayList<Gesture>
&& (edgeActions || !it.isEdgeVariant())
} as ArrayList<Gesture>
}
fun updateActions() {
@ -148,7 +157,8 @@ class ActionsRecyclerAdapter(val activity: Activity):
this.gesturesList.clear()
gesturesList.addAll(Gesture.values().filter {
(doubleActions || !it.isDoubleVariant())
&& (edgeActions || !it.isEdgeVariant())})
&& (edgeActions || !it.isEdgeVariant())
})
notifyDataSetChanged()
}
@ -158,7 +168,8 @@ class ActionsRecyclerAdapter(val activity: Activity):
val intent = Intent(activity, ListActivity::class.java)
intent.putExtra("intention", ListActivity.ListActivityIntention.PICK.toString())
intent.putExtra("forGesture", gesture.id) // for which action we choose the app
activity.startActivityForResult(intent,
activity.startActivityForResult(
intent,
REQUEST_CHOOSE_APP
)
}

View file

@ -4,8 +4,8 @@ import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.preference.PreferenceFragmentCompat
import de.jrpie.android.launcher.preferences.LauncherPreferences
import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.preferences.LauncherPreferences
import de.jrpie.android.launcher.setDefaultHomeScreen
@ -21,7 +21,9 @@ class SettingsFragmentLauncher : PreferenceFragmentCompat() {
preferenceManager.sharedPreferencesMode = Context.MODE_PRIVATE
setPreferencesFromResource(R.xml.preferences, rootKey)
val selectWallpaper = findPreference<androidx.preference.Preference>(LauncherPreferences.theme().keys().wallpaper())
val selectWallpaper = findPreference<androidx.preference.Preference>(
LauncherPreferences.theme().keys().wallpaper()
)
selectWallpaper?.setOnPreferenceClickListener {
// https://github.com/LineageOS/android_packages_apps_Trebuchet/blob/6caab89b21b2b91f0a439e1fd8c4510dcb255819/src/com/android/launcher3/views/OptionsPopupView.java#L271
val intent = Intent(Intent.ACTION_SET_WALLPAPER)
@ -30,7 +32,9 @@ class SettingsFragmentLauncher : PreferenceFragmentCompat() {
startActivity(intent)
true
}
val chooseHomeScreen = findPreference<androidx.preference.Preference>(LauncherPreferences.general().keys().chooseHomeScreen())
val chooseHomeScreen = findPreference<androidx.preference.Preference>(
LauncherPreferences.general().keys().chooseHomeScreen()
)
chooseHomeScreen?.setOnPreferenceClickListener {
setDefaultHomeScreen(requireContext(), checkDefault = false)
true

View file

@ -10,10 +10,10 @@ import android.view.ViewGroup
import androidx.fragment.app.Fragment
import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.UIObject
import de.jrpie.android.launcher.databinding.SettingsMetaBinding
import de.jrpie.android.launcher.openNewTabWindow
import de.jrpie.android.launcher.preferences.resetSettings
import de.jrpie.android.launcher.tutorial.TutorialActivity
import de.jrpie.android.launcher.databinding.SettingsMetaBinding
/**
* The [SettingsFragmentMeta] is a used as a tab in the SettingsActivity.
@ -65,7 +65,8 @@ class SettingsFragmentMeta : Fragment(), UIObject {
AlertDialog.Builder(this.requireContext(), R.style.AlertDialogCustom)
.setTitle(getString(R.string.settings_meta_reset))
.setMessage(getString(R.string.settings_meta_reset_confirm))
.setPositiveButton(android.R.string.ok
.setPositiveButton(
android.R.string.ok
) { _, _ ->
resetSettings(this.requireContext())
requireActivity().finish()
@ -85,7 +86,6 @@ class SettingsFragmentMeta : Fragment(), UIObject {
}
// contact developer
binding.settingsMetaButtonContact.setOnClickListener {
openNewTabWindow(

View file

@ -8,10 +8,10 @@ import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import androidx.viewpager.widget.ViewPager
import com.google.android.material.tabs.TabLayout
import de.jrpie.android.launcher.preferences.LauncherPreferences
import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.REQUEST_CHOOSE_APP
import de.jrpie.android.launcher.UIObject
import de.jrpie.android.launcher.preferences.LauncherPreferences
import de.jrpie.android.launcher.preferences.resetSettings
import de.jrpie.android.launcher.saveListActivityChoice
import de.jrpie.android.launcher.tutorial.tabs.TutorialFragmentConcept
@ -73,8 +73,8 @@ class TutorialActivity: AppCompatActivity(), UIObject {
*
* Tabs: (Start | Concept | Usage | Setup | Finish)
*/
class TutorialSectionsPagerAdapter(fm: FragmentManager)
: FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
class TutorialSectionsPagerAdapter(fm: FragmentManager) :
FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
override fun getItem(position: Int): Fragment {
return when (position) {
@ -88,6 +88,11 @@ class TutorialSectionsPagerAdapter(fm: FragmentManager)
}
/* We don't use titles here, as we have the dots */
override fun getPageTitle(position: Int): CharSequence { return "" }
override fun getCount(): Int { return 5 }
override fun getPageTitle(position: Int): CharSequence {
return ""
}
override fun getCount(): Int {
return 5
}
}

View file

@ -8,6 +8,7 @@ import androidx.fragment.app.Fragment
import de.jrpie.android.launcher.BuildConfig
import de.jrpie.android.launcher.UIObject
import de.jrpie.android.launcher.databinding.TutorialConceptBinding
/**
* The [TutorialFragmentConcept] is a used as a tab in the TutorialActivity.
*

View file

@ -1,14 +1,15 @@
package de.jrpie.android.launcher.tutorial.tabs
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import de.jrpie.android.launcher.*
import androidx.fragment.app.Fragment
import de.jrpie.android.launcher.BuildConfig.VERSION_CODE
import de.jrpie.android.launcher.UIObject
import de.jrpie.android.launcher.databinding.TutorialFinishBinding
import de.jrpie.android.launcher.preferences.LauncherPreferences
import de.jrpie.android.launcher.setDefaultHomeScreen
/**
* The [TutorialFragmentFinish] is a used as a tab in the TutorialActivity.

View file

@ -1,11 +1,12 @@
package de.jrpie.android.launcher.tutorial.tabs
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import de.jrpie.android.launcher.*
import androidx.fragment.app.Fragment
import de.jrpie.android.launcher.UIObject
import de.jrpie.android.launcher.blink
import de.jrpie.android.launcher.databinding.TutorialStartBinding
/**

View file

@ -2,9 +2,9 @@
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="100"
android:fromYDelta="75%p"
android:toYDelta="0%p"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="100"/>
android:toYDelta="0%p" />
</set>

View file

@ -2,9 +2,9 @@
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="100"
android:fromXDelta="-75%p"
android:toXDelta="0%p"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="100"/>
android:toXDelta="0%p" />
</set>

View file

@ -2,9 +2,9 @@
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="100"
android:fromXDelta="75%p"
android:toXDelta="0%p"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="100"/>
android:toXDelta="0%p" />
</set>

View file

@ -2,9 +2,9 @@
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="100"
android:fromYDelta="-75%p"
android:toYDelta="0%p"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="100"/>
android:toYDelta="0%p" />
</set>

View file

@ -1,5 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="?android:textColor" android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
<path
android:fillColor="?android:textColor"
android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z" />
</vector>

View file

@ -1,5 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="?android:textColor" android:pathData="M3,18h18v-2L3,16v2zM3,13h18v-2L3,11v2zM3,6v2h18L21,6L3,6z"/>
<path
android:fillColor="?android:textColor"
android:pathData="M3,18h18v-2L3,16v2zM3,13h18v-2L3,11v2zM3,6v2h18L21,6L3,6z" />
</vector>

View file

@ -1,5 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="?android:textColor" android:pathData="M6,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM18,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z"/>
<path
android:fillColor="?android:textColor"
android:pathData="M6,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM18,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z" />
</vector>

View file

@ -1,5 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="?android:textColor" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.42,0 -8,-3.58 -8,-8 0,-1.85 0.63,-3.55 1.69,-4.9L16.9,18.31C15.55,19.37 13.85,20 12,20zM18.31,16.9L7.1,5.69C8.45,4.63 10.15,4 12,4c4.42,0 8,3.58 8,8 0,1.85 -0.63,3.55 -1.69,4.9z"/>
<path
android:fillColor="?android:textColor"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.42,0 -8,-3.58 -8,-8 0,-1.85 0.63,-3.55 1.69,-4.9L16.9,18.31C15.55,19.37 13.85,20 12,20zM18.31,16.9L7.1,5.69C8.45,4.63 10.15,4 12,4c4.42,0 8,3.58 8,8 0,1.85 -0.63,3.55 -1.69,4.9z" />
</vector>

View file

@ -1,5 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="?android:textColor" android:pathData="M12,22c1.1,0 2,-0.9 2,-2h-4c0,1.1 0.89,2 2,2zM18,16v-5c0,-3.07 -1.64,-5.64 -4.5,-6.32L13.5,4c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.63,5.36 6,7.92 6,11v5l-2,2v1h16v-1l-2,-2z"/>
<path
android:fillColor="?android:textColor"
android:pathData="M12,22c1.1,0 2,-0.9 2,-2h-4c0,1.1 0.89,2 2,2zM18,16v-5c0,-3.07 -1.64,-5.64 -4.5,-6.32L13.5,4c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.63,5.36 6,7.92 6,11v5l-2,2v1h16v-1l-2,-2z" />
</vector>

View file

@ -1,5 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="?android:textColor" android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/>
<path
android:fillColor="?android:textColor"
android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z" />
</vector>

View file

@ -1,5 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="?android:textColor" android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z"/>
<path
android:fillColor="?android:textColor"
android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z" />
</vector>

View file

@ -1,5 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="?android:textColor" android:pathData="M12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.11,0 2,-0.9 2,-2L21,5c0,-1.1 -0.89,-2 -2,-2zM17.25,12c0,0.23 -0.02,0.46 -0.05,0.68l1.48,1.16c0.13,0.11 0.17,0.3 0.08,0.45l-1.4,2.42c-0.09,0.15 -0.27,0.21 -0.43,0.15l-1.74,-0.7c-0.36,0.28 -0.76,0.51 -1.18,0.69l-0.26,1.85c-0.03,0.17 -0.18,0.3 -0.35,0.3h-2.8c-0.17,0 -0.32,-0.13 -0.35,-0.29l-0.26,-1.85c-0.43,-0.18 -0.82,-0.41 -1.18,-0.69l-1.74,0.7c-0.16,0.06 -0.34,0 -0.43,-0.15l-1.4,-2.42c-0.09,-0.15 -0.05,-0.34 0.08,-0.45l1.48,-1.16c-0.03,-0.23 -0.05,-0.46 -0.05,-0.69 0,-0.23 0.02,-0.46 0.05,-0.68l-1.48,-1.16c-0.13,-0.11 -0.17,-0.3 -0.08,-0.45l1.4,-2.42c0.09,-0.15 0.27,-0.21 0.43,-0.15l1.74,0.7c0.36,-0.28 0.76,-0.51 1.18,-0.69l0.26,-1.85c0.03,-0.17 0.18,-0.3 0.35,-0.3h2.8c0.17,0 0.32,0.13 0.35,0.29l0.26,1.85c0.43,0.18 0.82,0.41 1.18,0.69l1.74,-0.7c0.16,-0.06 0.34,0 0.43,0.15l1.4,2.42c0.09,0.15 0.05,0.34 -0.08,0.45l-1.48,1.16c0.03,0.23 0.05,0.46 0.05,0.69z"/>
<path
android:fillColor="?android:textColor"
android:pathData="M12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.11,0 2,-0.9 2,-2L21,5c0,-1.1 -0.89,-2 -2,-2zM17.25,12c0,0.23 -0.02,0.46 -0.05,0.68l1.48,1.16c0.13,0.11 0.17,0.3 0.08,0.45l-1.4,2.42c-0.09,0.15 -0.27,0.21 -0.43,0.15l-1.74,-0.7c-0.36,0.28 -0.76,0.51 -1.18,0.69l-0.26,1.85c-0.03,0.17 -0.18,0.3 -0.35,0.3h-2.8c-0.17,0 -0.32,-0.13 -0.35,-0.29l-0.26,-1.85c-0.43,-0.18 -0.82,-0.41 -1.18,-0.69l-1.74,0.7c-0.16,0.06 -0.34,0 -0.43,-0.15l-1.4,-2.42c-0.09,-0.15 -0.05,-0.34 0.08,-0.45l1.48,-1.16c-0.03,-0.23 -0.05,-0.46 -0.05,-0.69 0,-0.23 0.02,-0.46 0.05,-0.68l-1.48,-1.16c-0.13,-0.11 -0.17,-0.3 -0.08,-0.45l1.4,-2.42c0.09,-0.15 0.27,-0.21 0.43,-0.15l1.74,0.7c0.36,-0.28 0.76,-0.51 1.18,-0.69l0.26,-1.85c0.03,-0.17 0.18,-0.3 0.35,-0.3h2.8c0.17,0 0.32,0.13 0.35,0.29l0.26,1.85c0.43,0.18 0.82,0.41 1.18,0.69l1.74,-0.7c0.16,-0.06 0.34,0 0.43,0.15l1.4,2.42c0.09,0.15 0.05,0.34 -0.08,0.45l-1.48,1.16c0.03,0.23 0.05,0.46 0.05,0.69z" />
</vector>

View file

@ -1,5 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="?android:textColor" android:pathData="M6,18l8.5,-6L6,6v12zM16,6v12h2V6h-2z"/>
<path
android:fillColor="?android:textColor"
android:pathData="M6,18l8.5,-6L6,6v12zM16,6v12h2V6h-2z" />
</vector>

View file

@ -1,5 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="?android:textColor" android:pathData="M6,6h2v12L6,18zM9.5,12l8.5,6L18,6z"/>
<path
android:fillColor="?android:textColor"
android:pathData="M6,6h2v12L6,18zM9.5,12l8.5,6L18,6z" />
</vector>

View file

@ -1,5 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:autoMirrored="true"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="?android:textColor" android:pathData="M18.5,12c0,-1.77 -1.02,-3.29 -2.5,-4.03v8.05c1.48,-0.73 2.5,-2.25 2.5,-4.02zM5,9v6h4l5,5V4L9,9H5z"/>
<path
android:fillColor="?android:textColor"
android:pathData="M18.5,12c0,-1.77 -1.02,-3.29 -2.5,-4.03v8.05c1.48,-0.73 2.5,-2.25 2.5,-4.02zM5,9v6h4l5,5V4L9,9H5z" />
</vector>

View file

@ -1,5 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:autoMirrored="true"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="?android:textColor" android:pathData="M3,9v6h4l5,5L12,4L7,9L3,9zM16.5,12c0,-1.77 -1.02,-3.29 -2.5,-4.03v8.05c1.48,-0.73 2.5,-2.25 2.5,-4.02zM14,3.23v2.06c2.89,0.86 5,3.54 5,6.71s-2.11,5.85 -5,6.71v2.06c4.01,-0.91 7,-4.49 7,-8.77s-2.99,-7.86 -7,-8.77z"/>
<path
android:fillColor="?android:textColor"
android:pathData="M3,9v6h4l5,5L12,4L7,9L3,9zM16.5,12c0,-1.77 -1.02,-3.29 -2.5,-4.03v8.05c1.48,-0.73 2.5,-2.25 2.5,-4.02zM14,3.23v2.06c2.89,0.86 5,3.54 5,6.71s-2.11,5.85 -5,6.71v2.06c4.01,-0.91 7,-4.49 7,-8.77s-2.99,-7.86 -7,-8.77z" />
</vector>

View file

@ -1,8 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/tutorial_selected_dot"
android:state_selected="true"/>
<item android:drawable="@drawable/tutorial_selected_dot" android:state_selected="true" />
<item android:drawable="@drawable/tutorial_default_dot" />
</selector>

View file

@ -1,8 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:custom="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/home_container"
android:layout_width="match_parent"

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:custom="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
@ -14,9 +13,9 @@
android:id="@+id/list_appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@null"
android:gravity="center"
app:elevation="0dp"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/list_apps_container"
android:layout_width="match_parent"
android:layout_height="match_parent"

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/list_apps_row_container"

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/list_other_container"
android:layout_width="match_parent"

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/list_other_row_container"
android:layout_width="match_parent"

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:custom="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
@ -11,9 +10,9 @@
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/settings_appbar"
android:background="@null"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
app:elevation="0dp">
<androidx.constraintlayout.widget.ConstraintLayout
@ -54,6 +53,7 @@
android:id="@+id/settings_system"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:gravity="center"
android:includeFontPadding="true"
@ -63,8 +63,7 @@
custom:layout_constraintBottom_toBottomOf="parent"
custom:layout_constraintStart_toStartOf="parent"
custom:layout_constraintTop_toTopOf="parent"
custom:type="solid"
android:layout_marginStart="8dp" />
custom:type="solid" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.tabs.TabLayout

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/settings_actions_row_container"
@ -30,8 +29,7 @@
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/settings_actions_row_icon_img"

View file

@ -1,7 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/settings_meta_container"
android:layout_width="match_parent"

View file

@ -1,8 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:custom="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tutorial_container"
android:layout_width="match_parent"
@ -26,11 +24,11 @@
android:id="@+id/tutorial_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabBackground="@drawable/tutorial_tab_selector"
app:tabGravity="center"
app:tabIndicatorHeight="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
app:layout_constraintStart_toStartOf="parent"
app:tabBackground="@drawable/tutorial_tab_selector"
app:tabGravity="center"
app:tabIndicatorHeight="0dp" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,13 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tutorial_concept_container"
android:paddingLeft="32sp"
android:paddingRight="32sp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="32sp"
android:paddingRight="32sp"
tools:context=".tutorial.tabs.TutorialFragmentConcept">
<TextView
@ -54,8 +53,8 @@
android:layout_marginLeft="32dp"
android:layout_marginEnd="32dp"
android:layout_marginRight="32dp"
android:textSize="32sp"
android:gravity="center"
android:textSize="32sp"
app:layout_constraintBottom_toTopOf="@+id/tutorial_concept_text_2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View file

@ -1,14 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:custom="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tutorial_finish_container"
android:paddingLeft="32sp"
android:paddingRight="32sp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="32sp"
android:paddingRight="32sp"
tools:context=".tutorial.tabs.TutorialFragmentFinish">
<TextView

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tutorial_setup_container"

View file

@ -1,13 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tutorial_start_container"
android:paddingLeft="32sp"
android:paddingRight="32sp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="32sp"
android:paddingRight="32sp"
tools:context=".tutorial.tabs.TutorialFragmentStart">
<TextView

View file

@ -1,7 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/app_menu_delete"
<item
android:id="@+id/app_menu_delete"
android:title="@string/list_app_delete" />
<item android:id="@+id/app_menu_info"
<item
android:id="@+id/app_menu_info"
android:title="@string/list_app_info" />
</menu>

View file

@ -89,7 +89,6 @@
<string name="settings_functionality_search_auto_open_keyboard_key" translatable="false">searchAutoKeyboard</string>
<!--
-
- URLs

View file

@ -185,7 +185,6 @@
<string name="tutorial_finish_button">Start</string>
<string name="settings">Settings</string>
<string name="ic_menu_alt">More options</string>
<string name="alert_cant_expand_notifications_panel">Error: Can\'t expand status bar.\nThis action is using functionality that is not part of the published Android API. Unfortunately, it does not seem to work on your device.</string>

View file

@ -28,6 +28,7 @@
<item name="android:colorBackground">@color/darkTheme_background_color</item>
<item name="android:textColor">@color/darkTheme_text_color</item>
</style>
<style name="colorThemeDefault">
<item name="colorPrimary">@color/finnmglasTheme_background_color</item>
<item name="colorPrimaryDark">@color/finnmglasTheme_background_color</item>
@ -61,14 +62,13 @@
<style name="fontSystemDefault">
<!--<item name="android:textSize">18sp</item>-->
</style>
<style name="fontHack">
<item name="android:fontFamily">@font/hack</item>
<!--<item name="android:textSize">18sp</item>-->
</style>
<style name="PopupMenuCustom" parent="@android:style/Widget.PopupMenu">
<item name="android:popupBackground">#252827</item>
</style>

View file

@ -1,45 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory
app:allowDividerAbove="false" > <!-- general -->
<PreferenceCategory app:allowDividerAbove="false"> <!-- general -->
<Preference
android:key="@string/settings_general_choose_home_screen_key"
android:title="@string/settings_general_choose_home_screen" />
</PreferenceCategory>
<PreferenceCategory
app:allowDividerAbove="false"
android:title="@string/settings_launcher_section_appearance">
android:title="@string/settings_launcher_section_appearance"
app:allowDividerAbove="false">
<Preference
android:key="@string/settings_theme_wallpaper_key"
android:title="@string/settings_theme_wallpaper" />
<DropDownPreference
android:defaultValue="DEFAULT"
android:entries="@array/settings_theme_color_theme_items"
android:entryValues="@array/settings_theme_color_theme_values"
android:summary="%s"
android:defaultValue="DEFAULT"
android:key="@string/settings_theme_color_theme_key"
android:summary="%s"
android:title="@string/settings_theme_color_theme" />
<DropDownPreference
android:key="@string/settings_theme_font_key"
android:title="@string/settings_theme_font"
android:entryValues="@array/settings_theme_font_values"
android:defaultValue="HACK"
android:entries="@array/settings_theme_font_items"
android:entryValues="@array/settings_theme_font_values"
android:key="@string/settings_theme_font_key"
android:summary="%s"
android:defaultValue="HACK"/>
android:title="@string/settings_theme_font" />
<DropDownPreference
android:key="@string/settings_theme_background_key"
android:title="@string/settings_theme_background"
android:summary="%s"
android:defaultValue="BLUR"
android:entries="@array/settings_theme_background_items"
android:entryValues="@array/settings_theme_background_values"
android:defaultValue="BLUR"/>
android:key="@string/settings_theme_background_key"
android:summary="%s"
android:title="@string/settings_theme_background" />
<SwitchPreference
android:defaultValue="false"
android:key="@string/settings_theme_monochrome_icons_key"
android:title="@string/settings_theme_monochrome_icons"
android:defaultValue="false" />
android:title="@string/settings_theme_monochrome_icons" />
</PreferenceCategory>
@ -47,20 +46,20 @@
android:title="@string/settings_launcher_section_date_time"
app:allowDividerAbove="false">
<SwitchPreference
android:key="@string/settings_clock_localized_key"
android:defaultValue="false"
android:key="@string/settings_clock_localized_key"
android:title="@string/settings_clock_localized" />
<SwitchPreference
android:key="@string/settings_clock_time_visible_key"
android:defaultValue="true"
android:key="@string/settings_clock_time_visible_key"
android:title="@string/settings_clock_time_visible" />
<SwitchPreference
android:key="@string/settings_clock_date_visible_key"
android:defaultValue="true"
android:key="@string/settings_clock_date_visible_key"
android:title="@string/settings_clock_date_visible" />
<SwitchPreference
android:key="@string/settings_clock_flip_date_time_key"
android:defaultValue="false"
android:key="@string/settings_clock_flip_date_time_key"
android:title="@string/settings_clock_flip_date_time" />
</PreferenceCategory>
@ -69,20 +68,20 @@
app:allowDividerAbove="false">
<SwitchPreference
android:key="@string/settings_functionality_search_auto_launch_key"
android:defaultValue="true"
android:key="@string/settings_functionality_search_auto_launch_key"
android:title="@string/settings_functionality_auto_launch" />
<SwitchPreference
android:key="@string/settings_functionality_search_auto_open_keyboard_key"
android:defaultValue="true"
android:key="@string/settings_functionality_search_auto_open_keyboard_key"
android:title="@string/settings_functionality_auto_keyboard" />
<SwitchPreference
android:key="@string/settings_enabled_gestures_double_swipe_key"
android:defaultValue="true"
android:key="@string/settings_enabled_gestures_double_swipe_key"
android:title="@string/settings_enabled_gestures_double_swipe" />
<SwitchPreference
android:key="@string/settings_enabled_gestures_edge_swipe_key"
android:defaultValue="true"
android:key="@string/settings_enabled_gestures_edge_swipe_key"
android:title="@string/settings_enabled_gestures_edge_swipe" />