mirror of
https://github.com/jrpie/Launcher.git
synced 2025-04-04 19:34:30 +02:00
Compare commits
11 commits
0ac7022a95
...
3a16cd003e
Author | SHA1 | Date | |
---|---|---|---|
![]() |
3a16cd003e | ||
c1511cd475 | |||
![]() |
3e632c9892 | ||
![]() |
268acedb2c | ||
![]() |
4b756d47ee | ||
![]() |
e323309cf9 | ||
![]() |
47a5476978 | ||
3597baee1f | |||
e02ca4091f | |||
541e60356c | |||
492749a340 |
43 changed files with 652 additions and 175 deletions
|
@ -23,8 +23,8 @@ android {
|
|||
minSdkVersion 21
|
||||
targetSdkVersion 35
|
||||
compileSdk 35
|
||||
versionCode 39
|
||||
versionName "0.0.23"
|
||||
versionCode 40
|
||||
versionName "0.1.0"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
|
|
@ -194,7 +194,7 @@ fun getApps(
|
|||
loadList.add(detailedAppInfo)
|
||||
}
|
||||
}
|
||||
loadList.sortBy { it.getCustomLabel(context).toString() }
|
||||
loadList.sortBy { it.getCustomLabel(context) }
|
||||
|
||||
var end = System.currentTimeMillis()
|
||||
Log.i(LOG_TAG, "${loadList.size} apps loaded (${end - start}ms)")
|
||||
|
|
|
@ -91,6 +91,7 @@ fun isPrivateSpaceLocked(context: Context): Boolean {
|
|||
val privateSpaceUser = getPrivateSpaceUser(context) ?: return false
|
||||
return userManager.isQuietModeEnabled(privateSpaceUser)
|
||||
}
|
||||
|
||||
fun lockPrivateSpace(context: Context, lock: Boolean) {
|
||||
if (!isPrivateSpaceSupported()) {
|
||||
return
|
||||
|
@ -123,10 +124,16 @@ fun togglePrivateSpaceLock(context: Context) {
|
|||
}
|
||||
|
||||
fun hidePrivateSpaceWhenLocked(context: Context): Boolean {
|
||||
// TODO: perhaps this should be cached
|
||||
// Trying to access the setting as a 3rd party launcher raises a security exception.
|
||||
// This is an Android bug: https://issuetracker.google.com/issues/352276244#comment5
|
||||
// The logic for this is implemented.
|
||||
// TODO: replace this once the Android bug is fixed
|
||||
return false
|
||||
|
||||
// TODO: perhaps this should be cached
|
||||
// https://cs.android.com/android/platform/superproject/main/+/main:packages/apps/Launcher3/src/com/android/launcher3/util/SettingsCache.java;l=61;drc=56bf7ad33bc9d5ed3c18e7abefeec5c177ec75d7
|
||||
val key = "hide_privatespace_entry_point"
|
||||
return Settings.Secure.getInt(context.contentResolver, key, 0) == 1
|
||||
|
||||
// val key = "hide_privatespace_entry_point"
|
||||
// return Settings.Secure.getInt(context.contentResolver, key, 0) == 1
|
||||
}
|
||||
|
||||
|
|
|
@ -27,10 +27,14 @@ fun View.blink(
|
|||
}
|
||||
|
||||
// Taken from: https://stackoverflow.com/a/30340794/12787264
|
||||
fun ImageView.transformGrayscale() {
|
||||
this.colorFilter = ColorMatrixColorFilter(ColorMatrix().apply {
|
||||
setSaturation(0f)
|
||||
})
|
||||
fun ImageView.transformGrayscale(grayscale: Boolean) {
|
||||
this.colorFilter = if (grayscale) {
|
||||
ColorMatrixColorFilter(ColorMatrix().apply {
|
||||
setSaturation(0f)
|
||||
})
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package de.jrpie.android.launcher.ui.list
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.res.Resources
|
||||
import android.graphics.Rect
|
||||
|
@ -33,16 +32,6 @@ import de.jrpie.android.launcher.ui.list.apps.ListFragmentApps
|
|||
import de.jrpie.android.launcher.ui.list.other.ListFragmentOther
|
||||
|
||||
|
||||
// TODO: Better solution for this intercommunication functionality (used in list-fragments)
|
||||
var intention = ListActivity.ListActivityIntention.VIEW
|
||||
var favoritesVisibility: AppFilter.Companion.AppSetVisibility =
|
||||
AppFilter.Companion.AppSetVisibility.VISIBLE
|
||||
var privateSpaceVisibility: AppFilter.Companion.AppSetVisibility =
|
||||
AppFilter.Companion.AppSetVisibility.VISIBLE
|
||||
var hiddenVisibility: AppFilter.Companion.AppSetVisibility =
|
||||
AppFilter.Companion.AppSetVisibility.HIDDEN
|
||||
var forGesture: String? = null
|
||||
|
||||
/**
|
||||
* The [ListActivity] is the most general purpose activity in Launcher:
|
||||
* - used to view all apps and edit their settings
|
||||
|
@ -52,11 +41,19 @@ var forGesture: String? = null
|
|||
*/
|
||||
class ListActivity : AppCompatActivity(), UIObject {
|
||||
private lateinit var binding: ListBinding
|
||||
var intention = ListActivityIntention.VIEW
|
||||
var favoritesVisibility: AppFilter.Companion.AppSetVisibility =
|
||||
AppFilter.Companion.AppSetVisibility.VISIBLE
|
||||
var privateSpaceVisibility: AppFilter.Companion.AppSetVisibility =
|
||||
AppFilter.Companion.AppSetVisibility.VISIBLE
|
||||
var hiddenVisibility: AppFilter.Companion.AppSetVisibility =
|
||||
AppFilter.Companion.AppSetVisibility.HIDDEN
|
||||
var forGesture: String? = null
|
||||
|
||||
|
||||
private fun updateLockIcon(locked: Boolean) {
|
||||
if (
|
||||
// only show lock for VIEW intention
|
||||
// only show lock for VIEW intention
|
||||
(intention != ListActivityIntention.VIEW)
|
||||
// hide lock when private space does not exist
|
||||
|| !isPrivateSpaceSetUp(this)
|
||||
|
@ -261,7 +258,7 @@ 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) :
|
||||
class ListSectionsPagerAdapter(private val activity: ListActivity, fm: FragmentManager) :
|
||||
FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
|
||||
|
||||
override fun getItem(position: Int): Fragment {
|
||||
|
@ -273,11 +270,11 @@ class ListSectionsPagerAdapter(private val context: Context, fm: FragmentManager
|
|||
}
|
||||
|
||||
override fun getPageTitle(position: Int): CharSequence {
|
||||
return context.resources.getString(TAB_TITLES[position])
|
||||
return activity.resources.getString(TAB_TITLES[position])
|
||||
}
|
||||
|
||||
override fun getCount(): Int {
|
||||
return when (intention) {
|
||||
return when (activity.intention) {
|
||||
ListActivity.ListActivityIntention.VIEW -> 1
|
||||
else -> 2
|
||||
}
|
||||
|
|
|
@ -47,6 +47,7 @@ class AppsRecyclerAdapter(
|
|||
|
||||
private val apps = (activity.applicationContext as Application).apps
|
||||
private val appsListDisplayed: MutableList<AbstractDetailedAppInfo> = mutableListOf()
|
||||
private val grayscale = LauncherPreferences.theme().monochromeIcons()
|
||||
|
||||
// temporarily disable auto launch
|
||||
var disableAutoLaunch: Boolean = false
|
||||
|
@ -79,20 +80,19 @@ class AppsRecyclerAdapter(
|
|||
override fun onBindViewHolder(viewHolder: ViewHolder, i: Int) {
|
||||
var appLabel = appsListDisplayed[i].getCustomLabel(activity)
|
||||
|
||||
val appIcon = appsListDisplayed[i].getIcon(activity)
|
||||
|
||||
viewHolder.img.transformGrayscale(grayscale)
|
||||
viewHolder.img.setImageDrawable(appIcon.constantState?.newDrawable() ?: appIcon)
|
||||
|
||||
if (layout.useBadgedText) {
|
||||
appLabel = activity.packageManager.getUserBadgedLabel(
|
||||
appLabel,
|
||||
appsListDisplayed[i].getUser(activity)
|
||||
).toString()
|
||||
}
|
||||
|
||||
val appIcon = appsListDisplayed[i].getIcon(activity)
|
||||
|
||||
viewHolder.textView.text = appLabel
|
||||
viewHolder.img.setImageDrawable(appIcon)
|
||||
|
||||
if (LauncherPreferences.theme().monochromeIcons())
|
||||
viewHolder.img.transformGrayscale()
|
||||
|
||||
// decide when to show the options popup menu about
|
||||
if (intention == ListActivity.ListActivityIntention.VIEW) {
|
||||
|
|
|
@ -17,11 +17,6 @@ import de.jrpie.android.launcher.databinding.ListAppsBinding
|
|||
import de.jrpie.android.launcher.preferences.LauncherPreferences
|
||||
import de.jrpie.android.launcher.ui.UIObject
|
||||
import de.jrpie.android.launcher.ui.list.ListActivity
|
||||
import de.jrpie.android.launcher.ui.list.favoritesVisibility
|
||||
import de.jrpie.android.launcher.ui.list.forGesture
|
||||
import de.jrpie.android.launcher.ui.list.hiddenVisibility
|
||||
import de.jrpie.android.launcher.ui.list.intention
|
||||
import de.jrpie.android.launcher.ui.list.privateSpaceVisibility
|
||||
import de.jrpie.android.launcher.ui.openSoftKeyboard
|
||||
|
||||
|
||||
|
@ -54,7 +49,7 @@ class ListFragmentApps : Fragment(), UIObject {
|
|||
.registerOnSharedPreferenceChangeListener(sharedPreferencesListener)
|
||||
|
||||
binding.listAppsCheckBoxFavorites.isChecked =
|
||||
(favoritesVisibility == AppFilter.Companion.AppSetVisibility.EXCLUSIVE)
|
||||
((activity as? ListActivity)?.favoritesVisibility == AppFilter.Companion.AppSetVisibility.EXCLUSIVE)
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
|
@ -67,16 +62,17 @@ class ListFragmentApps : Fragment(), UIObject {
|
|||
override fun setOnClicks() {}
|
||||
|
||||
override fun adjustLayout() {
|
||||
val listActivity = activity as? ListActivity ?: return
|
||||
|
||||
appsRecyclerAdapter =
|
||||
AppsRecyclerAdapter(
|
||||
requireActivity(), binding.root, intention, forGesture,
|
||||
listActivity, binding.root, listActivity.intention, listActivity.forGesture,
|
||||
appFilter = AppFilter(
|
||||
requireContext(),
|
||||
"",
|
||||
favoritesVisibility = favoritesVisibility,
|
||||
privateSpaceVisibility = privateSpaceVisibility,
|
||||
hiddenVisibility = hiddenVisibility
|
||||
favoritesVisibility = listActivity.favoritesVisibility,
|
||||
privateSpaceVisibility = listActivity.privateSpaceVisibility,
|
||||
hiddenVisibility = listActivity.hiddenVisibility
|
||||
),
|
||||
layout = LauncherPreferences.list().layout()
|
||||
)
|
||||
|
@ -124,7 +120,8 @@ class ListFragmentApps : Fragment(), UIObject {
|
|||
|
||||
if (newText == " " &&
|
||||
!appsRecyclerAdapter.disableAutoLaunch &&
|
||||
intention == ListActivity.ListActivityIntention.VIEW &&
|
||||
(activity as? ListActivity)?.intention
|
||||
== ListActivity.ListActivityIntention.VIEW &&
|
||||
LauncherPreferences.functionality().searchAutoLaunch()
|
||||
) {
|
||||
appsRecyclerAdapter.disableAutoLaunch = true
|
||||
|
@ -141,17 +138,17 @@ class ListFragmentApps : Fragment(), UIObject {
|
|||
})
|
||||
|
||||
binding.listAppsCheckBoxFavorites.setOnClickListener {
|
||||
favoritesVisibility =
|
||||
listActivity.favoritesVisibility =
|
||||
if (binding.listAppsCheckBoxFavorites.isChecked) {
|
||||
AppFilter.Companion.AppSetVisibility.EXCLUSIVE
|
||||
} else {
|
||||
AppFilter.Companion.AppSetVisibility.VISIBLE
|
||||
}
|
||||
appsRecyclerAdapter.setFavoritesVisibility(favoritesVisibility)
|
||||
appsRecyclerAdapter.setFavoritesVisibility(listActivity.favoritesVisibility)
|
||||
(activity as? ListActivity)?.updateTitle()
|
||||
}
|
||||
|
||||
if (intention == ListActivity.ListActivityIntention.VIEW
|
||||
if (listActivity.intention == ListActivity.ListActivityIntention.VIEW
|
||||
&& LauncherPreferences.functionality().searchAutoOpenKeyboard()
|
||||
) {
|
||||
binding.listAppsSearchview.openSoftKeyboard(requireContext())
|
||||
|
|
|
@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView
|
|||
import de.jrpie.android.launcher.R
|
||||
import de.jrpie.android.launcher.REQUEST_CHOOSE_APP
|
||||
import de.jrpie.android.launcher.actions.LauncherAction
|
||||
import de.jrpie.android.launcher.ui.list.forGesture
|
||||
import de.jrpie.android.launcher.ui.list.ListActivity
|
||||
|
||||
/**
|
||||
* The [OtherRecyclerAdapter] will only be displayed in the ListActivity,
|
||||
|
@ -36,7 +36,7 @@ class OtherRecyclerAdapter(val activity: Activity) :
|
|||
val pos = bindingAdapterPosition
|
||||
val content = othersList[pos]
|
||||
|
||||
forGesture?.let { returnChoiceIntent(it, content) }
|
||||
(activity as? ListActivity)?.forGesture?.let { returnChoiceIntent(it, content) }
|
||||
}
|
||||
|
||||
init {
|
||||
|
|
|
@ -143,9 +143,7 @@ class ActionsRecyclerAdapter(val activity: Activity) :
|
|||
val description = gesture.getDescription(activity)
|
||||
viewHolder.descriptionTextView.text = description
|
||||
|
||||
|
||||
if (LauncherPreferences.theme().monochromeIcons())
|
||||
viewHolder.img.transformGrayscale()
|
||||
viewHolder.img.transformGrayscale(LauncherPreferences.theme().monochromeIcons())
|
||||
|
||||
updateViewHolder(gesture, viewHolder)
|
||||
viewHolder.img.setOnClickListener { chooseApp(gesture) }
|
||||
|
|
|
@ -4,23 +4,26 @@ import android.content.Intent
|
|||
import android.content.res.Resources
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.window.OnBackInvokedDispatcher
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
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 androidx.fragment.app.FragmentActivity
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||
import androidx.viewpager2.widget.ViewPager2
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import de.jrpie.android.launcher.REQUEST_CHOOSE_APP
|
||||
import de.jrpie.android.launcher.databinding.TutorialBinding
|
||||
import de.jrpie.android.launcher.preferences.LauncherPreferences
|
||||
import de.jrpie.android.launcher.saveListActivityChoice
|
||||
import de.jrpie.android.launcher.ui.UIObject
|
||||
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentConcept
|
||||
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentFinish
|
||||
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentSetup
|
||||
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentStart
|
||||
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentUsage
|
||||
import de.jrpie.android.launcher.ui.blink
|
||||
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragment0Start
|
||||
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragment1Concept
|
||||
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragment2Usage
|
||||
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragment3AppList
|
||||
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragment4Setup
|
||||
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragment5Finish
|
||||
|
||||
/**
|
||||
* The [TutorialActivity] is displayed automatically on new installations.
|
||||
|
@ -31,10 +34,16 @@ import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentUsage
|
|||
*/
|
||||
class TutorialActivity : AppCompatActivity(), UIObject {
|
||||
|
||||
private lateinit var binding: TutorialBinding
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super<AppCompatActivity>.onCreate(savedInstanceState)
|
||||
super<UIObject>.onCreate()
|
||||
|
||||
// Initialise layout
|
||||
binding = TutorialBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
// Handle back key / gesture on Android 13+
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
onBackInvokedDispatcher.registerOnBackInvokedCallback(
|
||||
|
@ -48,15 +57,51 @@ class TutorialActivity : AppCompatActivity(), UIObject {
|
|||
}
|
||||
}
|
||||
|
||||
// Initialise layout
|
||||
setContentView(R.layout.tutorial)
|
||||
|
||||
// set up tabs and swiping in settings
|
||||
val sectionsPagerAdapter = TutorialSectionsPagerAdapter(supportFragmentManager)
|
||||
val viewPager: ViewPager = findViewById(R.id.tutorial_viewpager)
|
||||
viewPager.adapter = sectionsPagerAdapter
|
||||
val tabs: TabLayout = findViewById(R.id.tutorial_tabs)
|
||||
tabs.setupWithViewPager(viewPager)
|
||||
val sectionsPagerAdapter = TutorialSectionsPagerAdapter(this)
|
||||
binding.tutorialViewpager.apply {
|
||||
adapter = sectionsPagerAdapter
|
||||
currentItem = 0
|
||||
registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
|
||||
override fun onPageSelected(position: Int) {
|
||||
binding.tutorialButtonNext.apply {
|
||||
val lastItem = sectionsPagerAdapter.itemCount - 1
|
||||
visibility = if (position == lastItem) {
|
||||
View.INVISIBLE
|
||||
} else {
|
||||
View.VISIBLE
|
||||
}
|
||||
if (position == 0) {
|
||||
blink()
|
||||
} else {
|
||||
clearAnimation()
|
||||
}
|
||||
}
|
||||
binding.tutorialButtonBack.apply {
|
||||
visibility = if (position == 0) {
|
||||
View.INVISIBLE
|
||||
} else {
|
||||
View.VISIBLE
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
TabLayoutMediator(binding.tutorialTabs, binding.tutorialViewpager) { _, _ -> }.attach()
|
||||
binding.tutorialButtonNext.setOnClickListener {
|
||||
binding.tutorialViewpager.apply {
|
||||
setCurrentItem(
|
||||
(currentItem + 1).coerceAtMost(sectionsPagerAdapter.itemCount - 1),
|
||||
true
|
||||
)
|
||||
}
|
||||
}
|
||||
binding.tutorialButtonBack.setOnClickListener {
|
||||
binding.tutorialViewpager.apply {
|
||||
setCurrentItem((currentItem - 1).coerceAtLeast(0), true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getTheme(): Resources.Theme {
|
||||
|
@ -89,26 +134,22 @@ class TutorialActivity : AppCompatActivity(), UIObject {
|
|||
*
|
||||
* Tabs: (Start | Concept | Usage | Setup | Finish)
|
||||
*/
|
||||
class TutorialSectionsPagerAdapter(fm: FragmentManager) :
|
||||
FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
|
||||
class TutorialSectionsPagerAdapter(activity: FragmentActivity) :
|
||||
FragmentStateAdapter(activity) {
|
||||
|
||||
override fun getItem(position: Int): Fragment {
|
||||
override fun getItemCount(): Int {
|
||||
return 6
|
||||
}
|
||||
|
||||
override fun createFragment(position: Int): Fragment {
|
||||
return when (position) {
|
||||
0 -> TutorialFragmentStart()
|
||||
1 -> TutorialFragmentConcept()
|
||||
2 -> TutorialFragmentUsage()
|
||||
3 -> TutorialFragmentSetup()
|
||||
4 -> TutorialFragmentFinish()
|
||||
0 -> TutorialFragment0Start()
|
||||
1 -> TutorialFragment1Concept()
|
||||
2 -> TutorialFragment2Usage()
|
||||
3 -> TutorialFragment3AppList()
|
||||
4 -> TutorialFragment4Setup()
|
||||
5 -> TutorialFragment5Finish()
|
||||
else -> Fragment()
|
||||
}
|
||||
}
|
||||
|
||||
/* We don't use titles here, as we have the dots */
|
||||
override fun getPageTitle(position: Int): CharSequence {
|
||||
return ""
|
||||
}
|
||||
|
||||
override fun getCount(): Int {
|
||||
return 5
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,24 +5,22 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import de.jrpie.android.launcher.databinding.TutorialStartBinding
|
||||
import de.jrpie.android.launcher.databinding.Tutorial0StartBinding
|
||||
import de.jrpie.android.launcher.ui.UIObject
|
||||
import de.jrpie.android.launcher.ui.blink
|
||||
|
||||
/**
|
||||
* The [TutorialFragmentStart] is a used as a tab in the TutorialActivity.
|
||||
* The [TutorialFragment0Start] is a used as a tab in the TutorialActivity.
|
||||
*
|
||||
* It displays info about the app and gets the user into the tutorial
|
||||
*/
|
||||
class TutorialFragmentStart : Fragment(), UIObject {
|
||||
class TutorialFragment0Start : Fragment(), UIObject {
|
||||
|
||||
private lateinit var binding: TutorialStartBinding
|
||||
private lateinit var binding: Tutorial0StartBinding
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
binding = TutorialStartBinding.inflate(inflater, container, false)
|
||||
binding.tutorialStartIconRight.blink()
|
||||
binding = Tutorial0StartBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
|
@ -6,22 +6,22 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import de.jrpie.android.launcher.BuildConfig
|
||||
import de.jrpie.android.launcher.databinding.TutorialConceptBinding
|
||||
import de.jrpie.android.launcher.databinding.Tutorial1ConceptBinding
|
||||
import de.jrpie.android.launcher.ui.UIObject
|
||||
|
||||
/**
|
||||
* The [TutorialFragmentConcept] is a used as a tab in the TutorialActivity.
|
||||
* The [TutorialFragment1Concept] is a used as a tab in the TutorialActivity.
|
||||
*
|
||||
* It is used to display info about Launchers concept (open source, efficiency ...)
|
||||
*/
|
||||
class TutorialFragmentConcept : Fragment(), UIObject {
|
||||
private lateinit var binding: TutorialConceptBinding
|
||||
class TutorialFragment1Concept : Fragment(), UIObject {
|
||||
private lateinit var binding: Tutorial1ConceptBinding
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
binding = TutorialConceptBinding.inflate(inflater, container, false)
|
||||
binding = Tutorial1ConceptBinding.inflate(inflater, container, false)
|
||||
binding.tutorialConceptBadgeVersion.text = BuildConfig.VERSION_NAME
|
||||
return binding.root
|
||||
}
|
|
@ -9,17 +9,17 @@ import de.jrpie.android.launcher.R
|
|||
import de.jrpie.android.launcher.ui.UIObject
|
||||
|
||||
/**
|
||||
* The [TutorialFragmentUsage] is a used as a tab in the TutorialActivity.
|
||||
* The [TutorialFragment2Usage] is a used as a tab in the TutorialActivity.
|
||||
*
|
||||
* Tells the user how his screen will look and how the app can be used
|
||||
*/
|
||||
class TutorialFragmentUsage : Fragment(), UIObject {
|
||||
class TutorialFragment2Usage : Fragment(), UIObject {
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
return inflater.inflate(R.layout.tutorial_usage, container, false)
|
||||
return inflater.inflate(R.layout.tutorial_2_usage, container, false)
|
||||
}
|
||||
|
||||
override fun onStart() {
|
|
@ -0,0 +1,30 @@
|
|||
package de.jrpie.android.launcher.ui.tutorial.tabs
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import de.jrpie.android.launcher.R
|
||||
import de.jrpie.android.launcher.ui.UIObject
|
||||
|
||||
/**
|
||||
* The [TutorialFragment3AppList] is a used as a tab in the TutorialActivity.
|
||||
*
|
||||
* Tells the user how his screen will look and how the app can be used
|
||||
*/
|
||||
class TutorialFragment3AppList : Fragment(), UIObject {
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
return inflater.inflate(R.layout.tutorial_3_app_list, container, false)
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
super<Fragment>.onStart()
|
||||
super<UIObject>.onStart()
|
||||
}
|
||||
|
||||
}
|
|
@ -9,17 +9,17 @@ import de.jrpie.android.launcher.R
|
|||
import de.jrpie.android.launcher.ui.UIObject
|
||||
|
||||
/**
|
||||
* The [TutorialFragmentSetup] is a used as a tab in the TutorialActivity.
|
||||
* The [TutorialFragment4Setup] is a used as a tab in the TutorialActivity.
|
||||
*
|
||||
* It is used to display info in the tutorial
|
||||
*/
|
||||
class TutorialFragmentSetup : Fragment(), UIObject {
|
||||
class TutorialFragment4Setup : Fragment(), UIObject {
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
return inflater.inflate(R.layout.tutorial_setup, container, false)
|
||||
return inflater.inflate(R.layout.tutorial_4_setup, container, false)
|
||||
}
|
||||
|
||||
override fun onStart() {
|
|
@ -6,25 +6,25 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import de.jrpie.android.launcher.BuildConfig.VERSION_CODE
|
||||
import de.jrpie.android.launcher.databinding.TutorialFinishBinding
|
||||
import de.jrpie.android.launcher.databinding.Tutorial5FinishBinding
|
||||
import de.jrpie.android.launcher.preferences.LauncherPreferences
|
||||
import de.jrpie.android.launcher.setDefaultHomeScreen
|
||||
import de.jrpie.android.launcher.ui.UIObject
|
||||
|
||||
/**
|
||||
* The [TutorialFragmentFinish] is a used as a tab in the TutorialActivity.
|
||||
* The [TutorialFragment5Finish] is a used as a tab in the TutorialActivity.
|
||||
*
|
||||
* It is used to display further resources and let the user start Launcher
|
||||
*/
|
||||
class TutorialFragmentFinish : Fragment(), UIObject {
|
||||
class TutorialFragment5Finish : Fragment(), UIObject {
|
||||
|
||||
private lateinit var binding: TutorialFinishBinding
|
||||
private lateinit var binding: Tutorial5FinishBinding
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
binding = TutorialFinishBinding.inflate(inflater, container, false)
|
||||
binding = Tutorial5FinishBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
11
app/src/main/res/drawable/baseline_navigate_before_24.xml
Normal file
11
app/src/main/res/drawable/baseline_navigate_before_24.xml
Normal file
|
@ -0,0 +1,11 @@
|
|||
<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="M15.41,7.41L14,6l-6,6 6,6 1.41,-1.41L10.83,12z" />
|
||||
|
||||
</vector>
|
11
app/src/main/res/drawable/baseline_navigate_next_24.xml
Normal file
11
app/src/main/res/drawable/baseline_navigate_next_24.xml
Normal file
|
@ -0,0 +1,11 @@
|
|||
<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="M10,6L8.59,7.41 13.17,12l-4.58,4.59L10,18l6,-6z" />
|
||||
|
||||
</vector>
|
Binary file not shown.
Before Width: | Height: | Size: 159 KiB |
6
app/src/main/res/drawable/round_outline.xml
Normal file
6
app/src/main/res/drawable/round_outline.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- https://stackoverflow.com/a/30692466 -->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<corners android:radius="10dp" />
|
||||
</shape>
|
BIN
app/src/main/res/drawable/tutorial_app_list.png
Normal file
BIN
app/src/main/res/drawable/tutorial_app_list.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 124 KiB |
BIN
app/src/main/res/drawable/tutorial_home_screen.png
Normal file
BIN
app/src/main/res/drawable/tutorial_home_screen.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
|
@ -10,7 +10,7 @@
|
|||
tools:context=".ui.tutorial.TutorialActivity">
|
||||
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/tutorial_viewpager"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
|
@ -22,15 +22,37 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.0" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/tutorial_button_back"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:gravity="center"
|
||||
android:alpha="0.5"
|
||||
android:src="@drawable/baseline_navigate_before_24"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tutorial_viewpager" />
|
||||
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/tutorial_tabs"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="50dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/tutorial_button_next"
|
||||
app:layout_constraintStart_toEndOf="@+id/tutorial_button_back"
|
||||
app:tabBackground="@drawable/tutorial_tab_selector"
|
||||
app:tabGravity="center"
|
||||
app:tabIndicatorHeight="0dp"
|
||||
app:tabIndicatorHeight="0dp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/tutorial_button_next"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:gravity="center"
|
||||
android:src="@drawable/baseline_navigate_next_24"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/tutorial_viewpager" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -8,7 +8,7 @@
|
|||
android:paddingRight="32sp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".ui.tutorial.tabs.TutorialFragmentStart">
|
||||
tools:context=".ui.tutorial.tabs.TutorialFragment0Start">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tutorial_start_text"
|
||||
|
@ -21,16 +21,4 @@
|
|||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tutorial_start_icon_right"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text=">>>>>>"
|
||||
android:textSize="64sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tutorial_start_text" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -8,7 +8,7 @@
|
|||
android:paddingRight="32sp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".ui.tutorial.tabs.TutorialFragmentConcept">
|
||||
tools:context=".ui.tutorial.tabs.TutorialFragment1Concept">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tutorial_concept_title"
|
||||
|
@ -28,11 +28,10 @@
|
|||
android:gravity="center"
|
||||
android:text="@string/tutorial_concept_text"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tutorial_concept_title"
|
||||
app:layout_constraintVertical_bias="0.19999999" />
|
||||
app:layout_constraintBottom_toTopOf="@id/tutorial_concept_badge_version_label"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tutorial_concept_text_2"
|
||||
|
@ -60,6 +59,22 @@
|
|||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tutorial_concept_text"
|
||||
tools:text="0.0.7"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tutorial_concept_badge_version_label"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="32dp"
|
||||
android:layout_marginEnd="32dp"
|
||||
android:gravity="center"
|
||||
android:textSize="18sp"
|
||||
android:text="@string/tutorial_concept_label_version"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tutorial_concept_badge_version"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -7,7 +7,7 @@
|
|||
android:layout_height="match_parent"
|
||||
android:paddingLeft="32sp"
|
||||
android:paddingRight="32sp"
|
||||
tools:context=".ui.tutorial.tabs.TutorialFragmentUsage">
|
||||
tools:context=".ui.tutorial.tabs.TutorialFragment2Usage">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tutorial_usage_title"
|
||||
|
@ -39,12 +39,12 @@
|
|||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/home_round_screen"
|
||||
android:src="@drawable/tutorial_home_screen"
|
||||
app:layout_constraintBottom_toTopOf="@id/tutorial_usage_text_2"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tutorial_usage_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/tutorial_usage_text"
|
||||
app:srcCompat="@drawable/home_round_screen"
|
||||
app:srcCompat="@drawable/tutorial_home_screen"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<TextView
|
64
app/src/main/res/layout/tutorial_3_app_list.xml
Normal file
64
app/src/main/res/layout/tutorial_3_app_list.xml
Normal file
|
@ -0,0 +1,64 @@
|
|||
<?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/tutorial_usage_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingLeft="32sp"
|
||||
android:paddingRight="32sp"
|
||||
tools:context=".ui.tutorial.tabs.TutorialFragment3AppList">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tutorial_app_list_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/tutorial_app_list_title"
|
||||
android:textSize="30sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tutorial_app_list_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="32dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/tutorial_app_list_text"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tutorial_app_list_screen"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tutorial_app_list_title" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/tutorial_app_list_screen"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/tutorial_app_list"
|
||||
app:layout_constraintBottom_toTopOf="@id/tutorial_app_list_text_2"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tutorial_app_list_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/tutorial_app_list_text"
|
||||
app:srcCompat="@drawable/tutorial_app_list"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tutorial_app_list_text_2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="32dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/tutorial_app_list_text_2"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tutorial_app_list_screen" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -8,7 +8,7 @@
|
|||
android:layout_height="match_parent"
|
||||
android:paddingLeft="32sp"
|
||||
android:paddingRight="32sp"
|
||||
tools:context=".ui.tutorial.tabs.TutorialFragmentSetup">
|
||||
tools:context=".ui.tutorial.tabs.TutorialFragment4Setup">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tutorial_setup_title"
|
|
@ -7,7 +7,7 @@
|
|||
android:paddingRight="32sp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".ui.tutorial.tabs.TutorialFragmentFinish">
|
||||
tools:context=".ui.tutorial.tabs.TutorialFragment5Finish">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tutorial_finish_title"
|
||||
|
@ -24,6 +24,7 @@
|
|||
android:id="@+id/tutorial_finish_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/tutorial_finish_text"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintBottom_toTopOf="@id/tutorial_finish_button_start"
|
|
@ -97,7 +97,6 @@
|
|||
<string name="settings_launcher_change_wallpaper">Hintergrund ändern</string>
|
||||
<string name="settings_launcher_section_display">Bildschirm</string>
|
||||
<string name="settings_display_screen_timeout_disabled">Bildschirm nicht ausschalten</string>
|
||||
<string name="settings_display_full_screen">Vollbild</string>
|
||||
<string name="settings_display_rotate_screen">Bildschirm drehen</string>
|
||||
<string name="settings_launcher_section_functionality">Funktionalität</string>
|
||||
<string name="settings_enabled_gestures_double_swipe">Doppelte Wischaktionen</string>
|
||||
|
@ -118,7 +117,6 @@
|
|||
<string name="settings_list_layout_item_grid">Raster</string>
|
||||
<string name="settings_general_choose_home_screen">Launcher wählen</string>
|
||||
<string name="settings_meta_cant_select_launcher">App Info</string>
|
||||
<string name="settings_meta_cant_select_launcher_msg">Das Gerät unterstützt diese Funktion nicht. Stattdessen die App Details bearbeiten?</string>
|
||||
<string name="settings_meta_show_tutorial">Zum Tutorial</string>
|
||||
<string name="settings_meta_reset">Einstellungen zurücksetzen</string>
|
||||
<string name="settings_meta_reset_confirm">Alle Einstellungen gehen verloren. Weitermachen?</string>
|
||||
|
|
|
@ -63,7 +63,6 @@
|
|||
<string name="settings_launcher_change_wallpaper">Cambiar fondo de pantalla</string>
|
||||
<string name="settings_launcher_section_display">Pantalla</string>
|
||||
<string name="settings_display_screen_timeout_disabled">Mantener encendida</string>
|
||||
<string name="settings_display_full_screen">Pantalla completa</string>
|
||||
<string name="settings_launcher_section_functionality">Funciones</string>
|
||||
<string name="settings_enabled_gestures_double_swipe">Deslizar con dos dedos</string>
|
||||
<string name="settings_functionality_auto_launch">Auto-lanzar búsquedas</string>
|
||||
|
@ -76,7 +75,6 @@
|
|||
-->
|
||||
<string name="settings_general_choose_home_screen">Seleccionar Launcher</string>
|
||||
<string name="settings_meta_cant_select_launcher">Información de la aplicación</string>
|
||||
<string name="settings_meta_cant_select_launcher_msg">Su dispositivo no posee esta caracrerística. Desea cambiar los detalles de la aplicación?</string>
|
||||
<string name="settings_meta_show_tutorial">Ver tutorial de Launcher</string>
|
||||
<string name="settings_meta_reset">Configuración por defecto</string>
|
||||
<string name="settings_meta_reset_confirm">Todas sus preferencias se eliminarán. Desea continuar?</string>
|
||||
|
@ -127,4 +125,4 @@
|
|||
<string name="tutorial_finish_button">Iniciar</string>
|
||||
<string name="settings">Configuración</string>
|
||||
<string name="ic_menu_alt">Más opciones</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -55,7 +55,6 @@
|
|||
<string name="settings_launcher_change_wallpaper">Changer le fond d\'écran</string>
|
||||
<string name="settings_launcher_section_display">Écran</string>
|
||||
<string name="settings_display_screen_timeout_disabled">Garder l\'écran allumé</string>
|
||||
<string name="settings_display_full_screen">Utiliser le plein écran</string>
|
||||
<string name="settings_launcher_section_functionality">Fonctions</string>
|
||||
<string name="settings_enabled_gestures_double_swipe">Actions de double balayage</string>
|
||||
<string name="settings_functionality_auto_launch">Lancer apps par recherche</string>
|
||||
|
@ -68,7 +67,6 @@
|
|||
-->
|
||||
<string name="settings_general_choose_home_screen">Choisir μLauncher comme application d\'écran d\'accueil par défaut</string>
|
||||
<string name="settings_meta_cant_select_launcher">Informations sur l\'application</string>
|
||||
<string name="settings_meta_cant_select_launcher_msg">Votre appareil ne prend pas en charge cette fonctionnalité. Souhaitez-vous plutôt accéder aux détails de l\'application ?</string>
|
||||
<string name="settings_meta_show_tutorial">Regarder le tutoriel</string>
|
||||
<string name="settings_meta_reset">Réinitialiser</string>
|
||||
<string name="settings_meta_reset_confirm">Vous allez réinitialiser tous vos paramètres. Souhaitez-vous poursuivre ?</string>
|
||||
|
@ -231,4 +229,4 @@
|
|||
<string name="settings_gesture_description_down_left_edge">Balayer vers le bas au bord gauche de l\'écran</string>
|
||||
<string name="settings_enabled_gestures_edge_swipe_summary">Balayer au bord de l\'écran</string>
|
||||
<string name="settings_clock_color">Couleur</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
<br/><br/><br/><br/>
|
||||
Puoi cambiare le tue scelte in seguito nelle impostazioni.
|
||||
]]></string>
|
||||
<string name="settings_meta_cant_select_launcher_msg">Il tuo dispositivo non supporta questa funzione. Vuoi aprire la pagina di dettaglio dell\'applicazione?</string>
|
||||
<string name="alert_cant_open_title">Impossibile aprire l\'applicazione</string>
|
||||
<string name="alert_cant_open_message">Desideri modificare le impostazioni?</string>
|
||||
<string name="toast_cant_open_message">Apri le impostazioni per abbinare un\'azione a questo gesto</string>
|
||||
|
@ -115,7 +114,6 @@
|
|||
<string name="settings_launcher_change_wallpaper">Cambia immagine di sfondo</string>
|
||||
<string name="settings_launcher_section_display">Schermo</string>
|
||||
<string name="settings_display_screen_timeout_disabled">Mantieni lo schermo acceso</string>
|
||||
<string name="settings_display_full_screen">Schermo intero</string>
|
||||
<string name="settings_display_rotate_screen">Ruota lo schermo</string>
|
||||
<string name="settings_launcher_section_functionality">Funzionalità</string>
|
||||
<string name="settings_functionality_auto_keyboard">Apri automaticamente la tastiera per cercare</string>
|
||||
|
@ -237,4 +235,4 @@
|
|||
<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>
|
||||
</resources>
|
||||
|
|
|
@ -1,2 +1,200 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="alert_cant_open_title">アプリを開けません</string>
|
||||
<string name="alert_cant_open_message">設定を変更しますか?</string>
|
||||
<string name="settings_title">設定</string>
|
||||
<string name="settings_tab_app">アプリ</string>
|
||||
<string name="settings_tab_launcher">ランチャー</string>
|
||||
<string name="settings_tab_meta">その他</string>
|
||||
<string name="toast_cant_open_message">このジェスチャのアクションを選択するには設定を開きます</string>
|
||||
<string name="settings_gesture_description_up">上にスワイプ</string>
|
||||
<string name="settings_gesture_description_tap_up">タップしてから上にスワイプ</string>
|
||||
<string name="settings_gesture_double_up">Double Up</string>
|
||||
<string name="settings_gesture_tap_up">Tap + Up</string>
|
||||
<string name="settings_gesture_up">Up</string>
|
||||
<string name="settings_gesture_back">Back</string>
|
||||
<string name="settings_gesture_description_double_up">2本指で上にスワイプ</string>
|
||||
<string name="settings_gesture_down">Down</string>
|
||||
<string name="settings_gesture_description_down">下にスワイプ</string>
|
||||
<string name="settings_gesture_tap_down">Tap + Down</string>
|
||||
<string name="settings_gesture_description_tap_down">タップしてから下にスワイプ</string>
|
||||
<string name="settings_gesture_double_down">Double Down</string>
|
||||
<string name="settings_gesture_description_double_down">2本指で下にスワイプ</string>
|
||||
<string name="settings_gesture_left">Left</string>
|
||||
<string name="settings_gesture_description_left">左にスワイプ</string>
|
||||
<string name="settings_gesture_tap_left">Tap + Left</string>
|
||||
<string name="settings_gesture_description_tap_left">タップしてから左にスワイプ</string>
|
||||
<string name="settings_gesture_double_left">Double Left</string>
|
||||
<string name="settings_gesture_description_double_left">2本指で左にスワイプ</string>
|
||||
<string name="settings_gesture_right">Right</string>
|
||||
<string name="settings_gesture_description_right">右にスワイプ</string>
|
||||
<string name="settings_gesture_description_tap_right">タップしてから右にスワイプ</string>
|
||||
<string name="settings_gesture_double_right">Double Right</string>
|
||||
<string name="settings_gesture_right_top_edge">Right (Top)</string>
|
||||
<string name="settings_gesture_description_right_top_edge">画面の上部で右にスワイプ</string>
|
||||
<string name="settings_gesture_right_bottom_edge">Right (Bottom)</string>
|
||||
<string name="settings_gesture_description_right_bottom_edge">画面の下部で右にスワイプ</string>
|
||||
<string name="settings_gesture_left_bottom_edge">Left (Bottom)</string>
|
||||
<string name="settings_gesture_description_left_bottom_edge">画面の下部で左にスワイプ</string>
|
||||
<string name="settings_gesture_left_top_edge">Left (Top)</string>
|
||||
<string name="settings_gesture_description_left_top_edge">画面の上部で左にスワイプ</string>
|
||||
<string name="settings_gesture_up_left_edge">Up (Left Edge)</string>
|
||||
<string name="settings_gesture_up_right_edge">Up (Right Edge)</string>
|
||||
<string name="settings_gesture_description_up_right_edge">画面の右端で上にスワイプ</string>
|
||||
<string name="settings_gesture_down_left_edge">Down (Left Edge)</string>
|
||||
<string name="settings_gesture_description_down_left_edge">画面の左端で下にスワイプ</string>
|
||||
<string name="settings_gesture_down_right_edge">Down (Right Edge)</string>
|
||||
<string name="settings_gesture_swipe_larger"><![CDATA[>]]></string>
|
||||
<string name="settings_gesture_description_swipe_larger">左上 -> 右中 -> 左下</string>
|
||||
<string name="settings_gesture_swipe_larger_reverse"><![CDATA[> (Reverse)]]></string>
|
||||
<string name="settings_gesture_description_swipe_larger_reverse">左下 -> 右中 -> 左上</string>
|
||||
<string name="settings_gesture_swipe_smaller"><![CDATA[<]]></string>
|
||||
<string name="settings_gesture_description_swipe_smaller">右上 -> 左中 -> 右下</string>
|
||||
<string name="settings_gesture_swipe_smaller_reverse"><![CDATA[< (Reverse)]]></string>
|
||||
<string name="settings_gesture_swipe_v">V</string>
|
||||
<string name="settings_gesture_description_swipe_v">左上 -> 中下 -> 右上</string>
|
||||
<string name="settings_gesture_swipe_v_reverse">V (Reverse)</string>
|
||||
<string name="settings_gesture_description_swipe_v_reverse">右上 -> 中下 -> 左上</string>
|
||||
<string name="settings_gesture_swipe_lambda">Λ</string>
|
||||
<string name="settings_gesture_description_swipe_lambda">左下 -> 中上 -> 右下</string>
|
||||
<string name="settings_gesture_swipe_lambda_reverse">Λ (Reverse)</string>
|
||||
<string name="settings_gesture_description_swipe_lambda_reverse">右下 -> 中上 -> 左下</string>
|
||||
<string name="settings_gesture_vol_down">Volume Down</string>
|
||||
<string name="settings_gesture_description_vol_down">音量ダウンボタンを押す</string>
|
||||
<string name="settings_gesture_double_click">Double Click</string>
|
||||
<string name="settings_gesture_description_double_click">空白部分をダブルタップ</string>
|
||||
<string name="settings_gesture_long_click">Long Click</string>
|
||||
<string name="settings_gesture_date">Date</string>
|
||||
<string name="settings_gesture_description_date">日付をタップ</string>
|
||||
<string name="settings_gesture_time">Time</string>
|
||||
<string name="settings_gesture_description_time">時刻をタップ</string>
|
||||
<string name="settings_apps_choose">アプリを選択</string>
|
||||
<string name="settings_launcher_section_appearance">外観</string>
|
||||
<string name="settings_theme_color_theme">カラーテーマ</string>
|
||||
<string name="settings_theme_color_theme_item_default">デフォルト</string>
|
||||
<string name="settings_theme_color_theme_item_dark">ダーク</string>
|
||||
<string name="settings_theme_color_theme_item_dynamic">ダイナミック</string>
|
||||
<string name="settings_theme_text_shadow">文字の影</string>
|
||||
<string name="settings_theme_background_item_transparent">透明</string>
|
||||
<string name="settings_theme_background_item_blur">ブラー</string>
|
||||
<string name="settings_theme_background_item_solid">ソリッド</string>
|
||||
<string name="settings_theme_font">フォント</string>
|
||||
<string name="settings_theme_font_item_system_default">システムデフォルト</string>
|
||||
<string name="settings_theme_monochrome_icons">モノクロのアプリアイコン</string>
|
||||
<string name="settings_launcher_section_date_time"><![CDATA[Date & time]]></string>
|
||||
<string name="settings_clock_color">色</string>
|
||||
<string name="settings_clock_time_visible">時刻を表示</string>
|
||||
<string name="settings_clock_date_visible">日付を表示</string>
|
||||
<string name="settings_clock_localized">ローカライズされた日付形式を使用する</string>
|
||||
<string name="settings_clock_show_seconds">秒を表示</string>
|
||||
<string name="settings_clock_flip_date_time">日付と時刻を反転</string>
|
||||
<string name="settings_theme_wallpaper">壁紙を選択</string>
|
||||
<string name="settings_launcher_change_wallpaper">壁紙を変更</string>
|
||||
<string name="settings_launcher_section_display">表示</string>
|
||||
<string name="settings_display_screen_timeout_disabled">画面オンを維持</string>
|
||||
<string name="settings_display_rotate_screen">画面の回転</string>
|
||||
<string name="settings_enabled_gestures_double_swipe_summary">2本指でスワイプ</string>
|
||||
<string name="settings_enabled_gestures_edge_swipe">Edgeスワイプアクション</string>
|
||||
<string name="settings_enabled_gestures_edge_swipe_summary">画面端でスワイプ</string>
|
||||
<string name="settings_functionality_search_web_summary">アプリリストで検索中にリターンキーを押すとWeb検索が起動します。</string>
|
||||
<string name="settings_functionality_search_web">Webで検索</string>
|
||||
<string name="settings_functionality_auto_keyboard">検索時にキーボードを表示</string>
|
||||
<string name="settings_launcher_section_apps">アプリ</string>
|
||||
<string name="settings_apps_hide_bound_apps">ジェスチャーに設定されたアプリをアプリ一覧に表示しない</string>
|
||||
<string name="settings_apps_hide_paused_apps">一時停止されたアプリを隠す</string>
|
||||
<string name="settings_list_layout">アプリ一覧のレイアウト</string>
|
||||
<string name="settings_list_reverse_layout">アプリ一覧を反転</string>
|
||||
<string name="settings_list_layout_item_default">デフォルト</string>
|
||||
<string name="settings_list_layout_item_text">テキスト</string>
|
||||
<string name="settings_list_layout_item_grid">グリッド</string>
|
||||
<string name="settings_meta_show_tutorial">ランチャーのチュートリアルを見る</string>
|
||||
<string name="settings_meta_reset">設定をリセット</string>
|
||||
<string name="settings_meta_reset_confirm">すべての設定を破棄します。続行しますか?</string>
|
||||
<string name="settings_meta_view_code">ソースコードを見る</string>
|
||||
<string name="dialog_report_bug_title">バグを報告</string>
|
||||
<string name="dialog_report_bug_button_clipboard">クリップボードにコピー</string>
|
||||
<string name="dialog_report_bug_security_info">セキュリティ上の脆弱性をGitHubに公開しないでください。代わりに以下を使用してください。</string>
|
||||
<string name="dialog_report_bug_button_security">セキュリティ上の脆弱性を報告</string>
|
||||
<string name="dialog_report_bug_create_report">レポートを作成</string>
|
||||
<string name="settings_meta_join_chat">µLauncherのチャットに入る</string>
|
||||
<string name="settings_meta_privacy">プライバシーポリシー</string>
|
||||
<string name="settings_meta_discord">Discordに参加してください!</string>
|
||||
<string name="list_title_hidden">非表示のアプリ</string>
|
||||
<string name="list_title_private_space">プライベートスペース</string>
|
||||
<string name="list_title_pick">アプリを選択</string>
|
||||
<string name="list_tab_app">アプリ</string>
|
||||
<string name="list_tab_other">その他</string>
|
||||
<string name="list_app_delete">アンインストール</string>
|
||||
<string name="list_app_info">アプリ情報</string>
|
||||
<string name="list_app_favorite_remove">お気に入りから削除</string>
|
||||
<string name="list_app_hidden_add">隠す</string>
|
||||
<string name="list_app_rename">名称を変更</string>
|
||||
<string name="list_not_removed">アプリを削除できませんでした</string>
|
||||
<string name="list_apps_search_hint">検索</string>
|
||||
<string name="list_apps_search_hint_no_auto_launch">検索(自動起動なし)</string>
|
||||
<string name="list_other_settings">µLauncherの設定</string>
|
||||
<string name="list_other_list">すべてのアプリ</string>
|
||||
<string name="list_other_toggle_private_space_lock">プライベートスペースのロックを切り替え</string>
|
||||
<string name="list_other_volume_up">音楽: うるさい</string>
|
||||
<string name="list_other_volume_down">音楽: ひっそり</string>
|
||||
<string name="list_other_track_next">音楽: 次</string>
|
||||
<string name="list_other_track_previous">音楽: 前</string>
|
||||
<string name="list_other_expand_notifications_panel">通知パネルを表示</string>
|
||||
<string name="list_other_nop">なにもしねぇ</string>
|
||||
<string name="list_other_lock_screen">画面をロック</string>
|
||||
<string name="list_other_torch">ライトを切り替え</string>
|
||||
<string name="pin_shortcut_title">ショートカットを追加</string>
|
||||
<string name="pin_shortcut_button_bind">ジェシュチャーに設定</string>
|
||||
<string name="pin_shortcut_button_ok">Ok</string>
|
||||
<string name="pin_shortcut_switch_visible">アプリ一覧に表示</string>
|
||||
<string name="tutorial_title">チュートリアル</string>
|
||||
<string name="tutorial_concept_title">コンセプト</string>
|
||||
<string name="tutorial_usage_title">使い方</string>
|
||||
<string name="tutorial_usage_text">ホーム画面には現地の日付と時刻が表示されます。邪魔されることはありません。</string>
|
||||
<string name="tutorial_usage_text_2">1回のスワイプまたはボタンのタップでアプリを起動できます。次のスライドでいくつか選択してください。</string>
|
||||
<string name="tutorial_setup_title">セットアップ</string>
|
||||
<string name="tutorial_setup_text_2">選択内容は後で変更することもできます。</string>
|
||||
<string name="tutorial_finish_title">さあ行きましょう!</string>
|
||||
<string name="tutorial_finish_button">始める</string>
|
||||
<string name="settings">設定</string>
|
||||
<string name="settings_gesture_description_back">戻るボタン / 戻るジェスチャ</string>
|
||||
<string name="settings_theme_color_theme_item_light">ライト</string>
|
||||
<string name="settings_enabled_gestures_double_swipe">Doubleスワイプアクション</string>
|
||||
<string name="settings_functionality_auto_launch">検索結果を起動</string>
|
||||
<string name="list_title_favorite">お気に入りのアプリ</string>
|
||||
<string name="settings_gesture_description_vol_up">音量アップボタンを押す</string>
|
||||
<string name="settings_gesture_description_long_click">空白部分をロングタップ</string>
|
||||
<string name="settings_launcher_section_functionality">機能性</string>
|
||||
<string name="dialog_report_bug_info">µLauncherの改善にご協力いただきありがとうございます。\nバグレポートに次の情報を追加することを検討してください。</string>
|
||||
<string name="list_app_favorite_add">お気に入りに追加</string>
|
||||
<string name="settings_gesture_description_up_left_edge">画面の左端で上にスワイプ</string>
|
||||
<string name="settings_gesture_description_down_right_edge">画面の右端で下にスワイプ</string>
|
||||
<string name="settings_apps_install">アプリをインストール</string>
|
||||
<string name="list_removed">選択されたアプリを削除しました</string>
|
||||
<string name="tutorial_finish_text">始める準備はできました!これがあなたにとって大きな価値となることを願っています! \t- Finn(Launcherの作成者)とJosia(いくつかの改良を行い、フォーク μLauncher を保守)</string>
|
||||
<string name="settings_gesture_tap_right">Tap + Right</string>
|
||||
<string name="settings_gesture_description_double_right">2本指で右にスワイプ</string>
|
||||
<string name="settings_apps_hidden">非表示のアプリ</string>
|
||||
<string name="settings_general_choose_home_screen">μLauncherホーム画面に設定</string>
|
||||
<string name="settings_meta_fork_contact">フォークの開発者に問い合わせ</string>
|
||||
<string name="settings_meta_contact">オリジナルの開発者に問い合わせる</string>
|
||||
<string name="list_other_list_favorites">お気に入りのアプリ</string>
|
||||
<string name="list_other_track_play_pause">音楽: 再生 / 一時停止</string>
|
||||
<string name="settings_theme_background_item_dim">薄暗い</string>
|
||||
<string name="settings_launcher_sensitivity">感度</string>
|
||||
<string name="settings_meta_cant_select_launcher">アプリ情報</string>
|
||||
<string name="settings_gesture_vol_up">Volume Up</string>
|
||||
<string name="list_title_view">すべてのアプリ</string>
|
||||
<string name="list_app_hidden_remove">表示</string>
|
||||
<string name="settings_gesture_description_swipe_smaller_reverse">右下 -> 左中 -> 右上</string>
|
||||
<string name="settings_theme_background">背景(アプリ一覧と設定)</string>
|
||||
<string name="settings_enabled_gestures_edge_swipe_edge_width">端の幅</string>
|
||||
<string name="settings_functionality_auto_launch_summary">この機能を一時的に無効にするにはスペースキーを押します。</string>
|
||||
<string name="list_other_list_private_space">プライベートスペース</string>
|
||||
<string name="settings_apps_hide_private_space_apps">アプリ一覧からプライベートスペースを隠す</string>
|
||||
<string name="settings_meta_report_bug">バグを報告</string>
|
||||
<string name="tutorial_start_text">このランチャーの使い方を学ぶのにほんの数秒しかかかりません</string>
|
||||
<string name="tutorial_concept_text">Launcherは、最小限かつ効率的で、邪魔にならないように設計されています。支払い、広告、追跡サービスは一切ありません。</string>
|
||||
<string name="tutorial_concept_text_2">このアプリはオープンソース(MIT ライセンス)であり、GitHub で入手できます!リポジトリを必ずチェックしてください!</string>
|
||||
<string name="tutorial_setup_text">デフォルトのアプリをいくつか選択しました。必要に応じて今すぐ変更できます。</string>
|
||||
</resources>
|
||||
|
|
|
@ -66,7 +66,6 @@
|
|||
<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>
|
||||
<string name="settings_display_full_screen">Usar tela cheia</string>
|
||||
<string name="settings_launcher_section_functionality">Funcionalidades</string>
|
||||
<string name="settings_enabled_gestures_double_swipe">Gestos com 2 dedos</string>
|
||||
<string name="settings_enabled_gestures_edge_swipe">Ações de deslize nas bordas</string>
|
||||
|
@ -80,7 +79,6 @@
|
|||
-->
|
||||
<string name="settings_general_choose_home_screen">Definir o μLauncher como tela inicial</string>
|
||||
<string name="settings_meta_cant_select_launcher">Informações do aplicativo</string>
|
||||
<string name="settings_meta_cant_select_launcher_msg">Seu dispositivo não é compatível com esse recurso. Gerenciar detalhes do app em vez disso?</string>
|
||||
<string name="settings_meta_show_tutorial">Ver tutorial do launcher</string>
|
||||
<string name="settings_meta_reset">Redefinir configuraçãos</string>
|
||||
<string name="settings_meta_reset_confirm">Você vai descartar todas as suas preferências. Continuar?</string>
|
||||
|
|
|
@ -137,7 +137,6 @@
|
|||
<string name="settings_launcher_change_wallpaper">Duvar kağıdını değiştir</string>
|
||||
<string name="settings_launcher_section_display">Ekran</string>
|
||||
<string name="settings_display_screen_timeout_disabled">Ekranı açık tut</string>
|
||||
<string name="settings_display_full_screen">Tam ekran kullan</string>
|
||||
<string name="settings_display_rotate_screen">Ekranı döndür</string>
|
||||
<string name="settings_launcher_section_functionality">İşlevsellik</string>
|
||||
<string name="settings_enabled_gestures_edge_swipe_summary">Ekranın köşesinden kaydırın</string>
|
||||
|
@ -165,7 +164,6 @@
|
|||
<string name="settings_list_layout_item_text">Metin</string>
|
||||
<string name="settings_list_layout_item_grid">Izgara</string>
|
||||
<string name="settings_meta_cant_select_launcher">Uygulama Detayı</string>
|
||||
<string name="settings_meta_cant_select_launcher_msg">Sizin cihazınız bu özelliği desteklemiyor. Onun yerine uygulama detaylarını düzenleyin?</string>
|
||||
<string name="settings_meta_reset">Ayarları Sıfırlayın</string>
|
||||
<string name="settings_meta_reset_confirm">Tüm tercihlerinizi bir kenara bırakacaksınız. Devam mı?</string>
|
||||
<string name="settings_theme_font_item_monospace">Tek uzay</string>
|
||||
|
@ -209,4 +207,4 @@
|
|||
<string name="dialog_select_color_ok">OK</string>
|
||||
<string name="dialog_select_color_color_hex">Renk</string>
|
||||
<string name="dialog_choose_color_title">Renk seçin</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -44,14 +44,12 @@
|
|||
<string name="settings_theme_wallpaper">选择一个壁纸</string>
|
||||
<string name="settings_launcher_change_wallpaper">换壁纸</string>
|
||||
<string name="settings_display_screen_timeout_disabled">保持屏幕常亮</string>
|
||||
<string name="settings_display_full_screen">使用全屏</string>
|
||||
<string name="settings_launcher_section_functionality">功能</string>
|
||||
<string name="settings_enabled_gestures_edge_swipe">边缘滑动动作</string>
|
||||
<string name="settings_functionality_auto_launch">零点击启动唯一搜索结果</string>
|
||||
<string name="settings_functionality_auto_launch">直接启动匹配搜索内容的应用</string>
|
||||
<string name="settings_functionality_auto_keyboard">搜索时呼出键盘</string>
|
||||
<string name="settings_launcher_sensitivity">灵敏度</string>
|
||||
<string name="settings_meta_cant_select_launcher">应用信息</string>
|
||||
<string name="settings_meta_cant_select_launcher_msg">您的设备不支持此功能。要不打开应用程序详细?</string>
|
||||
<string name="settings_meta_show_tutorial">查看启动器教程</string>
|
||||
<string name="settings_meta_reset">重置设置</string>
|
||||
<string name="settings_meta_reset_confirm">你将放弃你所有的配置。继续吗?</string>
|
||||
|
@ -213,4 +211,63 @@
|
|||
<string name="toast_private_space_default_home_screen">µLauncher 需要作为默认的主屏幕来访问私人空间。</string>
|
||||
<string name="toast_activity_not_found_search_web">没有找到处理搜索的应用。</string>
|
||||
<string name="toast_activity_not_found_browser">无法打开 URL:找不到浏览器。</string>
|
||||
<string name="dialog_consent_accessibility_privileges">我已知晓,这将赋予 µLauncher 广泛且重要的权限。</string>
|
||||
<string name="settings_apps_hide_private_space_apps">在应用程序列表中隐藏私人空间</string>
|
||||
<string name="settings_apps_hide_paused_apps">隐藏已被暂停的应用</string>
|
||||
<string name="settings_gesture_description_back">返回按键 / 返回手势</string>
|
||||
<string name="settings_gesture_description_tap_down">先单击然后再下滑</string>
|
||||
<string name="settings_functionality_search_web">在网络上搜索</string>
|
||||
<string name="settings_gesture_description_swipe_smaller">(从)右上 (滑向)中左(滑向)右下</string>
|
||||
<string name="settings_functionality_search_web_summary">通过按回车键在应用列表搜索界面激活网络搜索。</string>
|
||||
<string name="settings_gesture_description_swipe_lambda">(从)左下 (滑向)中上(滑向)右下</string>
|
||||
<string name="screen_lock_method_dialog_text"><![CDATA[
|
||||
<h1>选择锁定设备的方式</h1>
|
||||
有2种方式可以用来锁定屏幕。
|
||||
遗憾的是,两者都有缺点:<br/><br/>
|
||||
|
||||
<h3>通过设置“设备管理应用”</h3>
|
||||
无法和指纹解锁和脸部解锁共同使用。
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h3>通过“无障碍”功能</h3>
|
||||
需要更多的权限。
|
||||
µLauncher 将这些权限仅用于锁定屏幕。
|
||||
<br/>
|
||||
(对于任何一个从网上下载的应用所做的类似声明,你都不应该抱持“默认为可信”的态度,你可以并应该检查一下它的<a href=\"https://github.com/jrpie/Launcher\">源代码</a>.)
|
||||
<br/>
|
||||
在某些设备上,激活辅助功能服务后,启动PIN码将不再用于加密数据。
|
||||
如果遇到该问题,可以通过<a href="https://issuetracker.google.com/issues/37010136#comment36">该方法</a>重新激活启动PIN码用于数据加密。
|
||||
|
||||
<br/><br/><br/><br/>
|
||||
你可以在设置中随时更改这个选项。
|
||||
]]></string>
|
||||
<string name="list_apps_search_hint_no_auto_launch">搜索(不触发自动启动应用程序)</string>
|
||||
<string name="dialog_consent_accessibility_text"><![CDATA[您即将激活“无障碍”服务。这将授予 µLauncher <strong>广泛且重要的权限</strong>。<br/>µLauncher 将这些权限<strong>仅用于锁定屏幕</strong>。µLauncher <strong>绝不会收集任何数据</strong>。尤其是,µLauncher 不会使用“无障碍”服务来收集任何数据。]]></string>
|
||||
<string name="settings_gesture_description_swipe_larger">(从)左上 (滑向)中右(滑向)左下</string>
|
||||
<string name="settings_gesture_tap_up">单击 + 上滑</string>
|
||||
<string name="settings_gesture_tap_down">单击 + 下滑</string>
|
||||
<string name="settings_gesture_tap_left">单击 + 左滑</string>
|
||||
<string name="settings_gesture_description_tap_left">先单击然后再左滑</string>
|
||||
<string name="settings_gesture_description_tap_up">先单击然后再上滑</string>
|
||||
<string name="settings_gesture_tap_right">单击 + 右滑</string>
|
||||
<string name="settings_gesture_description_tap_right">先单击然后再右滑</string>
|
||||
<string name="settings_gesture_description_swipe_larger_reverse">(从)左下 (滑向)中右(滑向)左上</string>
|
||||
<string name="settings_gesture_description_swipe_smaller_reverse">(从)右下 (滑向)中左(滑向)右上</string>
|
||||
<string name="settings_gesture_description_swipe_v">(从)左上 (滑向)中下(滑向)右上</string>
|
||||
<string name="settings_gesture_description_swipe_v_reverse">(从)右上 (滑向)中下(滑向)左上</string>
|
||||
<string name="settings_gesture_description_swipe_lambda_reverse">(从)右下 (滑向)中上(滑向)左下</string>
|
||||
<string name="settings_gesture_swipe_lambda_reverse">Λ (反向)</string>
|
||||
<string name="settings_gesture_swipe_v_reverse">V(反向)</string>
|
||||
<string name="settings_gesture_swipe_larger_reverse"><![CDATA[> (反向)]]></string>
|
||||
<string name="settings_gesture_swipe_smaller_reverse"><![CDATA[< (反向)]]></string>
|
||||
<string name="settings_functionality_auto_launch_summary">按空格键临时暂停该功能。</string>
|
||||
<string name="settings_list_layout">应用程序列表样式</string>
|
||||
<string name="pin_shortcut_button_bind">绑定到手势</string>
|
||||
<string name="list_other_track_play_pause">音乐:播放 / 暂停</string>
|
||||
<string name="dialog_report_bug_button_security">报告安全漏洞</string>
|
||||
<string name="dialog_report_bug_security_info">安全漏洞请不要在 Github 上以公开的方式提交,而是使用以下方式进行报告:</string>
|
||||
<string name="dialog_report_bug_info">感谢您帮助改进 µLauncher!\n请考虑在您的应用程序错误报告中添加以下信息:</string>
|
||||
<string name="dialog_consent_accessibility_other_options">我已知晓,还有其他替代方法(使用设备管理员权限或电源按键)。</string>
|
||||
</resources>
|
||||
|
|
|
@ -176,7 +176,7 @@
|
|||
|
||||
<!-- Legal -->
|
||||
<string name="legal_info_text"><![CDATA[
|
||||
<h2>µLauncher</h2>
|
||||
<h2>μLauncher</h2>
|
||||
Modifications to Launcher.
|
||||
<p><a href=\"https://github.com/jrpie/launcher\">github.com/jrpie/launcher</a></p>
|
||||
|
||||
|
|
|
@ -179,7 +179,7 @@
|
|||
<string name="settings_apps_hide_paused_apps">Hide paused apps</string>
|
||||
<string name="settings_apps_hide_private_space_apps">Hide private space from app list</string>
|
||||
<string name="settings_list_layout">Layout of app list</string>
|
||||
<string name="settings_list_reverse_layout">Reverse app list</string>
|
||||
<string name="settings_list_reverse_layout">Reverse the app list</string>
|
||||
|
||||
<string name="settings_list_layout_item_default">Default</string>
|
||||
<string name="settings_list_layout_item_text">Text</string>
|
||||
|
@ -193,7 +193,7 @@
|
|||
<string name="settings_general_choose_home_screen">Set μLauncher as home screen</string>
|
||||
<string name="settings_meta_cant_select_launcher">App Info</string>
|
||||
|
||||
<string name="settings_meta_show_tutorial">View Launcher Tutorial</string>
|
||||
<string name="settings_meta_show_tutorial">View µLauncher Tutorial</string>
|
||||
|
||||
<string name="settings_meta_reset">Reset Settings</string>
|
||||
<string name="settings_meta_reset_confirm">You are going to discard all your preferences. Continue?</string>
|
||||
|
@ -202,14 +202,14 @@
|
|||
<string name="settings_meta_report_bug">Report a bug</string>
|
||||
|
||||
<string name="dialog_report_bug_title">Report a bug</string>
|
||||
<string name="dialog_report_bug_info">Thank you for helping to improve µLauncher!\nPlease consider adding the following information to your bug report:</string>
|
||||
<string name="dialog_report_bug_info">Thank you for helping to improve μLauncher!\nPlease consider adding the following information to your bug report:</string>
|
||||
<string name="dialog_report_bug_button_clipboard">Copy to clipboard</string>
|
||||
<string name="dialog_report_bug_security_info">Please do not report security vulnerabilities publicly on GitHub, but use the following instead:</string>
|
||||
<string name="dialog_report_bug_button_security">Report a security vulnerability</string>
|
||||
<string name="dialog_report_bug_create_report">Create report</string>
|
||||
|
||||
<string name="settings_meta_fork_contact">Contact the developer of the fork</string>
|
||||
<string name="settings_meta_join_chat">Join µLauncher chat</string>
|
||||
<string name="settings_meta_join_chat">Join μLauncher chat</string>
|
||||
<string name="settings_meta_donate">Donate</string>
|
||||
|
||||
<string name="settings_meta_privacy">Privacy Policy</string>
|
||||
|
@ -246,7 +246,7 @@
|
|||
<string name="list_apps_search_hint">Search</string>
|
||||
<string name="list_apps_search_hint_no_auto_launch">Search (no auto launch)</string>
|
||||
|
||||
<string name="list_other_settings">µLauncher Settings</string>
|
||||
<string name="list_other_settings">μLauncher Settings</string>
|
||||
<string name="list_other_list">All Applications</string>
|
||||
<string name="list_other_list_favorites">Favorite Applications</string>
|
||||
<string name="list_other_list_private_space">Private Space</string>
|
||||
|
@ -274,22 +274,29 @@
|
|||
-
|
||||
-->
|
||||
<string name="tutorial_title">Tutorial</string>
|
||||
<string name="tutorial_start_text">Take a few seconds to learn how to use this Launcher!</string>
|
||||
<string name="tutorial_start_text">👋\n\nTake a few seconds to learn how to use this Launcher!</string>
|
||||
|
||||
<string name="tutorial_concept_title">Concept</string>
|
||||
<string name="tutorial_concept_text">Launcher is designed to be minimal, efficient and free of distraction. It is free of payments, ads and tracking services.</string>
|
||||
<string name="tutorial_concept_text_2">The app is open-source (MIT license) and available on GitHub! Make sure to check out the repository!</string>
|
||||
<string name="tutorial_concept_text">μLauncher is designed to be minimal, efficient and free of distraction.
|
||||
\n\nIt contains no ads and collects no data.</string>
|
||||
<string name="tutorial_concept_text_2">It is free software (MIT license)!\nMake sure to check out the repository!</string>
|
||||
<string name="tutorial_concept_label_version">Version</string>
|
||||
|
||||
<string name="tutorial_usage_title">Usage</string>
|
||||
<string name="tutorial_usage_text">Your home screen contains the local date and time. No distraction.</string>
|
||||
<string name="tutorial_usage_text_2">You can launch your apps with a single swipe or button press. Choose some in the next slide.</string>
|
||||
<string name="tutorial_usage_text_2">You can launch your most important apps with touch gestures or button presses.</string>
|
||||
|
||||
<string name="tutorial_app_list_title">All Apps</string>
|
||||
<string name="tutorial_app_list_text">You can quickly search through all apps in the app list.\n\nSwipe up to open it, or bind it to a different gesture.</string>
|
||||
<string name="tutorial_app_list_text_2">Once only one app matches, it launches automatically.\nThis can be disabled by prefixing the query with a space.</string>
|
||||
|
||||
|
||||
<string name="tutorial_setup_title">Setup</string>
|
||||
<string name="tutorial_setup_text">We chose some default apps for you. You can change them now if you want to:</string>
|
||||
<string name="tutorial_setup_text_2">You can also change your selection later.</string>
|
||||
|
||||
<string name="tutorial_finish_title">Let\'s go!</string>
|
||||
<string name="tutorial_finish_text">You are ready to get started! I hope this is of great value to you! - Finn (who made Launcher) \tand Josia (who made some improvements and maintains the fork μLauncher)</string>
|
||||
<string name="tutorial_finish_text">You are ready to get started!\n\nI hope this is of great value to you!\n\n- Finn (who made Launcher) and Josia (who made some improvements and maintains the fork μLauncher)</string>
|
||||
<string name="tutorial_finish_button">Start</string>
|
||||
|
||||
|
||||
|
@ -301,7 +308,7 @@
|
|||
<string name="snackbar_app_hidden">App hidden. You can make it visible again in settings.</string>
|
||||
<string name="undo">Undo</string>
|
||||
<string name="list_other_expand_settings_panel">Quick Settings</string>
|
||||
<string name="toast_device_admin_not_enabled">µLauncher needs to be a device admin in order to lock the screen.</string>
|
||||
<string name="toast_device_admin_not_enabled">μLauncher needs to be a device admin in order to lock the screen.</string>
|
||||
<string name="device_admin_explanation">This is required for the lock screen action.</string>
|
||||
<string name="device_admin_description">Enable the lock screen action</string>
|
||||
<string name="alert_no_torch_found">No camera with torch detected.</string>
|
||||
|
@ -311,18 +318,18 @@
|
|||
<string name="toast_private_space_locked">Private space locked</string>
|
||||
<string name="toast_private_space_unlocked">Private space unlocked</string>
|
||||
<string name="toast_private_space_not_available">Private space is not available</string>
|
||||
<string name="toast_private_space_default_home_screen">µLauncher needs to be the default home screen to access private space.</string>
|
||||
<string name="toast_private_space_default_home_screen">μLauncher needs to be the default home screen to access private space.</string>
|
||||
<string name="tooltip_lock_private_space">Lock private space</string>
|
||||
<string name="tooltip_unlock_private_space">Unlock private space</string>
|
||||
<string name="toast_lock_screen_not_supported">Error: Locking the screen using accessibility is not supported on this device. Please use device admin instead.</string>
|
||||
<string name="accessibility_service_name">µLauncher - lock screen</string>
|
||||
<string name="accessibility_service_name">μLauncher - lock screen</string>
|
||||
<string name="accessibility_service_description">
|
||||
Setting µLauncher as an accessibility service allows it to lock the screen.
|
||||
Setting μLauncher as an accessibility service allows it to lock the screen.
|
||||
Note that excessive permissions are required. You should never grant such permissions lightly to any app.
|
||||
|
||||
µLauncher will use the accessibility service only for locking the screen. You can check the source code to make sure.
|
||||
μLauncher will use the accessibility service only for locking the screen. You can check the source code to make sure.
|
||||
|
||||
Note that locking the screen can also be accomplished by granting µLauncher device administrator permissions. However that method doesn\'t work with fingerprint and face unlock.
|
||||
Note that locking the screen can also be accomplished by granting μLauncher device administrator permissions. However that method doesn\'t work with fingerprint and face unlock.
|
||||
</string>
|
||||
|
||||
|
||||
|
@ -340,7 +347,7 @@
|
|||
|
||||
<h3>Accessibility Service</h3>
|
||||
Requires excessive privileges.
|
||||
µLauncher will use those privileges only for locking the screen.
|
||||
μLauncher will use those privileges only for locking the screen.
|
||||
<br/>
|
||||
(You really should not trust a random app you just downloaded with such a claim, but you can check the <a href=\"https://github.com/jrpie/Launcher\">source code</a>.)
|
||||
<br/>
|
||||
|
@ -363,11 +370,11 @@
|
|||
<string name="dialog_select_color_ok">Ok</string>
|
||||
<string name="dialog_select_color_color_hex">Color</string>
|
||||
<string name="dialog_choose_color_title">Choose color</string>
|
||||
<string name="dialog_consent_accessibility_privileges">I am aware that this will grant far-reaching privileges to µLauncher.</string>
|
||||
<string name="dialog_consent_accessibility_privileges">I am aware that this will grant far-reaching privileges to μLauncher.</string>
|
||||
<string name="dialog_consent_accessibility_other_options">I am aware that other options exist (using device administrator privileges or the power button).</string>
|
||||
<string name="dialog_consent_accessibility_consent">I consent to µLauncher using the accessibility service to provide functionality unrelated to accessibility.</string>
|
||||
<string name="dialog_consent_accessibility_data_collection">I consent to µLauncher not collecting any data.</string>
|
||||
<string name="dialog_consent_accessibility_text"><![CDATA[You are about to activate the accessibility service. This will grant <strong>far-reaching privileges</strong> to µLauncher.<br/>µLauncher will use these privileges <strong>only to lock the screen</strong>. µLauncher <strong>will never collect any data</strong>. In particular, µLauncher does not use the accessibility service to collect any data.]]></string>
|
||||
<string name="dialog_consent_accessibility_consent">I consent to μLauncher using the accessibility service to provide functionality unrelated to accessibility.</string>
|
||||
<string name="dialog_consent_accessibility_data_collection">I consent to μLauncher not collecting any data.</string>
|
||||
<string name="dialog_consent_accessibility_text"><![CDATA[You are about to activate the accessibility service. This will grant <strong>far-reaching privileges</strong> to μLauncher.<br/>μLauncher will use these privileges <strong>only to lock the screen</strong>. μLauncher <strong>will never collect any data</strong>. In particular, μLauncher does not use the accessibility service to collect any data.]]></string>
|
||||
<string name="dialog_consent_accessibility_title">Activating the Accessibility Service</string>
|
||||
<string name="dialog_consent_accessibility_ok">Activate Accessibility Service</string>
|
||||
<string name="dialog_cancel">Cancel</string>
|
||||
|
|
13
fastlane/metadata/android/en-US/changelogs/40.txt
Normal file
13
fastlane/metadata/android/en-US/changelogs/40.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
* Pinned shortcuts can now be added to app list
|
||||
* New action: adjust volume (thank you, zabrinu!)
|
||||
* Added option to hide navigation bar (thank you, acanoe!)
|
||||
* Added option to reverse the app list (thank you, spacefrogg!)
|
||||
* Show question mark icon when an unknown app is bound to a gesture
|
||||
|
||||
* Improved German translation
|
||||
* Improved Portuguese translation (thank you, "Vossa Excelencia"!)
|
||||
|
||||
* Fixed detection of long click gesture
|
||||
* Fixed blurred text in dialogs
|
||||
* Fixed a crash when private space is locked after app restarts (thank you, alexytomi!)
|
||||
* Fixed some additional bugs
|
22
fastlane/metadata/android/ja-JP/full_description.txt
Normal file
22
fastlane/metadata/android/ja-JP/full_description.txt
Normal file
|
@ -0,0 +1,22 @@
|
|||
µLauncherは、スワイプジェスチャとタップだけでアプリを起動できるホーム画面です。
|
||||
必要最小限で、効率的で、気が散らない。
|
||||
|
||||
ホーム画面には日付、時刻、壁紙のみが表示されます。
|
||||
戻るを押すか上にスワイプすると(これは設定可能)、
|
||||
インストールされているすべてのアプリのリストが開き、効率的に検索できます。
|
||||
|
||||
|
||||
このアプリは、Finn M Glas氏のアプリ <a href="https://f-droid.org/packages/com.finnmglas.launcher/">Launcher</a> のフォークです。
|
||||
|
||||
機能:
|
||||
* 35種のジェスチャーにアクションを設定できます。
|
||||
* アクションは以下のいずれかになります:
|
||||
- アプリを起動
|
||||
- アプリを表示
|
||||
- お気に入りのアプリを表示
|
||||
- ボリュームを上げる/下げる
|
||||
- 音楽: 次/前の曲
|
||||
- 画面をロック
|
||||
- ライトの切り替え
|
||||
- 通知 / クイック設定を表示
|
||||
* 仕事用プロファイルに対応しているので、Shelterなどのアプリも使えます。
|
1
fastlane/metadata/android/ja-JP/short_description.txt
Normal file
1
fastlane/metadata/android/ja-JP/short_description.txt
Normal file
|
@ -0,0 +1 @@
|
|||
気が散らない、最小限の Android ホーム画面。
|
1
fastlane/metadata/android/ja-JP/title.txt
Normal file
1
fastlane/metadata/android/ja-JP/title.txt
Normal file
|
@ -0,0 +1 @@
|
|||
µLauncher
|
Loading…
Add table
Reference in a new issue