mirror of
https://github.com/jrpie/Launcher.git
synced 2025-04-04 19:34:30 +02:00
Merge branch 'master' of https://github.com/jrpie/Launcher
This commit is contained in:
commit
bd1f999a0e
53 changed files with 743 additions and 68 deletions
|
@ -59,6 +59,7 @@ The following gestures are available:
|
|||
- swipe up / down / left / right,
|
||||
- swipe with two fingers,
|
||||
- swipe on the left / right resp. top / bottom edge,
|
||||
- tap, then swipe up / down / left / right,
|
||||
- draw < / > / V / Λ
|
||||
- click on date / time,
|
||||
- double click,
|
||||
|
|
|
@ -23,8 +23,8 @@ android {
|
|||
minSdkVersion 21
|
||||
targetSdkVersion 35
|
||||
compileSdk 35
|
||||
versionCode 37
|
||||
versionName "0.0.21"
|
||||
versionCode 38
|
||||
versionName "0.0.22"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
@ -95,6 +95,7 @@ android {
|
|||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
implementation 'androidx.activity:activity:1.8.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
||||
implementation 'androidx.core:core-ktx:1.15.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
|
||||
|
|
|
@ -19,6 +19,16 @@
|
|||
android:supportsRtl="true"
|
||||
android:theme="@style/launcherBaseTheme"
|
||||
tools:ignore="UnusedAttribute">
|
||||
<activity
|
||||
android:name=".ui.PinShortcutActivity"
|
||||
android:autoRemoveFromRecents="true"
|
||||
android:excludeFromRecents="true"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.content.pm.action.CONFIRM_PIN_SHORTCUT" />
|
||||
<action android:name="android.content.pm.action.CONFIRM_PIN_APPWIDGET" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.HomeActivity"
|
||||
android:clearTaskOnLaunch="true"
|
||||
|
|
|
@ -137,6 +137,9 @@ class Application : android.app.Application() {
|
|||
)
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= VERSION_CODES.N_MR1) {
|
||||
removeUnusedShortcuts(this)
|
||||
}
|
||||
loadApps()
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,9 @@ import android.content.ClipboardManager
|
|||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.LauncherApps
|
||||
import android.content.pm.LauncherApps.ShortcutQuery
|
||||
import android.content.pm.PackageManager
|
||||
import android.content.pm.ShortcutInfo
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
|
@ -18,8 +20,11 @@ import android.os.UserManager
|
|||
import android.provider.Settings
|
||||
import android.util.Log
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.RequiresApi
|
||||
import de.jrpie.android.launcher.actions.Action
|
||||
import de.jrpie.android.launcher.actions.Gesture
|
||||
import de.jrpie.android.launcher.actions.ShortcutAction
|
||||
import de.jrpie.android.launcher.actions.shortcuts.PinnedShortcutInfo
|
||||
import de.jrpie.android.launcher.apps.AppInfo
|
||||
import de.jrpie.android.launcher.apps.DetailedAppInfo
|
||||
import de.jrpie.android.launcher.apps.getPrivateSpaceUser
|
||||
|
@ -81,6 +86,34 @@ fun getUserFromId(userId: Int?, context: Context): UserHandle {
|
|||
return profiles.firstOrNull { it.hashCode() == userId } ?: profiles[0]
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N_MR1)
|
||||
fun removeUnusedShortcuts(context: Context) {
|
||||
val launcherApps = context.getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
fun getShortcuts(profile: UserHandle): List<ShortcutInfo>? {
|
||||
return launcherApps.getShortcuts(
|
||||
ShortcutQuery().apply {
|
||||
setQueryFlags(ShortcutQuery.FLAG_MATCH_PINNED)
|
||||
},
|
||||
profile
|
||||
)
|
||||
}
|
||||
|
||||
val userManager = context.getSystemService(Service.USER_SERVICE) as UserManager
|
||||
val boundActions: Set<PinnedShortcutInfo> =
|
||||
Gesture.entries.mapNotNull { Action.forGesture(it) as? ShortcutAction }.map { it.shortcut }
|
||||
.toSet()
|
||||
try {
|
||||
userManager.userProfiles.filter { !userManager.isQuietModeEnabled(it) }.forEach { profile ->
|
||||
getShortcuts(profile)?.groupBy { it.`package` }?.forEach { (p, shortcuts) ->
|
||||
launcherApps.pinShortcuts(p,
|
||||
shortcuts.filter { boundActions.contains(PinnedShortcutInfo(it)) }
|
||||
.map { it.id }.toList(),
|
||||
profile
|
||||
)
|
||||
}
|
||||
}
|
||||
} catch (_: SecurityException) { }
|
||||
}
|
||||
|
||||
fun openInBrowser(url: String, context: Context) {
|
||||
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
|
||||
|
|
|
@ -79,6 +79,13 @@ enum class Gesture(
|
|||
R.array.default_up_right,
|
||||
R.anim.bottom_up
|
||||
),
|
||||
TAP_AND_SWIPE_UP(
|
||||
"action.tap_up",
|
||||
R.string.settings_gesture_tap_up,
|
||||
R.string.settings_gesture_description_tap_up,
|
||||
R.array.default_up,
|
||||
R.anim.bottom_up
|
||||
),
|
||||
SWIPE_UP_DOUBLE(
|
||||
"action.double_up",
|
||||
R.string.settings_gesture_double_up,
|
||||
|
@ -107,6 +114,13 @@ enum class Gesture(
|
|||
R.array.default_down_right,
|
||||
R.anim.top_down
|
||||
),
|
||||
TAP_AND_SWIPE_DOWN(
|
||||
"action.tap_down",
|
||||
R.string.settings_gesture_tap_down,
|
||||
R.string.settings_gesture_description_tap_down,
|
||||
R.array.default_down,
|
||||
R.anim.bottom_up
|
||||
),
|
||||
SWIPE_DOWN_DOUBLE(
|
||||
"action.double_down",
|
||||
R.string.settings_gesture_double_down,
|
||||
|
@ -135,6 +149,13 @@ enum class Gesture(
|
|||
R.array.default_messengers,
|
||||
R.anim.right_left
|
||||
),
|
||||
TAP_AND_SWIPE_LEFT(
|
||||
"action.tap_left",
|
||||
R.string.settings_gesture_tap_left,
|
||||
R.string.settings_gesture_description_tap_left,
|
||||
R.array.default_messengers,
|
||||
R.anim.right_left
|
||||
),
|
||||
SWIPE_LEFT_DOUBLE(
|
||||
"action.double_left",
|
||||
R.string.settings_gesture_double_left,
|
||||
|
@ -163,6 +184,13 @@ enum class Gesture(
|
|||
R.array.default_right_bottom,
|
||||
R.anim.left_right
|
||||
),
|
||||
TAP_AND_SWIPE_RIGHT(
|
||||
"action.tap_right",
|
||||
R.string.settings_gesture_tap_right,
|
||||
R.string.settings_gesture_description_tap_right,
|
||||
R.array.default_right,
|
||||
R.anim.left_right
|
||||
),
|
||||
SWIPE_RIGHT_DOUBLE(
|
||||
"action.double_right",
|
||||
R.string.settings_gesture_double_right,
|
||||
|
@ -279,6 +307,17 @@ enum class Gesture(
|
|||
}
|
||||
}
|
||||
|
||||
fun getTapComboVariant(): Gesture {
|
||||
return when (this) {
|
||||
SWIPE_UP -> TAP_AND_SWIPE_UP
|
||||
SWIPE_DOWN -> TAP_AND_SWIPE_DOWN
|
||||
SWIPE_LEFT -> TAP_AND_SWIPE_LEFT
|
||||
SWIPE_RIGHT -> TAP_AND_SWIPE_RIGHT
|
||||
else -> this
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun isDoubleVariant(): Boolean {
|
||||
return when (this) {
|
||||
SWIPE_UP_DOUBLE,
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
package de.jrpie.android.launcher.actions
|
||||
|
||||
import android.app.Service
|
||||
import android.content.Context
|
||||
import android.content.pm.LauncherApps
|
||||
import android.graphics.Rect
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.os.Build
|
||||
import de.jrpie.android.launcher.actions.shortcuts.PinnedShortcutInfo
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@SerialName("action:shortcut")
|
||||
class ShortcutAction(val shortcut: PinnedShortcutInfo) : Action {
|
||||
|
||||
override fun invoke(context: Context, rect: Rect?): Boolean {
|
||||
val launcherApps = context.getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
|
||||
// TODO
|
||||
return false
|
||||
}
|
||||
shortcut.getShortcutInfo(context)?.let {
|
||||
launcherApps.startShortcut(it, rect, null)
|
||||
}
|
||||
|
||||
// TODO: handle null
|
||||
return true
|
||||
}
|
||||
|
||||
override fun label(context: Context): String {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
|
||||
return "?"
|
||||
}
|
||||
|
||||
return shortcut.getShortcutInfo(context)?.longLabel?.toString() ?: "?"
|
||||
}
|
||||
|
||||
override fun getIcon(context: Context): Drawable? {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
|
||||
return null
|
||||
}
|
||||
val launcherApps = context.getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
return shortcut.getShortcutInfo(context)?.let { launcherApps.getShortcutBadgedIconDrawable(it, 0) }
|
||||
}
|
||||
|
||||
override fun isAvailable(context: Context): Boolean {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
|
||||
return false
|
||||
}
|
||||
return shortcut.getShortcutInfo(context) != null
|
||||
}
|
||||
|
||||
override fun canReachSettings(): Boolean {
|
||||
return false
|
||||
}
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
package de.jrpie.android.launcher.actions.shortcuts
|
||||
|
||||
import android.app.Service
|
||||
import android.content.ComponentName
|
||||
import android.content.Context
|
||||
import android.content.pm.LauncherApps
|
||||
import android.content.pm.LauncherApps.ShortcutQuery
|
||||
import android.content.pm.ShortcutInfo
|
||||
import android.os.Build
|
||||
import androidx.annotation.RequiresApi
|
||||
import de.jrpie.android.launcher.getUserFromId
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N_MR1)
|
||||
@Serializable
|
||||
class PinnedShortcutInfo(
|
||||
val id: String,
|
||||
val packageName: String,
|
||||
val activityName: String,
|
||||
val user: Int
|
||||
) {
|
||||
|
||||
constructor(info: ShortcutInfo) : this(info.id, info.`package`, info.activity?.className ?: "", info.userHandle.hashCode())
|
||||
|
||||
fun getShortcutInfo(context: Context): ShortcutInfo? {
|
||||
val launcherApps = context.getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
|
||||
return launcherApps.getShortcuts(
|
||||
ShortcutQuery().apply {
|
||||
setQueryFlags(ShortcutQuery.FLAG_MATCH_PINNED)
|
||||
setPackage(packageName)
|
||||
setActivity(ComponentName(packageName, activityName))
|
||||
setShortcutIds(listOf(id))
|
||||
},
|
||||
getUserFromId(user, context)
|
||||
)?.firstOrNull()
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
return (other as? PinnedShortcutInfo)?.let {
|
||||
packageName == this.packageName &&
|
||||
activityName == this.activityName &&
|
||||
id == this.id &&
|
||||
user == this.user
|
||||
} ?: false
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
var result = id.hashCode()
|
||||
result = 31 * result + packageName.hashCode()
|
||||
result = 31 * result + activityName.hashCode()
|
||||
result = 31 * result + user
|
||||
return result
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "PinnedShortcutInfo { package=$packageName, activity=$activityName, user=$user, id=$id}"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,128 @@
|
|||
package de.jrpie.android.launcher.ui
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.app.Service
|
||||
import android.content.Context
|
||||
import android.content.pm.LauncherApps
|
||||
import android.content.pm.LauncherApps.PinItemRequest
|
||||
import android.content.res.Resources
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import de.jrpie.android.launcher.R
|
||||
import de.jrpie.android.launcher.actions.Action
|
||||
import de.jrpie.android.launcher.actions.Gesture
|
||||
import de.jrpie.android.launcher.actions.ShortcutAction
|
||||
import de.jrpie.android.launcher.actions.shortcuts.PinnedShortcutInfo
|
||||
import de.jrpie.android.launcher.databinding.ActivityPinShortcutBinding
|
||||
import de.jrpie.android.launcher.preferences.LauncherPreferences
|
||||
|
||||
class PinShortcutActivity : AppCompatActivity(), UIObject {
|
||||
private lateinit var binding: ActivityPinShortcutBinding
|
||||
|
||||
private var isBound = false
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super<AppCompatActivity>.onCreate(savedInstanceState)
|
||||
super<UIObject>.onCreate()
|
||||
enableEdgeToEdge()
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
|
||||
finish()
|
||||
return
|
||||
}
|
||||
|
||||
binding = ActivityPinShortcutBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
val launcherApps = getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
|
||||
val request = launcherApps.getPinItemRequest(intent)
|
||||
if (request == null || request.requestType != PinItemRequest.REQUEST_TYPE_SHORTCUT) {
|
||||
finish()
|
||||
return
|
||||
}
|
||||
|
||||
binding.pinShortcutLabel.text = request.shortcutInfo!!.shortLabel ?: "?"
|
||||
binding.pinShortcutLabel.setCompoundDrawables(
|
||||
launcherApps.getShortcutBadgedIconDrawable(request.shortcutInfo, 0).also {
|
||||
val size = (40 * resources.displayMetrics.density).toInt()
|
||||
it.setBounds(0,0, size, size)
|
||||
}, null, null, null)
|
||||
|
||||
binding.pinShortcutButtonBind.setOnClickListener {
|
||||
AlertDialog.Builder(this, R.style.AlertDialogCustom)
|
||||
.setTitle(getString(R.string.pin_shortcut_button_bind))
|
||||
.setView(R.layout.dialog_select_gesture)
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.create().also { it.show() }.let { dialog ->
|
||||
val viewManager = LinearLayoutManager(dialog.context)
|
||||
val viewAdapter = GestureRecyclerAdapter (dialog.context) { gesture ->
|
||||
if (!isBound) {
|
||||
isBound = true
|
||||
request.accept()
|
||||
}
|
||||
val editor = LauncherPreferences.getSharedPreferences().edit()
|
||||
ShortcutAction(PinnedShortcutInfo(request.shortcutInfo!!)).bindToGesture(editor, gesture.id)
|
||||
editor.apply()
|
||||
dialog.dismiss()
|
||||
}
|
||||
dialog.findViewById<RecyclerView>(R.id.dialog_select_gesture_recycler).apply {
|
||||
setHasFixedSize(true)
|
||||
layoutManager = viewManager
|
||||
adapter = viewAdapter
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
binding.pinShortcutClose.setOnClickListener { finish() }
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
super<AppCompatActivity>.onStart()
|
||||
super<UIObject>.onStart()
|
||||
}
|
||||
|
||||
override fun getTheme(): Resources.Theme {
|
||||
return modifyTheme(super.getTheme())
|
||||
}
|
||||
|
||||
inner class GestureRecyclerAdapter(val context: Context, val onClick: (Gesture) -> Unit): RecyclerView.Adapter<GestureRecyclerAdapter.ViewHolder>() {
|
||||
val gestures = Gesture.entries.filter { it.isEnabled() }.toList()
|
||||
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||
val label = itemView.findViewById<TextView>(R.id.dialog_select_gesture_row_name)
|
||||
val description = itemView.findViewById<TextView>(R.id.dialog_select_gesture_row_description)
|
||||
val icon = itemView.findViewById<ImageView>(R.id.dialog_select_gesture_row_icon)
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
val inflater = LayoutInflater.from(parent.context)
|
||||
val view: View = inflater.inflate(R.layout.dialog_select_gesture_row, parent, false)
|
||||
return ViewHolder(view)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
val gesture = gestures[position]
|
||||
holder.label.text = gesture.getLabel(context)
|
||||
holder.description.text = gesture.getDescription(context)
|
||||
holder.icon.setImageDrawable(
|
||||
Action.forGesture(gesture)?.getIcon(context)
|
||||
)
|
||||
holder.itemView.setOnClickListener {
|
||||
onClick(gesture)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return gestures.size
|
||||
}
|
||||
}
|
||||
}
|
|
@ -240,6 +240,10 @@ class TouchGestureDetector(
|
|||
gesture = gesture?.getEdgeVariant(Gesture.Edge.BOTTOM)
|
||||
}
|
||||
}
|
||||
|
||||
if (timeStart - lastTappedTime < 2 * DOUBLE_TAP_TIMEOUT) {
|
||||
gesture = gesture?.getTapComboVariant()
|
||||
}
|
||||
gesture?.invoke(context)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?android:textColor"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
|
|
@ -2,9 +2,8 @@
|
|||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="?android:textColor"
|
||||
android:pathData="M240,880Q207,880 183.5,856.5Q160,833 160,800L160,400Q160,367 183.5,343.5Q207,320 240,320L280,320L280,240Q280,157 338.5,98.5Q397,40 480,40Q563,40 621.5,98.5Q680,157 680,240L680,320L720,320Q753,320 776.5,343.5Q800,367 800,400L800,800Q800,833 776.5,856.5Q753,880 720,880L240,880ZM240,800L720,800Q720,800 720,800Q720,800 720,800L720,400Q720,400 720,400Q720,400 720,400L240,400Q240,400 240,400Q240,400 240,400L240,800Q240,800 240,800Q240,800 240,800ZM480,680Q513,680 536.5,656.5Q560,633 560,600Q560,567 536.5,543.5Q513,520 480,520Q447,520 423.5,543.5Q400,567 400,600Q400,633 423.5,656.5Q447,680 480,680ZM360,320L600,320L600,240Q600,190 565,155Q530,120 480,120Q430,120 395,155Q360,190 360,240L360,320ZM240,800Q240,800 240,800Q240,800 240,800L240,400Q240,400 240,400Q240,400 240,400L240,400Q240,400 240,400Q240,400 240,400L240,800Q240,800 240,800Q240,800 240,800Z"/>
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="?android:textColor"
|
||||
android:pathData="M240,880Q207,880 183.5,856.5Q160,833 160,800L160,400Q160,367 183.5,343.5Q207,320 240,320L280,320L280,240Q280,157 338.5,98.5Q397,40 480,40Q563,40 621.5,98.5Q680,157 680,240L680,320L720,320Q753,320 776.5,343.5Q800,367 800,400L800,800Q800,833 776.5,856.5Q753,880 720,880L240,880ZM240,800L720,800Q720,800 720,800Q720,800 720,800L720,400Q720,400 720,400Q720,400 720,400L240,400Q240,400 240,400Q240,400 240,400L240,800Q240,800 240,800Q240,800 240,800ZM480,680Q513,680 536.5,656.5Q560,633 560,600Q560,567 536.5,543.5Q513,520 480,520Q447,520 423.5,543.5Q400,567 400,600Q400,633 423.5,656.5Q447,680 480,680ZM360,320L600,320L600,240Q600,190 565,155Q530,120 480,120Q430,120 395,155Q360,190 360,240L360,320ZM240,800Q240,800 240,800Q240,800 240,800L240,400Q240,400 240,400Q240,400 240,400L240,400Q240,400 240,400Q240,400 240,400L240,800Q240,800 240,800Q240,800 240,800Z" />
|
||||
</vector>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="?android:textColor" 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: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>
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
<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:height="24dp"
|
||||
android:viewportHeight="24"
|
||||
android:viewportWidth="24"
|
||||
android:width="24dp">
|
||||
|
||||
<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>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24"
|
||||
android:viewportWidth="24"
|
||||
android:width="24dp">
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:autoMirrored="true"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:autoMirrored="true"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
|
110
app/src/main/res/layout/activity_pin_shortcut.xml
Normal file
110
app/src/main/res/layout/activity_pin_shortcut.xml
Normal file
|
@ -0,0 +1,110 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:context=".ui.PinShortcutActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/pin_shortcut_appbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
|
||||
android:gravity="center"
|
||||
app:elevation="0dp"
|
||||
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/list_heading"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:minHeight="?actionBarSize"
|
||||
android:padding="@dimen/appbar_padding"
|
||||
android:text="@string/pin_shortcut_title"
|
||||
android:textAppearance="@style/TextAppearance.Widget.AppCompat.Toolbar.Title"
|
||||
android:textSize="30sp"
|
||||
app:layout_constraintEnd_toStartOf="@id/pin_shortcut_close"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/pin_shortcut_close"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="true"
|
||||
android:paddingLeft="16sp"
|
||||
android:paddingRight="16sp"
|
||||
android:src="@drawable/baseline_close_24"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/pin_shortcut_appbar">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_margin="20dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/pin_shortcut_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="50dp"
|
||||
android:drawablePadding="10dp"
|
||||
android:gravity="center_vertical"
|
||||
android:minHeight="40dp"
|
||||
tools:drawableLeft="@drawable/baseline_settings_24"
|
||||
tools:text="Shortcut name" />
|
||||
<!--
|
||||
<Space
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="10dp" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/pin_shortcut_switch_visible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?android:textColor"
|
||||
android:text="@string/pin_shortcut_switch_visible" />
|
||||
-->
|
||||
|
||||
<Space
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="10dp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/pin_shortcut_button_bind"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/pin_shortcut_button_bind" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</ScrollView>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
27
app/src/main/res/layout/dialog_select_gesture.xml
Normal file
27
app/src/main/res/layout/dialog_select_gesture.xml
Normal file
|
@ -0,0 +1,27 @@
|
|||
<?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"
|
||||
android:id="@+id/dialog_select_gesture"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/dialog_select_gesture_recycler"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_weight="1"
|
||||
android:fadeScrollbars="false"
|
||||
app:fastScrollEnabled="true"
|
||||
app:fastScrollHorizontalThumbDrawable="@drawable/fast_scroll_thumb_drawable"
|
||||
app:fastScrollHorizontalTrackDrawable="@drawable/fast_scroll_track_drawable"
|
||||
app:fastScrollVerticalThumbDrawable="@drawable/fast_scroll_thumb_drawable"
|
||||
app:fastScrollVerticalTrackDrawable="@drawable/fast_scroll_track_drawable" >
|
||||
</androidx.recyclerview.widget.RecyclerView>
|
||||
|
||||
</LinearLayout>
|
53
app/src/main/res/layout/dialog_select_gesture_row.xml
Normal file
53
app/src/main/res/layout/dialog_select_gesture_row.xml
Normal file
|
@ -0,0 +1,53 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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/dialog_select_gesture_row_container"
|
||||
style="@style/AlertDialogCustom"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="5dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:gravity="start"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/dialog_select_gesture_row_icon"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/dialog_select_gesture_row_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
android:gravity="start"
|
||||
android:textSize="15sp"
|
||||
tools:text="Action label" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/dialog_select_gesture_row_description"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="start"
|
||||
android:textSize="11sp"
|
||||
android:visibility="visible"
|
||||
tools:text="A verbose description of how to perform the action" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/dialog_select_gesture_row_icon"
|
||||
android:layout_width="@dimen/app_icon_side"
|
||||
android:layout_height="@dimen/app_icon_side"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:srcCompat="@drawable/baseline_flashlight_on_24"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -4,7 +4,7 @@
|
|||
<string name="settings_launcher_section_appearance">Aspetto</string>
|
||||
<string name="settings_apps_choose">Scegliere l\'applicazione</string>
|
||||
<string name="settings_theme_color_theme">Tema</string>
|
||||
<string name="tutorial_concept_text">Questo launcher è progettato per essere minimale, efficiente e privo di distrazioni.\n\nNon contiene pagamenti, pubblicità o servizi di tracciamento.</string>
|
||||
<string name="tutorial_concept_text">Questo launcher è progettato per essere minimale, efficiente e privo di distrazioni. Non contiene pagamenti, pubblicità o servizi di tracciamento.</string>
|
||||
<string name="settings_theme_color_theme_item_default">Predefinito</string>
|
||||
<string name="settings_apps_hide_bound_apps">Non mostrare applicazioni collegate a gesti nella lista delle app</string>
|
||||
<string name="settings_list_layout_item_text">Testo</string>
|
||||
|
@ -45,11 +45,11 @@
|
|||
<string name="settings_gesture_description_double_down">Scorri verso il basso con due dita</string>
|
||||
<string name="settings_gesture_left">Sinistra</string>
|
||||
<string name="settings_gesture_description_left">Scorrere verso sinistra</string>
|
||||
<string name="settings_gesture_double_left">Doppio a sinistra</string>
|
||||
<string name="settings_gesture_double_left">Due dita verso sinistra</string>
|
||||
<string name="settings_gesture_description_double_left">Scorrere verso sinistra con due dita</string>
|
||||
<string name="settings_gesture_right">Destra</string>
|
||||
<string name="settings_gesture_description_right">Scorri verso destra</string>
|
||||
<string name="settings_gesture_double_right">Doppio a destra</string>
|
||||
<string name="settings_gesture_double_right">Due dita verso destra</string>
|
||||
<string name="settings_gesture_description_double_right">Scorri a destra con due dita</string>
|
||||
<string name="settings_gesture_right_top_edge">Destra (in alto)</string>
|
||||
<string name="settings_gesture_description_right_top_edge">Scorri verso destra sul bordo superiore dello schermo</string>
|
||||
|
@ -125,12 +125,12 @@
|
|||
<string name="tutorial_setup_text">Abbiamo impostato alcune app predefinite per te. Puoi modificarle ora se lo desideri:</string>
|
||||
<string name="tutorial_setup_text_2">Puoi anche cambiare la tua selezione in seguito.</string>
|
||||
<string name="tutorial_finish_title">Iniziamo!</string>
|
||||
<string name="tutorial_finish_text">Sei pronto per iniziare!\n\nSpero questa applicazione ti risulti preziosa!\n\n- Finn (che ha ideato il launcher)\n\t e Josia (che ha aggiunto qualche miglioramento e mantiene il fork μLauncher)</string>
|
||||
<string name="tutorial_finish_text">Sei pronto per iniziare! Spero questa applicazione ti risulti preziosa! - Finn (che ha ideato il launcher)\n \te Josia (che ha aggiunto qualche miglioramento e mantiene il fork μLauncher)</string>
|
||||
<string name="tutorial_finish_button">Inizia</string>
|
||||
<string name="settings">Impostazioni</string>
|
||||
<string name="ic_menu_alt">Altre opzioni</string>
|
||||
<string name="tutorial_usage_text_2">Puoi aprire le tue app facendo scorrere il dito sullo schermo o premendo un pulsante. Configura i gesti nella prossima slide.</string>
|
||||
<string name="alert_cant_expand_status_bar_panel">Errore: impossibile espandere la barra di stato.\nQuesta azione utilizza funzionalità non incluse nelle API Android pubbliche. Sfortunatamente, non sembra funzionare sul tuo dispositivo.</string>
|
||||
<string name="alert_cant_expand_status_bar_panel">Errore: impossibile espandere la barra di stato. Questa azione utilizza funzionalità non incluse nelle API Android pubbliche. Sfortunatamente, non sembra funzionare sul tuo dispositivo.</string>
|
||||
<string name="snackbar_app_hidden">Applicazione nascosta. Puoi renderla nuovamente visibile nelle impostazioni.</string>
|
||||
<string name="toast_device_admin_not_enabled">µLauncher deve essere autorizzato come amministratore del dispositivo per bloccare lo schermo.</string>
|
||||
<string name="device_admin_description">Abilita il blocco dello schermo</string>
|
||||
|
@ -182,7 +182,7 @@
|
|||
<string name="list_app_hidden_remove">Mostra</string>
|
||||
<string name="list_app_rename">Rinomina</string>
|
||||
<string name="list_removed">Le applicazioni selezionate sono state rimosse</string>
|
||||
<string name="list_apps_search_hint">Cerca tra le applicazioni</string>
|
||||
<string name="list_apps_search_hint">Cerca</string>
|
||||
<string name="list_other_settings">Impostazioni μLauncher</string>
|
||||
<string name="list_other_expand_notifications_panel">Espandi il pannello notifiche</string>
|
||||
<string name="list_other_nop">Non fare niente</string>
|
||||
|
@ -191,11 +191,50 @@
|
|||
<string name="tutorial_title">Tutorial</string>
|
||||
<string name="tutorial_start_text">Prenditi qualche secondo per imparare ad usare questo launcher!</string>
|
||||
<string name="tutorial_concept_title">Concetto</string>
|
||||
<string name="tutorial_concept_text_2">L\'app è open source (sotto licenza MIT) e disponibile su GitHub!\n\nVisita il nostro archivio!</string>
|
||||
<string name="tutorial_concept_text_2">L\'app è open source (sotto licenza MIT) e disponibile su GitHub! Visita il nostro archivio!</string>
|
||||
<string name="tutorial_usage_title">Utilizzo</string>
|
||||
<string name="tutorial_usage_text">La schermata principale contiene solo data e ora. Nessuna distrazione.</string>
|
||||
<string name="alert_requires_android_m">Questa funzione richiede Android 6.0 o successivi.</string>
|
||||
<string name="alert_requires_android_m">Questa funzione richiede Android 6 o successivi.</string>
|
||||
<string name="dialog_rename_ok">Ok</string>
|
||||
<string name="dialog_rename_title">Rinomina %1$s</string>
|
||||
<string name="list_not_removed">Impossibile rimuovere l\'applicazione</string>
|
||||
<string name="settings_theme_color_theme_item_dynamic">Dinamico</string>
|
||||
<string name="settings_clock_color">Colore</string>
|
||||
<string name="settings_gesture_double_up">Due dita verso l\'alto</string>
|
||||
<string name="dialog_consent_accessibility_privileges">Sono consapevole che questo concederà privilegi estesi a µLauncher.</string>
|
||||
<string name="dialog_consent_accessibility_consent">Accetto che µLauncher utilizzi il servizio di accessibilità per fornire funzionalità non correlate all\'accessibilità.</string>
|
||||
<string name="dialog_consent_accessibility_data_collection">Accetto che µLauncher non raccolga alcun dato.</string>
|
||||
<string name="settings_apps_hide_paused_apps">Nascondi le app in pausa</string>
|
||||
<string name="list_other_toggle_private_space_lock">Attiva/Disattiva Blocco Spazio Privato</string>
|
||||
<string name="alert_requires_android_v">Questa funzionalità richiede Android 15 o successivi.</string>
|
||||
<string name="dialog_select_color_red">Rosso</string>
|
||||
<string name="dialog_select_color_alpha">Trasparente</string>
|
||||
<string name="dialog_select_color_blue">Blu</string>
|
||||
<string name="dialog_select_color_green">Verde</string>
|
||||
<string name="dialog_select_color_ok">Ok</string>
|
||||
<string name="dialog_select_color_color_hex">Colore</string>
|
||||
<string name="dialog_choose_color_title">Scegli colore</string>
|
||||
<string name="dialog_consent_accessibility_ok">Attiva Servizi di Accessibilità</string>
|
||||
<string name="dialog_consent_accessibility_other_options">Sono consapevole che esistono altre opzioni (utilizzando i privilegi di amministratore del dispositivo o il pulsante di accensione).</string>
|
||||
<string name="dialog_consent_accessibility_title">Attivazione dei Servizi di Accessibilità</string>
|
||||
<string name="settings_functionality_search_web">Cerca su internet</string>
|
||||
<string name="settings_functionality_search_web_summary">Premi invio durante la ricerca nell\'elenco delle app per avviare una ricerca su internet.</string>
|
||||
<string name="list_apps_search_hint_no_auto_launch">Cerca (senza avvio automatico)</string>
|
||||
<string name="settings_meta_licenses">Licenze Open Source</string>
|
||||
<string name="legal_info_title">Licenze Open Source</string>
|
||||
<string name="dialog_report_bug_title">Segnala un bug</string>
|
||||
<string name="dialog_report_bug_info">Grazie per aver contribuito a migliorare µLauncher!\nSi prega di aggiungere le seguenti informazioni alla segnalazione del bug:</string>
|
||||
<string name="dialog_report_bug_button_clipboard">Copia negli appunti</string>
|
||||
<string name="dialog_report_bug_security_info">Non segnalare pubblicamente le vulnerabilità di sicurezza su GitHub, ma utilizza invece:</string>
|
||||
<string name="dialog_cancel">Annulla</string>
|
||||
<string name="settings_functionality_auto_launch_summary">Premi spazio per disabilitare temporaneamente questa funzionalità.</string>
|
||||
<string name="dialog_report_bug_button_security">Segnala una vulnerabilità di sicurezza</string>
|
||||
<string name="dialog_report_bug_create_report">Crea una segnalazione</string>
|
||||
<string name="toast_private_space_locked">Spazio privato bloccato</string>
|
||||
<string name="toast_private_space_unlocked">Spazio privato sbloccato</string>
|
||||
<string name="toast_private_space_not_available">Spazio privato non disponibile</string>
|
||||
<string name="toast_private_space_default_home_screen">µLauncher deve essere la schermata iniziale predefinita per accedere allo spazio privato.</string>
|
||||
<string name="toast_activity_not_found_browser">Impossibile aprire l\'URL: nessun browser trovato.</string>
|
||||
<string name="toast_activity_not_found_search_web">Non è stata trovata un\'applicazione per gestire la ricerca.</string>
|
||||
<string name="dialog_consent_accessibility_text"><![CDATA[Stai per arrivare il servizio di accessibilità. Questo garantirà <strong>privilegi più ampi</strong> a µLauncher.<br/>µLauncher utilizzerà questi privilegi <strong>solo per bloccare lo schermo</strong>. µLauncher <strong>non raccoglierà mai alcun dato</strong>. In particolare, µLauncher non usa il servizio di accessibilità per raccogliere nessun dato.]]></string>
|
||||
</resources>
|
|
@ -30,14 +30,14 @@
|
|||
<string name="settings_gesture_double_left">2 dedos para esquerda</string>
|
||||
<string name="settings_gesture_right">Para direita</string>
|
||||
<string name="settings_gesture_double_right">2 dedos para direita</string>
|
||||
<string name="settings_gesture_right_top_edge">Para direita (No topo)</string>
|
||||
<string name="settings_gesture_right_top_edge">Para direita (no topo)</string>
|
||||
<string name="settings_gesture_right_bottom_edge">Para direita (em baixo)</string>
|
||||
<string name="settings_gesture_left_bottom_edge">Para esquerda (Em baixo)</string>
|
||||
<string name="settings_gesture_left_top_edge">Para esquerda (No topo)</string>
|
||||
<string name="settings_gesture_up_left_edge">Para cima (Borda esquerda)</string>
|
||||
<string name="settings_gesture_up_right_edge">Para cima (Borda direita)</string>
|
||||
<string name="settings_gesture_down_left_edge">Para baixo (Borda esquerda)</string>
|
||||
<string name="settings_gesture_down_right_edge">Para baixo (Borda direita)</string>
|
||||
<string name="settings_gesture_left_bottom_edge">Para esquerda (em baixo)</string>
|
||||
<string name="settings_gesture_left_top_edge">Para esquerda (no topo)</string>
|
||||
<string name="settings_gesture_up_left_edge">Para cima (borda esquerda)</string>
|
||||
<string name="settings_gesture_up_right_edge">Para cima (borda direita)</string>
|
||||
<string name="settings_gesture_down_left_edge">Para baixo (borda esquerda)</string>
|
||||
<string name="settings_gesture_down_right_edge">Para baixo (borda direita)</string>
|
||||
<string name="settings_gesture_vol_up">Aumento de volume</string>
|
||||
<string name="settings_gesture_vol_down">Diminuição de volume</string>
|
||||
<string name="settings_gesture_double_click">Toque duplo</string>
|
||||
|
@ -62,7 +62,7 @@
|
|||
<string name="settings_clock_date_visible">Mostrar Data</string>
|
||||
<string name="settings_clock_localized">Use formato de data localizado</string>
|
||||
<string name="settings_clock_flip_date_time">Inverter data e hora</string>
|
||||
<string name="settings_theme_wallpaper">Escolha um papel de parede</string>
|
||||
<string name="settings_theme_wallpaper">Escolha papel de parede</string>
|
||||
<string name="settings_launcher_change_wallpaper">Alterar papel de parede</string>
|
||||
<string name="settings_launcher_section_display">Exibição</string>
|
||||
<string name="settings_display_screen_timeout_disabled">Manter a tela ligada</string>
|
||||
|
@ -121,11 +121,11 @@
|
|||
<string name="tutorial_concept_text">O Launcher foi criado para ser minimalista, eficiente e livre de distrações. Ele é livre de pagamentos, anúncios e serviços de rastreamento.</string>
|
||||
<string name="tutorial_concept_text_2">O app é de código aberto (licença MIT) e está disponível no GitHub! Não deixe de conferir o repositório!</string>
|
||||
<string name="tutorial_usage_title">Uso</string>
|
||||
<string name="tutorial_usage_text">Sua tela inicial contém a data e hora local. Sem distração.</string>
|
||||
<string name="tutorial_usage_text_2">Você pode iniciar seus aplicativos com um toque único ou pressionando um botão. Escolha algumas ações no próximo slide.</string>
|
||||
<string name="tutorial_usage_text">Sua tela inicial contém a data e hora local. Sem distrações.</string>
|
||||
<string name="tutorial_usage_text_2">Você pode iniciar seus aplicativos com um gesto único ou apertando um botão. Escolha algumas ações no próximo slide.</string>
|
||||
<string name="tutorial_setup_title">Configurar</string>
|
||||
<string name="tutorial_setup_text">Selecionamos alguns aplicativos padrão para você. Se quiser, você pode alterá-los agora:</string>
|
||||
<string name="tutorial_setup_text_2">Você também pode alterar suas escolhas mais tarde.</string>
|
||||
<string name="tutorial_setup_text_2">Você pode alterar suas escolhas mais tarde.</string>
|
||||
<string name="tutorial_finish_title">Vamos lá!</string>
|
||||
<string name="tutorial_finish_text">Tá todo pronto para começar! Espero que isso seja de grande valor para você! - Finn (que criou o Launcher) \te Josia (que fez algumas melhorias e tb mantém o fork do μLauncher)</string>
|
||||
<string name="tutorial_finish_button">Começar</string>
|
||||
|
@ -162,9 +162,9 @@
|
|||
<string name="screen_lock_method_use_accessibility">Usar o Serviço de acessibilidade</string>
|
||||
<string name="screen_lock_method_use_device_admin">Usar o Administrador do dispositivo</string>
|
||||
<string name="screen_lock_method_dialog_title">Escolha um método de bloqueio</string>
|
||||
<string name="settings_actions_lock_method">Escolha um método de bloqueio da tela</string>
|
||||
<string name="settings_actions_lock_method">Escolha método de bloqueio da tela</string>
|
||||
<string name="list_other_expand_settings_panel">Configurações rápidas</string>
|
||||
<string name="alert_requires_android_m">Essa funcionalidade requer o Android 6.0 ou mais recente.</string>
|
||||
<string name="alert_requires_android_m">Essa funcionalidade requer o Android 6 ou mais recente.</string>
|
||||
<string name="alert_no_torch_found">Nenhuma câmera com lanterna detectada.</string>
|
||||
<string name="toast_lock_screen_not_supported">Erro: O bloqueio da tela via Serviço de acessibilidade não é compatível com este aparelho. Tente usar Administrador do dispositivo como método alternativo.</string>
|
||||
<string name="accessibility_service_description">Definindo µLauncher como Serviço de acessibilidade permite a ele bloquear a tela. Considere que é necessário conceder as permissões elevadas. Você nunca deveria autorizar essas permissões a qualquer aplicativo sem avaliação. O µLauncher usará o Serviço de acessibilidade somente para bloquear a tela. Você pode verificar o código-fonte para ter certeza. O bloqueio da tela também pode ser realizado dando ao µLauncher permissões de Administrador do dispositivo. Apesar de que esse método não funciona com impressão digital e desbloqueio facial.</string>
|
||||
|
@ -260,7 +260,7 @@
|
|||
<string name="legal_info_title">Licenças de código aberto</string>
|
||||
<string name="settings_apps_hide_paused_apps">Ocultar apps pausados</string>
|
||||
<string name="list_other_toggle_private_space_lock">Ativar o Espaço privado</string>
|
||||
<string name="alert_requires_android_v">Essa funcionalidade requer o Android 15.0 ou mais recente.</string>
|
||||
<string name="alert_requires_android_v">Essa funcionalidade requer o Android 15 ou mais recente.</string>
|
||||
<string name="toast_private_space_locked">Espaço privado trancado</string>
|
||||
<string name="toast_private_space_unlocked">Espaço privado liberado</string>
|
||||
<string name="toast_private_space_not_available">Espaço privado indisponível</string>
|
||||
|
@ -271,4 +271,14 @@
|
|||
<string name="dialog_report_bug_create_report">Criar relatório</string>
|
||||
<string name="dialog_report_bug_title">Relatar um bug</string>
|
||||
<string name="dialog_report_bug_info">Obrigado por ajudar a melhorar o µLauncher!\nConsidere adicionar as seguintes informações ao relatório de bug:</string>
|
||||
<string name="settings_functionality_auto_launch_summary">Toque no espaço para temporariamente desativar esta funcionalidade.</string>
|
||||
<string name="toast_activity_not_found_browser">Não foi possível abrir a URL: nenhum navegador encontrado.</string>
|
||||
<string name="toast_activity_not_found_search_web">Nenhum app encontrado para efetuar a pesquisa.</string>
|
||||
<string name="settings_gesture_back">Voltar</string>
|
||||
<string name="settings_gesture_description_back">Botão Voltar / gesto de Voltar</string>
|
||||
<string name="settings_apps_hide_private_space_apps">Ocultar espaço privado na lista de apps</string>
|
||||
<string name="list_title_private_space">Espaço privado</string>
|
||||
<string name="list_other_list_private_space">Espaço privado</string>
|
||||
<string name="tooltip_lock_private_space">Trancar espaço privado</string>
|
||||
<string name="tooltip_unlock_private_space">Liberar espaço privado</string>
|
||||
</resources>
|
|
@ -29,18 +29,26 @@
|
|||
<string name="settings_gesture_description_back">Back button / back gesture</string>
|
||||
<string name="settings_gesture_up">Up</string>
|
||||
<string name="settings_gesture_description_up">Swipe up</string>
|
||||
<string name="settings_gesture_tap_up">Tap + Up</string>
|
||||
<string name="settings_gesture_description_tap_up">Tap and swipe up</string>
|
||||
<string name="settings_gesture_double_up">Double Up</string>
|
||||
<string name="settings_gesture_description_double_up">Swipe up with two fingers</string>
|
||||
<string name="settings_gesture_down">Down</string>
|
||||
<string name="settings_gesture_description_down">Swipe down</string>
|
||||
<string name="settings_gesture_tap_down">Tap + Down</string>
|
||||
<string name="settings_gesture_description_tap_down">Tap and swipe down</string>
|
||||
<string name="settings_gesture_double_down">Double Down</string>
|
||||
<string name="settings_gesture_description_double_down">Swipe down with two fingers</string>
|
||||
<string name="settings_gesture_left">Left</string>
|
||||
<string name="settings_gesture_description_left">Swipe left</string>
|
||||
<string name="settings_gesture_tap_left">Tap + Left</string>
|
||||
<string name="settings_gesture_description_tap_left">Tap and swipe left</string>
|
||||
<string name="settings_gesture_double_left">Double Left</string>
|
||||
<string name="settings_gesture_description_double_left">Swipe left with two fingers</string>
|
||||
<string name="settings_gesture_right">Right</string>
|
||||
<string name="settings_gesture_description_right">Swipe right</string>
|
||||
<string name="settings_gesture_tap_right">Tap + Right</string>
|
||||
<string name="settings_gesture_description_tap_right">Tap and swipe right</string>
|
||||
<string name="settings_gesture_double_right">Double Right</string>
|
||||
<string name="settings_gesture_description_double_right">Swipe right with two fingers</string>
|
||||
<string name="settings_gesture_right_top_edge">Right (Top)</string>
|
||||
|
@ -62,19 +70,19 @@
|
|||
|
||||
<string name="settings_gesture_swipe_larger"><![CDATA[>]]></string>
|
||||
<string name="settings_gesture_description_swipe_larger">Top left -> mid right -> bottom left</string>
|
||||
<string name="settings_gesture_swipe_larger_reverse"><![CDATA[> (reverse)]]></string>
|
||||
<string name="settings_gesture_swipe_larger_reverse"><![CDATA[> (Reverse)]]></string>
|
||||
<string name="settings_gesture_description_swipe_larger_reverse">Bottom left -> mid right -> top left</string>
|
||||
<string name="settings_gesture_swipe_smaller"><![CDATA[<]]></string>
|
||||
<string name="settings_gesture_description_swipe_smaller">Top right -> mid left -> bottom right</string>
|
||||
<string name="settings_gesture_swipe_smaller_reverse"><![CDATA[< (reverse)]]></string>
|
||||
<string name="settings_gesture_swipe_smaller_reverse"><![CDATA[< (Reverse)]]></string>
|
||||
<string name="settings_gesture_description_swipe_smaller_reverse">Bottom right -> mid left -> top right</string>
|
||||
<string name="settings_gesture_swipe_v">V</string>
|
||||
<string name="settings_gesture_description_swipe_v">Top left -> bottom mid -> top right</string>
|
||||
<string name="settings_gesture_swipe_v_reverse">V (reverse)</string>
|
||||
<string name="settings_gesture_swipe_v_reverse">V (Reverse)</string>
|
||||
<string name="settings_gesture_description_swipe_v_reverse">Top right -> bottom mid -> top left</string>
|
||||
<string name="settings_gesture_swipe_lambda">Λ</string>
|
||||
<string name="settings_gesture_description_swipe_lambda">Bottom left -> top mid -> bottom right</string>
|
||||
<string name="settings_gesture_swipe_lambda_reverse">Λ (reverse)</string>
|
||||
<string name="settings_gesture_swipe_lambda_reverse">Λ (Reverse)</string>
|
||||
<string name="settings_gesture_description_swipe_lambda_reverse">Bottom right -> top mid -> bottom left</string>
|
||||
|
||||
<string name="settings_gesture_vol_up">Volume Up</string>
|
||||
|
@ -251,6 +259,11 @@
|
|||
<string name="list_other_lock_screen">Lock Screen</string>
|
||||
<string name="list_other_torch">Toggle Torch</string>
|
||||
|
||||
<!-- Pin shortcuts -->
|
||||
<string name="pin_shortcut_title">Add Shortcut</string>
|
||||
<string name="pin_shortcut_button_bind">Bind to gesture</string>
|
||||
<string name="pin_shortcut_switch_visible">Show in app list</string>
|
||||
|
||||
<!--
|
||||
-
|
||||
- Tutorial
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
buildscript {
|
||||
ext.kotlin_version = '2.0.0'
|
||||
ext.android_plugin_version = '8.8.0'
|
||||
ext.android_plugin_version = '8.8.1'
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
|
@ -10,7 +10,7 @@ buildscript {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:8.8.0'
|
||||
classpath 'com.android.tools.build:gradle:8.8.1'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath "com.android.tools.build:gradle:$android_plugin_version"
|
||||
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
||||
|
|
|
@ -11,7 +11,7 @@ Es handelt sich um einen Fork von <a href="https://f-droid.org/packages/com.finn
|
|||
App Launcher</a>.
|
||||
|
||||
<b>Funktionen:</b>
|
||||
* Aktionen können an 22 verschiedene Gesten gebunden werden.
|
||||
* Aktionen können an 35 verschiedene Gesten gebunden werden.
|
||||
* Die folgenden Aktionen stehen zur Verfügung:
|
||||
- Eine App starten
|
||||
- Alle Apps auflisten
|
||||
|
|
1
fastlane/metadata/android/de-DE/title.txt
Normal file
1
fastlane/metadata/android/de-DE/title.txt
Normal file
|
@ -0,0 +1 @@
|
|||
µLauncher
|
7
fastlane/metadata/android/en-US/changelogs/38.txt
Normal file
7
fastlane/metadata/android/en-US/changelogs/38.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
* Fixed bug in detection of two finger gestures
|
||||
* Added 8 new gestures: <,>,V,Λ and reversed versions
|
||||
* Back is now treated as a regular gesture and can be assigned freely
|
||||
* Improved support for private space
|
||||
* Improved Portuguese translation (thank you, "Vossa Excelencia"!)
|
||||
* Improved Turkish translation (thank you, Ahmet Çeliker!)
|
||||
* Improved Italian translation (thank you, Nicola Bortoletto!)
|
|
@ -10,7 +10,7 @@ This is a fork of the app <a href="https://f-droid.org/packages/com.finnmglas.la
|
|||
by Finn M Glas.
|
||||
|
||||
Features:
|
||||
* You can bind actions to 22 different gestures.
|
||||
* You can bind actions to 35 different gestures.
|
||||
* An action can be one of the following:
|
||||
- Launch an app
|
||||
- List all apps
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
O µLauncher é uma tela inicial que permite abrir aplicativos através gestos de deslize e botões físicos.
|
||||
O µLauncher é uma tela inicial que permite abrir apps através de gestos e botões físicos.
|
||||
O launcher é minimalista, eficiente e livre de distrações.
|
||||
|
||||
Sua tela inicial exibe apenas a data, hora e papel de parede.
|
||||
A tela inicial mostra apenas a data, hora e papel de parede.
|
||||
|
||||
Ao usar Voltar ou deslize para cima (pode ser configurado depois) você abre a lista
|
||||
com todos os aplicativos instalados, que podem ser encontrados rápido.
|
||||
Ao usar botão Voltar ou gesto pra cima (pode ser redefinido depois)
|
||||
você abre com facilidade e rapidez a lista com todos os apps instalados.
|
||||
|
||||
Esta é uma modificação do app <a href="https://f-droid.org/packages/com.finnmglas.launcher/">Launcher</a>
|
||||
feita por Finn M Glas.
|
||||
O app é uma modificação do <a href="https://f-droid.org/packages/com.finnmglas.launcher/">Launcher</a>
|
||||
feito por Finn M Glas.
|
||||
|
||||
Funcionalidades:
|
||||
* Você pode associar várias ações a 22 gestos diferentes.
|
||||
* Também pode definir algumas das seguintes acções:
|
||||
- Iniciar algum app
|
||||
* Você pode associar várias ações a 35 gestos diferentes.
|
||||
* Pode definir algumas das seguintes ações:
|
||||
- Iniciar vários apps
|
||||
- Listar todos aplicativos
|
||||
- Listar apps favoritos
|
||||
- Aumentar / diminuir o volume
|
||||
- Música: faixa anterior / seguinte
|
||||
- Música: passar pra faixa anterior / seguinte
|
||||
- Bloquear a tela
|
||||
- Ligar a lanterna
|
||||
- Mostrar notificações / configurações rápidas
|
||||
* Compatível com Perfil de trabalho, desta forma apps como Shelter podem ser usados.
|
||||
* App é compatível com Perfil de trabalho e pode ser usado com apps tipo Shelter.
|
||||
|
|
|
@ -1 +1 @@
|
|||
Uma tela inicial minimalista e sem distrações para Android.
|
||||
Tela inicial minimalista e sem distrações para Android.
|
||||
|
|
15
fastlane/metadata/android/tr-TR/changelogs/21.txt
Normal file
15
fastlane/metadata/android/tr-TR/changelogs/21.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
- Çince çeviri (teşekkürler, yzqzss!)
|
||||
- Fransızca çeviri iyileştirildi (teşekkürler, toby-bro!)
|
||||
- Almanca çeviri iyileştirildi
|
||||
|
||||
Tüm Uygulamalar:
|
||||
- Uygulama listesindeki üç nokta kaldırıldı (bunun yerine uzun tıklama kullanın)
|
||||
- Enter'a basıldığında sorguyla eşleşen ilk uygulama açılıyor
|
||||
- Klavyeyi tam ekran modunda açarken oluşan hata için geçici çözüm düzeltildi
|
||||
- Sistem uygulamaları için kaldırma seçeneği kaldırıldı
|
||||
- Ana Sayfa Düğmesi artık düzgün çalışıyor
|
||||
|
||||
Ayarlar:
|
||||
- Küçük ekranlar için ayarlar düzeltildi
|
||||
- Hassasiyet ayarı kaldırıldı (herkes zaten maksimuma ayarlıyordu)
|
||||
- Tarih ve saat ayarları yeniden düzenlendi
|
8
fastlane/metadata/android/tr-TR/changelogs/24.txt
Normal file
8
fastlane/metadata/android/tr-TR/changelogs/24.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
* Renk teması, yazı tipi, arka plan, monokrom simgeler için seçenekler eklendi
|
||||
* Tarih ve saat için seçenekler eklendi
|
||||
* Döndürmeye izin verme seçeneği eklendi
|
||||
* İyileştirilmiş arama algoritması
|
||||
* Brezilya Portekizcesine çeviri - teşekkürler, Jonatas de Almeida Barros!
|
||||
* Ayarlardan seçilen uygulamaların kaybolmasına neden olan bir hata düzeltildi
|
||||
* İyileştirilmiş kod kalitesi
|
||||
* Güncellenmiş çeviriler
|
4
fastlane/metadata/android/tr-TR/changelogs/25.txt
Normal file
4
fastlane/metadata/android/tr-TR/changelogs/25.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
* Favori uygulamalar
|
||||
* Uygulamaları gizleme seçeneği
|
||||
* Birden fazla ana aktiviteye sahip uygulamalar için destek
|
||||
* Küçük ekranlarda ayarların düzeni düzeltildi
|
1
fastlane/metadata/android/tr-TR/changelogs/26.txt
Normal file
1
fastlane/metadata/android/tr-TR/changelogs/26.txt
Normal file
|
@ -0,0 +1 @@
|
|||
hata düzeltme
|
9
fastlane/metadata/android/tr-TR/changelogs/27.txt
Normal file
9
fastlane/metadata/android/tr-TR/changelogs/27.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
* Matrix ve Discord'da sohbet
|
||||
* Hareket algılama iyileştirildi
|
||||
* Hareket açıklamaları iyileştirildi
|
||||
* Yeni eylem: Ekranı kilitle - teşekkürler, yzqzss!
|
||||
* Yeni eylem: Meşaleyi aç
|
||||
* Yeni eylem: Hızlı ayarları aç
|
||||
* Fransızca çevirisi iyileştirildi - teşekkürler, toby-bro!
|
||||
* Portekizce çevirisi iyileştirildi - teşekkürler, "Vossa Excelencia"!
|
||||
* Bazı hatalar düzeltildi
|
1
fastlane/metadata/android/tr-TR/changelogs/29.txt
Normal file
1
fastlane/metadata/android/tr-TR/changelogs/29.txt
Normal file
|
@ -0,0 +1 @@
|
|||
Ekranı kilitlemek için Cihaz Yöneticisi yerine Erişilebilirlik Hizmetini kullanma seçeneği eklendi.
|
11
fastlane/metadata/android/tr-TR/changelogs/32.txt
Normal file
11
fastlane/metadata/android/tr-TR/changelogs/32.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
* Uygulamaları yeniden adlandırma seçeneği
|
||||
* Uygulama listesinden hareketlere bağlı uygulamaları otomatik olarak gizleme seçeneği
|
||||
* Uygulama listesinden µLauncher'ı varsayılan olarak gizle
|
||||
* Varsayılan uygulamaların seçimi iyileştirildi
|
||||
* Açık tema (deneysel)
|
||||
|
||||
* Aramadaki hata düzeltildi
|
||||
* Kilit ekranı iletişim kutusundaki hata düzeltildi (teşekkürler, yzqzss ve jeroen!)
|
||||
|
||||
* Portekizce çeviri güncellendi (teşekkürler, "Vossa Excelencia"!)
|
||||
* Almanca çeviri güncellendi
|
5
fastlane/metadata/android/tr-TR/changelogs/33.txt
Normal file
5
fastlane/metadata/android/tr-TR/changelogs/33.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
* Uygulama listesi için alternatif düzenler (ızgara, metin)
|
||||
* Hata düzeltildi: Uygulamaların yeniden adlandırılması artık düzgün çalışıyor
|
||||
|
||||
* Çince çeviri güncellendi (teşekkürler, yzqzss!)
|
||||
* Portekizce çeviri güncellendi (teşekkürler, "Vossa Excelencia"!)
|
9
fastlane/metadata/android/tr-TR/changelogs/34.txt
Normal file
9
fastlane/metadata/android/tr-TR/changelogs/34.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
* Saat rengini seçme seçeneği
|
||||
* Dinamik renk teması eklendi; açık tema kaldırıldı
|
||||
* Erişilebilirlik hizmeti için onay iletişim kutusu eklendi
|
||||
|
||||
* Türkçe çeviri eklendi (teşekkürler, Ahmet Çeliker!)
|
||||
* İtalyanca çeviri eklendi (teşekkürler, Samantha!)
|
||||
* Portekizce çeviri iyileştirildi (teşekkürler, "Vossa Excelencia"!)
|
||||
|
||||
* Uygulama çekmecesinde hareketle gezinmeyle ilgili hata düzeltildi. Artık geri basıldığında çekmece hemen kapanıyor.
|
6
fastlane/metadata/android/tr-TR/changelogs/35.txt
Normal file
6
fastlane/metadata/android/tr-TR/changelogs/35.txt
Normal file
|
@ -0,0 +1,6 @@
|
|||
* Ayarlar için depolama biçimi yeniden düzenlendi. Eski biçim otomatik olarak dönüştürülecek.
|
||||
* Uygulama listesinden web'de arama yapma seçeneği eklendi.
|
||||
* Ekranı kilitlemek için tercih edilen yöntem olarak cihaz yöneticisini ayarlayın.
|
||||
* Bir erişilebilirlik hizmetini etkinleştirmenin şifrelemeyle çakışabileceğine dair bir uyarı eklendi.
|
||||
* Yeniden adlandırma iletişim kutusundaki bir hata düzeltildi.
|
||||
* Kilit ekranı iletişim kutusu kaydırılabilir hale getirildi.
|
6
fastlane/metadata/android/tr-TR/changelogs/36.txt
Normal file
6
fastlane/metadata/android/tr-TR/changelogs/36.txt
Normal file
|
@ -0,0 +1,6 @@
|
|||
* yeni özellik: otomatik başlatmayı geçici olarak devre dışı bırakmak için boşluk içeren önek sorgusu
|
||||
* iyileştirilmiş arama: sorguda görünmedikleri sürece diakritik işaretler artık yok sayılıyor. (Android 7+)
|
||||
* açık kaynak lisanslarının listesi eklendi
|
||||
* erişilebilirlik hizmeti uyarısı güncellendi
|
||||
* iyileştirilmiş Fransızca çeviri (teşekkürler, Alexandre Ancel ve Nin Dan!)
|
||||
* iyileştirilmiş Portekizce çeviri (teşekkürler, "Vossa Excelencia"!)
|
8
fastlane/metadata/android/tr-TR/changelogs/37.txt
Normal file
8
fastlane/metadata/android/tr-TR/changelogs/37.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
* private space için temel destek (Android 15)
|
||||
* light tema yeniden tanıtıldı
|
||||
* Portekizce çeviri iyileştirildi (teşekkürler, "Vossa Excelencia"!)
|
||||
* Almanca çeviri iyileştirildi
|
||||
* ayarlara sürüm adı eklendi
|
||||
* hata raporları için iletişim kutusu
|
||||
* saat performansı iyileştirildi
|
||||
* bazı hatalar düzeltildi
|
Loading…
Add table
Reference in a new issue