Compare commits

..

25 Commits

Author SHA1 Message Date
49ca17803e Update translations 2020-10-27 18:21:55 +01:00
97ab72081d Update the UI 2020-10-27 18:13:27 +01:00
e6fee0dfe1 Merge branch 'master' of github.com:tommasoberlose/another-widget into develop 2020-10-27 18:13:15 +01:00
e0c4f24c43 Merge pull request #239 from Vgbhieel/master
Added Portuguese translation (values-pt)
2020-10-27 18:13:02 +01:00
2a7d0f171b Create strings,xml for portuguese values
translated all strings to portuguese
2020-10-23 00:55:39 -03:00
00dcfc3149 Merge branch 'master' of github.com:tommasoberlose/another-widget into develop 2020-10-20 10:39:19 +02:00
eb11b603aa Merge pull request #235 from Moutony/patch-24
Update French 2
2020-10-20 10:39:01 +02:00
4d2f624448 Merge branch 'master' of github.com:tommasoberlose/another-widget into develop 2020-10-20 10:38:47 +02:00
7581af4dd2 Merge branch 'english-strings' 2020-10-20 10:38:19 +02:00
0325af6582 Fix uppercase labels 2020-10-20 10:35:54 +02:00
4de0413a35 Fix multiple bugs 2020-10-20 10:27:05 +02:00
c54a24c889 Update strings.xml 2020-10-19 21:54:51 +02:00
98eccd2833 Update strings.xml 2020-10-19 21:54:17 +02:00
0119a20765 Update strings.xml 2020-10-19 21:51:12 +02:00
a1e54892fd Update strings.xml 2020-10-19 16:28:38 +02:00
17801fd164 Update strings.xml 2020-10-19 16:26:57 +02:00
e6087b2969 Merge pull request #234 from Moutony/patch-23
Update French
2020-10-19 15:35:06 +02:00
59b8ba26a2 Merge pull request #232 from d-l-n/master
Added and translated new strings
2020-10-19 15:35:01 +02:00
f190ee5d15 Merge pull request #231 from Drumber/translation
Update German translation
2020-10-19 15:34:48 +02:00
2f266ffcf8 Update strings.xml 2020-10-19 11:07:05 +02:00
0e376aba80 Update strings.xml 2020-10-19 11:06:29 +02:00
313e4fa92d Update French 2020-10-19 11:01:21 +02:00
a8ec754bc4 Added and translated new strings 2020-10-19 01:04:33 -03:00
f8d1188634 Update strings.xml
Added greetings and notification timeout strings
2020-10-18 18:47:52 +02:00
8216fc96b9 Update English strings.xml
Removed OpenWeatherMap former instructions.
Capitalized all action buttons.
name="action_save" translatable="false">OK
2020-10-18 16:15:22 +02:00
27 changed files with 829 additions and 208 deletions

Binary file not shown.

View File

@ -23,7 +23,7 @@ android {
applicationId "com.tommasoberlose.anotherwidget"
minSdkVersion 23
targetSdkVersion 29
versionCode 109
versionCode 110
versionName "2.0.15"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -89,8 +89,8 @@ dependencies {
implementation 'org.greenrobot:eventbus:3.2.0'
// Navigation
implementation 'androidx.navigation:navigation-fragment-ktx:2.3.0'
implementation 'androidx.navigation:navigation-ui-ktx:2.3.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.3.1'
implementation 'androidx.navigation:navigation-ui-ktx:2.3.1'
// Other
implementation 'androidx.multidex:multidex:2.0.1'

Binary file not shown.

View File

@ -9,7 +9,7 @@ import com.tommasoberlose.anotherwidget.R
import com.tommasoberlose.anotherwidget.global.Preferences
import kotlinx.android.synthetic.main.custom_notes_dialog_layout.view.*
class CustomNotesDialog(context: Context) : BottomSheetDialog(context, R.style.BottomSheetDialogTheme) {
class CustomNotesDialog(context: Context, callback: (() -> Unit)?) : BottomSheetDialog(context, R.style.BottomSheetDialogTheme) {
init {
val view = View.inflate(context, R.layout.custom_notes_dialog_layout, null)
@ -18,6 +18,7 @@ class CustomNotesDialog(context: Context) : BottomSheetDialog(context, R.style.B
view.action_positive.setOnClickListener {
Preferences.customNotes = view.notes.text.toString()
this.dismiss()
callback?.invoke()
}
view.notes.requestFocus()

View File

@ -7,6 +7,7 @@ import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import android.util.EventLog
import android.util.Log
import android.view.View
import androidx.core.app.NotificationManagerCompat
@ -30,9 +31,11 @@ import com.tommasoberlose.anotherwidget.helpers.MediaPlayerHelper
import com.tommasoberlose.anotherwidget.receivers.ActivityDetectionReceiver
import com.tommasoberlose.anotherwidget.ui.activities.AppNotificationsFilterActivity
import com.tommasoberlose.anotherwidget.ui.activities.MusicPlayersFilterActivity
import com.tommasoberlose.anotherwidget.ui.fragments.MainFragment
import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission
import kotlinx.android.synthetic.main.glance_provider_settings_layout.view.*
import kotlinx.coroutines.*
import org.greenrobot.eventbus.EventBus
class GlanceSettingsDialog(val context: Activity, val provider: Constants.GlanceProviderId, private val statusCallback: (() -> Unit)?) : BottomSheetDialog(context, R.style.BottomSheetDialogTheme) {
@ -48,6 +51,7 @@ class GlanceSettingsDialog(val context: Activity, val provider: Constants.Glance
Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> context.getString(R.string.settings_daily_steps_title)
Constants.GlanceProviderId.NOTIFICATIONS -> context.getString(R.string.settings_show_notifications_title)
Constants.GlanceProviderId.GREETINGS -> context.getString(R.string.settings_show_greetings_title)
Constants.GlanceProviderId.EVENTS -> context.getString(R.string.settings_show_events_as_glance_provider_title)
}
/* SUBTITLE*/
@ -59,6 +63,7 @@ class GlanceSettingsDialog(val context: Activity, val provider: Constants.Glance
Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> context.getString(R.string.settings_daily_steps_subtitle)
Constants.GlanceProviderId.NOTIFICATIONS -> context.getString(R.string.settings_show_notifications_subtitle)
Constants.GlanceProviderId.GREETINGS -> context.getString(R.string.settings_show_greetings_subtitle)
Constants.GlanceProviderId.EVENTS -> context.getString(R.string.settings_show_events_as_glance_provider_subtitle)
}
/* SONG */
@ -124,6 +129,13 @@ class GlanceSettingsDialog(val context: Activity, val provider: Constants.Glance
view.divider.isVisible = false
}
/* EVENTS */
if (provider == Constants.GlanceProviderId.EVENTS) {
view.header.isVisible = false
view.divider.isVisible = false
checkCalendarConfig(view)
}
/* TOGGLE */
view.provider_switch.isChecked = when (provider) {
Constants.GlanceProviderId.PLAYING_SONG -> Preferences.showMusic
@ -133,6 +145,7 @@ class GlanceSettingsDialog(val context: Activity, val provider: Constants.Glance
Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> Preferences.showDailySteps
Constants.GlanceProviderId.NOTIFICATIONS -> Preferences.showNotifications
Constants.GlanceProviderId.GREETINGS -> Preferences.showGreetings
Constants.GlanceProviderId.EVENTS -> Preferences.showEventsAsGlanceProvider
}
var job: Job? = null
@ -188,6 +201,9 @@ class GlanceSettingsDialog(val context: Activity, val provider: Constants.Glance
checkFitnessPermission(view)
checkGoogleFitConnection(view)
}
Constants.GlanceProviderId.EVENTS -> {
Preferences.showEventsAsGlanceProvider = isChecked
}
else -> {
}
}
@ -220,6 +236,19 @@ class GlanceSettingsDialog(val context: Activity, val provider: Constants.Glance
statusCallback?.invoke()
}
private fun checkCalendarConfig(view: View) {
if (!Preferences.showEvents || !context.checkGrantedPermission(Manifest.permission.READ_CALENDAR)) {
view.warning_container.isVisible = true
view.warning_title.text = context.getString(R.string.settings_show_events_as_glance_provider_error)
view.warning_container.setOnClickListener {
dismiss()
EventBus.getDefault().post(MainFragment.ChangeTabEvent(1))
}
} else {
view.warning_container.isVisible = false
}
}
private fun checkNotificationPermission(view: View) {
when {
ActiveNotificationsHelper.checkNotificationAccess(context) -> {

View File

@ -32,7 +32,8 @@ object Constants {
CUSTOM_INFO("CUSTOM_INFO"),
GOOGLE_FIT_STEPS("GOOGLE_FIT_STEPS"),
NOTIFICATIONS("NOTIFICATIONS"),
GREETINGS("GREETINGS");
GREETINGS("GREETINGS"),
EVENTS("EVENTS");
companion object {
private val map = GlanceProviderId.values().associateBy(GlanceProviderId::id)

View File

@ -141,6 +141,8 @@ object Preferences : KotprefModel() {
var musicPlayersFilter by stringPref(default = "")
var appNotificationsFilter by stringPref(default = "")
var showEventsAsGlanceProvider by booleanPref(default = false)
// Integrations
var installedIntegrations by intPref(default = 0)
}

View File

@ -9,6 +9,7 @@ import com.chibatching.kotpref.Kotpref
import com.chibatching.kotpref.blockingBulk
import com.tommasoberlose.anotherwidget.global.Preferences
import com.tommasoberlose.anotherwidget.receivers.NotificationListener
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
object ActiveNotificationsHelper {
fun showLastNotification(): Boolean {
@ -23,6 +24,7 @@ object ActiveNotificationsHelper {
remove(Preferences::lastNotificationPackage)
remove(Preferences::lastNotificationIcon)
}
MainWidget.updateWidget(context)
}
fun checkNotificationAccess(context: Context): Boolean {

View File

@ -1,5 +1,6 @@
package com.tommasoberlose.anotherwidget.helpers
import android.Manifest
import android.content.Context
import android.util.Log
import com.tommasoberlose.anotherwidget.R
@ -7,6 +8,7 @@ import com.tommasoberlose.anotherwidget.db.EventRepository
import com.tommasoberlose.anotherwidget.global.Constants
import com.tommasoberlose.anotherwidget.global.Preferences
import com.tommasoberlose.anotherwidget.models.GlanceProvider
import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission
import com.tommasoberlose.anotherwidget.utils.checkIfFitInstalled
import java.util.ArrayList
@ -20,7 +22,7 @@ object GlanceProviderHelper {
}
.toTypedArray()
providers.sortWith(Comparator { p1, p2 ->
return ArrayList(providers.filter { enabledProviders.contains(it.id) }.sortedWith(Comparator { p1, p2 ->
when {
enabledProviders.contains(p1.id) && enabledProviders.contains(p2.id) -> {
enabledProviders.indexOf(p1.id).compareTo(enabledProviders.indexOf(p2.id))
@ -35,8 +37,7 @@ object GlanceProviderHelper {
p1.id.compareTo(p2.id)
}
}
})
return ArrayList(providers.toList())
}) + providers.filter { !enabledProviders.contains(it.id) })
}
fun getGlanceProviderById(context: Context, providerId: Constants.GlanceProviderId): GlanceProvider? {
@ -68,7 +69,7 @@ object GlanceProviderHelper {
Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> {
GlanceProvider(providerId.id,
context.getString(R.string.settings_daily_steps_title),
R.drawable.round_near_me
R.drawable.round_favorite_border
)
}
Constants.GlanceProviderId.NOTIFICATIONS -> {
@ -83,10 +84,16 @@ object GlanceProviderHelper {
R.drawable.round_history_edu
)
}
Constants.GlanceProviderId.EVENTS -> {
GlanceProvider(providerId.id,
context.getString(R.string.settings_show_events_as_glance_provider_title),
R.drawable.round_event_note
)
}
}
}
fun saveGlanceProviderOrder(list: ArrayList<Constants.GlanceProviderId>) {
fun saveGlanceProviderOrder(list: List<Constants.GlanceProviderId>) {
Preferences.enabledGlanceProviderOrder = list.joinToString(separator = ",")
}
@ -94,7 +101,7 @@ object GlanceProviderHelper {
val eventRepository = EventRepository(context)
BatteryHelper.updateBatteryInfo(context)
val showGlance = Preferences.showGlance && (eventRepository.getEventsCount() == 0 || !Preferences.showEvents)
val showGlance = Preferences.showGlance && (eventRepository.getEventsCount() == 0 || !Preferences.showEvents || Preferences.showEventsAsGlanceProvider)
&& (
(Preferences.showNotifications && ActiveNotificationsHelper.showLastNotification()) ||
(Preferences.showNextAlarm && AlarmHelper.getNextAlarm(context) != "") ||
@ -102,7 +109,9 @@ object GlanceProviderHelper {
(Preferences.showBatteryCharging && Preferences.isCharging || Preferences.isBatteryLevelLow) ||
(Preferences.customNotes.isNotEmpty()) ||
(Preferences.showDailySteps && Preferences.googleFitSteps > 0) ||
(Preferences.showGreetings && GreetingsHelper.showGreetings())
(Preferences.showGreetings && GreetingsHelper.showGreetings()) ||
(Preferences.showEventsAsGlanceProvider && Preferences.showEvents && context.checkGrantedPermission(
Manifest.permission.READ_CALENDAR) && eventRepository.getNextEvent() != null)
)
eventRepository.close()
return showGlance

View File

@ -8,6 +8,7 @@ import android.os.Build
import android.service.notification.NotificationListenerService
import android.service.notification.StatusBarNotification
import android.util.Log
import android.widget.Toast
import com.tommasoberlose.anotherwidget.global.Actions
import com.tommasoberlose.anotherwidget.global.Constants
import com.tommasoberlose.anotherwidget.global.Preferences
@ -33,7 +34,7 @@ class NotificationListener : NotificationListenerService() {
val isGroupHeader = sbn.notification.flags and Notification.FLAG_GROUP_SUMMARY != 0
val isOngoing = sbn.notification.flags and Notification.FLAG_ONGOING_EVENT != 0
if (bundle.containsKey(Notification.EXTRA_TITLE) && !isGroupHeader && !isOngoing && ActiveNotificationsHelper.isAppAccepted(sbn.packageName)) {
if (bundle.containsKey(Notification.EXTRA_TITLE) && !isGroupHeader && !isOngoing && ActiveNotificationsHelper.isAppAccepted(sbn.packageName) && !sbn.packageName.contains("com.android.systemui")) {
Preferences.lastNotificationId = sbn.id
Preferences.lastNotificationTitle = bundle.getString(Notification.EXTRA_TITLE) ?: ""
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {

View File

@ -33,9 +33,9 @@ class UpdatesReceiver : BroadcastReceiver() {
Intent.ACTION_LOCALE_CHANGED,
Intent.ACTION_DATE_CHANGED,
Actions.ACTION_CALENDAR_UPDATE -> {
CalendarHelper.updateEventList(context)
ActiveNotificationsHelper.clearLastNotification(context)
MediaPlayerHelper.updatePlayingMediaInfo(context)
CalendarHelper.updateEventList(context)
}
"com.sec.android.widgetapp.APPWIDGET_RESIZE",

View File

@ -15,7 +15,6 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat
import androidx.databinding.DataBindingUtil
@ -51,7 +50,6 @@ import kotlinx.android.synthetic.main.fragment_glance_settings.*
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import net.idik.lib.slimadapter.SlimAdapter
import java.util.*
class GlanceTabFragment : Fragment() {
@ -63,6 +61,7 @@ class GlanceTabFragment : Fragment() {
private var dialog: GlanceSettingsDialog? = null
private lateinit var adapter: SlimAdapter
private lateinit var viewModel: MainViewModel
private lateinit var list: ArrayList<Constants.GlanceProviderId>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -84,6 +83,8 @@ class GlanceTabFragment : Fragment() {
binding.lifecycleOwner = this
binding.viewModel = viewModel
list = GlanceProviderHelper.getGlanceProviders(requireContext())
return binding.root
}
@ -107,7 +108,9 @@ class GlanceTabFragment : Fragment() {
.clicked(R.id.item) {
if (Preferences.showGlance) {
if (provider == Constants.GlanceProviderId.CUSTOM_INFO) {
CustomNotesDialog(requireContext()).show()
CustomNotesDialog(requireContext()){
adapter.notifyItemRangeChanged(0, adapter.data.size)
}.show()
} else {
dialog = GlanceSettingsDialog(requireActivity(), provider) {
adapter.notifyItemRangeChanged(0, adapter.data.size)
@ -119,6 +122,7 @@ class GlanceTabFragment : Fragment() {
}
}
}
var isVisible = false
when (provider) {
Constants.GlanceProviderId.PLAYING_SONG -> {
when {
@ -129,16 +133,19 @@ class GlanceTabFragment : Fragment() {
injector.text(R.id.label,
if (Preferences.showMusic) getString(R.string.settings_visible) else getString(
R.string.settings_not_visible))
isVisible = Preferences.showMusic
}
Preferences.showMusic -> {
injector.visibility(R.id.error_icon, View.VISIBLE)
injector.visibility(R.id.info_icon, View.GONE)
injector.text(R.id.label, getString(R.string.settings_not_visible))
isVisible = false
}
else -> {
injector.visibility(R.id.error_icon, View.GONE)
injector.visibility(R.id.info_icon, View.VISIBLE)
injector.text(R.id.label, getString(R.string.settings_not_visible))
isVisible = false
}
}
}
@ -156,6 +163,8 @@ class GlanceTabFragment : Fragment() {
if (!(Preferences.showNextAlarm && AlarmHelper.isAlarmProbablyWrong(
requireContext()))
) View.VISIBLE else View.GONE)
isVisible = !(Preferences.showNextAlarm && AlarmHelper.isAlarmProbablyWrong(
requireContext()))
}
Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> {
injector.text(R.id.label,
@ -163,6 +172,7 @@ class GlanceTabFragment : Fragment() {
R.string.settings_not_visible))
injector.visibility(R.id.error_icon, View.GONE)
injector.visibility(R.id.info_icon, View.VISIBLE)
isVisible = Preferences.showBatteryCharging
}
Constants.GlanceProviderId.NOTIFICATIONS -> {
when {
@ -172,16 +182,19 @@ class GlanceTabFragment : Fragment() {
injector.text(R.id.label,
if (Preferences.showNotifications) getString(
R.string.settings_visible) else getString(R.string.settings_not_visible))
isVisible = Preferences.showNotifications
}
Preferences.showNotifications -> {
injector.visibility(R.id.error_icon, View.VISIBLE)
injector.visibility(R.id.info_icon, View.GONE)
injector.text(R.id.label, getString(R.string.settings_not_visible))
isVisible = false
}
else -> {
injector.visibility(R.id.error_icon, View.GONE)
injector.visibility(R.id.info_icon, View.VISIBLE)
injector.text(R.id.label, getString(R.string.settings_not_visible))
isVisible = false
}
}
}
@ -191,6 +204,7 @@ class GlanceTabFragment : Fragment() {
R.string.settings_not_visible))
injector.visibility(R.id.error_icon, View.GONE)
injector.visibility(R.id.info_icon, View.VISIBLE)
isVisible = Preferences.showGreetings
}
Constants.GlanceProviderId.CUSTOM_INFO -> {
injector.text(R.id.label,
@ -198,6 +212,7 @@ class GlanceTabFragment : Fragment() {
R.string.settings_not_visible))
injector.visibility(R.id.error_icon, View.GONE)
injector.visibility(R.id.info_icon, View.VISIBLE)
isVisible = Preferences.customNotes != ""
}
Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> {
val account: GoogleSignInAccount? = GoogleSignIn.getLastSignedInAccount(context)
@ -209,19 +224,34 @@ class GlanceTabFragment : Fragment() {
R.string.settings_not_visible))
injector.visibility(R.id.error_icon, View.GONE)
injector.visibility(R.id.info_icon, View.VISIBLE)
isVisible = Preferences.showDailySteps
} else if (Preferences.showDailySteps) {
ActivityDetectionReceiver.unregisterFence(requireContext())
injector.visibility(R.id.error_icon, View.VISIBLE)
injector.visibility(R.id.info_icon, View.GONE)
injector.text(R.id.label, getString(R.string.settings_not_visible))
isVisible = false
} else {
ActivityDetectionReceiver.unregisterFence(requireContext())
injector.text(R.id.label, getString(R.string.settings_not_visible))
injector.visibility(R.id.error_icon, View.GONE)
injector.visibility(R.id.info_icon, View.VISIBLE)
isVisible = false
}
}
Constants.GlanceProviderId.EVENTS -> {
isVisible = Preferences.showEventsAsGlanceProvider && Preferences.showEvents && requireContext().checkGrantedPermission(Manifest.permission.READ_CALENDAR)
injector.text(R.id.label,
if (isVisible) getString(R.string.settings_visible) else getString(
R.string.settings_not_visible))
injector.visibility(R.id.error_icon, if (isVisible) View.GONE else View.VISIBLE)
injector.visibility(R.id.info_icon, if (isVisible) View.VISIBLE else View.GONE)
}
}
injector.alpha(R.id.title, if (isVisible) 1f else .25f)
injector.alpha(R.id.label, if (isVisible) 1f else .25f)
injector.alpha(R.id.icon, if (isVisible) 1f else .25f)
}
.attachTo(providers_list)
@ -231,8 +261,6 @@ class GlanceTabFragment : Fragment() {
0
) {
val list = GlanceProviderHelper.getGlanceProviders(requireContext())
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder,
@ -244,10 +272,6 @@ class GlanceTabFragment : Fragment() {
return true
}
override fun isItemViewSwipeEnabled(): Boolean {
return false
}
override fun onMoved(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
@ -257,14 +281,28 @@ class GlanceTabFragment : Fragment() {
x: Int,
y: Int
) {
with(list[fromPos]) {
list[fromPos] = list[toPos]
list[toPos] = this
with(list[toPos]) {
list[toPos] = list[fromPos]
list[fromPos] = this
}
GlanceProviderHelper.saveGlanceProviderOrder(list)
super.onMoved(recyclerView, viewHolder, fromPos, target, toPos, x, y)
}
override fun isItemViewSwipeEnabled(): Boolean {
return false
}
override fun clearView(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder
) {
super.clearView(recyclerView, viewHolder)
GlanceProviderHelper.saveGlanceProviderOrder(
list
)
adapter.updateData(list.mapNotNull { GlanceProviderHelper.getGlanceProviderById(requireContext(), it) })
}
override fun onChildDraw(
c: Canvas,
recyclerView: RecyclerView,
@ -305,10 +343,7 @@ class GlanceTabFragment : Fragment() {
})
mIth.attachToRecyclerView(providers_list)
adapter.updateData(
GlanceProviderHelper.getGlanceProviders(requireContext())
.mapNotNull { GlanceProviderHelper.getGlanceProviderById(requireContext(), it) }
)
adapter.updateData(list.mapNotNull { GlanceProviderHelper.getGlanceProviderById(requireContext(), it) })
providers_list.isNestedScrollingEnabled = false
setupListener()
@ -338,6 +373,11 @@ class GlanceTabFragment : Fragment() {
show_glance_switch.setOnCheckedChangeListener { _, enabled: Boolean ->
Preferences.showGlance = enabled
}
action_show_glance.setOnLongClickListener {
Preferences.enabledGlanceProviderOrder = ""
true
}
}
private val nextAlarmChangeBroadcastReceiver = object : BroadcastReceiver() {

View File

@ -365,7 +365,8 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
badgeGravity = BadgeDrawable.TOP_END
}?.isVisible = ((Preferences.showMusic || Preferences.showNotifications) && !ActiveNotificationsHelper.checkNotificationAccess(requireContext())) ||
(Preferences.showDailySteps && !(Build.VERSION.SDK_INT < Build.VERSION_CODES.Q || requireActivity().checkGrantedPermission(Manifest.permission.ACTIVITY_RECOGNITION))) ||
(AlarmHelper.isAlarmProbablyWrong(requireContext()))
(AlarmHelper.isAlarmProbablyWrong(requireContext())) ||
(Preferences.showEventsAsGlanceProvider && (!Preferences.showEvents || !requireContext().checkGrantedPermission(Manifest.permission.READ_CALENDAR)))
}
override fun onResume() {
@ -396,6 +397,7 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
}
class UpdateUiMessageEvent
class ChangeTabEvent(val page: Int)
@Subscribe(threadMode = ThreadMode.MAIN)
fun onMessageEvent(ignore: UpdateUiMessageEvent?) {
@ -407,4 +409,11 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
}
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onMessageEvent(event: ChangeTabEvent?) {
event?.let {
pager.setCurrentItem(event.page, true)
}
}
}

View File

@ -172,7 +172,7 @@ class MainWidget : AppWidgetProvider() {
val nextEvent = eventRepository.getNextEvent()
val nextAlarm = AlarmHelper.getNextAlarm(context)
if (Preferences.showEvents && context.checkGrantedPermission(Manifest.permission.READ_CALENDAR) && nextEvent != null) {
if (Preferences.showEvents && context.checkGrantedPermission(Manifest.permission.READ_CALENDAR) && nextEvent != null && !Preferences.showEventsAsGlanceProvider) {
if (Preferences.showNextEvent && eventRepository.getEventsCount() > 1) {
views.setImageViewBitmap(
R.id.action_next_rect,
@ -378,6 +378,26 @@ class MainWidget : AppWidgetProvider() {
break@loop
}
}
Constants.GlanceProviderId.EVENTS -> {
if (Preferences.showEventsAsGlanceProvider&& Preferences.showEvents && context.checkGrantedPermission(Manifest.permission.READ_CALENDAR) && nextEvent != null) {
val pIntentDetail = PendingIntent.getActivity(
context,
widgetID,
IntentHelper.getEventIntent(
context,
nextEvent,
forceEventDetails = true
),
PendingIntent.FLAG_UPDATE_CURRENT
)
views.setOnClickPendingIntent(
R.id.second_row_rect,
pIntentDetail
)
showSomething = true
break@loop
}
}
}
}
@ -552,7 +572,7 @@ class MainWidget : AppWidgetProvider() {
val nextEvent = eventRepository.getNextEvent()
val nextAlarm = AlarmHelper.getNextAlarm(context)
if (Preferences.showEvents && context.checkGrantedPermission(Manifest.permission.READ_CALENDAR) && nextEvent != null) {
if (Preferences.showEvents && context.checkGrantedPermission(Manifest.permission.READ_CALENDAR) && nextEvent != null && !Preferences.showEventsAsGlanceProvider) {
// Multiple counter
v.action_next.isVisible =
Preferences.showNextEvent && eventRepository.getEventsCount() > 1
@ -765,6 +785,35 @@ class MainWidget : AppWidgetProvider() {
break@loop
}
}
Constants.GlanceProviderId.EVENTS -> {
if (Preferences.showEventsAsGlanceProvider && Preferences.showEvents && context.checkGrantedPermission(Manifest.permission.READ_CALENDAR) && nextEvent != null) {
v.next_event_date.text = context.getString(R.string.events_glance_provider_format).format(nextEvent.title, if (Preferences.showDiffTime && now.timeInMillis < nextEvent.startDate) {
if (!nextEvent.allDay) {
SettingsStringHelper.getDifferenceText(
context,
now.timeInMillis,
nextEvent.startDate
)
.toLowerCase(Locale.getDefault())
} else {
SettingsStringHelper.getAllDayEventDifferenceText(
context,
now.timeInMillis,
nextEvent.startDate
).toLowerCase(Locale.getDefault())
}
} else "").trimEnd()
v.second_row_icon.isVisible = true
v.second_row_icon.setImageDrawable(
ContextCompat.getDrawable(
context,
R.drawable.round_today
)
)
showSomething = true
break@loop
}
}
}
}

View File

@ -28,8 +28,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -100,15 +100,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -144,8 +143,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -188,8 +187,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -225,8 +224,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -269,8 +268,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -311,15 +310,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -362,8 +360,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -400,8 +398,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -442,15 +440,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -493,8 +490,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -530,8 +527,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"

View File

@ -71,8 +71,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -127,15 +127,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -171,8 +170,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -235,15 +234,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -288,8 +286,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -330,15 +328,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"

View File

@ -30,15 +30,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -74,8 +73,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -133,8 +132,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -175,15 +174,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -219,8 +217,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -278,8 +276,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -320,15 +318,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -386,8 +383,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -423,8 +420,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -473,15 +470,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"

View File

@ -25,8 +25,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -81,7 +81,6 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
@ -92,6 +91,7 @@
android:paddingRight="20dp"
android:textColor="@color/colorSecondaryText"
android:layout_marginBottom="16dp"
android:textSize="13sp"
android:text="@string/settings_sort_glance_providers_subtitle"
android:textAppearance="@style/AnotherWidget.Settings.Header"/>
<androidx.recyclerview.widget.RecyclerView

View File

@ -63,8 +63,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -105,15 +105,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -156,8 +155,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -200,8 +199,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -238,8 +237,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -280,15 +279,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -325,8 +323,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -362,8 +360,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -401,8 +399,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -443,15 +441,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"

View File

@ -24,8 +24,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -82,15 +82,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -143,8 +142,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -229,15 +228,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -273,8 +271,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -310,8 +308,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
@ -352,15 +350,14 @@
android:textAlignment="viewStart"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textSize="16sp"
android:textColor="@color/colorAccent"
android:textAppearance="@style/AnotherWidget.Settings.Header"
app:textAllCaps="false" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="add_widget">Hinzufügen</string>
<!-- Display -->
@ -198,7 +198,7 @@
<string name="settings_show_notifications_title">Letzte Benachrichtigungen</string>
<string name="settings_show_notifications_subtitle">Zeigt die letzten Benachrichtigungen an, die auf Ihrem Gerät empfangen wurden.</string>
<string name="settings_show_greetings_title">Grüße</string>
<string name="settings_show_greetings_subtitle">Zeigt einen netten Satz an, wenn Sie es gerade nicht erwarten.</string>
<string name="settings_show_greetings_subtitle">Zeigt einen netten Satz, der zur Tageszeit passt.</string>
<string name="google_fit_account_connected">Konto verbunden</string>
<string name="google_fit_account_not_connected">Konto nicht verbunden</string>
<string name="google_fit">Google Fit</string>
@ -206,6 +206,36 @@
<string name="action_disconnect">Trennen</string>
<string name="applications_filter_title">Anwendungen</string>
<string name="applications_filter_subtitle">Wähle die Benachrichtigungen, die angezeigt werden sollen</string>
<string-array name="morning_greetings" tools:ignore="InconsistentArrays">
<item>Ich wünsche dir einen schönen Tag!</item>
<item>Guten Morgen!</item>
<item>Bereit für den Start in den Tag?</item>
<item>Raus aus den Federn!</item>
<item>Vergiss dein Frühstück nicht.</item>
<item>Ein guten Start in den Tag!</item>
</string-array>
<string-array name="evening_greetings" tools:ignore="InconsistentArrays">
<item>Guten Abend!</item>
<item>Wie war dein Tag?</item>
<item>Ich wünsche dir einen schönen Abend!</item>
<item>Wie wäre es mit einem Fernsehabend?</item>
<item>Hattest du einen schönen Tag?</item>
</string-array>
<string-array name="night_greetings" tools:ignore="InconsistentArrays">
<item>Schlaf gut!</item>
<item>Bis morgen!</item>
<item>Gute Nacht!</item>
<item>Bleibe nicht zu lange wach.</item>
</string-array>
<string name="glance_notification_hide_timeout_title">Benachrichtigung ausblenden nach</string>
<string-array name="glance_notifications_timeout">
<item>30 Sekunden</item>
<item>1 Minute</item>
<item>5 Minuten</item>
<item>10 Minuten</item>
<item>15 Minuten</item>
<item>dem Entfernen</item>
</string-array>
<!-- Settings -->
<string name="action_share">Teilen</string>

View File

@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name" translatable="false">Another Widget</string>
<string name="add_widget">Añadir</string>
<!-- Display -->
<string name="settings_general_title">Pantalla</string>
<string name="divider" translatable="false">|</string>
<string name="settings_font_color_title">Color del texto</string>
<string name="settings_secondary_font_color_title">Color del texto</string>
<string name="settings_background_color_title">Color del fondo</string>
@ -25,6 +27,19 @@
<string name="global_style_header">Widget</string>
<string name="action_capitalize_the_date">Capitalizar la fecha</string>
<string name="settings_date_format_title">Formato de fecha</string>
<string name="header_widget_background">Fondo del Widget</string>
<string name="settings_secondary_row_top_margin_title">Margen</string>
<string name="action_custom_font_to_search">Fuente personalizada...</string>
<string name="font_100" translatable="false">Thin</string>
<string name="font_200" translatable="false">Light</string>
<string name="font_300" translatable="false">Book</string>
<string name="font_400" translatable="false">Regular</string>
<string name="font_500" translatable="false">Medium</string>
<string name="font_600" translatable="false">Semi-bold</string>
<string name="font_700" translatable="false">Bold</string>
<string name="font_800" translatable="false">Black</string>
<string name="font_900" translatable="false">Heavy</string>
<!-- Calendar -->
<string name="settings_calendar_title">Calendario</string>
@ -70,12 +85,21 @@
<string name="settings_widget_update_frequency_high">Alta</string>
<string name="filters_header">Filtros</string>
<string name="event_detail_header">Detalles del evento</string>
<string name="settings_attendee_status_title">En espera</string>
<string name="settings_attendee_status_subtitle">Filtrar eventos aceptados o rechazados</string>
<string name="settings_busy_events_title">Eventos relevantes</string>
<string name="settings_busy_events_subtitle">Solo mostrar eventos que mantengan ocupado</string>
<string name="attendee_status_accepted">Eventos aceptados</string>
<string name="attendee_status_invited">Invitaciones a eventos</string>
<string name="attendee_status_declined">Eventos rechazados</string>
<!-- Weather -->
<string name="settings_weather_title">Clima</string>
<string name="title_permission_location">Mostrar el clima</string>
<string name="description_permission_location">Permite el acceso a tu ubicación\npara ver el clima en tu widget.</string>
<string name="settings_unit_title">Unidad de medición</string>
<string name="fahrenheit" translatable="false">°F - Fahrenheit</string>
<string name="celsius" translatable="false">°C - Celsius</string>
<string name="settings_weather_refresh_period_title">Frecuencia de refresco</string>
<string name="settings_weather_refresh_period_subtitle_0">30 minutos</string>
<string name="settings_weather_refresh_period_subtitle_1">1 hora</string>
@ -104,6 +128,46 @@
<string name="api_key_info_all_set">La activación de tu clave de API puede llegar a tomar unos diez minutos. El clima se actualizará tan pronto esté disponible.</string>
<string name="settings_weather_icon_pack_title">Paquete de iconos</string>
<string name="settings_weather_icon_pack_default">Paquete de iconos %d</string>
<string name="background_location_warning">Cuando el GPS está encendido, recolectamos los datos de la ubicación para actualizar la información del clima cuando la app está cerrada o no está en uso.\nNo usaremos esos datos en caso contrario.</string>
<string name="settings_weather_provider_api">Proveedor del clima</string>
<string name="settings_weather_provider_open_weather" translatable="false">OpenWeatherMap.org</string>
<string name="settings_weather_provider_weatherbit" translatable="false">Weatherbit.io</string>
<string name="settings_weather_provider_weather_api" translatable="false">WeatherAPI.com</string>
<string name="settings_weather_provider_here" translatable="false">HERE.com</string>
<string name="settings_weather_provider_accuweather" translatable="false">AccuWeather.com</string>
<string name="settings_weather_provider_weather_gov" translatable="false">Weather.gov (USA)\nby National Weather Services</string>
<string name="settings_weather_provider_yr" translatable="false">YR.no/Met.no\nby Meteorologisk Institutt</string>
<string name="weather_provider_info_open_weather_title">Este proveedor del clima necesita\nuna clave de API para funcionar correctamente.</string>
<string name="weather_provider_info_weatherbit_title">Este proveedor del clima necesita\nuna clave de API para funcionar correctamente.</string>
<string name="weather_provider_info_weatherapi_title">Este proveedor del clima necesita\nuna clave de API para funcionar correctamente.</string>
<string name="weather_provider_info_here_title">Este proveedor del clima necesita\nuna clave de API para funcionar correctamente.</string>
<string name="weather_provider_info_accuweather_title">Este proveedor del clima necesita\nuna clave de API para funcionar correctamente.</string>
<string name="weather_provider_info_weather_gov_title">Este proveedor del clima solo funciona\npara ubicaciones dentro de EEUU.</string>
<string name="weather_provider_info_yr_title">Este proveedor del clima solo permite\nla unidad de temperatura Celsius.</string>
<string name="weather_provider_info_open_weather_subtitle">Abre el sitio web del proveedor, crea una cuenta personal y copia aquí la clave predeterminada.</string>
<string name="weather_provider_info_weatherbit_subtitle">Abre el sitio web del proveedor, crea una cuenta personal y copia aquí la clave predeterminada.</string>
<string name="weather_provider_info_weatherapi_subtitle">Abre el sitio web del proveedor, crea una cuenta personal y copia aquí la clave predeterminada.</string>
<string name="weather_provider_info_here_subtitle">Abre el sitio web del proveedor, crea una cuenta personal y copia aquí la clave predeterminada.</string>
<string name="weather_provider_info_accuweather_subtitle">Abre el sitio web del proveedor, crea una cuenta personal y copia aquí la clave predeterminada.</string>
<string name="weather_provider_info_weather_gov_subtitle">\n</string>
<string name="weather_provider_info_yr_subtitle">\n</string>
<string name="weather_provider_error_missing_key">El proveedor del clima que has seleccionado requiere de una clave de API.</string>
<string name="weather_provider_error_wrong_location">La ubicación actual no está soportada.</string>
<string name="weather_provider_error_missing_location">Por favor selecciona una ubicación válida.</string>
<string name="weather_provider_error_expired_key">Parece que tu clave de API ha expirado.</string>
<string name="weather_provider_error_invalid_key">Clave de API no válida, o aún no activada.</string>
<string name="weather_provider_error_misconfigured">El proveedor del clima está mal configurado.</string>
<string name="weather_provider_error_connection">Error de conexión.</string>
<string name="weather_provider_error_generic">Algo salió mal, verifica la configuración del proveedor del clima.</string>
<string name="api_key_required_message">Cuenta requerida</string>
<string name="us_only_message">Solo EEUU</string>
<string name="celsius_only_message">Solo Unidad Métrica</string>
<string name="weather_select_a_provider">Seleccionar un proveedor</string>
<string name="weather_provider_activity_subtitle">Elige un proveedor del clima de la lista.\nAlgunos proveedores necesitan una cuenta personal gratuita,\npero suelen ser más precisos.</string>
<!-- Clock -->
<string name="settings_clock_title">Reloj</string>
@ -125,10 +189,10 @@
<!-- Glance -->
<string name="settings_show_next_alarm_title">Próxima alarma del reloj</string>
<string name="next_alarm_warning">La próxima alarma del reloj parece estar mal.\nFue establecoda por %s.</string>
<string name="settings_at_a_glance_title">Glance</string>
<string name="settings_show_music_title">Canción en reproducción</string>
<string name="settings_request_notification_access">Necesitamos el permiso de acceso a las notificaciones para poder ver qué canción está siendo reproducida.</string>
<string name="settings_request_last_notification_access">Necesitamos el permiso de acceso a las notificaciones para poder ver tus últimas notificaciones.</string>
<string name="settings_request_fitness_access">Necesitamos unos permisos para obtener tus pastos diarios de Google Fit.</string>
<string name="title_show_glance">Mostrar en la información de Glance</string>
<string name="description_show_glance_visible">Servicio habilitado</string>
@ -141,8 +205,56 @@
<string name="battery_low_warning">Nivel de batería bajo</string>
<string name="daily_steps_counter">%d pasos hechos</string>
<string name="charging">Cargando</string>
<string name="charged">Completamente cargado</string>
<string name="providers">Proveedores</string>
<string name="glance_info">La información de Glance solo se mostrará cuando no haya ningún evento visible y se cumplan algunas condiciones.</string>
<string name="settings_music_players_filter_title">Reproductores de Música</string>
<string name="settings_music_players_filter_subtitle">Elige tus reproductores de música más relevantes</string>
<string name="settings_show_music_subtitle">Usamos las notificaciones de los reproductores de música para mostrar la canción en reproducción.</string>
<string name="settings_low_battery_level_subtitle">Entérate el dispositivo tiene batería baja o está cargando.</string>
<string name="settings_daily_steps_subtitle">Mira tus pasos diarios por un breve momento después de terminar de caminar o correr.</string>
<string name="settings_show_next_alarm_subtitle">Mira tu próxima próxima alarma del reloj, verifica si tu app predeterminada de reloj es la única estableciendo las alarmas del dispositivo.</string>
<string name="settings_show_next_alarm_app_title">Alarma establecida a las %s</string>
<string name="settings_show_next_alarm_app_subtitle_wrong">La próxima alarma del reloj parece estar mal</string>
<string name="settings_show_next_alarm_app_subtitle_correct">La próxima alarma del reloj parece estar bien</string>
<string name="settings_show_notifications_title">Últimas notificaciones</string>
<string name="settings_show_notifications_subtitle">Revisa las últimas notificaciones que se muestren en tu dispositivo.</string>
<string name="settings_show_greetings_title">Saludos</string>
<string name="settings_show_greetings_subtitle">Ver algunas frases geniales cuando menos te lo esperes.</string>
<string name="google_fit_account_connected">Cuenta conectada</string>
<string name="google_fit_account_not_connected">Cuenta no conectada</string>
<string name="google_fit">Google Fit</string>
<string name="action_connect">Conectar</string>
<string name="action_disconnect">Desconectar</string>
<string name="applications_filter_title">Aplicaciones</string>
<string name="applications_filter_subtitle">Elige qué notificaciones ver</string>
<string-array name="morning_greetings" tools:ignore="InconsistentArrays">
<item>¡Que tengas un buen día!</item>
<item>¡Buen día!</item>
<item>¿Listo para irnos?</item>
<item>Levántate y brilla.</item>
<item>¡No olvides tu desayuno!</item>
</string-array>
<string-array name="evening_greetings" tools:ignore="InconsistentArrays">
<item>¡Buenas noches!</item>
<item>¿Cómo te fue en tu día?</item>
<item>¿Cómo estuvo tu día?</item>
</string-array>
<string-array name="night_greetings" tools:ignore="InconsistentArrays">
<item>¡Que duermas bien!</item>
<item>¡Hasta mañana!</item>
<item>¡Buenas noches!</item>
<item>¡No te quedes hasta muy tarde!</item>
</string-array>
<string name="glance_notification_hide_timeout_title">Ocultar la notificación después de</string>
<string-array name="glance_notifications_timeout">
<item>30 segundos</item>
<item>1 minuto</item>
<item>5 minutos</item>
<item>10 minutos</item>
<item>15 minutos</item>
<item>se descarte</item>
</string-array>
<!-- Settings -->
<string name="action_share">Compartir</string>
@ -176,6 +288,7 @@
<string name="support_refresh_widget_subtitle">Forzar el reinicio del servicio del widget</string>
<string name="settings_feedback_subtitle">Este es un proyecto de código abierto, siéntete libre de ayudar.</string>
<string name="settings_feedback_title">Comentarios y solicitudes de funciones</string>
<string name="xiaomi_manufacturer" translatable="false">xiaomi</string>
<string name="xiaomi_warning_title">Dispositivos Xiaomi</string>
<string name="xiaomi_warning_message">Habilita el permiso para mostrar ventanas emergentes mientras está ejecutándose en segundo plano dentro de la sección "Otros permisos" en la app de ajustes. De lo contrario, no podrás abrir ninguna aplicación tocando en el widget.</string>
<string name="action_ignore">Ignorar</string>
@ -186,6 +299,10 @@
<string name="provider_header">Proveedor</string>
<string name="appearance_header">Apariencia</string>
<string name="preferences_header">Preferencias</string>
<string name="settings_privacy_policy_title"><![CDATA[Legal & Privacy]]></string>
<string name="settings_privacy_policy_subtitle">Ver las polítcas de privacidad de la app</string>
<string name="project_header">Proyecti de Código Abierto</string>
<string name="information_header">Información</string>
<!-- Activities -->
<string name="action_choose_application">Elegir aplicación</string>
@ -201,5 +318,6 @@
<string name="settings_title_integrations">Integraciones</string>
<string name="label_count_installed_integrations">%d integraciones instaladas</string>
<string name="nothing">Nada</string>
<string name="header_widget_background">Widget en segundo plano</string>
<string name="action_dismiss">Descartar</string>
<string name="action_accept">Aceptar</string>
</resources>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="add_widget">Ajouter</string>
<!-- Display -->
@ -94,7 +94,7 @@
<string name="settings_weather_refresh_period_subtitle_4">12 heures</string>
<string name="settings_weather_refresh_period_subtitle_5">24 heures</string>
<string name="settings_custom_location_title">Localisation</string>
<string name="custom_location_gps">Utiliser le GPS</string>
<string name="custom_location_gps">Géolocalisation</string>
<string name="show_weather_visible">Infos météo visibles</string>
<string name="show_weather_not_visible">Infos météo non visibles</string>
<string name="settings_weather_app_title">Taper sur la météo ouvre</string>
@ -103,18 +103,10 @@
<string name="settings_weather_provider_api_key_subtitle_not_set">Le fournisseur météo doit être configuré.</string>
<string name="api_key_hint">Clé API OpenWeatherMap</string>
<string name="default_weather_app">Google Weather</string>
<string name="weather_warning">La météo de Google Awareness est obsolète. Il faut désormais une clé API OpenWeather pour afficher la météo dans le widget.</string>
<string name="api_key_title_1">Inscrivez-vous sur OpenWeatherMap</string>
<string name="api_key_subtitle_1">Créez un compte gratuit sur OpenWeatherMap. \nCela ne prendra que quelques minutes.</string>
<string name="api_key_title_2">Copiez votre clé API</string>
<string name="api_key_subtitle_2">Recherchez la clé API dans vos paramètres du compte et copiez la clé par défaut.</string>
<string name="api_key_title_3">Saisissez la clé API dans l\'app</string>
<string name="api_key_subtitle_3">Collez la clé dans le champ ci-dessus et enregistrez-la. Une fois la clé activée, la météo deviendra visible.</string>
<string name="action_open_provider">Aller sur OpenWeatherMap.org</string>
<string name="api_key_info_all_set">Cela peut prendre jusqu\'à 10 minutes avant que votre clé API soit activée. La météo sera mise à jour dès qu\'elle sera disponible !</string>
<string name="weather_warning">La météo de Google Awareness est obsolète. Il faut désormais une clé API d\'un fournisseur tiers pour afficher la météo dans le widget.</string>
<string name="settings_weather_icon_pack_title">Pack d\'icônes</string>
<string name="settings_weather_icon_pack_default">Pack d\'icônes %d</string>
<string name="background_location_warning">Lorsque le GPS est activé, nous collectons les données GPS pour actualiser la météo, même lorsque l\'app est fermée ou non utilisée.\nNous n\'utiliserons pas ces données autrement que mentionné.</string>
<string name="background_location_warning">Lorsque Géolocalisation est sélectionné, nous collectons les données de localisation pour actualiser la météo, même lorsque l\'app est fermée ou non utilisée.\nNous n\'utiliserons pas ces données autrement que mentionné.</string>
<string name="settings_weather_provider_api">Fournisseur météo</string>
<string name="weather_provider_info_open_weather_title">Ce fournisseur météo a besoin d\'une\nclé API pour fonctionner correctement.</string>
@ -145,7 +137,7 @@
<string name="us_only_message">USA uniquement</string>
<string name="celsius_only_message">Unité Celsius uniquement</string>
<string name="weather_select_a_provider">Sélectionner un fournisseur</string>
<string name="weather_provider_activity_subtitle">Sélectionnez un fournisseur météo dans la liste.\nCertains fournisseurs ont besoin d\'un compte\npersonnel gratuit pour fonctionner,\nmais ils sont généralement plus précis.</string>
<string name="weather_provider_activity_subtitle">Sélectionnez un fournisseur météo dans la liste.\nCertains fournisseurs ont besoin d\'un\ncompte personnel gratuit pour fonctionner,\nmais ils sont généralement plus précis.</string>
<!-- Clock -->
<string name="settings_clock_title">Horloge</string>
@ -171,17 +163,17 @@
<string name="settings_show_music_title">Musique en cours de lecture</string>
<string name="settings_request_notification_access">Nous avons besoin d\'accéder aux notifications pour vérifier la musique en cours de lecture.</string>
<string name="settings_request_last_notification_access">Nous avons besoin d\'accéder aux notifications pour vérifier vos dernières notifications.</string>
<string name="settings_request_fitness_access">Nous avons besoin de quelques autorisations pour obtenir vos nombres de pas quotidiens depuis Google Fit.</string>
<string name="settings_request_fitness_access">Nous avons besoin de quelques autorisations pour obtenir votre nombre de pas depuis Google Fit.</string>
<string name="title_show_glance">Afficher les coups d\'œil</string>
<string name="description_show_glance_visible">Services activés</string>
<string name="description_show_glance_not_visible">Services désactivés</string>
<string name="settings_sort_glance_providers_title">Priorité des sources de données</string>
<string name="settings_sort_glance_providers_subtitle">Glissez-déposez les fournisseurs de la liste pour modifier l\'ordre de priorité de leur affichage.</string>
<string name="settings_custom_notes_title">Notes personnalisées</string>
<string name="settings_low_battery_level_title">Batterie</string>
<string name="settings_daily_steps_title">Nombre de pas</string>
<string name="battery_low_warning">Batterie faible</string>
<string name="daily_steps_counter">%d pas jusqu\'à présent</string>
<string name="settings_low_battery_level_title">Batterie</string>
<string name="battery_low_warning">Batterie faible</string>
<string name="charging">Batterie en charge</string>
<string name="providers">Fournisseurs</string>
<string name="glance_info">Les coups d\'œil n\'apparaîtront que si aucun événement n\'est affiché et uniquement lorsque certaines conditions sont vérifiées.</string>
@ -190,7 +182,7 @@
<string name="settings_show_music_subtitle">Nous utilisons la notification des lecteurs de musique pour afficher la chanson en cours de lecture.</string>
<string name="settings_low_battery_level_subtitle">Soyez averti lorsque la batterie de l\'appareil est faible ou en charge.</string>
<string name="settings_daily_steps_subtitle">Affiche vos pas quotidiens pendant un bref instant après avoir fini une marche ou une course.</string>
<string name="settings_daily_steps_subtitle">Affiche votre nombre de pas pendant un bref instant après avoir fini une marche ou une course.</string>
<string name="settings_show_next_alarm_subtitle">Affiche votre prochaine alarme.\nVérifiez si votre app d\'horloge par défaut est la seule à définir les alarmes sur votre appareil.</string>
<string name="settings_show_next_alarm_app_title">Alarme réglée par %s</string>
<string name="settings_show_next_alarm_app_subtitle_wrong">La prochaine alarme semble erronée</string>
@ -206,6 +198,38 @@
<string name="action_disconnect">DÉCONNECTER</string>
<string name="applications_filter_title">Applications</string>
<string name="applications_filter_subtitle">Choisissez les notifications à afficher</string>
<string-array name="morning_greetings" tools:ignore="InconsistentArrays">
<item>Bonjour !</item>
<item>Bonne journée !</item>
<item>Prêt à partir ?</item>
<item>Levez-vous et brillez.</item>
<item>N\'oubliez pas votre petit-déjeuner!</item>
</string-array>
<string-array name="evening_greetings" tools:ignore="InconsistentArrays">
<item>Bonsoir!</item>
<item>Comment a été votre journée?</item>
<item>Avez-vous passé une bonne journée?</item>
<item>Après l\'effort, le réconfort.</item>
<item>N\'oubliez pas de dîner!</item>
</string-array>
<string-array name="night_greetings" tools:ignore="InconsistentArrays">
<item>Bonne nuit!</item>
<item>Dormez bien!</item>
<item>Faites de beaux rêves!</item>
<item>À demain...</item>
<item>Ne vous couchez pas trop tard!</item>
</string-array>
<string name="glance_notification_hide_timeout_title">Cacher la notification après</string>
<string-array name="glance_notifications_timeout">
<item>30 secondes</item>
<item>1 minute</item>
<item>5 minutes</item>
<item>10 minutes</item>
<item>15 minutes</item>
<item>Suppression</item>
</string-array>
<!-- Settings -->
<string name="action_share">Partager</string>
@ -224,7 +248,7 @@
<string name="support_translations_title">Aider à traduire</string>
<string name="support_translations_subtitle">Ouvrir une pull-request sur GitHub</string>
<string name="support_website_title">Consulter mes autres projets</string>
<string name="support_website_subtitle">Un seul développeur, plusieurs possibilités</string>
<string name="support_website_subtitle">Un développeur, plusieurs possibilités</string>
<string name="error">Oups, quelque chose s\'est mal passé !</string>
<string name="settings_theme_title">Thème</string>
<string name="support_main_subtitle">On a toujours besoin de beaucoup de café</string>
@ -241,15 +265,15 @@
<string name="settings_feedback_title">Commentaires et suggestions</string>
<string name="xiaomi_warning_title">Appareils Xiaomi</string>
<string name="xiaomi_warning_message">Veuillez activer l\'option \"Afficher des fenêtres pop-up pendant que vous parcourez en arrière-plan\" dans la section \"Autres autorisations\" des paramètres de l\'application.\nSinon, vous ne pourrez ouvrir aucune autre app en tapant sur le widget.</string>
<string name="action_ignore">Ignorer</string>
<string name="action_grant_permission">Ouvrir les Paramètres</string>
<string name="action_ignore">IGNORER</string>
<string name="action_grant_permission">PARAMÉTRER</string>
<string name="settings_title">Paramètres</string>
<string name="style_header">Style</string>
<string name="actions_header">Actions</string>
<string name="provider_header">Configuration</string>
<string name="appearance_header">Apparence</string>
<string name="preferences_header">Préférences</string>
<string name="settings_privacy_policy_title"><![CDATA[Legal & Privacy]]> (EN)</string>
<string name="settings_privacy_policy_title"><![CDATA[Légal et confidentialité]]> (Anglais)</string>
<string name="settings_privacy_policy_subtitle">Voir la politique de confidentialité de l\'app</string>
<string name="project_header">Projet open-source</string>
<string name="information_header">Informations</string>
@ -268,6 +292,6 @@
<string name="settings_title_integrations">Intégrations</string>
<string name="label_count_installed_integrations">%d intégrations installées</string>
<string name="nothing">Rien</string>
<string name="action_dismiss">Refuser</string>
<string name="action_accept">Accepter</string>
<string name="action_dismiss">REFUSER</string>
<string name="action_accept">ACCEPTER</string>
</resources>

View File

@ -233,6 +233,10 @@
<item>15 minuti</item>
<item>che viene eliminata</item>
</string-array>
<string name="settings_show_events_as_glance_provider_title">Eventi</string>
<string name="settings_show_events_as_glance_provider_subtitle">Mostra il dettaglio dell\'evento avendo sempre la data visibile.</string>
<string name="settings_show_events_as_glance_provider_error">Attiva la visualizzazione degli eventi e concedi il permesso necessario per accedere al calendario.</string>
<string name="events_glance_provider_format">%1$s %2$s</string>
<!-- Settings -->
<string name="action_share">Condividi</string>

View File

@ -0,0 +1,319 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name" translatable="false">Another Widget</string>
<string name="add_widget">Adicionar Widget</string>
<!-- Display -->
<string name="settings_general_title">Exibição</string>
<string name="divider" translatable="false">|</string>
<string name="settings_font_color_title">Cor do textor</string>
<string name="settings_secondary_font_color_title">Cor do texto</string>
<string name="settings_background_color_title">Cor do fundo</string>
<string name="title_main_text_size">Tamanho do texto</string>
<string name="title_second_text_size">Tamanho do texto</string>
<string name="title_text_shadow">Tamanho do texto</string>
<string name="settings_text_shadow_subtitle_none">Nenhum</string>
<string name="settings_text_shadow_subtitle_low">Baixa</string>
<string name="settings_text_shadow_subtitle_high">Alta</string>
<string name="settings_custom_font_title">Fonte do widget</string>
<string name="custom_font_subtitle_0">Fonte do dispositivo</string>
<string name="custom_font_subtitle_1">Google Sans</string>
<string name="custom_date_format">Formato de data personalizado</string>
<string name="alpha">Alfa</string>
<string name="transparent">Transparente</string>
<string name="settings_show_dividers_title">Mostrar divisor do texto</string>
<string name="first_row_header">Primeira linha</string>
<string name="second_row_header">Segunda linha</string>
<string name="global_style_header">Widget</string>
<string name="action_capitalize_the_date">Converter data para maiúsculo</string>
<string name="settings_date_format_title">Formato da data</string>
<string name="header_widget_background">Fundo do widget</string>
<string name="settings_secondary_row_top_margin_title">Margem</string>
<string name="action_custom_font_to_search">Fonte personalizada...</string>
<string name="font_100" translatable="false">Thin</string>
<string name="font_200" translatable="false">Light</string>
<string name="font_300" translatable="false">Book</string>
<string name="font_400" translatable="false">Regular</string>
<string name="font_500" translatable="false">Medium</string>
<string name="font_600" translatable="false">Semi-bold</string>
<string name="font_700" translatable="false">Bold</string>
<string name="font_800" translatable="false">Black</string>
<string name="font_900" translatable="false">Heavy</string>
<!-- Calendar -->
<string name="settings_calendar_title">Calendário</string>
<string name="title_permission_calendar">Mostrar seus eventos</string>
<string name="description_permission_calendar">Permite o acesso ao seu calendário\npara a visualização de eventos no seu widget.</string>
<string name="settings_filter_calendar_title">Filtrar eventos</string>
<string name="settings_filter_calendar_subtitle">Altera a visibilidade do calendário</string>
<string name="settings_all_day_title">Eventos que duram o dia inteiro</string>
<string name="main_calendar">Conta de calendário</string>
<string name="calendar_settings_list_error">Erro ao carregar a lista de calendário.</string>
<string name="all_day">Dia inteiro</string>
<string name="show_events_visible">Os eventos estão visíveis</string>
<string name="show_events_not_visible">Os eventos não estão visíveis</string>
<string name="settings_show_until_subtitle_6">30 minutos depois</string>
<string name="settings_show_until_subtitle_7">1 hora depois</string>
<string name="settings_show_until_subtitle_0">3 horas depois</string>
<string name="settings_show_until_subtitle_1">6 horas depois</string>
<string name="settings_show_until_subtitle_2">12 horas depois</string>
<string name="settings_show_until_subtitle_3">24 horas depois</string>
<string name="settings_show_until_subtitle_4">3 dias depois</string>
<string name="settings_show_until_subtitle_5">7 dias depois</string>
<string name="settings_show_until_title">Mostrar evento por pelo menos</string>
<string name="day_char">d</string>
<string name="settings_calendar_app_title">Aplicativo de calendário padrão</string>
<string name="error_no_calendar">Nenhum calendário encontrado.</string>
<string name="tomorrow">amanhã</string>
<string name="today">hoje</string>
<string name="settings_event_app_title">Ao clicar no evento abre</string>
<string name="settings_second_row_info_title">Informação do evento</string>
<string name="settings_second_row_info_subtitle_1">Endereço do evento</string>
<string name="settings_second_row_info_subtitle_0">Horário do evento</string>
<string name="settings_show_diff_time_title">Tempo até o evento</string>
<string name="settings_show_declined_events_title">Eventos recusados</string>
<string name="default_event_app">Detalhes do evento</string>
<string name="default_calendar_app">Aplicativo de calendário padrão</string>
<string name="settings_show_multiple_events_title">Alternador de multiplos eventos</string>
<string name="soon">em breve</string>
<string name="now">agora</string>
<string name="settings_widget_update_frequency_title">Frequência de atualização do tempo até o evento</string>
<string name="settings_widget_update_frequency_subtitle">Frequências mais altas geram um consumo de bateria maior.</string>
<string name="settings_widget_update_frequency_low">Baixa</string>
<string name="settings_widget_update_frequency_default">Padrão</string>
<string name="settings_widget_update_frequency_high">Alta</string>
<string name="filters_header">Filtros</string>
<string name="event_detail_header">Detalhe do evento</string>
<string name="settings_attendee_status_title">Status do participante</string>
<string name="settings_attendee_status_subtitle">Filtrar eventos aceitos ou rejeitados</string>
<string name="settings_busy_events_title">Eventos relevantes</string>
<string name="settings_busy_events_subtitle">Mostra somente eventos que o mantêm ocupado</string>
<string name="attendee_status_accepted">Aceitou o evento</string>
<string name="attendee_status_invited">Convidado para o evento</string>
<string name="attendee_status_declined">Recusou o evento</string>
<!-- Weather -->
<string name="settings_weather_title">Clima</string>
<string name="title_permission_location">Mostra o clima</string>
<string name="description_permission_location">Permite o acesso a sua localização\npara a visualização do clima no seu widget.</string>
<string name="settings_unit_title">Unidade de medida</string>
<string name="fahrenheit" translatable="false">°F - Fahrenheit</string>
<string name="celsius" translatable="false">°C - Celsius</string>
<string name="settings_weather_refresh_period_title">Frequência de atualização</string>
<string name="settings_weather_refresh_period_subtitle_0">30 minutos</string>
<string name="settings_weather_refresh_period_subtitle_1">1 hora</string>
<string name="settings_weather_refresh_period_subtitle_2">3 horas</string>
<string name="settings_weather_refresh_period_subtitle_3">6 horas</string>
<string name="settings_weather_refresh_period_subtitle_4">12 horas</string>
<string name="settings_weather_refresh_period_subtitle_5">24 horas</string>
<string name="settings_custom_location_title">Local</string>
<string name="custom_location_gps">Geolocalização</string>
<string name="show_weather_visible">Informações sobre o clima estão visíveis</string>
<string name="show_weather_not_visible">Informações sobre o clima não estão visíveis</string>
<string name="settings_weather_app_title">Ao tocar no clima abre</string>
<string name="settings_weather_provider_api_key_title">Chave da API de clima</string>
<string name="settings_weather_provider_api_key_subtitle_all_set">O provedor de clima está configurado corretamente.</string>
<string name="settings_weather_provider_api_key_subtitle_not_set">O provedor de clima precisa estar configurado.</string>
<string name="api_key_hint">Chave da API do OpenWeatherMap</string>
<string name="default_weather_app">Google Clima</string>
<string name="weather_warning">A API Google Awareness está depravada. Agora é necessário ter uma chave da API de um outro provedor para mostrar o clima no widget.</string>
<string name="settings_weather_icon_pack_title">Pacote de ícones</string>
<string name="settings_weather_icon_pack_default">Pacote de ícones %d</string>
<string name="background_location_warning">Quando a geolocalização está selecionada, nós coletamos os dados de localização para atualizar as informações sobre o clima mesmo quando o aplicativo está fechado ou fora de uso.\nNós não iremos usar esses dados de outra maneira.</string>
<string name="settings_weather_provider_api">Provedor de clima</string>
<string name="settings_weather_provider_open_weather" translatable="false">OpenWeatherMap.org</string>
<string name="settings_weather_provider_weatherbit" translatable="false">Weatherbit.io</string>
<string name="settings_weather_provider_weather_api" translatable="false">WeatherAPI.com</string>
<string name="settings_weather_provider_here" translatable="false">HERE.com</string>
<string name="settings_weather_provider_accuweather" translatable="false">AccuWeather.com</string>
<string name="settings_weather_provider_weather_gov" translatable="false">Weather.gov (USA)\nby National Weather Services</string>
<string name="settings_weather_provider_yr" translatable="false">YR.no/Met.no\nby Meteorologisk Institutt</string>
<string name="weather_provider_info_open_weather_title">Esse provedor de clima necessita de\numa chave de API para funcionar corretamente.</string>
<string name="weather_provider_info_weatherbit_title">Esse provedor de clima necessita de\numa chave de API para funcionar corretamente.</string>
<string name="weather_provider_info_weatherapi_title">Esse provedor de clima necessita de\numa chave de API para funcionar corretamente.</string>
<string name="weather_provider_info_here_title">Esse provedor de clima necessita de\nnuma chave de API para funcionar corretamente.</string>
<string name="weather_provider_info_accuweather_title">Esse provedor de clima necessita de\nnuma chave de API para funcionar corretamente.</string>
<string name="weather_provider_info_weather_gov_title">Esse provedor de clima só funciona\nem localizações nos EUA.</string>
<string name="weather_provider_info_yr_title">Esse provedor de clima só permite\nunidade de temperatura Celsius.</string>
<string name="weather_provider_info_open_weather_subtitle">Abra o site do provedor, crie uma conta pessoal e copie a chave padrão aqui.</string>
<string name="weather_provider_info_weatherbit_subtitle">Abra o site do provedor, crie uma conta pessoal e copie a chave padrão aqui.</string>
<string name="weather_provider_info_weatherapi_subtitle">Abra o site do provedor, crie uma conta pessoal e copie a chave padrão aqui.</string>
<string name="weather_provider_info_here_subtitle">Abra o site do provedor, crie uma conta pessoal e copie a chave padrão aqui.</string>
<string name="weather_provider_info_accuweather_subtitle">Abra o site do provedor, crie uma conta pessoal e copie a chave padrão aqui.</string>
<string name="weather_provider_info_weather_gov_subtitle">\n</string>
<string name="weather_provider_info_yr_subtitle">\n</string>
<string name="weather_provider_error_missing_key">O provedor de clima selecionado necessita de uma chave de API.</string>
<string name="weather_provider_error_wrong_location">A localização atual não é suportada.</string>
<string name="weather_provider_error_missing_location">Por favor, selecione uma localização válida.</string>
<string name="weather_provider_error_expired_key">Parece que sua chave de API expirou.</string>
<string name="weather_provider_error_invalid_key">Chave de API inválida ou ainda não foi ativada.</string>
<string name="weather_provider_error_misconfigured">O provedor de clima está configurado erradamente.</string>
<string name="weather_provider_error_connection">Erro de conexão.</string>
<string name="weather_provider_error_generic">Algo deu errado, verifique a configuração do provedor de clima.</string>
<string name="api_key_required_message">Conta necessária</string>
<string name="us_only_message">Somente EUA</string>
<string name="celsius_only_message">Somente Unidade Métrica</string>
<string name="weather_select_a_provider">Selecione um provedor</string>
<string name="weather_provider_activity_subtitle">Selecione um provedor de clima da lista.\nAlguns provedores necessitam de uma conta pessoal gratuita,\nmas geralmente eles são mais precisos.</string>
<!-- Clock -->
<string name="settings_clock_title">Relógio</string>
<string name="settings_clock_app_title">Ao clicar no relógio abre</string>
<string name="title_show_clock">Mostra o relógio</string>
<string name="show_clock_visible">O relógio está visível</string>
<string name="show_clock_not_visible">O relógio não está visível</string>
<string name="settings_clock_text_size_title">Tamanho do texto</string>
<string name="default_clock_app">Aplicativo de relógio padrão</string>
<string name="settings_clock_bottom_margin_title">Margem inferior do relógio</string>
<string name="settings_clock_bottom_margin_subtitle_none">Nenhuma</string>
<string name="settings_clock_bottom_margin_subtitle_small">Pequena</string>
<string name="settings_clock_bottom_margin_subtitle_medium">Média</string>
<string name="settings_clock_bottom_margin_subtitle_large">Larga</string>
<string name="clock_warning">Devido a limitações tecnológicas, o relógio não terá a fonte personalizada e as sombras do texto selecionadas na seção Exibição.</string>
<string name="settings_clock_text_color_title">Cor do texto</string>
<string name="settings_ampm_indicator_title">Mostrar indicador AM/PM</string>
<string name="clock_text_header">Estilo do texto do relógio</string>
<!-- Glance -->
<string name="settings_show_next_alarm_title">Próximo despertador</string>
<string name="settings_at_a_glance_title">Glance</string>
<string name="settings_show_music_title">Música em reprodução</string>
<string name="settings_request_notification_access">Precisamos da permissão de acesso a notificações para verificar a música em reprodução.</string>
<string name="settings_request_last_notification_access">Precisamos da permissão de acesso a notificações para verificar suas últimas notificações.</string>
<string name="settings_request_fitness_access">Precisamos de algumas permissões para receber seus pasos diários do Google Fit.</string>
<string name="title_show_glance">Mostrar as informações do at a glance</string>
<string name="description_show_glance_visible">Serviço ativado</string>
<string name="description_show_glance_not_visible">Serviço desativado</string>
<string name="settings_sort_glance_providers_title">Prioridade de dados</string>
<string name="settings_sort_glance_providers_subtitle">Altere a prioridade do provedor de dados organizando a lista abaixo.</string>
<string name="settings_custom_notes_title">Notas customizadas</string>
<string name="settings_daily_steps_title">Passos diário</string>
<string name="daily_steps_counter">%d passos até agora</string>
<string name="settings_low_battery_level_title">Beteria</string>
<string name="battery_low_warning">Nível de bateria baixo</string>
<string name="charging">Carregando</string>
<string name="charged">Totalmente carregado</string>
<string name="providers">Provedores</string>
<string name="glance_info">Informações da Glance só aparecerão quando não tiver eventos exibidos e quando algumas condições estiverem verificadas.</string>
<string name="settings_music_players_filter_title">Players de música</string>
<string name="settings_music_players_filter_subtitle">Escolha seu player de música mais relevante</string>
<string name="settings_show_music_subtitle">Usamos a notificação do player de música para mostrar a música em reprodução.</string>
<string name="settings_low_battery_level_subtitle">Seja avisado quando o dispositivo estiver com a bateria baixa ou carregando.</string>
<string name="settings_daily_steps_subtitle">Veja seus passos diário por um breve momento depois de finalizar uma caminhada ou corrida.</string>
<string name="settings_show_next_alarm_subtitle">Veja seu próximo alarme.\nVerifique se seu aplicativo de relógio padrão é o único com alarmes configurados.</string>
<string name="settings_show_next_alarm_app_title">Alarme configurado para %s</string>
<string name="settings_show_next_alarm_app_subtitle_wrong">O próximo alarme parece estar errado</string>
<string name="settings_show_next_alarm_app_subtitle_correct">O próximo alarme parece estar correto</string>
<string name="settings_show_notifications_title">Últimas notificações</string>
<string name="settings_show_notifications_subtitle">Verifica as últimas notificações que apareceram no seu dispositivo.</string>
<string name="settings_show_greetings_title">Cumprimentos</string>
<string name="settings_show_greetings_subtitle">Veja alguma frase legal para iluminar seu dia quando você menos esperar.</string>
<string name="google_fit_account_connected">Conta conectada</string>
<string name="google_fit_account_not_connected">Conta não conectada</string>
<string name="google_fit">Google Fit</string>
<string name="action_connect">Conectar</string>
<string name="action_disconnect">Desconectar</string>
<string name="applications_filter_title">Aplicações</string>
<string name="applications_filter_subtitle">Escolha qual notificação exibir</string>
<string-array name="morning_greetings" tools:ignore="InconsistentArrays">
<item>Bom dia!</item>
<item>Tenha um bom dia!</item>
<item>Preparado para irmos?</item>
<item>Levante e brilhe.</item>
<item>Não esqueca do café da manhã!</item>
</string-array>
<string-array name="evening_greetings" tools:ignore="InconsistentArrays">
<item>Boa tarde!</item>
<item>Como foi o dia?</item>
<item>Teve um dia legal?</item>
<item>Depois do esforço, vem o conforto.</item>
<item>Não esqueça de jantar!</item>
</string-array>
<string-array name="night_greetings" tools:ignore="InconsistentArrays">
<item>Boa noite!</item>
<item>Durma bem!</item>
<item>Bons sonhos até que os raios de sol te encontrem!</item>
<item>Vejo você amanhã...</item>
<item>Não fique acordado até tarde!</item>
</string-array>
<string name="glance_notification_hide_timeout_title">Ocultar a notificação depois de</string>
<string-array name="glance_notifications_timeout">
<item>30 segundos</item>
<item>1 minuto</item>
<item>5 minutos</item>
<item>10 minutos</item>
<item>15 minutos</item>
<item>Dispensada</item>
</string-array>
<!-- Settings -->
<string name="action_share">Compartilhar</string>
<string name="action_rate">Avaliar o aplicativo</string>
<string name="action_support">Me apoie</string>
<string name="action_feedback">Feedback</string>
<string name="action_about">Sobre</string>
<string name="action_refresh_widget">Recarregar widget</string>
<string name="toolbar_transition_name" translatable="false">toolbar</string>
<string name="error_opening_uri">Erro ao abrir a URL: Link copiado para área de transferência.</string>
<string name="loading_text">Carregado Dado...</string>
<string name="error_opening_app">Erro ao abrir o aplicativo.</string>
<string name="default_name">Aplicativo padrão</string>
<string name="action_save">Salvar</string>
<string name="settings_visible">Visível</string>
<string name="settings_not_visible">Não visível</string>
<string name="support_translations_title">Ajude com traduções</string>
<string name="support_translations_subtitle">Abra um pull request no GitHub</string>
<string name="support_website_title">Cheque meus outros projetos</string>
<string name="support_website_subtitle">O mesmo desenvolvedor, diversas possibilidades</string>
<string name="error">Ooops, algo deu errado!</string>
<string name="settings_theme_title">Tema</string>
<string name="support_main_subtitle">Devs sempre precisam de bastante café</string>
<string name="settings_subtitle_dark_theme_light">Light</string>
<string name="settings_subtitle_dark_theme_dark">Dark</string>
<string name="settings_subtitle_dark_theme_by_battery_saver">Definido pela economia de bateria</string>
<string name="settings_subtitle_dark_theme_follow_system">Segue o tema do sistema</string>
<string name="settings_subtitle_dark_theme_default">Padrão</string>
<string name="search">Pesquisar</string>
<string name="settings_app_version_title">Versão do aplicativo</string>
<string name="settings_title_show_wallpaper">Mostrar papel de parede</string>
<string name="support_refresh_widget_subtitle">Força a reinicialização do serviço do widget</string>
<string name="settings_feedback_subtitle">Sinta-se a vontade em ajudar com nosso projeto!</string>
<string name="settings_feedback_title">Feedback e solicitação de funcionalidades</string>
<string name="xiaomi_manufacturer" translatable="false">xiaomi</string>
<string name="xiaomi_warning_title">Dispositivos Xiaomi</string>
<string name="xiaomi_warning_message">Habilite a permissão para exibir janelas pop-up quando o aplicativo estiver em segundo plano dentro da seção "Outras permissões" da configuração do aplicativo no sistema. Caso contrário, você não poderá abrir nenhum aplicativo ao tocar no widget.</string>
<string name="action_ignore">Ignorar</string>
<string name="action_grant_permission">Conceder permissão</string>
<string name="settings_title">Configurações</string>
<string name="style_header">Estilo</string>
<string name="actions_header">Ações</string>
<string name="provider_header">Provedor</string>
<string name="appearance_header">Aparência</string>
<string name="preferences_header">Preferências</string>
<string name="settings_privacy_policy_title"><![CDATA[Legal & Privacidade]]></string>
<string name="settings_privacy_policy_subtitle">Veja a política de privacidade do aplicativo</string>
<string name="project_header">Projeto Open-source</string>
<string name="information_header">Informação</string>
<!-- Activities -->
<string name="action_choose_application">Escolha a aplicação</string>
<string name="support_main_title">Apoie o desenvolvedor</string>
<string name="thanks">Obrigado por me apoiar!</string>
<string name="donation_coffee">Um café italiano</string>
<string name="donation_donuts">Alguns donuts glaceados</string>
<string name="donation_dinner">Um jantar caro</string>
<string name="donation_breakfast">Um café da manhã inglês</string>
<string name="donation_lunch">Um almoço rápido</string>
<string name="action_show_widget_preview">Mostrar prévia do widget</string>
<string name="support_dev_subtitle">Este é um projeto de um único desenvolvedor,\nentão obrigado pelo apoio!</string>
<string name="settings_title_integrations">Integrações</string>
<string name="label_count_installed_integrations">%d integrações instaladas</string>
<string name="nothing">Nada</string>
<string name="action_dismiss">Dispensar</string>
<string name="action_accept">Aceitar</string>
</resources>

View File

@ -85,7 +85,7 @@
<string name="settings_widget_update_frequency_high">High</string>
<string name="filters_header">Filters</string>
<string name="event_detail_header">Event detail</string>
<string name="settings_attendee_status_title">Attendee Status</string>
<string name="settings_attendee_status_title">Attendee status</string>
<string name="settings_attendee_status_subtitle">Filter accepted or declined events</string>
<string name="settings_busy_events_title">Relevant events</string>
<string name="settings_busy_events_subtitle">Show only events that keep busy</string>
@ -117,18 +117,10 @@
<string name="settings_weather_provider_api_key_subtitle_not_set">The weather provider must be configured.</string>
<string name="api_key_hint">OpenWeatherMap API Key</string>
<string name="default_weather_app">Google Weather</string>
<string name="weather_warning">Google Awareness API is now deprecated. It is now required to have an API key from a third-party provider to display the weather in the widget.</string>
<string name="api_key_title_1">Register for an OpenWeatherMap Account</string>
<string name="api_key_subtitle_1">Register a free account on OpenWeatherMap. It will only take a few minutes.</string>
<string name="api_key_title_2">Copy your API Key</string>
<string name="api_key_subtitle_2">Find the API keys menu from your account settings and copy the default key.</string>
<string name="api_key_title_3">Enter the key to the app</string>
<string name="api_key_subtitle_3">Paste the key into the field above and save it. Once the key is activated the weather will become visible.</string>
<string name="action_open_provider">Go to OpenWeatherMap.org</string>
<string name="api_key_info_all_set">It may take up to ten minutes before your API key is activated. The weather will be updated as soon as it is available.</string>
<string name="weather_warning">Google Awareness API is now deprecated. It is now required to have an API key from a third-party provider to show weather in the widget.</string>
<string name="settings_weather_icon_pack_title">Icon pack</string>
<string name="settings_weather_icon_pack_default">Icon pack %d</string>
<string name="background_location_warning">When GPS is on, we collect location data to update the weather information even when the app is closed or not in use.\nWe will not use these data otherwise.</string>
<string name="background_location_warning">When Geolocation is selected, we collect location data to update the weather information even when the app is closed or not in use.\nWe will not use these data otherwise.</string>
<string name="settings_weather_provider_api">Weather provider</string>
<string name="settings_weather_provider_open_weather" translatable="false">OpenWeatherMap.org</string>
@ -147,11 +139,11 @@
<string name="weather_provider_info_weather_gov_title">This weather provider only works\nfor locations inside the USA.</string>
<string name="weather_provider_info_yr_title">This weather provider only allows\nCelsius temperature unit.</string>
<string name="weather_provider_info_open_weather_subtitle">Open the provider website, create a personal account and copy here the default key.</string>
<string name="weather_provider_info_weatherbit_subtitle">Open the provider website, create a personal account and copy here the default key.</string>
<string name="weather_provider_info_weatherapi_subtitle">Open the provider website, create a personal account and copy here the default key.</string>
<string name="weather_provider_info_here_subtitle">Open the provider website, create a personal account and copy here the default key.</string>
<string name="weather_provider_info_accuweather_subtitle">Open the provider website, create a personal account and copy here the default key.</string>
<string name="weather_provider_info_open_weather_subtitle">Open the provider website, create a personal account and copy the default key here.</string>
<string name="weather_provider_info_weatherbit_subtitle">Open the provider website, create a personal account and copy the default key here.</string>
<string name="weather_provider_info_weatherapi_subtitle">Open the provider website, create a personal account and copy the default key here.</string>
<string name="weather_provider_info_here_subtitle">Open the provider website, create a personal account and copy the default key here.</string>
<string name="weather_provider_info_accuweather_subtitle">Open the provider website, create a personal account and copy the default key here.</string>
<string name="weather_provider_info_weather_gov_subtitle">\n</string>
<string name="weather_provider_info_yr_subtitle">\n</string>
@ -184,7 +176,7 @@
<string name="settings_clock_bottom_margin_subtitle_large">Large</string>
<string name="clock_warning">Due to technological limitations, the clock won\'t have the custom font and the text shadows selected in the Display section.</string>
<string name="settings_clock_text_color_title">Text color</string>
<string name="settings_ampm_indicator_title">Show AM/PM Indicator</string>
<string name="settings_ampm_indicator_title">Show AM/PM indicator</string>
<string name="clock_text_header">Clock text style</string>
<!-- Glance -->
@ -200,10 +192,10 @@
<string name="settings_sort_glance_providers_title">Data source priority</string>
<string name="settings_sort_glance_providers_subtitle">Change the data provider priority by sorting the list below with the drag-and-drop icons.</string>
<string name="settings_custom_notes_title">Custom notes</string>
<string name="settings_low_battery_level_title">Battery</string>
<string name="settings_daily_steps_title">Daily steps</string>
<string name="battery_low_warning">Low battery level</string>
<string name="settings_daily_steps_title">Fitness</string>
<string name="daily_steps_counter">%d steps so far</string>
<string name="settings_low_battery_level_title">Battery</string>
<string name="battery_low_warning">Low battery level</string>
<string name="charging">Charging</string>
<string name="charged">Fully charged</string>
<string name="providers">Providers</string>
@ -211,26 +203,26 @@
<string name="settings_music_players_filter_title">Music Players</string>
<string name="settings_music_players_filter_subtitle">Choose your relevant music players</string>
<string name="settings_show_music_subtitle">We use the music players\' notification to show the current playing song.</string>
<string name="settings_low_battery_level_subtitle">Get notified when the device has the battery low or is charging.</string>
<string name="settings_low_battery_level_subtitle">Get advised when the device has the battery low or is charging.</string>
<string name="settings_daily_steps_subtitle">View your daily steps for a brief moment after finishing a walk or a run.</string>
<string name="settings_show_next_alarm_subtitle">View your next clock alarm, check if your default clock app is the only one setting device alarms.</string>
<string name="settings_show_next_alarm_subtitle">View your next clock alarm.\nCheck if your default clock app is the only one setting alarms.</string>
<string name="settings_show_next_alarm_app_title">Alarm set by %s</string>
<string name="settings_show_next_alarm_app_subtitle_wrong">The next alarm clock seems to be wrong</string>
<string name="settings_show_next_alarm_app_subtitle_correct">The next alarm clock seems to be correct</string>
<string name="settings_show_notifications_title">Lastest notifications</string>
<string name="settings_show_notifications_subtitle">Check out the lastest notifications that showed up on your device.</string>
<string name="settings_show_notifications_title">Latest notifications</string>
<string name="settings_show_notifications_subtitle">Check out the latest notifications that showed up on your device.</string>
<string name="settings_show_greetings_title">Greetings</string>
<string name="settings_show_greetings_subtitle">View some cool phrase when you don\'t expect it.</string>
<string name="google_fit_account_connected">Account connected</string>
<string name="google_fit_account_not_connected">Account not connected</string>
<string name="settings_show_greetings_subtitle">View some cool phrase to lighten your day when you don\'t expect it.</string>
<string name="google_fit_account_connected">Account linked</string>
<string name="google_fit_account_not_connected">Account not linked</string>
<string name="google_fit">Google Fit</string>
<string name="action_connect">Connect</string>
<string name="action_disconnect">Disconnect</string>
<string name="applications_filter_title">Applications</string>
<string name="applications_filter_subtitle">Choose which notifications to view</string>
<string-array name="morning_greetings" tools:ignore="InconsistentArrays">
<item>Have a good day!</item>
<item>Good morning!</item>
<item>Have a good day!</item>
<item>Ready to go?</item>
<item>Rise and shine.</item>
<item>Don\'t forget your breakfast!</item>
@ -238,12 +230,15 @@
<string-array name="evening_greetings" tools:ignore="InconsistentArrays">
<item>Good evening!</item>
<item>How did your day go?</item>
<item>How was your day?</item>
<item>Did you have a nice day?</item>
<item>After effort comes comfort.</item>
<item>Don\'t forget to have dinner!</item>
</string-array>
<string-array name="night_greetings" tools:ignore="InconsistentArrays">
<item>Sleep well!</item>
<item>See you tomorrow!</item>
<item>Good night!</item>
<item>Sleep well!</item>
<item>Sweet dreams till sunbeams find you!</item>
<item>See you tomorrow...</item>
<item>Don\'t stay up too late!</item>
</string-array>
<string name="glance_notification_hide_timeout_title">Hide the notification after</string>
@ -253,8 +248,12 @@
<item>5 minutes</item>
<item>10 minutes</item>
<item>15 minutes</item>
<item>it\'s dismissed</item>
<item>Dismissal</item>
</string-array>
<string name="settings_show_events_as_glance_provider_title">Events</string>
<string name="settings_show_events_as_glance_provider_subtitle">View a sneak peek of your calendar events and always show the current date.</string>
<string name="settings_show_events_as_glance_provider_error">Please enable the show of the events in the calendar tab and grant the required permission.</string>
<string name="events_glance_provider_format">%1$s %2$s</string>
<!-- Settings -->
<string name="action_share">Share</string>
@ -265,10 +264,10 @@
<string name="action_refresh_widget">Refresh widget</string>
<string name="toolbar_transition_name" translatable="false">toolbar</string>
<string name="error_opening_uri">Error opening URL: Link copied to clipboard.</string>
<string name="loading_text">Loading Data</string>
<string name="loading_text">Loading Data...</string>
<string name="error_opening_app">Error opening app.</string>
<string name="default_name">Default app</string>
<string name="action_save">Save</string>
<string name="action_save">SAVE</string>
<string name="settings_visible">Visible</string>
<string name="settings_not_visible">Hidden</string>
<string name="support_translations_title">Help with translations</string>
@ -280,14 +279,14 @@
<string name="support_main_subtitle">Devs always need a lot of coffee</string>
<string name="settings_subtitle_dark_theme_light">Light</string>
<string name="settings_subtitle_dark_theme_dark">Dark</string>
<string name="settings_subtitle_dark_theme_by_battery_saver">Set by Battery Saver</string>
<string name="settings_subtitle_dark_theme_by_battery_saver">Set by battery saver</string>
<string name="settings_subtitle_dark_theme_follow_system">Follow the system theme</string>
<string name="settings_subtitle_dark_theme_default">Default</string>
<string name="search">Search</string>
<string name="settings_app_version_title">App version</string>
<string name="settings_title_show_wallpaper">Show wallpaper</string>
<string name="support_refresh_widget_subtitle">Force the restart of the widget service</string>
<string name="settings_feedback_subtitle">Feel free to help our project</string>
<string name="settings_feedback_subtitle">Feel free to help our project!</string>
<string name="settings_feedback_title">Feedback and feature requests</string>
<string name="xiaomi_manufacturer" translatable="false">xiaomi</string>
<string name="xiaomi_warning_title">Xiaomi Devices</string>

View File

@ -80,7 +80,7 @@
<style name="AnotherWidget.Settings.Title" parent="TextAppearance.AppCompat.Medium">
<item name="android:textColor">@color/colorPrimaryText</item>
<item name="android:textSize">17sp</item>
<item name="android:textSize">16sp</item>
<item name="android:textStyle">bold</item>
<item name="android:fontFamily">@font/google_sans</item>
</style>