Compare commits

...

24 Commits

Author SHA1 Message Date
4c27d1dd9b Fix future events 2020-05-18 20:36:59 +02:00
eba5575ee2 Fix event not found error 2020-05-18 14:14:32 +02:00
aff7e407ca Merge pull request #127 from chreddy/patch-2
Adding Danish translation
2020-05-18 12:47:39 +02:00
f7fc31d968 Fix all day events widget date 2020-05-18 12:44:46 +02:00
90b588603d Update strings.xml
settings_general_title was a mistake indeed. This has been changed.

As for settings_second_row_info_subtitle_0, this has been translated correctly already. However I noticed that I must've overlooked next_alarm_warning previously, so I've added a translation of this as well.
2020-05-18 12:38:57 +02:00
5d9bd11abb Fix #129 2020-05-18 12:19:15 +02:00
01005ec443 Clean the project 2020-05-18 12:07:04 +02:00
eaf6400e8b Merge pull request #84 from zmni/translation
Create Indonesian translation
2020-05-18 12:05:21 +02:00
30339c7375 Merge pull request #124 from shtraus12/master
Added Russian translation (values-ru)
2020-05-18 12:00:08 +02:00
87da284be4 Update strings 2020-05-18 11:49:57 +02:00
573c6d03e5 Adding Danish translation
I re-did my previous translation, based on the newly updated string.xml.
Because of this, I've closed the previous pull request as well.
2020-05-18 00:27:53 +02:00
79e87b0648 Add files via upload 2020-05-17 16:51:41 +03:00
9e9a91690e Update Indonesian translation 2020-05-17 19:12:38 +07:00
5f699af509 Show translated in-app purchases 2020-05-17 13:25:19 +02:00
aae40b9dd3 Merge branch 'master' into translation
* master:
  Update strings
  Add settings header
  Add battery level handler
  Fix #120
2020-05-17 18:22:52 +07:00
cebd679856 Update strings 2020-05-17 13:19:55 +02:00
06443ddddb Add settings header 2020-05-16 20:24:11 +02:00
233761a169 Add battery level handler 2020-05-16 14:34:04 +02:00
b81461f725 Fix #120 2020-05-16 12:47:29 +02:00
26b1948b70 Update Indonesian translation 2020-05-14 22:49:58 +07:00
af64818dff Merge branch 'master' into translation
* master:
  Update the build version
  Update event repository
  Update the events selector. Fix #95
  Fix #113, #111, #79, #107, #109
  Add weather icon pack, updates frequency and fix google fit
  Update ui
  Update icons
  Fix dark theme toggle issue
  Bugfixes
  Update google fit integration
  Update beta release
  update gitignore
  Clean project files
  Add google fit connection
  Add google fit integration
2020-05-14 22:14:50 +07:00
f28596c194 Merge branch 'master' into translation
* master:
  Gix switcher, update glance, add glance order, add ampm toggle
  Merge crud-device
  Add dividers toggle
  Add integreations activity, removed long time until intervals
  Change music fragment to at a glance
  Update build version
  Fix #83
  Add current song
  Add clock text color
2020-05-10 04:27:13 +07:00
7f41a92a91 Update Indonesian translation 2020-05-10 04:06:26 +07:00
40c9253159 Create Indonesian translation 2020-05-08 19:04:48 +07:00
47 changed files with 1642 additions and 1188 deletions

4
.gitignore vendored
View File

@ -1,12 +1,10 @@
*.iml *.iml
.gradle .gradle
/local.properties /local.properties
/.idea/workspace.xml /.idea/*
/.idea/libraries
.DS_Store .DS_Store
/build /build
/captures /captures
.externalNativeBuild .externalNativeBuild
/tasksintegration/build /tasksintegration/build
apikey.properties
/app/google-services.json /app/google-services.json

Binary file not shown.

View File

@ -13,6 +13,13 @@ Also, as much as possible, there are always updates and new features in the shor
Help me developing with feedback and support me on how you can. Help me developing with feedback and support me on how you can.
<div style="text-align:center"><a href="https://play.google.com/store/apps/details?id=com.tommasoberlose.anotherwidget" target="_blank"><img src="google-play-badge.png" height="100" /></a></div> <div style="text-align:center"><a href="https://play.google.com/store/apps/details?id=com.tommasoberlose.anotherwidget" target="_blank"><img src="google-play-badge.png" height="100" /></a></div>
Help with translations
-------
Hey! You could view the file strings.xml ([here](https://github.com/tommasoberlose/another-widget/blob/master/app/src/main/res/values/strings.xml)) that contains the English version of the app strings.
You have to copy the file, create a copy of it inside the folder values-[LANGUAGE-SUFFIX] with the translated strings and create a pull request to submit your changes.
License License
------- -------
Copyright (C) 2017-2020 Tommaso Berlose (http://tommasoberlose.com) Copyright (C) 2017-2020 Tommaso Berlose (http://tommasoberlose.com)

View File

@ -10,10 +10,6 @@ apply plugin: 'kotlin-android-extensions'
apply plugin: 'realm-android' apply plugin: 'realm-android'
def apiKeyPropertiesFile = rootProject.file("apikey.properties")
def apiKeyProperties = new Properties()
apiKeyProperties.load(new FileInputStream(apiKeyPropertiesFile))
android { android {
compileSdkVersion 29 compileSdkVersion 29
buildToolsVersion "29.0.3" buildToolsVersion "29.0.3"
@ -22,12 +18,10 @@ android {
applicationId "com.tommasoberlose.anotherwidget" applicationId "com.tommasoberlose.anotherwidget"
minSdkVersion 23 minSdkVersion 23
targetSdkVersion 29 targetSdkVersion 29
versionCode 90 versionCode 96
versionName "2.0.9" versionName "2.0.9"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
manifestPlaceholders = [ "AWARENESS_API_KEY": apiKeyProperties['AWARENESS_API_KEY']]
} }
buildTypes { buildTypes {

Binary file not shown.

View File

@ -17,7 +17,6 @@
<application <application
android:allowBackup="true" android:allowBackup="true"
android:fullBackupContent="@xml/my_backup_rules"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:name=".AWApplication" android:name=".AWApplication"
@ -25,7 +24,7 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
tools:ignore="LockedOrientationActivity"> tools:ignore="LockedOrientationActivity">
<activity android:name=".ui.activities.MainActivity" android:launchMode="singleInstance" android:theme="@style/AppTheme.Main"> <activity android:name=".ui.activities.MainActivity" android:launchMode="singleInstance" android:theme="@style/AppTheme.Main" android:screenOrientation="portrait">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
@ -116,6 +115,8 @@
<service android:name=".services.EventListenerJob" android:permission="android.permission.BIND_JOB_SERVICE" /> <service android:name=".services.EventListenerJob" android:permission="android.permission.BIND_JOB_SERVICE" />
<service android:name=".services.BatteryListenerJob" android:permission="android.permission.BIND_JOB_SERVICE" />
<service android:name=".receivers.MusicNotificationListener" <service android:name=".receivers.MusicNotificationListener"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"> android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter> <intent-filter>
@ -131,6 +132,7 @@
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
<action android:name="android.intent.action.BATTERY_LOW"/> <action android:name="android.intent.action.BATTERY_LOW"/>
<action android:name="android.intent.action.BATTERY_OKAY"/> <action android:name="android.intent.action.BATTERY_OKAY"/>
<action android:name="android.intent.action.BATTERY_CHANGED"/>
</intent-filter> </intent-filter>
</receiver> </receiver>

View File

@ -22,6 +22,12 @@ class EventRepository(val context: Context) {
} }
} }
fun clearEvents() {
realm.executeTransaction { realm ->
realm.where(Event::class.java).findAll().deleteAllFromRealm()
}
}
fun resetNextEventData() { fun resetNextEventData() {
Preferences.bulk { Preferences.bulk {
remove(Preferences::nextEventId) remove(Preferences::nextEventId)
@ -40,7 +46,22 @@ class EventRepository(val context: Context) {
fun getNextEvent(): Event? { fun getNextEvent(): Event? {
val nextEvent = getEventByEventId(Preferences.nextEventId) val nextEvent = getEventByEventId(Preferences.nextEventId)
val event = if (nextEvent != null && nextEvent.endDate > Calendar.getInstance().timeInMillis) { val now = Calendar.getInstance().timeInMillis
val limit = Calendar.getInstance().apply {
timeInMillis = now
when (Preferences.showUntil) {
0 -> add(Calendar.HOUR, 3)
1 -> add(Calendar.HOUR, 6)
2 -> add(Calendar.HOUR, 12)
3 -> add(Calendar.DAY_OF_MONTH, 1)
4 -> add(Calendar.DAY_OF_MONTH, 3)
5 -> add(Calendar.DAY_OF_MONTH, 7)
6 -> add(Calendar.MINUTE, 30)
7 -> add(Calendar.HOUR, 1)
else -> add(Calendar.HOUR, 6)
}
}
val event = if (nextEvent != null && nextEvent.endDate > now && nextEvent.startDate < limit.timeInMillis) {
nextEvent nextEvent
} else { } else {
val events = getEvents() val events = getEvents()
@ -101,12 +122,32 @@ class EventRepository(val context: Context) {
MainWidget.updateWidget(context) MainWidget.updateWidget(context)
} }
fun getEvents(): RealmResults<Event> { fun getFutureEvents(): RealmResults<Event> {
val now = Calendar.getInstance().timeInMillis val now = Calendar.getInstance().timeInMillis
realm.refresh() realm.refresh()
return realm.where(Event::class.java).greaterThan("endDate", now).findAll() return realm.where(Event::class.java).greaterThan("endDate", now).findAll()
} }
private fun getEvents(): RealmResults<Event> {
val now = Calendar.getInstance().timeInMillis
val limit = Calendar.getInstance().apply {
timeInMillis = now
when (Preferences.showUntil) {
0 -> add(Calendar.HOUR, 3)
1 -> add(Calendar.HOUR, 6)
2 -> add(Calendar.HOUR, 12)
3 -> add(Calendar.DAY_OF_MONTH, 1)
4 -> add(Calendar.DAY_OF_MONTH, 3)
5 -> add(Calendar.DAY_OF_MONTH, 7)
6 -> add(Calendar.MINUTE, 30)
7 -> add(Calendar.HOUR, 1)
else -> add(Calendar.HOUR, 6)
}
}
realm.refresh()
return realm.where(Event::class.java).greaterThan("endDate", now).lessThanOrEqualTo("startDate", limit.timeInMillis).findAll()
}
fun getEventsCount(): Int = getEvents().size fun getEventsCount(): Int = getEvents().size
fun close() { fun close() {

View File

@ -91,6 +91,7 @@ object Preferences : KotprefModel() {
var showNextAlarm by booleanPref(default = true) var showNextAlarm by booleanPref(default = true)
var showBatteryCharging by booleanPref(default = false) var showBatteryCharging by booleanPref(default = false)
var isBatteryLevelLow by booleanPref(default = false) var isBatteryLevelLow by booleanPref(default = false)
var isCharging by booleanPref(default = false)
var googleFitSteps by longPref(default = -1) var googleFitSteps by longPref(default = -1)
var showDailySteps by booleanPref(default = false) var showDailySteps by booleanPref(default = false)

View File

@ -0,0 +1,23 @@
package com.tommasoberlose.anotherwidget.helpers
import android.content.Context
import android.content.Context.BATTERY_SERVICE
import android.os.BatteryManager
import androidx.core.content.ContextCompat.getSystemService
import com.tommasoberlose.anotherwidget.global.Preferences
object BatteryHelper {
fun updateBatteryInfo(context: Context) {
with(context.getSystemService(BATTERY_SERVICE) as BatteryManager) {
Preferences.isBatteryLevelLow = getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) <= 15
Preferences.isCharging = isCharging
}
}
fun getBatteryLevel(context: Context): Int {
with(context.getSystemService(BATTERY_SERVICE) as BatteryManager) {
return getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)
}
}
}

View File

@ -37,23 +37,11 @@ object CalendarHelper {
set(Calendar.MINUTE, 0) set(Calendar.MINUTE, 0)
set(Calendar.HOUR_OF_DAY, 0) set(Calendar.HOUR_OF_DAY, 0)
} }
val limit = Calendar.getInstance() val limit = Calendar.getInstance().apply {
when (Preferences.showUntil) { timeInMillis = begin.timeInMillis
0 -> limit.add(Calendar.HOUR, 3) add(Calendar.DAY_OF_YEAR, 2)
1 -> limit.add(Calendar.HOUR, 6)
2 -> limit.add(Calendar.HOUR, 12)
3 -> limit.add(Calendar.DAY_OF_MONTH, 1)
4 -> limit.add(Calendar.DAY_OF_MONTH, 3)
5 -> limit.add(Calendar.DAY_OF_MONTH, 7)
6 -> limit.add(Calendar.MINUTE, 30)
7 -> limit.add(Calendar.HOUR, 1)
else -> limit.add(Calendar.HOUR, 6)
} }
val builder = CalendarContract.Instances.CONTENT_URI.buildUpon()
ContentUris.appendId(builder, begin.timeInMillis)
ContentUris.appendId(builder, limit.timeInMillis)
if (!context.checkGrantedPermission( if (!context.checkGrantedPermission(
Manifest.permission.READ_CALENDAR Manifest.permission.READ_CALENDAR
) )
@ -102,6 +90,7 @@ object CalendarHelper {
if (eventList.isEmpty()) { if (eventList.isEmpty()) {
eventRepository.resetNextEventData() eventRepository.resetNextEventData()
eventRepository.clearEvents()
} else { } else {
eventList.sortWith(Comparator { event: Event, event1: Event -> eventList.sortWith(Comparator { event: Event, event1: Event ->
if (event.allDay && event1.allDay) { if (event.allDay && event1.allDay) {
@ -134,6 +123,7 @@ object CalendarHelper {
MainWidget.updateWidget(context) MainWidget.updateWidget(context)
EventBus.getDefault().post(MainFragment.UpdateUiMessageEvent()) EventBus.getDefault().post(MainFragment.UpdateUiMessageEvent())
eventRepository.close()
} }
fun getCalendarList(context: Context): List<me.everything.providers.android.calendar.Calendar> { fun getCalendarList(context: Context): List<me.everything.providers.android.calendar.Calendar> {

View File

@ -14,7 +14,6 @@ object GlanceProviderHelper {
val enabledProviders = Preferences.enabledGlanceProviderOrder.split(",").filter { it != "" } val enabledProviders = Preferences.enabledGlanceProviderOrder.split(",").filter { it != "" }
val providers = Constants.GlanceProviderId.values() val providers = Constants.GlanceProviderId.values()
.filter { it != Constants.GlanceProviderId.BATTERY_LEVEL_LOW }
.filter { .filter {
context.checkIfFitInstalled() || it != Constants.GlanceProviderId.GOOGLE_FIT_STEPS context.checkIfFitInstalled() || it != Constants.GlanceProviderId.GOOGLE_FIT_STEPS
}.toTypedArray() }.toTypedArray()
@ -68,7 +67,7 @@ object GlanceProviderHelper {
Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> { Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> {
GlanceProvider(providerId.id, GlanceProvider(providerId.id,
context.getString(R.string.settings_daily_steps_title), context.getString(R.string.settings_daily_steps_title),
R.drawable.round_steps R.drawable.round_directions_walk
) )
} }
} }
@ -79,12 +78,16 @@ object GlanceProviderHelper {
} }
fun showGlanceProviders(context: Context): Boolean { fun showGlanceProviders(context: Context): Boolean {
return Preferences.showGlance && EventRepository(context).getEventsCount() == 0 && ( val eventRepository = EventRepository(context)
BatteryHelper.updateBatteryInfo(context)
val showGlance = Preferences.showGlance && eventRepository.getEventsCount() == 0 && (
(Preferences.showNextAlarm && AlarmHelper.getNextAlarm(context) != "") || (Preferences.showNextAlarm && AlarmHelper.getNextAlarm(context) != "") ||
(MediaPlayerHelper.isSomeonePlaying(context)) || (MediaPlayerHelper.isSomeonePlaying(context)) ||
(Preferences.isBatteryLevelLow) || (Preferences.showBatteryCharging && Preferences.isCharging || Preferences.isBatteryLevelLow) ||
(Preferences.customNotes.isNotEmpty()) || (Preferences.customNotes.isNotEmpty()) ||
(Preferences.showDailySteps && Preferences.googleFitSteps > 0) (Preferences.showDailySteps && Preferences.googleFitSteps > 0)
) )
eventRepository.close()
return showGlance
} }
} }

View File

@ -114,6 +114,7 @@ object IntentHelper {
if (Preferences.calendarAppPackage == "") { if (Preferences.calendarAppPackage == "") {
Intent(Intent.ACTION_VIEW).apply { Intent(Intent.ACTION_VIEW).apply {
data = uri data = uri
flags = (Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED or Intent.FLAG_ACTIVITY_CLEAR_TOP)
if (!e.allDay) { if (!e.allDay) {
putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, e.startDate) putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, e.startDate)
putExtra(CalendarContract.EXTRA_EVENT_END_TIME, e.endDate) putExtra(CalendarContract.EXTRA_EVENT_END_TIME, e.endDate)
@ -127,8 +128,10 @@ object IntentHelper {
putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, e.startDate + start.timeZone.getOffset(start.timeInMillis)) putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, e.startDate + start.timeZone.getOffset(start.timeInMillis))
putExtra(CalendarContract.EXTRA_EVENT_END_TIME, e.endDate + end.timeZone.getOffset(end.timeInMillis)) putExtra(CalendarContract.EXTRA_EVENT_END_TIME, e.endDate + end.timeZone.getOffset(end.timeInMillis))
putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, 1) // putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, 1)
} }
Log.d("ciao", "intent: ${this} - extras: ${this.extras}")
} }
} else { } else {
getCalendarIntent(context).apply { getCalendarIntent(context).apply {
@ -182,6 +185,10 @@ object IntentHelper {
} }
} }
fun getBatteryIntent(): Intent {
return Intent(Intent.ACTION_POWER_USAGE_SUMMARY)
}
fun getMusicIntent(context: Context): Intent { fun getMusicIntent(context: Context): Intent {
return when (Preferences.mediaPlayerPackage) { return when (Preferences.mediaPlayerPackage) {
"" -> { "" -> {

View File

@ -86,7 +86,22 @@ object SettingsStringHelper {
return context.getString(R.string.now) return context.getString(R.string.now)
} }
TimeUnit.MILLISECONDS.toHours(difference) < 12 -> { TimeUnit.MILLISECONDS.toHours(difference) < 12 -> {
return DateUtils.getRelativeTimeSpanString(start, now, DateUtils.HOUR_IN_MILLIS, DateUtils.FORMAT_ABBREV_RELATIVE).toString() val minutes = TimeUnit.MILLISECONDS.toMinutes(difference) - 60 * TimeUnit.MILLISECONDS.toHours(difference)
return if (minutes < 1 || minutes > 30) {
DateUtils.getRelativeTimeSpanString(
start,
now - 1000 * 60 * 40,
DateUtils.HOUR_IN_MILLIS,
DateUtils.FORMAT_ABBREV_RELATIVE
).toString()
} else {
DateUtils.getRelativeTimeSpanString(
start,
now,
DateUtils.HOUR_IN_MILLIS,
DateUtils.FORMAT_ABBREV_RELATIVE
).toString()
}
} }
eventDate.dayOfYear == nowDate.plusDays(1).dayOfYear -> { eventDate.dayOfYear == nowDate.plusDays(1).dayOfYear -> {
return String.format("%s", context.getString(R.string.tomorrow)) return String.format("%s", context.getString(R.string.tomorrow))

View File

@ -5,7 +5,6 @@ import android.content.Context
import android.os.Build import android.os.Build
import com.google.android.gms.location.LocationServices import com.google.android.gms.location.LocationServices
import com.tommasoberlose.anotherwidget.R import com.tommasoberlose.anotherwidget.R
import com.tommasoberlose.anotherwidget.db.EventRepository
import com.tommasoberlose.anotherwidget.global.Constants import com.tommasoberlose.anotherwidget.global.Constants
import com.tommasoberlose.anotherwidget.global.Preferences import com.tommasoberlose.anotherwidget.global.Preferences
import com.tommasoberlose.anotherwidget.network.WeatherNetworkApi import com.tommasoberlose.anotherwidget.network.WeatherNetworkApi

View File

@ -7,12 +7,15 @@ import android.os.BatteryManager
import android.util.Log import android.util.Log
import com.tommasoberlose.anotherwidget.global.Preferences import com.tommasoberlose.anotherwidget.global.Preferences
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
import com.tommasoberlose.anotherwidget.utils.toast
class BatteryLevelReceiver : BroadcastReceiver() { class BatteryLevelReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) { override fun onReceive(context: Context, intent: Intent) {
when(intent.action) { when(intent.action) {
Intent.ACTION_BATTERY_LOW -> Preferences.isBatteryLevelLow = true Intent.ACTION_BATTERY_LOW -> Preferences.isBatteryLevelLow = true
Intent.ACTION_BATTERY_OKAY -> Preferences.isBatteryLevelLow = false Intent.ACTION_BATTERY_OKAY -> Preferences.isBatteryLevelLow = false
Intent.ACTION_POWER_CONNECTED -> Preferences.isCharging = true
Intent.ACTION_POWER_DISCONNECTED -> Preferences.isCharging = false
} }
MainWidget.updateWidget(context) MainWidget.updateWidget(context)
} }

View File

@ -24,5 +24,6 @@ class NewCalendarEventReceiver : BroadcastReceiver() {
eventRepository.goToPreviousEvent() eventRepository.goToPreviousEvent()
} }
} }
eventRepository.close()
} }
} }

View File

@ -12,6 +12,7 @@ import com.tommasoberlose.anotherwidget.db.EventRepository
import com.tommasoberlose.anotherwidget.global.Actions import com.tommasoberlose.anotherwidget.global.Actions
import com.tommasoberlose.anotherwidget.global.Constants import com.tommasoberlose.anotherwidget.global.Constants
import com.tommasoberlose.anotherwidget.global.Preferences import com.tommasoberlose.anotherwidget.global.Preferences
import com.tommasoberlose.anotherwidget.helpers.BatteryHelper
import com.tommasoberlose.anotherwidget.helpers.CalendarHelper import com.tommasoberlose.anotherwidget.helpers.CalendarHelper
import com.tommasoberlose.anotherwidget.models.Event import com.tommasoberlose.anotherwidget.models.Event
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
@ -28,10 +29,12 @@ class UpdatesReceiver : BroadcastReceiver() {
Intent.ACTION_TIME_CHANGED, Intent.ACTION_TIME_CHANGED,
Intent.ACTION_TIMEZONE_CHANGED, Intent.ACTION_TIMEZONE_CHANGED,
Intent.ACTION_LOCALE_CHANGED, Intent.ACTION_LOCALE_CHANGED,
Actions.ACTION_CALENDAR_UPDATE -> CalendarHelper.updateEventList(context) Intent.ACTION_DATE_CHANGED,
Actions.ACTION_CALENDAR_UPDATE -> {
CalendarHelper.updateEventList(context)
}
"com.sec.android.widgetapp.APPWIDGET_RESIZE", "com.sec.android.widgetapp.APPWIDGET_RESIZE",
Intent.ACTION_DATE_CHANGED,
AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED, AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED,
Actions.ACTION_TIME_UPDATE -> { Actions.ACTION_TIME_UPDATE -> {
MainWidget.updateWidget(context) MainWidget.updateWidget(context)
@ -50,7 +53,7 @@ class UpdatesReceiver : BroadcastReceiver() {
if (eventId == null) { if (eventId == null) {
removeUpdates(context) removeUpdates(context)
eventRepository.getEvents().forEach { event -> eventRepository.getFutureEvents().forEach { event ->
setEventUpdate(context, event) setEventUpdate(context, event)
} }
} else { } else {
@ -59,6 +62,7 @@ class UpdatesReceiver : BroadcastReceiver() {
setEventUpdate(context, event) setEventUpdate(context, event)
} }
} }
eventRepository.close()
} }
private fun setEventUpdate(context: Context, event: Event) { private fun setEventUpdate(context: Context, event: Event) {
@ -68,65 +72,92 @@ class UpdatesReceiver : BroadcastReceiver() {
set(Calendar.MILLISECOND, 0) set(Calendar.MILLISECOND, 0)
} }
val diff = Period(now.timeInMillis, event.startDate) val diff = Period(now.timeInMillis, event.startDate)
if (event.startDate > now.timeInMillis) { val limit = when (Preferences.showUntil) {
// Update the widget every hour till the event 0 -> 1000 * 60 * 60 * 3
if (diff.hours == 0) { 1 -> 1000 * 60 * 60 * 6
var minutes = 0 2 -> 1000 * 60 * 60 * 12
when (Preferences.widgetUpdateFrequency) { 3 -> 1000 * 60 * 60 * 24
Constants.WidgetUpdateFrequency.DEFAULT.value -> { 4 -> 1000 * 60 * 60 * 24 * 3
minutes = when { 5 -> 1000 * 60 * 60 * 24 * 7
diff.minutes > 50 -> 50 6 -> 1000 * 60 * 30
diff.minutes > 30 -> 30 7 -> 1000 * 60 * 60
diff.minutes > 15 -> 15 else -> 1000 * 60 * 60 * 6
else -> 0 }
if (event.startDate <= limit) {
if (event.startDate > now.timeInMillis) {
// Update the widget every hour till the event
if (diff.hours == 0) {
var minutes = 0
when (Preferences.widgetUpdateFrequency) {
Constants.WidgetUpdateFrequency.DEFAULT.value -> {
minutes = when {
diff.minutes > 50 -> 50
diff.minutes > 30 -> 30
diff.minutes > 15 -> 15
else -> 0
}
}
Constants.WidgetUpdateFrequency.HIGH.value -> {
minutes = diff.minutes - (diff.minutes % 5)
} }
} }
Constants.WidgetUpdateFrequency.HIGH.value -> { setExact(
minutes = diff.minutes - (diff.minutes % 5) AlarmManager.RTC,
} if (event.startDate - minutes * 1000 * 60 > (now.timeInMillis + 120 * 1000)) event.startDate - 60 * 1000 * minutes else now.timeInMillis + 120000,
} PendingIntent.getBroadcast(
setExact( context,
AlarmManager.RTC, event.eventID.toInt(),
if (event.startDate - minutes * 1000 * 60 > (now.timeInMillis + 120 * 1000)) event.startDate - 60 * 1000 * minutes else now.timeInMillis + 120000, Intent(context, UpdatesReceiver::class.java).apply {
PendingIntent.getBroadcast( action = Actions.ACTION_TIME_UPDATE
context, putExtra(EVENT_ID, event.eventID)
event.eventID.toInt(), },
Intent(context, UpdatesReceiver::class.java).apply { PendingIntent.FLAG_UPDATE_CURRENT
action = Actions.ACTION_TIME_UPDATE )
putExtra(EVENT_ID, event.eventID)
},
0
) )
) } else {
setExact(
AlarmManager.RTC,
event.startDate - diff.hours * 1000 * 60 * 60 + if (diff.minutes > 30) (-30) else (+30),
PendingIntent.getBroadcast(
context,
event.eventID.toInt(),
Intent(context, UpdatesReceiver::class.java).apply {
action = Actions.ACTION_TIME_UPDATE
putExtra(EVENT_ID, event.eventID)
},
PendingIntent.FLAG_UPDATE_CURRENT
)
)
}
} else { } else {
// Update the widget one second after the event is finished
val fireTime =
if (event.endDate > now.timeInMillis + 120 * 1000) event.endDate else now.timeInMillis + 120000
setExact( setExact(
AlarmManager.RTC, AlarmManager.RTC,
event.startDate - diff.hours * 1000 * 60 * 60, fireTime,
PendingIntent.getBroadcast( PendingIntent.getBroadcast(
context, context,
event.eventID.toInt(), event.eventID.toInt(),
Intent(context, UpdatesReceiver::class.java).apply { Intent(context, UpdatesReceiver::class.java).apply {
action = Actions.ACTION_TIME_UPDATE action = Actions.ACTION_TIME_UPDATE
putExtra(EVENT_ID, event.eventID)
}, },
0 0
) )
) )
} }
} else { } else {
// Update the widget one second after the event is finished
val fireTime =
if (event.endDate > now.timeInMillis + 120 * 1000) event.endDate else now.timeInMillis + 120000
setExact( setExact(
AlarmManager.RTC, AlarmManager.RTC,
fireTime, if (event.startDate - limit > now.timeInMillis + 120 * 1000) event.startDate - limit else now.timeInMillis + 120000,
PendingIntent.getBroadcast( PendingIntent.getBroadcast(
context, context,
event.eventID.toInt(), event.eventID.toInt(),
Intent(context, UpdatesReceiver::class.java).apply { Intent(context, UpdatesReceiver::class.java).apply {
action = Actions.ACTION_TIME_UPDATE action = Actions.ACTION_TIME_UPDATE
putExtra(EVENT_ID, event.eventID)
}, },
0 PendingIntent.FLAG_UPDATE_CURRENT
) )
) )
} }
@ -135,9 +166,11 @@ class UpdatesReceiver : BroadcastReceiver() {
fun removeUpdates(context: Context) { fun removeUpdates(context: Context) {
with(context.getSystemService(Context.ALARM_SERVICE) as AlarmManager) { with(context.getSystemService(Context.ALARM_SERVICE) as AlarmManager) {
EventRepository(context).getEvents().forEach { val eventRepository = EventRepository(context)
eventRepository.getFutureEvents().forEach {
cancel(PendingIntent.getBroadcast(context, it.eventID.toInt(), Intent(context, UpdatesReceiver::class.java), 0)) cancel(PendingIntent.getBroadcast(context, it.eventID.toInt(), Intent(context, UpdatesReceiver::class.java), 0))
} }
eventRepository.close()
} }
} }
} }

View File

@ -0,0 +1,61 @@
package com.tommasoberlose.anotherwidget.services
import android.app.job.JobInfo
import android.app.job.JobParameters
import android.app.job.JobScheduler
import android.app.job.JobService
import android.content.ComponentName
import android.content.Context
import android.os.Build
import android.provider.CalendarContract
import com.tommasoberlose.anotherwidget.helpers.CalendarHelper
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
class BatteryListenerJob : JobService() {
override fun onStartJob(params: JobParameters): Boolean {
MainWidget.updateWidget(this)
schedule(
this
)
return false
}
@Synchronized
override fun onStopJob(params: JobParameters): Boolean {
return false
}
companion object {
private const val chargingJobId = 1006
private const val notChargingJobId = 1007
fun schedule(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
remove(context)
val componentName = ComponentName(
context,
EventListenerJob::class.java
)
with(context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler) {
schedule(
JobInfo.Builder(chargingJobId, componentName)
.setRequiresCharging(true)
.setPersisted(true)
.build()
)
schedule(
JobInfo.Builder(notChargingJobId, componentName)
.setRequiresCharging(false)
.setPersisted(true)
.build()
)
}
}
}
fun remove(context: Context) {
val js = context.getSystemService(JobScheduler::class.java)
js?.cancel(chargingJobId)
js?.cancel(notChargingJobId)
}
}
}

View File

@ -76,7 +76,9 @@ class MainActivity : AppCompatActivity() {
viewModel = ViewModelProvider(this).get(MainViewModel::class.java) viewModel = ViewModelProvider(this).get(MainViewModel::class.java)
controlExtras(intent) controlExtras(intent)
requirePermission() if (Preferences.showWallpaper) {
requirePermission()
}
} }
override fun onBackPressed() { override fun onBackPressed() {

View File

@ -6,6 +6,7 @@ import android.location.Address
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible import androidx.core.view.isVisible
@ -45,8 +46,17 @@ class SupportDevActivity : AppCompatActivity(), PurchasesUpdatedListener {
adapter = SlimAdapter.create() adapter = SlimAdapter.create()
adapter adapter
.register<SkuDetails>(R.layout.inapp_product_layout) { item, injector -> .register<SkuDetails>(R.layout.inapp_product_layout) { item, injector ->
item.sku
injector injector
.text(R.id.product_title, item.title.replace("(Another Widget)", "")) .with<TextView>(R.id.product_title) {
it.text = when (item.sku) {
"donation_coffee" -> getString(R.string.donation_coffee)
"donation_donuts" -> getString(R.string.donation_donuts)
"donation_breakfast" -> getString(R.string.donation_breakfast)
"donation_lunch" -> getString(R.string.donation_lunch)
else -> ""
}
}
.text(R.id.product_price, item.price) .text(R.id.product_price, item.price)
.clicked(R.id.item) { .clicked(R.id.item) {
viewModel.purchase(this, item) viewModel.purchase(this, item)

View File

@ -32,11 +32,6 @@ class WeatherProviderActivity : AppCompatActivity() {
openURI("https://home.openweathermap.org/users/sign_up") openURI("https://home.openweathermap.org/users/sign_up")
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
last_info.text = Html.fromHtml(getString(R.string.api_key_info_all_set), Html.FROM_HTML_MODE_LEGACY)
} else {
last_info.text = Html.fromHtml(getString(R.string.api_key_info_all_set))
}
api_key.editText?.setText(Preferences.weatherProviderApi) api_key.editText?.setText(Preferences.weatherProviderApi)
} }
} }

View File

@ -99,7 +99,7 @@ class CalendarTabFragment : Fragment() {
viewModel.calendarAllDay.observe(viewLifecycleOwner, Observer { viewModel.calendarAllDay.observe(viewLifecycleOwner, Observer {
maintainScrollPosition { maintainScrollPosition {
all_day_label?.text = all_day_label?.text =
if (it) getString(R.string.settings_all_day_subtitle_visible) else getString(R.string.settings_all_day_subtitle_gone) if (it) getString(R.string.settings_visible) else getString(R.string.settings_not_visible)
} }
checkReadEventsPermission() checkReadEventsPermission()
}) })
@ -215,7 +215,7 @@ class CalendarTabFragment : Fragment() {
} }
dialog.addItem( dialog.addItem(
if (calendarSelectorList[index].name == calendarSelectorList[index].accountName) getString(R.string.account_events) else calendarSelectorList[index].name, if (calendarSelectorList[index].name == calendarSelectorList[index].accountName) getString(R.string.main_calendar) else calendarSelectorList[index].name,
calendarSelectorList[index].id calendarSelectorList[index].id
) )
} }
@ -232,8 +232,8 @@ class CalendarTabFragment : Fragment() {
action_show_all_day.setOnClickListener { action_show_all_day.setOnClickListener {
if (Preferences.showEvents) { if (Preferences.showEvents) {
BottomSheetMenu<Boolean>(requireContext(), header = getString(R.string.settings_all_day_title)).setSelectedValue(Preferences.calendarAllDay) BottomSheetMenu<Boolean>(requireContext(), header = getString(R.string.settings_all_day_title)).setSelectedValue(Preferences.calendarAllDay)
.addItem(getString(R.string.settings_all_day_subtitle_visible), true) .addItem(getString(R.string.settings_visible), true)
.addItem(getString(R.string.settings_all_day_subtitle_gone), false) .addItem(getString(R.string.settings_not_visible), false)
.addOnSelectItemListener { value -> .addOnSelectItemListener { value ->
Preferences.calendarAllDay = value Preferences.calendarAllDay = value
}.show() }.show()

View File

@ -321,7 +321,7 @@ class GeneralTabFragment : Fragment() {
} }
action_show_dividers.setOnClickListener { action_show_dividers.setOnClickListener {
BottomSheetMenu<Boolean>(requireContext(), header = getString(R.string.settings_show_multiple_events_title)).setSelectedValue(Preferences.showDividers) BottomSheetMenu<Boolean>(requireContext(), header = getString(R.string.settings_show_dividers_title)).setSelectedValue(Preferences.showDividers)
.addItem(getString(R.string.settings_visible), true) .addItem(getString(R.string.settings_visible), true)
.addItem(getString(R.string.settings_not_visible), false) .addItem(getString(R.string.settings_not_visible), false)
.addOnSelectItemListener { value -> .addOnSelectItemListener { value ->

View File

@ -44,6 +44,7 @@ import com.tommasoberlose.anotherwidget.ui.activities.MainActivity
import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel
import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission
import com.tommasoberlose.anotherwidget.utils.checkIfFitInstalled import com.tommasoberlose.anotherwidget.utils.checkIfFitInstalled
import com.tommasoberlose.anotherwidget.utils.toast
import kotlinx.android.synthetic.main.fragment_calendar_settings.* import kotlinx.android.synthetic.main.fragment_calendar_settings.*
import kotlinx.android.synthetic.main.fragment_glance_settings.* import kotlinx.android.synthetic.main.fragment_glance_settings.*
import kotlinx.android.synthetic.main.fragment_glance_settings.scrollView import kotlinx.android.synthetic.main.fragment_glance_settings.scrollView
@ -97,6 +98,7 @@ class GlanceTabFragment : Fragment() {
viewModel.showGlance.observe(viewLifecycleOwner, Observer { viewModel.showGlance.observe(viewLifecycleOwner, Observer {
maintainScrollPosition { maintainScrollPosition {
binding.isGlanceVisible = it binding.isGlanceVisible = it
show_glance_label.text = if (it) getString(R.string.description_show_glance_visible) else getString(R.string.description_show_glance_not_visible)
} }
}) })
@ -176,6 +178,22 @@ class GlanceTabFragment : Fragment() {
} }
} }
action_show_next_alarm.setOnLongClickListener {
with(requireContext().getSystemService(Context.ALARM_SERVICE) as AlarmManager) {
val alarm = nextAlarmClock
if (alarm != null && alarm.showIntent != null) {
val pm = requireContext().packageManager as PackageManager
val appNameOrPackage = try {
pm.getApplicationLabel(pm.getApplicationInfo(alarm.showIntent?.creatorPackage ?: "", 0))
} catch (e: Exception) {
alarm.showIntent?.creatorPackage ?: ""
}
activity?.toast(getString(R.string.next_alarm_warning).format(appNameOrPackage), long = true)
}
}
true
}
action_show_low_battery_level_warning.setOnClickListener { action_show_low_battery_level_warning.setOnClickListener {
if (Preferences.showGlance) { if (Preferences.showGlance) {
BottomSheetMenu<Boolean>( BottomSheetMenu<Boolean>(
@ -231,8 +249,7 @@ class GlanceTabFragment : Fragment() {
} catch (e: Exception) { } catch (e: Exception) {
alarm.showIntent?.creatorPackage ?: "" alarm.showIntent?.creatorPackage ?: ""
} }
show_next_alarm_warning.text = show_next_alarm_warning.text = getString(R.string.next_alarm_warning).format(appNameOrPackage)
getString(R.string.next_alarm_warning).format(appNameOrPackage)
} else { } else {
show_next_alarm_label?.text = if (Preferences.showNextAlarm) getString(R.string.settings_visible) else getString( show_next_alarm_label?.text = if (Preferences.showNextAlarm) getString(R.string.settings_visible) else getString(
R.string.settings_not_visible) R.string.settings_not_visible)

View File

@ -36,6 +36,7 @@ import com.tommasoberlose.anotherwidget.helpers.BitmapHelper
import com.tommasoberlose.anotherwidget.helpers.ColorHelper import com.tommasoberlose.anotherwidget.helpers.ColorHelper
import com.tommasoberlose.anotherwidget.helpers.ColorHelper.isColorDark import com.tommasoberlose.anotherwidget.helpers.ColorHelper.isColorDark
import com.tommasoberlose.anotherwidget.ui.activities.MainActivity import com.tommasoberlose.anotherwidget.ui.activities.MainActivity
import com.tommasoberlose.anotherwidget.ui.activities.SupportDevActivity
import com.tommasoberlose.anotherwidget.ui.adapters.ViewPagerAdapter import com.tommasoberlose.anotherwidget.ui.adapters.ViewPagerAdapter
import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
@ -145,7 +146,7 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
ColorHelper.getBackgroundColor() ColorHelper.getBackgroundColor()
) )
) )
uiJob = viewLifecycleOwner.lifecycleScope.launch(Dispatchers.IO) { uiJob = lifecycleScope.launch(Dispatchers.IO) {
val generatedView = MainWidget.generateWidgetView(requireContext()) val generatedView = MainWidget.generateWidgetView(requireContext())
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
@ -186,7 +187,7 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
clock_bottom_margin_large?.isVisible = clock_bottom_margin_large?.isVisible =
Preferences.showClock && Preferences.clockBottomMargin == Constants.ClockBottomMargin.LARGE.value Preferences.showClock && Preferences.clockBottomMargin == Constants.ClockBottomMargin.LARGE.value
if ((Preferences.showClock && time_container?.isVisible == false) || (!Preferences.showClock && time_container?.isVisible == true)) { if ((Preferences.showClock && (time?.alpha ?: 1f < 1f)) || (!Preferences.showClock && (time?.alpha ?: 0f > 0f))) {
if (Preferences.showClock) { if (Preferences.showClock) {
time_container?.layoutParams = time_container.layoutParams.apply { time_container?.layoutParams = time_container.layoutParams.apply {
height = RelativeLayout.LayoutParams.WRAP_CONTENT height = RelativeLayout.LayoutParams.WRAP_CONTENT
@ -230,10 +231,12 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
).apply { ).apply {
duration = 500L duration = 500L
addUpdateListener { addUpdateListener {
val animatedValue = animatedValue as Int if (preview != null) {
val layoutParams = preview.layoutParams val animatedValue = animatedValue as Int
layoutParams.height = animatedValue val layoutParams = preview.layoutParams
preview.layoutParams = layoutParams layoutParams.height = animatedValue
preview.layoutParams = layoutParams
}
} }
}.start() }.start()
} }
@ -253,10 +256,12 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
).apply { ).apply {
duration = 300L duration = 300L
addUpdateListener { addUpdateListener {
val animatedValue = animatedValue as Int if (preview != null) {
val layoutParams = preview.layoutParams val animatedValue = animatedValue as Int
layoutParams.height = animatedValue val layoutParams = preview.layoutParams
preview?.layoutParams = layoutParams layoutParams.height = animatedValue
preview?.layoutParams = layoutParams
}
} }
}.start() }.start()
} }
@ -278,10 +283,12 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
).apply { ).apply {
duration = 300L duration = 300L
addUpdateListener { addUpdateListener {
val animatedValue = animatedValue as Int if (preview != null) {
val layoutParams = preview.layoutParams val animatedValue = animatedValue as Int
layoutParams.height = animatedValue val layoutParams = preview.layoutParams
preview.layoutParams = layoutParams layoutParams.height = animatedValue
preview.layoutParams = layoutParams
}
} }
}.start() }.start()
} }

View File

@ -36,6 +36,7 @@ import java.text.DateFormat
import java.util.* import java.util.*
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import kotlin.math.min import kotlin.math.min
import kotlin.math.roundToInt
class MainWidget : AppWidgetProvider() { class MainWidget : AppWidgetProvider() {
@ -111,7 +112,7 @@ class MainWidget : AppWidgetProvider() {
context, context,
appWidgetId, appWidgetId,
IntentHelper.getWidgetUpdateIntent(context), IntentHelper.getWidgetUpdateIntent(context),
0 PendingIntent.FLAG_UPDATE_CURRENT
) )
views.setOnClickPendingIntent(R.id.widget_shape_background, refreshIntent) views.setOnClickPendingIntent(R.id.widget_shape_background, refreshIntent)
} catch (ex: Exception) { } catch (ex: Exception) {
@ -140,9 +141,8 @@ class MainWidget : AppWidgetProvider() {
} }
private fun updateCalendarView(context: Context, v: View, views: RemoteViews, widgetID: Int): RemoteViews { private fun updateCalendarView(context: Context, v: View, views: RemoteViews, widgetID: Int): RemoteViews {
val eventRepository = EventRepository(context)
try { try {
val eventRepository = EventRepository(context)
views.setImageViewBitmap( views.setImageViewBitmap(
R.id.empty_date_rect, R.id.empty_date_rect,
BitmapHelper.getBitmapFromView(v.empty_date, draw = false) BitmapHelper.getBitmapFromView(v.empty_date, draw = false)
@ -157,7 +157,7 @@ class MainWidget : AppWidgetProvider() {
context, context,
widgetID, widgetID,
IntentHelper.getCalendarIntent(context), IntentHelper.getCalendarIntent(context),
0 PendingIntent.FLAG_UPDATE_CURRENT
) )
views.setOnClickPendingIntent(R.id.empty_date_rect, calPIntent) views.setOnClickPendingIntent(R.id.empty_date_rect, calPIntent)
@ -180,7 +180,7 @@ class MainWidget : AppWidgetProvider() {
context, context,
NewCalendarEventReceiver::class.java NewCalendarEventReceiver::class.java
).apply { action = Actions.ACTION_GO_TO_NEXT_EVENT }, ).apply { action = Actions.ACTION_GO_TO_NEXT_EVENT },
0 PendingIntent.FLAG_UPDATE_CURRENT
) )
) )
@ -198,7 +198,7 @@ class MainWidget : AppWidgetProvider() {
context, context,
NewCalendarEventReceiver::class.java NewCalendarEventReceiver::class.java
).apply { action = Actions.ACTION_GO_TO_PREVIOUS_EVENT }, ).apply { action = Actions.ACTION_GO_TO_PREVIOUS_EVENT },
0 PendingIntent.FLAG_UPDATE_CURRENT
) )
) )
} else { } else {
@ -210,7 +210,7 @@ class MainWidget : AppWidgetProvider() {
context, context,
widgetID, widgetID,
IntentHelper.getEventIntent(context, nextEvent), IntentHelper.getEventIntent(context, nextEvent),
0 PendingIntent.FLAG_UPDATE_CURRENT
) )
views.setOnClickPendingIntent(R.id.next_event_rect, pIntent) views.setOnClickPendingIntent(R.id.next_event_rect, pIntent)
views.setOnClickPendingIntent(R.id.next_event_difference_time_rect, pIntent) views.setOnClickPendingIntent(R.id.next_event_difference_time_rect, pIntent)
@ -233,7 +233,7 @@ class MainWidget : AppWidgetProvider() {
context, context,
widgetID, widgetID,
IntentHelper.getGoogleMapsIntentFromAddress(context, nextEvent.address), IntentHelper.getGoogleMapsIntentFromAddress(context, nextEvent.address),
0 PendingIntent.FLAG_UPDATE_CURRENT
) )
views.setOnClickPendingIntent(R.id.second_row_rect, mapIntent) views.setOnClickPendingIntent(R.id.second_row_rect, mapIntent)
} else { } else {
@ -245,7 +245,7 @@ class MainWidget : AppWidgetProvider() {
nextEvent, nextEvent,
forceEventDetails = true forceEventDetails = true
), ),
0 PendingIntent.FLAG_UPDATE_CURRENT
) )
views.setOnClickPendingIntent(R.id.second_row_rect, pIntentDetail) views.setOnClickPendingIntent(R.id.second_row_rect, pIntentDetail)
} }
@ -263,7 +263,7 @@ class MainWidget : AppWidgetProvider() {
views.setViewVisibility(R.id.empty_layout_rect, View.GONE) views.setViewVisibility(R.id.empty_layout_rect, View.GONE)
views.setViewVisibility(R.id.calendar_layout_rect, View.VISIBLE) views.setViewVisibility(R.id.calendar_layout_rect, View.VISIBLE)
} else if (GlanceProviderHelper.showGlanceProviders(context)) { } else if (GlanceProviderHelper.showGlanceProviders(context) && v.calendar_layout.isVisible) {
loop@ for (provider:Constants.GlanceProviderId in GlanceProviderHelper.getGlanceProviders(context)) { loop@ for (provider:Constants.GlanceProviderId in GlanceProviderHelper.getGlanceProviders(context)) {
when (provider) { when (provider) {
Constants.GlanceProviderId.PLAYING_SONG -> { Constants.GlanceProviderId.PLAYING_SONG -> {
@ -272,7 +272,7 @@ class MainWidget : AppWidgetProvider() {
context, context,
widgetID, widgetID,
IntentHelper.getMusicIntent(context), IntentHelper.getMusicIntent(context),
0 PendingIntent.FLAG_UPDATE_CURRENT
) )
views.setOnClickPendingIntent(R.id.second_row_rect, musicIntent) views.setOnClickPendingIntent(R.id.second_row_rect, musicIntent)
break@loop break@loop
@ -284,22 +284,25 @@ class MainWidget : AppWidgetProvider() {
context, context,
widgetID, widgetID,
IntentHelper.getClockIntent(context), IntentHelper.getClockIntent(context),
0 PendingIntent.FLAG_UPDATE_CURRENT
) )
views.setOnClickPendingIntent(R.id.second_row_rect, alarmIntent) views.setOnClickPendingIntent(R.id.second_row_rect, alarmIntent)
break@loop break@loop
} }
} }
Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> { Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> {
if (Preferences.isBatteryLevelLow) { if (Preferences.showBatteryCharging) {
val alarmIntent = PendingIntent.getActivity( BatteryHelper.updateBatteryInfo(context)
context, if (Preferences.isCharging || Preferences.isBatteryLevelLow) {
widgetID, val batteryIntent = PendingIntent.getActivity(
IntentHelper.getClockIntent(context), context,
0 widgetID,
) IntentHelper.getBatteryIntent(),
views.setOnClickPendingIntent(R.id.second_row_rect, alarmIntent) PendingIntent.FLAG_UPDATE_CURRENT
break@loop )
views.setOnClickPendingIntent(R.id.second_row_rect, batteryIntent)
break@loop
}
} }
} }
Constants.GlanceProviderId.CUSTOM_INFO -> { Constants.GlanceProviderId.CUSTOM_INFO -> {
@ -313,7 +316,7 @@ class MainWidget : AppWidgetProvider() {
context, context,
widgetID, widgetID,
IntentHelper.getFitIntent(context), IntentHelper.getFitIntent(context),
0 PendingIntent.FLAG_UPDATE_CURRENT
) )
views.setOnClickPendingIntent(R.id.second_row_rect, fitIntent) views.setOnClickPendingIntent(R.id.second_row_rect, fitIntent)
break@loop break@loop
@ -340,6 +343,8 @@ class MainWidget : AppWidgetProvider() {
} catch (ex: Exception) { } catch (ex: Exception) {
ex.printStackTrace() ex.printStackTrace()
CrashlyticsReceiver.sendCrash(context, ex) CrashlyticsReceiver.sendCrash(context, ex)
} finally {
eventRepository.close()
} }
return views return views
@ -525,7 +530,7 @@ class MainWidget : AppWidgetProvider() {
} else { } else {
val flags: Int = DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_NO_YEAR or DateUtils.FORMAT_ABBREV_MONTH val flags: Int = DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_NO_YEAR or DateUtils.FORMAT_ABBREV_MONTH
v.next_event_date.text = DateUtils.formatDateTime(context, now.timeInMillis, flags) v.next_event_date.text = DateUtils.formatDateTime(context, nextEvent.startDate, flags)
} }
} }
@ -533,6 +538,7 @@ class MainWidget : AppWidgetProvider() {
v.calendar_layout.visibility = View.VISIBLE v.calendar_layout.visibility = View.VISIBLE
} else if (GlanceProviderHelper.showGlanceProviders(context)) { } else if (GlanceProviderHelper.showGlanceProviders(context)) {
v.second_row_icon.isVisible = true v.second_row_icon.isVisible = true
var showSomething = false
loop@ for (provider:Constants.GlanceProviderId in GlanceProviderHelper.getGlanceProviders(context)) { loop@ for (provider:Constants.GlanceProviderId in GlanceProviderHelper.getGlanceProviders(context)) {
when (provider) { when (provider) {
Constants.GlanceProviderId.PLAYING_SONG -> { Constants.GlanceProviderId.PLAYING_SONG -> {
@ -544,6 +550,7 @@ class MainWidget : AppWidgetProvider() {
) )
) )
v.next_event_date.text = MediaPlayerHelper.getMediaInfo() v.next_event_date.text = MediaPlayerHelper.getMediaInfo()
showSomething = true
break@loop break@loop
} }
} }
@ -556,47 +563,60 @@ class MainWidget : AppWidgetProvider() {
) )
) )
v.next_event_date.text = AlarmHelper.getNextAlarm(context) v.next_event_date.text = AlarmHelper.getNextAlarm(context)
showSomething = true
break@loop break@loop
} }
} }
Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> { Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> {
if (Preferences.isBatteryLevelLow) { if (Preferences.showBatteryCharging) {
v.second_row_icon.setImageDrawable( BatteryHelper.updateBatteryInfo(context)
ContextCompat.getDrawable( if (Preferences.isCharging) {
context, v.second_row_icon.isVisible = false
R.drawable.round_battery_charging_full val batteryLevel = BatteryHelper.getBatteryLevel(context)
) if (batteryLevel == 100) {
) v.next_event_date.text = "%s - %d%%".format(context.getString(R.string.charging), batteryLevel)
v.next_event_date.text = context.getString(R.string.battery_low_warning) } else {
break@loop v.next_event_date.text = context.getString(R.string.charging)
}
showSomething = true
break@loop
} else if (Preferences.isBatteryLevelLow) {
v.second_row_icon.isVisible = false
v.next_event_date.text =
context.getString(R.string.battery_low_warning)
showSomething = true
break@loop
}
} }
} }
Constants.GlanceProviderId.CUSTOM_INFO -> { Constants.GlanceProviderId.CUSTOM_INFO -> {
if (Preferences.customNotes.isNotEmpty()) { if (Preferences.customNotes.isNotEmpty()) {
v.second_row_icon.isVisible = false v.second_row_icon.isVisible = false
v.next_event_date.text = Preferences.customNotes v.next_event_date.text = Preferences.customNotes
v.next_event_date.gravity
v.next_event_date.maxLines = 2 v.next_event_date.maxLines = 2
showSomething = true
break@loop break@loop
} }
} }
Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> { Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> {
if (Preferences.showDailySteps && Preferences.googleFitSteps > 0) { if (Preferences.showDailySteps && Preferences.googleFitSteps > 0) {
v.second_row_icon.setImageDrawable( v.second_row_icon.isVisible = false
ContextCompat.getDrawable(
context,
R.drawable.round_steps
)
)
v.next_event_date.text = context.getString(R.string.daily_steps_counter).format(Preferences.googleFitSteps) v.next_event_date.text = context.getString(R.string.daily_steps_counter).format(Preferences.googleFitSteps)
showSomething = true
break@loop break@loop
} }
} }
} }
} }
v.next_event.text = DateHelper.getDateText(context, now) if (showSomething) {
v.empty_layout.visibility = View.GONE v.next_event.text = DateHelper.getDateText(context, now)
v.calendar_layout.visibility = View.VISIBLE v.empty_layout.visibility = View.GONE
v.calendar_layout.visibility = View.VISIBLE
} else {
v.second_row_icon.isVisible = false
}
} }
@ -698,7 +718,7 @@ class MainWidget : AppWidgetProvider() {
v.weather.visibility = View.VISIBLE v.weather.visibility = View.VISIBLE
v.calendar_weather.visibility = View.VISIBLE v.calendar_weather.visibility = View.VISIBLE
v.special_weather.visibility = View.VISIBLE v.special_weather.visibility = View.VISIBLE
val currentTemp = String.format(Locale.getDefault(), "%.0f °%s", Preferences.weatherTemp, Preferences.weatherRealTempUnit) val currentTemp = String.format(Locale.getDefault(), "%d °%s", Preferences.weatherTemp.roundToInt(), Preferences.weatherRealTempUnit)
val icon: String = Preferences.weatherIcon val icon: String = Preferences.weatherIcon
if (icon == "") { if (icon == "") {
@ -734,6 +754,8 @@ class MainWidget : AppWidgetProvider() {
it.isVisible = Preferences.showDividers it.isVisible = Preferences.showDividers
} }
eventRepository.close()
return v return v
} }
} }

View File

@ -155,7 +155,7 @@
android:textSize="16sp" android:textSize="16sp"
android:gravity="start" android:gravity="start"
android:textAlignment="viewStart" android:textAlignment="viewStart"
android:id="@+id/last_info"/> android:text="@string/api_key_info_all_set"/>
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View File

@ -15,7 +15,7 @@
android:paddingBottom="8dp" android:paddingBottom="8dp"
android:paddingLeft="32dp" android:paddingLeft="32dp"
android:paddingRight="32dp" android:paddingRight="32dp"
android:textSize="16sp" android:textSize="18sp"
android:gravity="start" android:gravity="start"
android:textAlignment="viewStart" android:textAlignment="viewStart"
android:id="@+id/header_text" android:id="@+id/header_text"

View File

@ -89,6 +89,18 @@
android:id="@+id/calendar_settings" android:id="@+id/calendar_settings"
android:alpha="@{isCalendarEnabled ? 1f : 0.2f, default=1}" android:alpha="@{isCalendarEnabled ? 1f : 0.2f, default=1}"
android:orientation="vertical"> android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/filters_header"
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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -237,6 +249,18 @@
style="@style/AnotherWidget.Settings.Subtitle"/> style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/event_detail_header"
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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -348,6 +372,18 @@
style="@style/AnotherWidget.Settings.Subtitle"/> style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/actions_header"
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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View File

@ -95,7 +95,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/show_clock_label" android:id="@+id/show_clock_label"
android:text="@string/description_show_clock"
style="@style/AnotherWidget.Settings.Subtitle"/> style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
<com.google.android.material.switchmaterial.SwitchMaterial <com.google.android.material.switchmaterial.SwitchMaterial
@ -112,6 +111,18 @@
android:id="@+id/clock_settings" android:id="@+id/clock_settings"
android:alpha="@{isClockVisible ? 1f : 0.2f, default=1}" android:alpha="@{isClockVisible ? 1f : 0.2f, default=1}"
android:orientation="vertical"> android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/clock_text_header"
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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -186,6 +197,18 @@
style="@style/AnotherWidget.Settings.Subtitle"/> style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/appearance_header"
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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -261,6 +284,18 @@
style="@style/AnotherWidget.Settings.Subtitle"/> style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/actions_header"
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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -298,27 +333,27 @@
style="@style/AnotherWidget.Settings.Subtitle"/> style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> <LinearLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/small_clock_warning"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="16dp" android:id="@+id/small_clock_warning"
android:paddingLeft="24dp" android:orientation="vertical">
android:paddingRight="24dp" <androidx.appcompat.widget.AppCompatTextView
android:paddingBottom="32dp" android:layout_width="match_parent"
android:duplicateParentState="true" android:layout_height="wrap_content"
android:textSize="14sp" android:paddingTop="16dp"
android:text="@string/clock_warning" android:paddingLeft="24dp"
android:textColor="@color/colorPrimaryText" android:paddingRight="24dp"
android:letterSpacing="0" android:paddingBottom="32dp"
android:fontFamily="@font/product_sans" android:duplicateParentState="true"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:textSize="14sp"
app:textAllCaps="false" /> android:text="@string/clock_warning"
android:textColor="@color/colorPrimaryText"
android:letterSpacing="0"
android:fontFamily="@font/product_sans"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
app:textAllCaps="false" />
</LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>

View File

@ -18,6 +18,18 @@
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingBottom="8dp" android:paddingBottom="8dp"
android:orientation="vertical"> android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/first_row_header"
android:paddingTop="16dp"
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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -92,6 +104,18 @@
style="@style/AnotherWidget.Settings.Subtitle"/> style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/second_row_header"
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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -166,6 +190,18 @@
style="@style/AnotherWidget.Settings.Subtitle"/> style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/global_style_header"
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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -203,43 +239,6 @@
style="@style/AnotherWidget.Settings.Subtitle"/> style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
android:gravity="center_vertical"
android:id="@+id/action_date_format"
android:orientation="horizontal">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:padding="10dp"
android:src="@drawable/round_text_format"
android:tint="@color/colorPrimaryText"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/AnotherWidget.Settings.Title"
android:text="@string/settings_date_format_title"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/date_format_label"
style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout>
</LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -288,33 +287,30 @@
android:focusable="true" android:focusable="true"
android:background="?android:attr/selectableItemBackground" android:background="?android:attr/selectableItemBackground"
android:gravity="center_vertical" android:gravity="center_vertical"
android:id="@+id/action_background_color" android:id="@+id/action_date_format"
android:orientation="horizontal"> android:orientation="horizontal">
<ImageView <ImageView
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:padding="12dp" android:padding="10dp"
android:src="@drawable/round_aspect_ratio" android:src="@drawable/round_text_format"
android:tint="@color/colorPrimaryText"/> android:tint="@color/colorPrimaryText"/>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="8dp" android:paddingLeft="8dp"
android:paddingRight="8dp"> android:paddingRight="8dp"
android:orientation="vertical">
<TextView <TextView
style="@style/AnotherWidget.Settings.Title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/settings_background_color_title" /> style="@style/AnotherWidget.Settings.Title"
android:text="@string/settings_date_format_title"/>
<TextView <TextView
android:id="@+id/background_color_label"
style="@style/AnotherWidget.Settings.Subtitle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" /> android:layout_height="wrap_content"
android:id="@+id/date_format_label"
style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
@ -355,6 +351,46 @@
android:layout_height="wrap_content" /> android:layout_height="wrap_content" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
android:gravity="center_vertical"
android:id="@+id/action_background_color"
android:orientation="horizontal">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:padding="12dp"
android:src="@drawable/round_aspect_ratio"
android:tint="@color/colorPrimaryText"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<TextView
style="@style/AnotherWidget.Settings.Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/settings_background_color_title" />
<TextView
android:id="@+id/background_color_label"
style="@style/AnotherWidget.Settings.Subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>
</layout> </layout>

View File

@ -38,8 +38,8 @@
<ImageView <ImageView
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:padding="11dp" android:padding="12dp"
android:src="@drawable/round_widgets" android:src="@drawable/round_hourglass_empty"
android:tint="@color/colorPrimaryText"/> android:tint="@color/colorPrimaryText"/>
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
@ -56,8 +56,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/show_clock_label" android:id="@+id/show_glance_label"
android:text="@string/description_show_glance"
style="@style/AnotherWidget.Settings.Subtitle"/> style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
<com.google.android.material.switchmaterial.SwitchMaterial <com.google.android.material.switchmaterial.SwitchMaterial
@ -74,6 +73,18 @@
android:id="@+id/calendar_settings" android:id="@+id/calendar_settings"
android:alpha="@{isGlanceVisible ? 1f : 0.2f, default=1}" android:alpha="@{isGlanceVisible ? 1f : 0.2f, default=1}"
android:orientation="vertical"> android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/providers"
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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -90,7 +101,7 @@
<ImageView <ImageView
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:padding="10dp" android:padding="11dp"
android:src="@drawable/round_music_note" android:src="@drawable/round_music_note"
android:tint="@color/colorPrimaryText"/> android:tint="@color/colorPrimaryText"/>
<LinearLayout <LinearLayout
@ -143,7 +154,7 @@
<ImageView <ImageView
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:padding="11dp" android:padding="12dp"
android:src="@drawable/round_alarm" android:src="@drawable/round_alarm"
android:tint="@color/colorPrimaryText"/> android:tint="@color/colorPrimaryText"/>
<LinearLayout <LinearLayout
@ -188,8 +199,8 @@
<ImageView <ImageView
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:padding="10dp" android:padding="11dp"
android:src="@drawable/round_steps" android:src="@drawable/round_directions_walk"
android:tint="@color/colorPrimaryText"/> android:tint="@color/colorPrimaryText"/>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -234,7 +245,6 @@
android:paddingRight="8dp" android:paddingRight="8dp"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:visibility="gone"
android:background="?android:attr/selectableItemBackground" android:background="?android:attr/selectableItemBackground"
android:gravity="center_vertical" android:gravity="center_vertical"
android:id="@+id/action_show_low_battery_level_warning" android:id="@+id/action_show_low_battery_level_warning"
@ -279,7 +289,7 @@
<ImageView <ImageView
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:padding="10dp" android:padding="12dp"
android:src="@drawable/round_notes" android:src="@drawable/round_notes"
android:tint="@color/colorPrimaryText"/> android:tint="@color/colorPrimaryText"/>
<LinearLayout <LinearLayout
@ -300,42 +310,54 @@
style="@style/AnotherWidget.Settings.Subtitle"/> style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/preferences_header"
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:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
android:gravity="center_vertical"
android:id="@+id/action_sort_glance_providers"
android:orientation="horizontal">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:padding="12dp"
android:src="@drawable/round_flip_to_front"
android:tint="@color/colorPrimaryText"/>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingLeft="8dp" android:paddingLeft="8dp"
android:paddingRight="8dp" android:paddingRight="8dp"
android:clickable="true" android:orientation="vertical">
android:focusable="true" <TextView
android:background="?android:attr/selectableItemBackground" android:layout_width="wrap_content"
android:gravity="center_vertical"
android:id="@+id/action_sort_glance_providers"
android:orientation="horizontal">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:padding="10dp"
android:src="@drawable/round_flip_to_front"
android:tint="@color/colorPrimaryText"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingLeft="8dp" style="@style/AnotherWidget.Settings.Title"
android:paddingRight="8dp" android:text="@string/settings_sort_glance_providers_title"/>
android:orientation="vertical"> <TextView
<TextView android:layout_width="wrap_content"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_height="wrap_content" android:text="@string/settings_sort_glance_providers_subtitle"
style="@style/AnotherWidget.Settings.Title" style="@style/AnotherWidget.Settings.Subtitle"/>
android:text="@string/settings_sort_glance_providers_title"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/settings_sort_glance_providers_subtitle"
style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -112,6 +112,18 @@
android:id="@+id/weather_settings" android:id="@+id/weather_settings"
android:alpha="@{isWeatherVisible ? 1f : 0.2f, default=1}" android:alpha="@{isWeatherVisible ? 1f : 0.2f, default=1}"
android:orientation="vertical"> android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/provider_header"
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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -212,43 +224,6 @@
android:text="@string/action_grant_permission"/> android:text="@string/action_grant_permission"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
android:gravity="center_vertical"
android:id="@+id/action_change_unit"
android:orientation="horizontal">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:padding="10dp"
android:src="@drawable/round_text_format"
android:tint="@color/colorPrimaryText"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/AnotherWidget.Settings.Title"
android:text="@string/settings_unit_title"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/temp_unit"
style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout>
</LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -286,6 +261,55 @@
style="@style/AnotherWidget.Settings.Subtitle"/> style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
android:gravity="center_vertical"
android:id="@+id/action_change_unit"
android:orientation="horizontal">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:padding="10dp"
android:src="@drawable/round_text_format"
android:tint="@color/colorPrimaryText"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/AnotherWidget.Settings.Title"
android:text="@string/settings_unit_title"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/temp_unit"
style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout>
</LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/appearance_header"
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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -323,6 +347,18 @@
style="@style/AnotherWidget.Settings.Subtitle"/> style="@style/AnotherWidget.Settings.Subtitle"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/actions_header"
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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View File

@ -19,7 +19,7 @@
android:paddingBottom="8dp" android:paddingBottom="8dp"
android:paddingLeft="32dp" android:paddingLeft="32dp"
android:paddingRight="32dp" android:paddingRight="32dp"
android:textSize="16sp" android:textSize="18sp"
android:gravity="start" android:gravity="start"
android:textAlignment="viewStart" android:textAlignment="viewStart"
android:id="@+id/header_text" android:id="@+id/header_text"

View File

@ -123,7 +123,7 @@
android:layout_height="20dp" android:layout_height="20dp"
android:id="@+id/special_weather_icon" android:id="@+id/special_weather_icon"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginEnd="4dp"/> android:layout_marginEnd="8dp"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -183,6 +183,8 @@
android:layout_width="18dp" android:layout_width="18dp"
android:layout_height="18dp" android:layout_height="18dp"
android:id="@+id/weather_icon" android:id="@+id/weather_icon"
android:layout_marginEnd="4dp"
android:layout_marginStart="4dp"
android:src="@drawable/clear_night"/> android:src="@drawable/clear_night"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@ -0,0 +1,208 @@
<resources>
<string name="app_name" translatable="false">Another Widget</string>
<string name="add_widget">Add</string>
<!-- Display -->
<string name="settings_general_title">Visning</string>
<string name="divider" translatable="false">|</string>
<string name="settings_font_color_title">Tekstfarve</string>
<string name="settings_secondary_font_color_title">Tekstfarve</string>
<string name="settings_background_color_title">Baggrundsfarve</string>
<string name="title_main_text_size">Tekststørrelse</string>
<string name="title_second_text_size">Tekststørrelse</string>
<string name="title_text_shadow">Tekstskygge</string>
<string name="settings_text_shadow_subtitle_none">Ingen</string>
<string name="settings_text_shadow_subtitle_low">Lav</string>
<string name="settings_text_shadow_subtitle_high">Høj</string>
<string name="settings_custom_font_title">Widget skrifttype</string>
<string name="custom_font_subtitle_0">Enhedsskrifttype</string>
<string name="custom_font_subtitle_1">Product Sans</string>
<string name="custom_date_format">Tilpasset datoformat</string>
<string name="alpha">Alpha</string>
<string name="transparent">Gennemsigtig</string>
<string name="settings_show_dividers_title">Vis tekstdelere</string>
<string name="first_row_header">Første række</string>
<string name="second_row_header">Anden række</string>
<string name="global_style_header">Widget</string>
<string name="action_capitalize_the_date">Skift mellem stort og småt begyndelsesbogstav</string>
<string name="settings_date_format_title">Datoformat</string>
<!-- Calendar -->
<string name="settings_calendar_title">Kalender</string>
<string name="title_permission_calendar">Vis dine begivenheder</string>
<string name="description_permission_calendar">Giv tilladelse til at din kalender\n kan vise begivenheder i din widget.</string>
<string name="settings_filter_calendar_title">Filtrer begivenheder</string>
<string name="settings_filter_calendar_subtitle">Ændr kalenderens synlighed</string>
<string name="settings_all_day_title">Heldagsbegivenheder</string>
<string name="main_calendar">Kontokalender</string>
<string name="calendar_settings_list_error">Fejl ved indlæsning af kalenderlisten</string>
<string name="all_day">Heldagsbegivenhed</string>
<string name="show_events_visible">Begivenheder er synlige</string>
<string name="show_events_not_visible">Begivenheder er skjulte</string>
<string name="settings_show_until_subtitle_6">30 minutter senere</string>
<string name="settings_show_until_subtitle_7">1 time senere</string>
<string name="settings_show_until_subtitle_0">3 timer senere</string>
<string name="settings_show_until_subtitle_1">6 timer senere</string>
<string name="settings_show_until_subtitle_2">12 timer senere</string>
<string name="settings_show_until_subtitle_3">24 timer senere</string>
<string name="settings_show_until_subtitle_4">3 dage senere</string>
<string name="settings_show_until_subtitle_5">7 dage senere</string>
<string name="settings_show_until_title">Vis begivenheder mindst</string>
<string name="day_char">d</string>
<string name="settings_calendar_app_title">Standard app til kalender</string>
<string name="error_no_calendar">Ingen kalendere fundet.</string>
<string name="tomorrow">i morgen</string>
<string name="today">i dag</string>
<string name="settings_event_app_title">Tryk på begivenhed åbner</string>
<string name="settings_second_row_info_title">Begivenhedsinformationer</string>
<string name="settings_second_row_info_subtitle_1">Adresse på begivenhed</string>
<string name="settings_second_row_info_subtitle_0">Begivenhedstid</string>
<string name="settings_show_diff_time_title">Tid tilbage til begivenheds start</string>
<string name="settings_show_declined_events_title">Afviste begivenheder</string>
<string name="default_event_app">Begivenhedsdetaljer</string>
<string name="default_calendar_app">Standard kalender app</string>
<string name="settings_show_multiple_events_title">Skift mellem flere begivenheder</string>
<string name="soon">snart</string>
<string name="now">nu</string>
<string name="settings_widget_update_frequency_title">Opdateringsfrekvens på resterende tid</string>
<string name="settings_widget_update_frequency_subtitle">Høj frekvens forårsager højere batteriforbrug</string>
<string name="settings_widget_update_frequency_low">Lav</string>
<string name="settings_widget_update_frequency_default">Standard</string>
<string name="settings_widget_update_frequency_high">Høj</string>
<string name="filters_header">Filtre</string>
<string name="event_detail_header">Begivenhedsdetaljer</string>
<!-- Weather -->
<string name="settings_weather_title">Vejr</string>
<string name="title_permission_location">Vis vejret</string>
<string name="description_permission_location">Giv tilladelse til din lokation\nfor at se vejret i din widget.</string>
<string name="settings_unit_title">Måleenhed</string>
<string name="fahrenheit" translatable="false">°F - Fahrenheit</string>
<string name="celsius" translatable="false">°C - Celsius</string>
<string name="settings_weather_refresh_period_title">Opdateringsfrekvens</string>
<string name="settings_weather_refresh_period_subtitle_0">30 minutter</string>
<string name="settings_weather_refresh_period_subtitle_1">1 time</string>
<string name="settings_weather_refresh_period_subtitle_2">3 timer</string>
<string name="settings_weather_refresh_period_subtitle_3">6 timer</string>
<string name="settings_weather_refresh_period_subtitle_4">12 timer</string>
<string name="settings_weather_refresh_period_subtitle_5">24 timer</string>
<string name="settings_custom_location_title">Lokation</string>
<string name="custom_location_gps">Brug geolocation</string>
<string name="show_weather_visible">Vejrinfo er synlig</string>
<string name="show_weather_not_visible">Vejrinfo er skjult</string>
<string name="settings_weather_app_title">Tryk på vejret åbner</string>
<string name="settings_weather_provider_api_key_title">Vejr API nøgle</string>
<string name="settings_weather_provider_api_key_subtitle_all_set">Vejrudbyderen er konfigureret korrekt</string>
<string name="settings_weather_provider_api_key_subtitle_not_set">Vejrudbyderen skal konfigureres</string>
<string name="api_key_hint">OpenWeather API nøgle</string>
<string name="default_weather_app">Google Weather</string>
<string name="weather_warning">Vejr fra Google Awareness er forældet. Der kræves nu en OpenWeather API nøgle for at vise vejret i widget\'en.</string>
<string name="api_key_title_1">Opret en OpenWeather konto</string>
<string name="api_key_subtitle_1">Opret en gratis konto hos OpenWeather. Det vil kun tage få minutter.</string>
<string name="api_key_title_2">Kopier din API nøgle</string>
<string name="api_key_subtitle_2">Find menuen API keys i dine kontoindstillinger, og kopier standardnøglen.</string>
<string name="api_key_title_3">Indtast nøglen i app\'en</string>
<string name="api_key_subtitle_3">Indsæt nøglen i feltet ovenfor og gem ændringen. Så snart nøglen er aktiveret, vil vejret blive synligt.</string>
<string name="action_open_provider">Gå til OpenWeatherMap.com</string>
<string name="api_key_info_all_set">Der kan gå op til 10 minutter inden din API nøgle er aktiveret. Vejret vil blive opdateret så snart det er tilgængeligt.</string>
<string name="settings_weather_icon_pack_title">Ikonpakke</string>
<string name="settings_weather_icon_pack_default">Standard</string>
<string name="settings_weather_icon_pack_minimal">Minimal</string>
<!-- Clock -->
<string name="settings_clock_title">Ur</string>
<string name="settings_clock_app_title">Tryk på ur åbner</string>
<string name="title_show_clock">Vis uret</string>
<string name="show_clock_visible">Uret vises</string>
<string name="show_clock_not_visible">Uret er skjult</string>
<string name="settings_clock_text_size_title">Tekststørrelse</string>
<string name="default_clock_app">Standard ur app</string>
<string name="settings_clock_bottom_margin_title">Nedre margen på ur</string>
<string name="settings_clock_bottom_margin_subtitle_none">Ingen</string>
<string name="settings_clock_bottom_margin_subtitle_small">Lille</string>
<string name="settings_clock_bottom_margin_subtitle_medium">Medium</string>
<string name="settings_clock_bottom_margin_subtitle_large">Stor</string>
<string name="clock_warning">Grundet teknologiske begrænsninger har uret ikke den tilpassede skrifttype og tekstskyggerne, som valgt under Typografi sektionen.</string>
<string name="settings_clock_text_color_title">Tekstfarve</string>
<string name="settings_ampm_indicator_title">Vis AM/PM indikator</string>
<string name="clock_text_header">Tekststil på ur</string>
<!-- Glance -->
<string name="settings_show_next_alarm_title">Vis næste alarm</string>
<string name="next_alarm_warning">Den næste alarm lader til at være forkert.\nDen er indstillet af %s.</string>
<string name="settings_at_a_glance_title">Overblik</string>
<string name="settings_show_music_title">Aktuel sang</string>
<string name="settings_request_notification_access">Vi har brug for tilladelse til aflæsning af notifikationer, for at vise den aktuelle sang.</string>
<string name="settings_request_fitness_access">Vi har brug for et par få tilladelser, til at vise dine daglige skridt fra Google Fit.</string>
<string name="title_show_glance">Vis overbliks-informationer</string>
<string name="description_show_glance_visible">Service aktiveret</string>
<string name="description_show_glance_not_visible">Service deaktiveret</string>
<string name="settings_sort_glance_providers_title">Datakildeprioritet</string>
<string name="settings_sort_glance_providers_subtitle">Skift datakilders prioritet</string>
<string name="settings_custom_notes_title">Brugerdefinerede noter</string>
<string name="settings_low_battery_level_title">Batteri</string>
<string name="settings_daily_steps_title">Daglige skridt</string>
<string name="battery_low_warning">Lavt batteriniveau</string>
<string name="daily_steps_counter">%d skridt indtil videre</string>
<string name="charging">Oplader</string>
<string name="providers">Kilder</string>
<!-- Settings -->
<string name="action_share">Del</string>
<string name="action_rate">Bedøm app</string>
<string name="action_support">Støt mig</string>
<string name="action_feedback">Feedback</string>
<string name="action_about">Om</string>
<string name="action_refresh_widget">Genindlæs widget</string>
<string name="toolbar_transition_name" translatable="false">toolbar</string>
<string name="error_opening_uri">Fejl ved åbning af URL: Link kopieret til udklipsholder.</string>
<string name="loading_text">Indlæser data…</string>
<string name="error_opening_app">Fejl ved åbning af app.</string>
<string name="default_name">Standard app</string>
<string name="action_save">Gem</string>
<string name="settings_visible">Synlig</string>
<string name="settings_not_visible">Skjult</string>
<string name="support_translations_title">Hjælp med oversættelser</string>
<string name="support_translations_subtitle">Åbn en pull-anmodning på GitHub</string>
<string name="support_website_title">Se mine andre projekter</string>
<string name="support_website_subtitle">Samme udvikler, mange muligheder</string>
<string name="error">Ups, noget gik galt!</string>
<string name="settings_theme_title">Tema</string>
<string name="support_main_subtitle">Udviklere har altid brug for meget kaffe</string>
<string name="settings_subtitle_dark_theme_light">Lys</string>
<string name="settings_subtitle_dark_theme_dark">Mørk</string>
<string name="settings_subtitle_dark_theme_by_battery_saver">Angivet af batterisparefunktionen</string>
<string name="settings_subtitle_dark_theme_follow_system">Følg systemtemaet</string>
<string name="settings_subtitle_dark_theme_default">Standard</string>
<string name="search">Søg</string>
<string name="settings_app_version_title">App version</string>
<string name="settings_title_show_wallpaper">Vis baggrundsbillede</string>
<string name="support_refresh_widget_subtitle">Tving en genstart af widget-tjenesten</string>
<string name="settings_feedback_subtitle">Dette er et open-source projekt, du er velkommen til at hjælpe.</string>
<string name="settings_feedback_title">Feedback og feature requests</string>
<string name="xiaomi_manufacturer" translatable="false">xiaomi</string>
<string name="xiaomi_warning_title">Xiaomi Enheder</string>
<string name="xiaomi_warning_message">Aktiver tilladelsen til visning af popup-vinduer, når app\'en kører i baggrunden, som findes under "Andre tilladelser" i appindstillingerne. Ellers vil du ikke kunne åbne nogle applikationer ved tryk på widget\'en.</string>
<string name="action_ignore">Ignorér</string>
<string name="action_grant_permission">Giv tilladelse</string>
<string name="settings_title">Indstillinger</string>
<string name="style_header">Stil</string>
<string name="actions_header">Handlinger</string>
<string name="provider_header">Opsætning</string>
<string name="appearance_header">Udseende</string>
<string name="preferences_header">Præferencer</string>
<!-- Activities -->
<string name="action_choose_application">Vælg applikation</string>
<string name="support_main_title">Støt udvikleren</string>
<string name="thanks">Tak for støtten!</string>
<string name="donation_coffee">En italiensk kaffe</string>
<string name="donation_donuts">Nogle glaserede donuts</string>
<string name="donation_dinner">En dyr middag</string>
<string name="donation_breakfast">En english breakfast</string>
<string name="donation_lunch">En hurtig frokost</string>
<string name="action_show_widget_preview">Vis widget forhåndsvisning</string>
<string name="support_dev_subtitle">Dette er et projekt fra en enkelt udvikler,\nså tak for støtten!</string>
<string name="settings_title_integrations">Integrationer</string>
<string name="label_count_installed_integrations">%d installerede integrationer</string>
</resources>

View File

@ -1,244 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="add_widget">Widget hinzufügen</string>
<string name="button_request_permission">Rechte erteilen</string>
<string name="title_permission_calendar">Sehen Sie Ihre Termine</string>
<string name="title_permission_location">Kontrolliere das Wetter</string>
<string name="description_permission_calendar">Gewähren Sie Zugriff auf Ihren Kalender, um Ereignisse in Ihrem
Widget anzuzeigen.\n\t
</string>
<string name="description_permission_location">Gewähren Sie Zugriff auf Ihren Ort, um das Wetter in Ihrem Widget
anzuzeigen.\n\t
</string>
<string name="settings_filter_calendar_title">Veranstaltungen filtern</string>
<string name="action_share">Teilen</string>
<string name="action_rate">App bewertern</string>
<string name="action_support">Ünterstützten Sie mich</string>
<string name="all_set_title">Gut gemacht!</string>
<string name="notification_subtitle">Sehen Sie sich Ihre Ereignisse und das Wetter in einem anderen Widget an.
</string>
<string name="notification_title">Holen Sie mehr aus Ihrem Widget heraus</string>
<string name="all_set_subtitle">Sie haben die Konfiguration abgeschlossen. Achten Sie auf Updates.</string>
<string name="all_set_btn">Bleiben Sie aktuell</string>
<string name="action_about">Über</string>
<string name="h_code">Std</string>
<string name="min_code">" Min"</string>
<string name="in_code">in</string>
<string name="action_project">Projekt</string>
<string name="settings_unit_title">Messeinheit</string>
<string name="settings_unit_subtitle">Wählen Sie die Einheit der Temperaturmessung</string>
<string name="settings_filter_calendar_subtitle">Sichtbarkeit der Kalender</string>
<string name="settings_all_day_title">Ganztag-Veranstaltungen</string>
<string name="settings_all_day_subtitle_visible">Sichtbar</string>
<string name="settings_all_day_subtitle_gone">Nicht sichtbar</string>
<string name="main_calendar">Kalender-Account</string>
<string name="settings_calendar_title">Kalender-Einstellungen</string>
<string name="settings_weather_title">Wetter-Einstellungen</string>
<string name="settings_general_title">Allgemeine Einstellungen</string>
<string name="calendar_settings_list_error">Fehler beim Laden der Kalenderliste</string>
<string name="settings_hour_format_title">Stundenformat</string>
<string name="settings_hour_format_subtitle_12">12 Stunden AM/PM</string>
<string name="settings_hour_format_subtitle_24">24 Stunden</string>
<string name="all_day">Ganztag-Veranstaltung</string>
<string name="settings_date_format_title">Datumsformat</string>
<string name="settings_weather_refresh_period_title">Aktualisierungszeitraum</string>
<string name="settings_weather_refresh_period_subtitle_0">30 Minuten</string>
<string name="settings_weather_refresh_period_subtitle_1">1 Stunde</string>
<string name="settings_weather_refresh_period_subtitle_2">3 Stunden</string>
<string name="settings_weather_refresh_period_subtitle_3">6 Stunden</string>
<string name="settings_weather_refresh_period_subtitle_4">12 Stunden</string>
<string name="settings_weather_refresh_period_subtitle_5">24 Stunden</string>
<string name="settings_custom_location_title">" Benutzerdefinierte Position"</string>
<string name="custom_location_gps">Geo-Lokalisierung</string>
<string name="action_refresh_widget">Widget erneuern</string>
<string name="show_events_visible">Veranstaltungen sind sichtbar</string>
<string name="show_events_not_visible">Veranstaltungen sind nicht sichtbar</string>
<string name="show_weather_visible">Wetterinfos sind sichtbar</string>
<string name="show_weather_not_visible">Wetterinfos sind nicht sichtbar</string>
<string name="settings_show_until_subtitle_0">3 Stunden später</string>
<string name="settings_show_until_subtitle_1">6 Stunden später</string>
<string name="settings_show_until_subtitle_2">12 Stunden später</string>
<string name="settings_show_until_subtitle_3">24 Stunden später</string>
<string name="settings_show_until_subtitle_4">3 Tage später</string>
<string name="settings_show_until_subtitle_5">7 Tage später</string>
<string name="settings_show_until_title">Sehen Sie die Ereignisse höchstens bis</string>
<string name="day_char">T</string>
<string name="error_opening_uri">Fehler beim Öffnen der URL: Link in die Zwischenablage kopiert.</string>
<string name="loading_text">Daten werden geladen...</string>
<string name="error_opening_app">Fehler beim Öffnen der App.</string>
<string name="settings_calendar_app_title">Standard Kalender-App</string>
<string name="settings_weather_app_title">Beim Klick auf\'s Wetter öffnet sich</string>
<string name="default_name">Standardapp</string>
<string name="action_choose_application">App wählen</string>
<string name="settings_weather_provider_api_key_title">Wetter-Anbieter</string>
<string name="settings_weather_provider_api_key_subtitle_all_set">Der Wetteranbieter ist korrekt konfiguriert
</string>
<string name="settings_weather_provider_api_key_subtitle_not_set">Der Wetteranbieter muss konfiguriert werden
</string>
<string name="notification_gps_title">GPS einschalten</string>
<string name="notification_gps_subtitle">Google Awareness benötigt aktives GPS zum Arbeiten.</string>
<string name="action_feedback">Rückmeldung</string>
<string name="feedback_title">AW Rückmeldung</string>
<string name="feedback_chooser_title">E-Mail senden...</string>
<string name="feedback_error">Fehler beim Senden der E-Mail.</string>
<string name="api_key_hint">OpenWeather API Key</string>
<string name="action_save">Speichern</string>
<string name="error_no_calendar">Keine Kalender gefunden</string>
<string name="api_key_info_title">Was ist zu tun</string>
<string name="api_key_info_text">
<![CDATA[Another Widget ist eine kostenlose Anwendung und wird ohne Bannerwerbung bleiben.<BR /> <BR />Aufgrund seines großen Erfolges, der sicherlich meine Erwartungen übertrifft, unterstützt der Wetteranbieter nicht alle ankommenden Anfragen (einfach, weil es kostenlos und daher begrenzt ist).<BR /><BR />Ich muss jeden von Ihnen bitten, ein Konto bei OpenWeather persönlich zu registrieren. Der Vorgang dauert nur ein paar Minuten, und wenn der Schlüssel aktiviert ist, haben Sie keine Probleme mit dem Wetter.<BR /><BR />Ich entschuldige mich für die Unannehmlichkeiten und stütze mich weiter!]]></string>
<string name="api_key_title_1">Registrierung eines OpenWeather Kontos</string>
<string name="api_key_subtitle_1">Registrieren Sie ein kostenloses Konto bei OpenWeather. Es wird nur ein paar
Minuten dauern.
</string>
<string name="api_key_title_2">API-Key kopieren</string>
<string name="api_key_subtitle_2">Greifen Sie über Ihre Kontoeinstellungen auf das API-Schlüsselmenü zu und kopieren
Sie den Standardschlüssel.
</string>
<string name="api_key_title_3">Fügen Sie den Schlüssel zur App hinzu</string>
<string name="api_key_subtitle_3">Geben Sie den Schlüssel in diesem Abschnitt ein und speichern Sie ihn. Sobald der
Schlüssel aktiviert ist, ist das Wetter sichtbar.
</string>
<string name="api_key_info_start">Hi zusammen!</string>
<string name="action_open_provider">Öffnen von OpenWeatherMap.com</string>
<string name="api_key_info_all_set">
<![CDATA[Es kann bis zu <b> zehn Minuten </b> dauern, bis der API-Schlüssel aktiviert wird.<BR /><i> Entspannen </ i> Sie! Das Wetter wird aktualisiert, sobald es verfügbar ist !!]]></string>
<string name="well_done">Gut gemacht!</string>
<string name="hs_code">Std</string>
<string name="tomorrow">Morgen</string>
<string name="today">Heute</string>
<string name="settings_event_app_title">Klick auf die Veranstaltung öffnet</string>
<string name="settings_second_row_info_title">Informationen der zweiten Reihe</string>
<string name="settings_font_color_title">Textfarbe</string>
<string name="title_main_text_size">Schriftgröße erste Reihe</string>
<string name="title_second_text_size">Schriftgröße zweite Reihe</string>
<string name="settings_clock_title">Einstellung der Uhr</string>
<string name="settings_second_row_info_subtitle_1">Zeige Ereignisadresse anstelle von Zeit</string>
<string name="settings_second_row_info_subtitle_0">Zeige Ereignisszeit</string>
<string name="settings_second_row_info_subtitle_2">Zeige nächste Erinnerung</string>
<string name="settings_clock_app_title">Klick der Uhr öffnet</string>
<string name="title_show_clock">Uhr anzeigen</string>
<string name="description_show_clock">Zeigt die Zeit über Ereignisse und Wetter an</string>
<string name="show_clock_visible">Uhr ist sichtbar</string>
<string name="show_clock_not_visible">Uhr ist nicht sichtbar</string>
<string name="settings_clock_text_size_title">Schriftgrößte der Uhr</string>
<string name="title_text_shadow">Schatten des Textes</string>
<string name="settings_text_shadow_subtitle_none">Keins</string>
<string name="settings_text_shadow_subtitle_low">Niedrig</string>
<string name="settings_text_shadow_subtitle_high">Hoch</string>
<string name="advanced_settings_title">Erweiterte Einstellungen</string>
<string name="settings_product_sans_font_title">Product Sans Font</string>
<string name="settings_product_sans_font_subtitle">Durch die Verwendung von Product Sans wurde die Möglichkeit zum
Antippen von Widget-Elementen deaktiviert. Ich arbeite dran.
</string>
<string name="settings_show_diff_time_title">Zeit für die Veranstaltung</string>
<string name="settings_visible">Sichtbar</string>
<string name="settings_not_visible">Nicht sichtbar</string>
<string name="settings_show_declined_events_title">Abgelehnte Ereignisse</string>
<string name="default_weather_app">Google Wetter</string>
<string name="default_event_app">Veranstalungsdetails</string>
<string name="default_calendar_app">Standard Kalender-App</string>
<string name="default_clock_app">Standard Uhr-App</string>
<string name="settings_show_until_subtitle_7">1 Stunde später</string>
<string name="settings_show_until_subtitle_6">30 Minuten später</string>
<string name="action_default">Default</string>
<string name="action_none">Deaktiviert</string>
<string name="settings_custom_font_title">Widget Schriftart</string>
<string name="custom_font_subtitle_0">Geräte Schriftart</string>
<string name="custom_font_subtitle_1">Produkt Schriftart</string>
<string name="action_go_to_next_event">Zeige nächste Veranstaltung</string>
<string name="settings_show_multiple_events_title">Zähler für mehrere Ereignisse</string>
<string name="support_main_title">Unterstütze den Entwickler mit</string>
<string name="support_translations_title">Bei der Übersetzung helfen</string>
<string name="support_translations_subtitle">Öffne einen pull request auf GitHub</string>
<string name="support_website_title">Schauen Sie sich meine anderen Projekte an</string>
<string name="support_website_subtitle">Selber Entwickler, mehr Möglichkeiten</string>
<string name="error">Ops, da ist etwas falsch gelaufen!</string>
<string name="thanks">Danke für Ihre Unterstützung</string>
<string name="donation_coffee">Einen italenischen Kaffee</string>
<string name="donation_donuts">Einige glasierte Donuts</string>
<string name="donation_dinner">Ein teueres Abendessen</string>
<string name="donation_breakfast">Ein englischen Frühstück</string>
<string name="donation_lunch">Ein schnelles Mittagsessen</string>
<string name="background_service_title">Another Widget läuft</string>
<string name="background_service_subtitle">AW läuft im Hintergrund</string>
<string name="action_show_widget_preview">Zeige die Widget Vorschau</string>
<string name="action_hide_widget_preview">Verstecke die Widget Vorschau</string>
<string name="error_widget_notification_title">GPS ist aus</string>
<string name="error_widget_notification_subtitle">GPS wieder aktivieren, damit ein Another Widget
Wetterinformationen mit der Google Awareness API aktualisieren kann.
</string>
<!-- TODO -->
<string name="error_weather_api_key">The provider is not configured correctly, do you still want to go back?</string>
<string name="settings_show_next_alarm_title">Show next alarm when possible</string>
<string name="open_location_settings">Location settings</string>
<string name="change_provider">Change provider</string>
<string name="disable_notification">Disable notification</string>
<string name="settings_theme_title">Theme</string>
<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_follow_system">Follow the system theme</string>
<string name="settings_subtitle_dark_theme_default">Default</string>
<string name="search">Search</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="account_events">Account events</string>
<string name="clock_warning">Due to technological limitations, the clock won\'t have the custom font and the text shadows selected in the typography section.</string>
<string name="weather_warning">Google Awareness weather has been deprecated. It\'s now required an OpenWeather API key to show the weather in the widget.</string>
<string name="custom_date_format">Custom date format</string>
<string name="settings_app_version_title">App version</string>
<string name="support_dev_subtitle">This is a single developer project,\nso thank you for the support!</string>
<string name="settings_feedback_subtitle">This is an open-source project, feel free to help.</string>
<string name="settings_feedback_title">Feedback and feature requests</string>
<string name="settings_clock_bottom_margin_title">Clock bottom margin</string>
<string name="settings_clock_bottom_margin_subtitle_none">None</string>
<string name="settings_clock_bottom_margin_subtitle_small">Small</string>
<string name="settings_clock_bottom_margin_subtitle_medium">Medium</string>
<string name="settings_clock_bottom_margin_subtitle_large">Large</string>
<string name="xiaomi_warning_title">Xiaomi Devices</string>
<string name="xiaomi_warning_message">Enable the permission to display pop-up windows when running in the background inside the "Other permission" section of the app settings. Otherwise, you will not able to open any applications tapping on the widget.</string>
<string name="action_ignore">Ignore</string>
<string name="action_grant_permission">Grant permission</string>
<string name="alpha">Alpha</string>
<string name="settings_background_color_title">Background color</string>
<string name="transparent">Transparent</string>
<string name="next_alarm_warning">The next alarm clock seems to be wrong.\nIt has been set by %s.</string>
<string name="settings_title">Settings</string>
<string name="settings_clock_text_color_title">Clock text color</string>
<string name="settings_music_title">Music</string>
<string name="settings_show_music_title">Show current playing song</string>
<string name="settings_show_music_enabled_subtitle">Playing song info visible</string>
<string name="settings_show_music_disabled_subtitle">Playing song info hidden</string>
<string name="settings_song_info_format_title">Song info format</string>
<string name="settings_request_notification_access">We need the notification access permission to check the current playing song.</string>
<string name="settings_at_a_glance_title">At a Glance</string>
<string name="settings_title_integrations">Integrations</string>
<string name="label_count_installed_integrations">%d installed integrations</string>
<string name="title_show_glance">Show at a glance info</string>
<string name="description_show_glance">Show multiple provider data when there are no events displayed.</string>
<string name="settings_show_dividers_title">Show text dividers</string>
<string name="settings_show_next_alarm_subtitle">Show the next clock alarm</string>
<string name="settings_sort_glance_providers_title">Data source priority</string>
<string name="settings_sort_glance_providers_subtitle">Change the data provider importance</string>
<string name="settings_custom_notes_title">Custom notes</string>
<string name="settings_low_battery_level_title">Battery level</string>
<string name="settings_daily_steps_title">Daily steps</string>
<string name="battery_low_warning">Low battery level</string>
<string name="settings_request_fitness_access">We need a few permissions to get your daily steps from Google Fit.</string>
<string name="settings_ampm_indicator_title">Show AM/PM Indicator</string>
<string name="daily_steps_counter">%d steps today</string>
<string name="settings_secondary_font_color_title">Second row text color</string>
<string name="soon">soon</string>
<string name="now">now</string>
<string name="settings_widget_update_frequency_title">Time left update frequency</string>
<string name="settings_widget_update_frequency_subtitle">High frequency causes more battery consume</string>
<string name="settings_widget_update_frequency_low">Low</string>
<string name="settings_widget_update_frequency_default">Default</string>
<string name="settings_widget_update_frequency_high">High</string>
<string name="settings_weather_icon_pack_title">Icon pack</string>
<string name="settings_weather_icon_pack_default">Default</string>
<string name="settings_weather_icon_pack_minimal">Minimal</string>
</resources>

View File

@ -1,224 +0,0 @@
<resources>
<string name="add_widget">Ajouter</string>
<string name="button_request_permission">Donner la permission</string>
<string name="title_permission_calendar">Afficher vos événements</string>
<string name="title_permission_location">Afficher la météo</string>
<string name="description_permission_calendar">Accorder l\'accès à votre calendrier\npour voir les événements dans votre widget.</string>
<string name="description_permission_location">Accorder l\'accès à votre localisation\npour voir la météo dans votre widget.</string>
<string name="notification_title">Obtenez plus de la part de votre widget</string>
<string name="notification_subtitle">Voir vos événements et la météo dans Another Widget.</string>
<string name="action_share">Partager</string>
<string name="action_rate">Noter l\'app</string>
<string name="action_support">Soutenez-moi</string>
<string name="all_set_title">Bon travail !</string>
<string name="all_set_subtitle">Vous avez fini la configuration.\nDes mises à jour sont à venir.</string>
<string name="all_set_btn">Restez à jour</string>
<string name="action_about">À propos</string>
<string name="h_code">h</string>
<string name="min_code">" min"</string>
<string name="in_code">dans</string>
<string name="action_project">Projet</string>
<string name="settings_unit_title">Unité de mesure</string>
<string name="settings_unit_subtitle">Choisir l\'unité de mesure de température</string>
<string name="settings_filter_calendar_title">Filtrer les événements</string>
<string name="settings_filter_calendar_subtitle">Changer la visibilité du calendrier</string>
<string name="settings_all_day_title">Événements toute la journée</string>
<string name="settings_all_day_subtitle_visible">Visible</string>
<string name="settings_all_day_subtitle_gone">Non visible</string>
<string name="main_calendar">Calendrier du compte</string>
<string name="settings_calendar_title">Calendrier</string>
<string name="settings_weather_title">Météo</string>
<string name="settings_general_title">Typographie</string>
<string name="calendar_settings_list_error">Erreur de chargement du calendrier</string>
<string name="settings_hour_format_title">Format d\'heure</string>
<string name="settings_hour_format_subtitle_12">12 heures</string>
<string name="settings_hour_format_subtitle_24">24 heures</string>
<string name="all_day">Événement toute la journée</string>
<string name="settings_date_format_title">Format de date</string>
<string name="settings_weather_refresh_period_title">Fréquence d\'actualisation</string>
<string name="settings_weather_refresh_period_subtitle_0">30 minutes</string>
<string name="settings_weather_refresh_period_subtitle_1">1 heure</string>
<string name="settings_weather_refresh_period_subtitle_2">3 heures</string>
<string name="settings_weather_refresh_period_subtitle_3">6 heures</string>
<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="action_refresh_widget">Actualisation forcée</string>
<string name="show_events_visible">Événements visibles</string>
<string name="show_events_not_visible">Événements non visibles</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_show_until_subtitle_0">3 heures avant</string>
<string name="settings_show_until_subtitle_1">6 heures avant</string>
<string name="settings_show_until_subtitle_2">12 heures avant</string>
<string name="settings_show_until_subtitle_3">24 heures avant</string>
<string name="settings_show_until_subtitle_4">3 jours avant</string>
<string name="settings_show_until_subtitle_5">7 jours avant</string>
<string name="settings_show_until_title">Afficher les événements au moins</string>
<string name="day_char">j</string>
<string name="error_opening_uri">Erreur lors de l\'ouverture de l\'URL : Lien copié dans le presse-papiers.</string>
<string name="loading_text">Chargement des données…</string>
<string name="error_opening_app">Erreur lors de l\'ouverture de l\'app.</string>
<string name="settings_calendar_app_title">App calendrier par défaut</string>
<string name="settings_weather_app_title">Taper sur la météo ouvre</string>
<string name="default_name">App par défaut</string>
<string name="action_choose_application">Choisir une application</string>
<string name="settings_weather_provider_api_key_title">Clé API pour la méteo</string>
<string name="settings_weather_provider_api_key_subtitle_all_set">Le fournisseur météo est correctement configuré</string>
<string name="settings_weather_provider_api_key_subtitle_not_set">Le fournisseur de météo doit être configuré</string>
<string name="notification_gps_title">Activer le GPS</string>
<string name="notification_gps_subtitle">Google Awareness a besoin d\'un GPS actif pour fonctionner.</string>
<string name="action_feedback">Commentaires</string>
<string name="feedback_title">Commentaires AW</string>
<string name="feedback_chooser_title">Envoyer un email…</string>
<string name="feedback_error">Erreur lors de l\'envoi de l\'email.</string>
<string name="api_key_hint">Clé API OpenWeather</string>
<string name="error_weather_api_key">Le fournisseur n\'est pas configuré correctement, voulez-vous toujours revenir en arrière ?</string>
<string name="action_save">Sauvegarder</string>
<string name="error_no_calendar">Aucun calendrier trouvé.</string>
<string name="api_key_info_title">Instructions</string>
<string name="api_key_info_text"><![CDATA[Another Widget est une application gratuite et restera sans publicité. <BR /> <BR /> En raison de son grand succès, au-delà de toutes mes attentes, le fournisseur de météo ne peut prendre en charge toutes les demandes (tout simplement parce qu\'il est gratuit et donc limité). <BR /> <BR /> Je dois demander à chacun d\'enregistrer personnellement un compte sur OpenWeather ; l\'opération ne prendra que quelques minutes, et lorsque votre clé sera activée, vous n\'aurez aucun problème avec la météo. <BR /> <BR /> Je suis désolé pour le désagrément, continuez à me soutenir !]]></string>
<string name="api_key_title_1">Inscrivez-vous sur OpenWeather</string>
<string name="api_key_subtitle_1">Créez un compte gratuit sur OpenWeather. Cela 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é 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="api_key_info_start">Bonjour tout le monde !</string>
<string name="action_open_provider">Aller sur le site d\'OpenWeatherMap</string>
<string name="api_key_info_all_set"><![CDATA[Cela peut prendre jusqu\'à <b> 10 minutes </b> avant que votre clé API soit activée. La météo sera mise à jour dès qu\'elle sera disponible !]]></string>
<string name="well_done">Bien joué !</string>
<string name="hs_code">h</string>
<string name="tomorrow">demain</string>
<string name="today">aujourd\'hui</string>
<string name="settings_event_app_title">Taper sur l\'événement ouvre</string>
<string name="settings_second_row_info_title">Information de la seconde ligne</string>
<string name="settings_second_row_info_subtitle_1">Afficher l\'adresse de l\'événement au lieu de l\'heure</string>
<string name="settings_second_row_info_subtitle_0">Afficher l\'heure de l\'événement</string>
<string name="settings_second_row_info_subtitle_2">Afficher l\'heure de la prochaine alarme</string>
<string name="settings_font_color_title">Couleur du texte</string>
<string name="title_main_text_size">Taille du texte de la première ligne</string>
<string name="title_second_text_size">Taille du texte de la seconde ligne</string>
<string name="settings_clock_title">Horloge</string>
<string name="settings_clock_app_title">Taper sur l\'horloge ouvre</string>
<string name="title_show_clock">Afficher l\'horloge</string>
<string name="description_show_clock">Voir l\'heure au-dessus des événements et la météo</string>
<string name="show_clock_visible">Horloge visible</string>
<string name="show_clock_not_visible">Horloge non visible</string>
<string name="settings_clock_text_size_title">Taille du texte de l\'horloge</string>
<string name="settings_show_next_alarm_title">Afficher la prochaine alarme si possible</string>
<string name="title_text_shadow">Ombre du texte</string>
<string name="settings_text_shadow_subtitle_none">Aucune</string>
<string name="settings_text_shadow_subtitle_low">Faible</string>
<string name="settings_text_shadow_subtitle_high">Élevée</string>
<string name="advanced_settings_title">Avancé</string>
<string name="settings_product_sans_font_title">Police Product Sans</string>
<string name="settings_product_sans_font_subtitle">Utiliser la police Product Sans désactive la possibilité de taper sur les événements. Je travaille dessus.</string>
<string name="settings_show_diff_time_title">Temps restant jusqu\'à l\'événement</string>
<string name="settings_visible">Visible</string>
<string name="settings_not_visible">Non visible</string>
<string name="settings_show_declined_events_title">Événements refusés</string>
<string name="default_weather_app">Google Weather</string>
<string name="default_event_app">Détails de l\'événement</string>
<string name="default_calendar_app">App calendrier par défaut</string>
<string name="default_clock_app">App horloge par défaut</string>
<string name="settings_show_until_subtitle_7">1 heure après</string>
<string name="settings_show_until_subtitle_6">30 minutes après</string>
<string name="action_default">Par défaut</string>
<string name="action_none">Désactivé</string>
<string name="settings_custom_font_title">Police du widget</string>
<string name="custom_font_subtitle_0">Police de l\'appareil</string>
<string name="custom_font_subtitle_1">Product Sans</string>
<string name="action_go_to_next_event">Afficher l\'événement\nsuivant</string>
<string name="settings_show_multiple_events_title">Sélecteur d\'événements multiples</string>
<string name="support_main_title">Soutenir le développeur</string>
<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 même développeur, plusieurs possibilités</string>
<string name="error">Oups, quelque chose s\'est mal passé !</string>
<string name="thanks">Merci de m\'avoir soutenu !</string>
<string name="donation_coffee">Un café italien</string>
<string name="donation_donuts">Quelques beignets glacés</string>
<string name="donation_dinner">Un dîner coûteux</string>
<string name="donation_breakfast">Un petit-déjeuner anglais</string>
<string name="donation_lunch">Un déjeuner rapide</string>
<string name="background_service_title">Another Widget est en cours d\'exécution</string>
<string name="background_service_subtitle">AW s\'exécute en arrière-plan</string>
<string name="action_show_widget_preview">Afficher l\'aperçu du widget</string>
<string name="action_hide_widget_preview">Cacher l\'aperçu du widget</string>
<string name="error_widget_notification_title">La localisation est désactivée</string>
<string name="error_widget_notification_subtitle">Réactivez le GPS pour qu\'Another Widget puisse mettre à jour les informations météo avec l\'API Google Awareness.</string>
<string name="open_location_settings">Paramètres de localisation</string>
<string name="change_provider">Changer de fournisseur</string>
<string name="disable_notification">Désactiver les notifications</string>
<string name="settings_theme_title">Thème</string>
<string name="support_main_subtitle">On a toujours besoin de beaucoup de café</string>
<string name="settings_subtitle_dark_theme_light">Clair</string>
<string name="settings_subtitle_dark_theme_dark">Sombre</string>
<string name="settings_subtitle_dark_theme_by_battery_saver">Défini par l\'économiseur de batterie</string>
<string name="settings_subtitle_dark_theme_follow_system">Selon le thème du système</string>
<string name="settings_subtitle_dark_theme_default">Par défaut</string>
<string name="search">Rechercher</string>
<string name="settings_title_show_wallpaper">Afficher le fond d\'écran</string>
<string name="support_refresh_widget_subtitle">Forcer le redémarrage du service du widget</string>
<string name="account_events">Événements du compte</string>
<string name="clock_warning">En raison de limitations technologiques, l\'horloge n\'aura pas la police personnalisée et les ombres de texte sélectionnées dans la section Typographie.</string>
<string name="weather_warning">La météo de Google Awareness est obsolète. Il faut maintenant une clé API OpenWeather pour afficher la météo dans le widget.</string>
<string name="custom_date_format">Format de date personalisé</string>
<string name="settings_app_version_title">Version de l\'app</string>
<string name="support_dev_subtitle">Ceci est un projet de développeur unique,\ndonc merci pour le soutien!</string>
<string name="settings_feedback_subtitle">Ceci est un projet open-source, n\'hésitez pas à aider.</string>
<string name="settings_feedback_title">Commentaires et suggestions</string>
<string name="settings_clock_bottom_margin_title">Marge inférieure de l\'horloge</string>
<string name="settings_clock_bottom_margin_subtitle_none">Aucun</string>
<string name="settings_clock_bottom_margin_subtitle_small">Petit</string>
<string name="settings_clock_bottom_margin_subtitle_medium">Moyen</string>
<string name="settings_clock_bottom_margin_subtitle_large">Grand</string>
<!-- TODO -->
<string name="xiaomi_warning_title">Xiaomi Devices</string>
<string name="xiaomi_warning_message">Enable the permission to display pop-up windows when running in the background inside the "Other permission" section of the app settings. Otherwise, you will not able to open any applications tapping on the widget.</string>
<string name="action_ignore">Ignore</string>
<string name="action_grant_permission">Grant permission</string>
<string name="alpha">Alpha</string>
<string name="settings_background_color_title">Background color</string>
<string name="transparent">Transparent</string>
<string name="next_alarm_warning">The next alarm clock seems to be wrong.\nIt has been set by %s.</string>
<string name="settings_title">Settings</string>
<string name="settings_clock_text_color_title">Clock text color</string>
<string name="settings_music_title">Music</string>
<string name="settings_show_music_title">Show current playing song</string>
<string name="settings_show_music_enabled_subtitle">Playing song info visible</string>
<string name="settings_show_music_disabled_subtitle">Playing song info hidden</string>
<string name="settings_song_info_format_title">Song info format</string>
<string name="settings_request_notification_access">We need the notification access permission to check the current playing song.</string>
<string name="settings_at_a_glance_title">At a Glance</string>
<string name="settings_title_integrations">Integrations</string>
<string name="label_count_installed_integrations">%d installed integrations</string>
<string name="title_show_glance">Show at a glance info</string>
<string name="description_show_glance">Show multiple provider data when there are no events displayed.</string>
<string name="settings_show_dividers_title">Show text dividers</string>
<string name="settings_show_next_alarm_subtitle">Show the next clock alarm</string>
<string name="settings_sort_glance_providers_title">Data source priority</string>
<string name="settings_sort_glance_providers_subtitle">Change the data provider importance</string>
<string name="settings_custom_notes_title">Custom notes</string>
<string name="settings_low_battery_level_title">Battery level</string>
<string name="settings_daily_steps_title">Daily steps</string>
<string name="battery_low_warning">Low battery level</string>
<string name="settings_request_fitness_access">We need a few permissions to get your daily steps from Google Fit.</string>
<string name="settings_ampm_indicator_title">Show AM/PM Indicator</string>
<string name="daily_steps_counter">%d steps today</string>
<string name="settings_secondary_font_color_title">Second row text color</string>
<string name="soon">soon</string>
<string name="now">now</string>
<string name="settings_widget_update_frequency_title">Time left update frequency</string>
<string name="settings_widget_update_frequency_subtitle">High frequency causes more battery consume</string>
<string name="settings_widget_update_frequency_low">Low</string>
<string name="settings_widget_update_frequency_default">Default</string>
<string name="settings_widget_update_frequency_high">High</string>
<string name="settings_weather_icon_pack_title">Icon pack</string>
<string name="settings_weather_icon_pack_default">Default</string>
<string name="settings_weather_icon_pack_minimal">Minimal</string>
</resources>

View File

@ -0,0 +1,204 @@
<resources>
<string name="app_name" translatable="false">Another Widget</string>
<string name="add_widget">Tambahkan</string>
<!-- Display -->
<string name="settings_general_title">Tampilan</string>
<string name="divider" translatable="false">|</string>
<string name="settings_font_color_title">Warna teks</string>
<string name="settings_secondary_font_color_title">Warna teks</string>
<string name="settings_background_color_title">Warna latar belakang</string>
<string name="title_main_text_size">Ukuran teks</string>
<string name="title_second_text_size">Ukuran teks</string>
<string name="title_text_shadow">Bayangan teks</string>
<string name="settings_text_shadow_subtitle_none">Tidak ada</string>
<string name="settings_text_shadow_subtitle_low">Rendah</string>
<string name="settings_text_shadow_subtitle_high">Tinggi</string>
<string name="settings_custom_font_title">Fon widget</string>
<string name="custom_font_subtitle_0">Fon Perangkat</string>
<string name="custom_font_subtitle_1">Product Sans</string>
<string name="custom_date_format">Format tanggal khusus</string>
<string name="alpha">Alpha</string>
<string name="transparent">Transparan</string>
<string name="settings_show_dividers_title">Tampilkan pemisah teks</string>
<string name="first_row_header">Baris pertama</string>
<string name="second_row_header">Baris kedua</string>
<string name="global_style_header">Widget</string>
<string name="action_capitalize_the_date">Tanggal huruf besar</string>
<string name="settings_date_format_title">Format tanggal</string>
<!-- Calendar -->
<string name="settings_calendar_title">Kalender</string>
<string name="title_permission_calendar">Tampilkan acara anda</string>
<string name="description_permission_calendar">Berikan izin untuk mengakses kalender anda\nuntuk menampilkan acara di widget.</string>
<string name="settings_filter_calendar_title">Saring acara</string>
<string name="settings_filter_calendar_subtitle">Ubah visibilitas kalender</string>
<string name="settings_all_day_title">Acara seharian</string>
<string name="main_calendar">Kalender akun</string>
<string name="calendar_settings_list_error">Terjadi kesalahan saat memuat daftar kalender</string>
<string name="all_day">Acara seharian</string>
<string name="show_events_visible">Acara ditampilkan</string>
<string name="show_events_not_visible">Acara disembunyikan</string>
<string name="settings_show_until_subtitle_6">30 menit kemudian</string>
<string name="settings_show_until_subtitle_7">1 jam kemudian</string>
<string name="settings_show_until_subtitle_0">3 jam kemudian</string>
<string name="settings_show_until_subtitle_1">6 jam kemudian</string>
<string name="settings_show_until_subtitle_2">12 jam kemudian</string>
<string name="settings_show_until_subtitle_3">24 jam kemudian</string>
<string name="settings_show_until_subtitle_4">3 hari kemudian</string>
<string name="settings_show_until_subtitle_5">7 hari kemudian</string>
<string name="settings_show_until_title">Tampilkan acara setidaknya</string>
<string name="day_char">h</string>
<string name="settings_calendar_app_title">Aplikasi kalender</string>
<string name="error_no_calendar">Tidak ada kalender yang ditemukan.</string>
<string name="tomorrow">besok</string>
<string name="today">hari ini</string>
<string name="settings_event_app_title">Ketuk pada acara membuka</string>
<string name="settings_second_row_info_title">Info acara</string>
<string name="settings_second_row_info_subtitle_1">Alamat acara</string>
<string name="settings_second_row_info_subtitle_0">Waktu acara</string>
<string name="settings_show_diff_time_title">Waktu tersisa sebelum acara</string>
<string name="settings_show_declined_events_title">Acara ditolak</string>
<string name="default_event_app">Detail acara</string>
<string name="default_calendar_app">Aplikasi kalender bawaan</string>
<string name="settings_show_multiple_events_title">Pengalih beberapa acara</string>
<string name="soon">segera</string>
<string name="now">sekarang</string>
<string name="settings_widget_update_frequency_title">Rentang waktu frekuensi pembaruan</string>
<string name="settings_widget_update_frequency_subtitle">Frekuensi tinggi akan menyebabkan penggunaan baterai menjadi lebih tinggi</string>
<string name="settings_widget_update_frequency_low">Rendah</string>
<string name="settings_widget_update_frequency_default">Bawaan</string>
<string name="settings_widget_update_frequency_high">Tinggi</string>
<string name="filters_header">Saring</string>
<string name="event_detail_header">Detail acara</string>
<!-- Weather -->
<string name="settings_weather_title">Cuaca</string>
<string name="title_permission_location">Tampilkan cuaca</string>
<string name="description_permission_location">Berikan izin akses ke lokasi anda\nuntuk menampilkan cuaca di widget.</string>
<string name="settings_unit_title">Unit pengukuran</string>
<string name="settings_weather_refresh_period_title">Frekuensi penyegaran</string>
<string name="settings_weather_refresh_period_subtitle_0">30 menit</string>
<string name="settings_weather_refresh_period_subtitle_1">1 jam</string>
<string name="settings_weather_refresh_period_subtitle_2">3 jam</string>
<string name="settings_weather_refresh_period_subtitle_3">6 jam</string>
<string name="settings_weather_refresh_period_subtitle_4">12 jam</string>
<string name="settings_weather_refresh_period_subtitle_5">24 jam</string>
<string name="settings_custom_location_title">Lokasi</string>
<string name="custom_location_gps">Gunakan geolokasi</string>
<string name="show_weather_visible">Info acara ditampilkan</string>
<string name="show_weather_not_visible">Info acara disembunyikan</string>
<string name="settings_weather_app_title">Ketuk pada cuaca membuka</string>
<string name="settings_weather_provider_api_key_title">Kunci API cuaca</string>
<string name="settings_weather_provider_api_key_subtitle_all_set">Penyedia layanan cuaca dikonfigurasi dengan benar</string>
<string name="settings_weather_provider_api_key_subtitle_not_set">Penyedia layanan cuaca harus dikonfigurasi</string>
<string name="api_key_hint">Kunci API OpenWeather</string>
<string name="default_weather_app">Google Weather</string>
<string name="weather_warning">Layanan cuaca Google Awareness telah ditutup. Sekarang membutuhkan Kunci API OpenWeather untuk menampilkan cuaca di widget.</string>
<string name="api_key_title_1">Daftar akun OpenWeather</string>
<string name="api_key_subtitle_1">Daftar akun gratis pada situs OpenWeather. Hanya akan membutuhkan waktu beberapa menit saja.</string>
<string name="api_key_title_2">Salin Kunci API anda</string>
<string name="api_key_subtitle_2">Temukan menu kunci API dari pengaturan akun anda dan salin kunci default.</string>
<string name="api_key_title_3">Masukkan kunci API ke aplikasi</string>
<string name="api_key_subtitle_3">Tempel kunci API ke dalam ruas di atas dan simpan. Setelah kunci diaktifkan, cuaca akan segera ditampilkan.</string>
<string name="action_open_provider">Kunjungi OpenWeatherMap.com</string>
<string name="api_key_info_all_set">Mungkin membutuhkan lebih kurang 10 menit sebelum kunci API anda diaktifkan. Cuaca akan diperbarui segera setelah data tersedia.</string>
<string name="settings_weather_icon_pack_title">Paket ikon</string>
<string name="settings_weather_icon_pack_default">Bawaan</string>
<string name="settings_weather_icon_pack_minimal">Minimal</string>
<!-- Clock -->
<string name="settings_clock_title">Jam</string>
<string name="settings_clock_app_title">Ketuk pada jam membuka</string>
<string name="title_show_clock">Tampilkan Jam</string>
<string name="show_clock_visible">Jam ditampilkan</string>
<string name="show_clock_not_visible">Jam disembunyikan</string>
<string name="settings_clock_text_size_title">Ukuran teks</string>
<string name="default_clock_app">Aplikasi jam bawaan</string>
<string name="settings_clock_bottom_margin_title">Margin bawah jam</string>
<string name="settings_clock_bottom_margin_subtitle_none">Tidak ada</string>
<string name="settings_clock_bottom_margin_subtitle_small">Kecil</string>
<string name="settings_clock_bottom_margin_subtitle_medium">Sedang</string>
<string name="settings_clock_bottom_margin_subtitle_large">Besar</string>
<string name="clock_warning">Karena keterbatasan teknologi, jam tidak akan menerapkan fon khusus dan bayangan teks yang diatur dalam bagian pengaturan Tampilan.</string>
<string name="settings_clock_text_color_title">Warna teks</string>
<string name="settings_ampm_indicator_title">Tampilkan Indikator AM/PM</string>
<string name="clock_text_header">Gaya teks jam</string>
<!-- Glance -->
<string name="settings_show_next_alarm_title">Waktu alarm berikutnya</string>
<string name="next_alarm_warning">Waktu alarm berikutnya sepertinya salah.\nTelah disetel %s.</string>
<string name="settings_at_a_glance_title">Sekilas</string>
<string name="settings_show_music_title">Lagu yang diputar saat ini</string>
<string name="settings_request_notification_access">Membutuhkan izin akses notifikasi untuk menampilkan lagu yang saat ini diputar.</string>
<string name="settings_request_fitness_access">Membutuhkan beberapa izin untuk menampilkan jumlah langkah dari Google Fit.</string>
<string name="title_show_glance">Tampilkan di info sekilas</string>
<string name="description_show_glance_visible">Layanan diaktifkan</string>
<string name="description_show_glance_not_visible">Layanan dinonaktifkan</string>
<string name="settings_sort_glance_providers_title">Prioritas sumber data</string>
<string name="settings_sort_glance_providers_subtitle">Ubah prioritas penyedia data</string>
<string name="settings_custom_notes_title">Catatan khusus</string>
<string name="settings_low_battery_level_title">Baterai</string>
<string name="settings_daily_steps_title">Langkah harian</string>
<string name="battery_low_warning">Level baterai rendah</string>
<string name="daily_steps_counter">%d langkah sejauh ini</string>
<string name="charging">Mengisi daya</string>
<string name="providers">Penyedia</string>
<!-- Settings -->
<string name="action_share">Bagikan</string>
<string name="action_rate">Nilai aplikasi</string>
<string name="action_support">Dukung saya</string>
<string name="action_feedback">Umpanbalik</string>
<string name="action_about">Tentang</string>
<string name="action_refresh_widget">Segarkan widget</string>
<string name="error_opening_uri">Terjadi kesalahan saat membuka URL: Tautan disalin ke papan klip.</string>
<string name="loading_text">Memuat Data…</string>
<string name="error_opening_app">Terjadi kesalahan saat membuka aplikasi.</string>
<string name="default_name">Aplikasi bawaan</string>
<string name="action_save">Simpan</string>
<string name="settings_visible">Ditampilkan</string>
<string name="settings_not_visible">Disembunyikan</string>
<string name="support_translations_title">Bantu menerjemahkan</string>
<string name="support_translations_subtitle">Buka pull request pada GitHub</string>
<string name="support_website_title">Lihat proyek saya lainnya</string>
<string name="support_website_subtitle">Pengembang yang sama, banyak kemungkinan</string>
<string name="error">Ups, telah terjadi kesalahan!</string>
<string name="settings_theme_title">Tema</string>
<string name="support_main_subtitle">Pengembang selalu membutuhkan banyak minum kopi</string>
<string name="settings_subtitle_dark_theme_light">Terang</string>
<string name="settings_subtitle_dark_theme_dark">Gelap</string>
<string name="settings_subtitle_dark_theme_by_battery_saver">Setel berdasarkan Penghemat Baterai</string>
<string name="settings_subtitle_dark_theme_follow_system">Mengikuti tema sistem</string>
<string name="settings_subtitle_dark_theme_default">Bawaan</string>
<string name="search">Cari</string>
<string name="settings_app_version_title">Versi aplikasi</string>
<string name="settings_title_show_wallpaper">Tampilkan wallpaper</string>
<string name="support_refresh_widget_subtitle">Paksa mulai ulang layanan widget</string>
<string name="settings_feedback_subtitle">Ini adalah proyek sumber terbuka, jangan sungkan untuk membantu.</string>
<string name="settings_feedback_title">Umpanbalik dan permintaan fitur</string>
<string name="xiaomi_warning_title">Perangkat Xiaomi</string>
<string name="xiaomi_warning_message">Berikan izin untuk menampilkan jendela pop-up saat berjalan di latar belakang di dalam bagian "Perizinan lainnya" di pengaturan aplikasi. Jika tidak, anda tidak akan bisa membuka aplikasi apapun saat mengetuk widget.</string>
<string name="action_ignore">Abaikan</string>
<string name="action_grant_permission">Berikan izin</string>
<string name="settings_title">Pengaturan</string>
<string name="style_header">Gaya</string>
<string name="actions_header">Tindakan</string>
<string name="provider_header">Setel</string>
<string name="appearance_header">Penampilan</string>
<string name="preferences_header">Preferensi</string>
<!-- Activities -->
<string name="action_choose_application">Pilih aplikasi</string>
<string name="support_main_title">Dukung pengembang</string>
<string name="thanks">Terima kasih telah mendukung saya!</string>
<string name="donation_coffee">Kopi italia</string>
<string name="donation_donuts">Donat yang nikmat</string>
<string name="donation_dinner">Makan malam yang mewah</string>
<string name="donation_breakfast">Sarapan yang bersemangat</string>
<string name="donation_lunch">Makan siang yang cepat</string>
<string name="action_show_widget_preview">Tampilkan pratinjau widget</string>
<string name="support_dev_subtitle">Ini adalah proyek pengembang tunggal,\nterima kasih banyak untuk dukungannya!</string>
<string name="settings_title_integrations">Integrasi</string>
<string name="label_count_installed_integrations">%d integrasi terpasang</string>
</resources>

View File

@ -1,223 +1,203 @@
<?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="app_name" translatable="false">Another Widget</string>
<string name="add_widget">Aggiungi</string> <string name="add_widget">Aggiungi</string>
<string name="button_request_permission">Concedi Accesso</string>
<string name="all_set_btn">Rimani Aggiornato</string> <!-- Display -->
<string name="all_set_title">Molto bene!</string>
<string name="action_support">Supportami</string>
<string name="action_rate">Valuta App</string>
<string name="action_share">Condividi</string>
<string name="notification_title">Ottieni di più dal tuo widget</string>
<string name="title_permission_location">Controlla il Meteo</string>
<string name="title_permission_calendar">Controlla i tuoi Impegni</string>
<string name="notification_subtitle">Aggiungi gli eventi e il meteo al tuo widget.</string>
<string name="description_permission_calendar">Concedi l\'accesso al tuo calendario per vedere gli eventi.</string>
<string name="description_permission_location">Concedi l\'accesso alla tua posizione per vedere il meteo.</string>
<string name="all_set_subtitle">Hai completato la configurazione! Rimani aggiornato.</string>
<string name="action_about">Info</string>
<string name="h_code">" ora"</string>
<string name="min_code">" min"</string>
<string name="in_code">tra</string>
<string name="action_project">Progetto</string>
<string name="settings_unit_title">Unità di Misura</string>
<string name="settings_unit_subtitle">Modifica l\'unità di misura della temperatura</string>
<string name="settings_filter_calendar_title">Filtra Eventi</string>
<string name="settings_filter_calendar_subtitle">Scegli quali calendari vedere</string>
<string name="settings_all_day_title">Eventi Giornalieri</string>
<string name="settings_all_day_subtitle_visible">Visibili</string>
<string name="settings_all_day_subtitle_gone">Non visibili</string>
<string name="main_calendar">Calendario Account</string>
<string name="settings_calendar_title">Eventi</string>
<string name="settings_weather_title">Meteo</string>
<string name="settings_general_title">Display</string> <string name="settings_general_title">Display</string>
<string name="calendar_settings_list_error">Errore nel caricamento della lista dei calendari</string> <string name="settings_font_color_title">Colore testo</string>
<string name="settings_hour_format_title">Formato Ora</string> <string name="settings_secondary_font_color_title">Colore testo</string>
<string name="settings_hour_format_subtitle_12">12 ore AM/PM</string> <string name="settings_background_color_title">Colore sfondo</string>
<string name="settings_hour_format_subtitle_24">24 ore</string> <string name="title_main_text_size">Dimensione testo</string>
<string name="all_day">Tutto il giorno</string> <string name="title_second_text_size">Dimensione testo</string>
<string name="settings_date_format_title">Formato Data</string> <string name="title_text_shadow">Ombra testo</string>
<string name="settings_weather_refresh_period_title">Intervallo Aggiornamento</string>
<string name="settings_weather_refresh_period_subtitle_0">30 Minuti</string>
<string name="settings_weather_refresh_period_subtitle_1">1 Ora</string>
<string name="settings_weather_refresh_period_subtitle_2">3 Ore</string>
<string name="settings_weather_refresh_period_subtitle_3">6 Ore</string>
<string name="settings_weather_refresh_period_subtitle_4">12 Ore</string>
<string name="settings_weather_refresh_period_subtitle_5">24 Ore</string>
<string name="settings_custom_location_title">Località</string>
<string name="custom_location_gps">Usa la geolocalizzazione</string>
<string name="action_refresh_widget">Riavvia Widget</string>
<string name="show_events_visible">Eventi visibili</string>
<string name="show_events_not_visible">Eventi non visibili</string>
<string name="show_weather_visible">Meteo visibile</string>
<string name="show_weather_not_visible">Meteo non Visibile</string>
<string name="settings_show_until_subtitle_0">3 Ore dopo</string>
<string name="settings_show_until_subtitle_1">6 Ore dopo</string>
<string name="settings_show_until_subtitle_2">12 Ore dopo</string>
<string name="settings_show_until_subtitle_3">24 Ore dopo</string>
<string name="settings_show_until_subtitle_4">3 Giorni dopo</string>
<string name="settings_show_until_subtitle_5">7 Giorni dopo</string>
<string name="settings_show_until_title">Vedi eventi al massimo fino a</string>
<string name="day_char">g</string>
<string name="error_opening_uri">Errore apertura URL: Link copiato negli appunti.</string>
<string name="loading_text">Caricamento…</string>
<string name="error_opening_app">Errore apertura App.</string>
<string name="settings_calendar_app_title">Applicazione predefinita calendario</string>
<string name="settings_weather_app_title">Il meteo apre</string>
<string name="default_name">App Predefinita</string>
<string name="action_choose_application">Scegli Applicazione</string>
<string name="settings_weather_provider_api_key_title">Chiave API Meteo</string>
<string name="settings_weather_provider_api_key_subtitle_all_set">Il provider meteo è configurato correttamente</string>
<string name="settings_weather_provider_api_key_subtitle_not_set">Il provider meteo deve essere configurato</string>
<string name="notification_gps_title">Riattiva la localizzazione</string>
<string name="notification_gps_subtitle">Google Awareness ha bisogno del GPS attivo per funzionare.</string>
<string name="action_feedback">Feedback</string>
<string name="feedback_title">AW Feedback</string>
<string name="feedback_chooser_title">Invia email…</string>
<string name="feedback_error">Errore invio mail.</string>
<string name="api_key_hint">Chiave API OpenWeather</string>
<string name="error_weather_api_key">Il provider non è configurato correttamente, vuoi comunque uscire?</string>
<string name="action_save">Salva</string>
<string name="error_no_calendar">Nessun calendario trovato.</string>
<string name="api_key_info_title">Cosa fare</string>
<string name="api_key_title_1">Registrati su OpenWeather</string>
<string name="action_open_provider">Apri OpenWeatherMap.com</string>
<string name="api_key_subtitle_1">Registra un account gratuito su OpenWeatherMap.com in pochi minuti.</string>
<string name="api_key_subtitle_2">Accedi alle chiavi API nelle impostazioni e copia la chiave di default.</string>
<string name="api_key_subtitle_3">Aggiungi la chiave all\'applicazione in questa sezione e, una volta che la chiave sarà attivata, apparirà il meteo.</string>
<string name="api_key_title_2">Copia la chiave API</string>
<string name="api_key_title_3">Configura l\'App</string>
<string name="api_key_info_start">Ciao a tutti.</string>
<string name="api_key_info_text"><![CDATA[Another widget è e rimarrà gratuita e senza banner pubblicitari.<BR /><BR />Però a causa del successo dell\'applicazione, sicuramente oltre ogni mia aspettativa, il provider del meteo non riesce a supportare il numero di richieste che arrivano (a causa dell\'utilizzo di un account gratuito).<BR /><BR />Sono costretto a chiedervi di registrarvi su OpenWeather.com; l\'operazione richiederà solo alcuni minuti e dopo non avrete più problemi con la fruizione delle informazioni sul meteo!<BR /><BR />Mi dispiace per l\'inconveniente ma continuate a supportarmi!!]]></string>
<string name="well_done">Ben Fatto!</string>
<string name="api_key_info_all_set"><![CDATA[Posso essere necessari fino a <b>dieci minuti</b> prima che la tua chiave sia attivata. Il meteo verrà aggiornato non appena sarà disponibile!]]></string>
<string name="hs_code">" ore"</string>
<string name="tomorrow">Domani</string>
<string name="today">Oggi</string>
<string name="settings_event_app_title">Gli eventi aprono</string>
<string name="settings_second_row_info_title">Informazione Seconda Riga</string>
<string name="settings_second_row_info_subtitle_0">Orario evento</string>
<string name="settings_second_row_info_subtitle_1">Location evento</string>
<string name="settings_second_row_info_subtitle_2">Mostra orario prossimo allarme</string>
<string name="settings_font_color_title">Colore testo prima riga</string>
<string name="settings_secondary_font_color_title">Colore testo seconda riga</string>
<string name="title_main_text_size">Dimensione Testo Prima Riga</string>
<string name="title_second_text_size">Dimensione Testo Seconda Riga</string>
<string name="settings_clock_title">Orologio</string>
<string name="settings_clock_app_title">L\'orologio apre</string>
<string name="title_show_clock">Mostra Orologio</string>
<string name="description_show_clock">Mostra l\'ora sopra eventi e meteo</string>
<string name="show_clock_visible">Orologio visibile</string>
<string name="show_clock_not_visible">Orologio non visibile</string>
<string name="settings_clock_text_size_title">Dimensione Testo Orologio</string>
<string name="settings_show_next_alarm_title">Mostra prossimo allarme quando possibile</string>
<string name="title_text_shadow">Ombra Testo</string>
<string name="settings_text_shadow_subtitle_none">Nessuna</string> <string name="settings_text_shadow_subtitle_none">Nessuna</string>
<string name="settings_text_shadow_subtitle_low">Bassa</string> <string name="settings_text_shadow_subtitle_low">Bassa</string>
<string name="settings_text_shadow_subtitle_high">Alta</string> <string name="settings_text_shadow_subtitle_high">Alta</string>
<string name="advanced_settings_title">Avanzate</string> <string name="settings_custom_font_title">Font</string>
<string name="settings_product_sans_font_title">Font Product Sans</string> <string name="custom_font_subtitle_0">Font dispositivo</string>
<string name="settings_product_sans_font_subtitle">L\'utilizzo del Product Sans disabilita i tap sugli elementi del widget. Ci sto attualmente lavorando.</string>
<string name="settings_show_diff_time_title">Tempo rimanente all\'evento</string>
<string name="settings_show_declined_events_title">Event Rifiutati</string>
<string name="settings_visible">Visibile</string>
<string name="settings_not_visible">Non Visibile</string>
<string name="default_event_app">Dettagli evento</string>
<string name="default_calendar_app">App Calendario di Default</string>
<string name="default_weather_app">Meteo Google</string>
<string name="default_clock_app">App Orologio di Default</string>
<string name="settings_show_until_subtitle_7">1 Ora dopo</string>
<string name="settings_show_until_subtitle_6">30 Minuti dopo</string>
<string name="action_default">Predefinita</string>
<string name="action_none">Disabilita</string>
<string name="custom_font_subtitle_0">Font Dispositivo</string>
<string name="custom_font_subtitle_1">Product Sans</string> <string name="custom_font_subtitle_1">Product Sans</string>
<string name="settings_custom_font_title">Font Widget</string> <string name="custom_date_format">Formato data</string>
<string name="action_go_to_next_event">Mostra Evento\nSuccessivo</string> <string name="alpha">Alpha</string>
<string name="settings_show_multiple_events_title">Scorrimento Eventi Multipli</string> <string name="transparent">Trasparente</string>
<string name="support_main_title">Supporta lo Sviluppatore</string> <string name="settings_show_dividers_title">Mostra divisori testo</string>
<string name="support_translations_title">Aiuta con le Traduzioni</string> <string name="first_row_header">Prima riga</string>
<string name="support_translations_subtitle">Apri una pull request su GitHub</string> <string name="second_row_header">Seconda riga</string>
<string name="support_website_title">Scopri i miei progetti</string> <string name="global_style_header">Widget</string>
<string name="support_website_subtitle">Stesso sviluppatore, più possibilità</string> <string name="action_capitalize_the_date">Data maiuscola</string>
<string name="error">Ops, sembra che qualcosa non abbia funzionato!</string> <string name="settings_date_format_title">Formato data</string>
<string name="thanks">Grazie per il supporto!</string>
<string name="donation_coffee">Un Caffè Italiano</string> <!-- Calendar -->
<string name="donation_donuts">Qualche Ciambella</string> <string name="settings_calendar_title">Calendario</string>
<string name="donation_dinner">Una Cena Costosa</string> <string name="title_permission_calendar">Mostra eventi</string>
<string name="donation_breakfast">Una Colazione Inglese</string> <string name="description_permission_calendar">Concedi il permesso per la lettura degli eventi.</string>
<string name="donation_lunch">Una Pranzo Veloce</string> <string name="settings_filter_calendar_title">Filtra eventi</string>
<string name="background_service_title">Another Widget è attivo</string> <string name="settings_filter_calendar_subtitle">Cambia visibilità calendari</string>
<string name="background_service_subtitle">AW è attivo in background</string> <string name="settings_all_day_title">Eventi giornalieri</string>
<string name="action_show_widget_preview">Mostra Anteprima Widget</string> <string name="main_calendar">Calendario principale</string>
<string name="action_hide_widget_preview">Nascondi Anteprima Widget</string> <string name="calendar_settings_list_error">Errore caricamento lista dei calendari</string>
<string name="error_widget_notification_title">GPS Disattivato</string> <string name="all_day">Eventi giornalieri</string>
<string name="error_widget_notification_subtitle">Riattiva il GPS così che Another Widget possa aggiornare il meteo con le API di Google Awareness.</string> <string name="show_events_visible">Eventi visibili</string>
<string name="open_location_settings">Impostazioni GPS</string> <string name="show_events_not_visible">Eventi nascosti</string>
<string name="change_provider">Cambia Provider</string> <string name="settings_show_until_subtitle_6">dopo 30 minuti</string>
<string name="disable_notification">Disabilita Notifica</string> <string name="settings_show_until_subtitle_7">dopo 1 ora</string>
<string name="settings_theme_title">Tema</string> <string name="settings_show_until_subtitle_0">dopo 3 ore</string>
<string name="support_main_subtitle">Agli sviluppatori fa sempre bene un caffè</string> <string name="settings_show_until_subtitle_1">dopo 6 ore</string>
<string name="settings_subtitle_dark_theme_light">Chiaro</string> <string name="settings_show_until_subtitle_2">dopo 12 ore</string>
<string name="settings_subtitle_dark_theme_dark">Scuro</string> <string name="settings_show_until_subtitle_3">dopo 24 ore</string>
<string name="settings_subtitle_dark_theme_by_battery_saver">In base al risparmio energetico</string> <string name="settings_show_until_subtitle_4">dopo 3 giorni</string>
<string name="settings_subtitle_dark_theme_follow_system">Tema di sistema</string> <string name="settings_show_until_subtitle_5">dopo 7 giorni</string>
<string name="settings_subtitle_dark_theme_default">Default</string> <string name="settings_show_until_title">Mostra eventi al massimo</string>
<string name="search">Cerca</string> <string name="day_char">g</string>
<string name="settings_title_show_wallpaper">Mostra wallpaper</string> <string name="settings_calendar_app_title">Applicazione calendario di default</string>
<string name="support_refresh_widget_subtitle">Forza il riavvio di tutti i servizi</string> <string name="error_no_calendar">Nessun calendario trovato</string>
<string name="account_events">Eventi account</string> <string name="tomorrow">domani</string>
<string name="clock_warning">A causa di limitazioni tecnologiche l\'orologio non rispetterà l\'ombra del test e il font custom selezionati nella sezione tipografia.</string> <string name="today">oggi</string>
<string name="weather_warning">Il meteo di Google Awareness è stato deprecato. È ora necessaria una chiave API di OpenWeather per visualizzare il meteo.</string> <string name="settings_event_app_title">Tap sull\'evento apre</string>
<string name="custom_date_format">Formato data personalizzato</string> <string name="settings_second_row_info_title">Informazione evento</string>
<string name="settings_app_version_title">Versione app</string> <string name="settings_second_row_info_subtitle_1">Indirizzo</string>
<string name="support_dev_subtitle">Grazie per supportare il progetto!</string> <string name="settings_second_row_info_subtitle_0">Orario</string>
<string name="settings_feedback_subtitle">Contribuisci a questo progetto open source.</string> <string name="settings_show_diff_time_title">Tempo mancante all\'evento</string>
<string name="settings_feedback_title">Feedback</string> <string name="settings_show_declined_events_title">Eventi declinati</string>
<string name="default_event_app">Dettaglio evento</string>
<string name="default_calendar_app">App calendario</string>
<string name="settings_show_multiple_events_title">Scorrimento eventi</string>
<string name="soon">presto</string>
<string name="now">ora</string>
<string name="settings_widget_update_frequency_title">Frequenza aggiornamento tempo mancante</string>
<string name="settings_widget_update_frequency_subtitle">Un\'alta frequenza di aggiornamento causerà un consumo maggiore della batteria</string>
<string name="settings_widget_update_frequency_low">Bassa</string>
<string name="settings_widget_update_frequency_default">Default</string>
<string name="settings_widget_update_frequency_high">Alta</string>
<string name="filters_header">Filtri</string>
<string name="event_detail_header">Dettagli evento</string>
<!-- Weather -->
<string name="settings_weather_title">Meteo</string>
<string name="title_permission_location">Mostra il meteo</string>
<string name="description_permission_location">Concedi il permesso per la localizzazione per vedere le informazioni sul meteo</string>
<string name="settings_unit_title">Unità di misura</string>
<string name="settings_weather_refresh_period_title">Frequenza aggiornamento</string>
<string name="settings_weather_refresh_period_subtitle_0">30 minuti</string>
<string name="settings_weather_refresh_period_subtitle_1">1 ora</string>
<string name="settings_weather_refresh_period_subtitle_2">3 ore</string>
<string name="settings_weather_refresh_period_subtitle_3">6 ore</string>
<string name="settings_weather_refresh_period_subtitle_4">12 ore</string>
<string name="settings_weather_refresh_period_subtitle_5">24 ore</string>
<string name="settings_custom_location_title">Location</string>
<string name="custom_location_gps">Usa geolocalizzazione</string>
<string name="show_weather_visible">Meteo visibile</string>
<string name="show_weather_not_visible">Meteo nascosto</string>
<string name="settings_weather_app_title">Tap sul meteo apre</string>
<string name="settings_weather_provider_api_key_title">Chiave API Meteo</string>
<string name="settings_weather_provider_api_key_subtitle_all_set">Il provider meteo è configurato correttamente</string>
<string name="settings_weather_provider_api_key_subtitle_not_set">Devi configurare il provider meteo</string>
<string name="api_key_hint">Chiave API OpenWeather</string>
<string name="default_weather_app">Meteo Google</string>
<string name="weather_warning">Il meteo di Google Awareness è stato deprecato. È ora necessaria una chiave API OpenWeather per mostrare il meteo.</string>
<string name="api_key_title_1">Registra un account su OpenWeather</string>
<string name="api_key_subtitle_1">Registra un account gratuito su OpenWeather, ci vorranno solo alcuni minuti.</string>
<string name="api_key_title_2">Copia la chiave API</string>
<string name="api_key_subtitle_2">Trova la chiave API nelle impostazioni del tuo nuovo account e copia la chiave di default.</string>
<string name="api_key_title_3">Inserisci la chiave nell\'app</string>
<string name="api_key_subtitle_3">Copia qui la chiave API e salva la nuova configurazione.</string>
<string name="action_open_provider">Apri OpenWeatherMap.com</string>
<string name="api_key_info_all_set">La chiave API potrebbe aver bisogno di più di 20 minuti per diventare attiva, aggiorneremo il meteo non appena sarà possibile.</string>
<string name="settings_weather_icon_pack_title">Stile icone</string>
<string name="settings_weather_icon_pack_default">Default</string>
<string name="settings_weather_icon_pack_minimal">Minimal</string>
<!-- Clock -->
<string name="settings_clock_title">Orologio</string>
<string name="settings_clock_app_title">Tap sull\'orologio apre</string>
<string name="title_show_clock">Mostra orologio</string>
<string name="show_clock_visible">Orologio visibile</string>
<string name="show_clock_not_visible">Orologio nascosto</string>
<string name="settings_clock_text_size_title">Dimensione testo</string>
<string name="default_clock_app">App orologio di default</string>
<string name="settings_clock_bottom_margin_title">Margine inferiore orologio</string> <string name="settings_clock_bottom_margin_title">Margine inferiore orologio</string>
<string name="settings_clock_bottom_margin_subtitle_none">Nessuno</string> <string name="settings_clock_bottom_margin_subtitle_none">Nessuno</string>
<string name="settings_clock_bottom_margin_subtitle_small">Piccolo</string> <string name="settings_clock_bottom_margin_subtitle_small">Piccolo</string>
<string name="settings_clock_bottom_margin_subtitle_medium">Medio</string> <string name="settings_clock_bottom_margin_subtitle_medium">Medio</string>
<string name="settings_clock_bottom_margin_subtitle_large">Grande</string> <string name="settings_clock_bottom_margin_subtitle_large">Grande</string>
<string name="clock_warning">A causa di limitazioni tecnologiche l\'orologio non rispetterà il font e l\'ombra scelti nella sezione Display.</string>
<string name="settings_clock_text_color_title">Colore testo</string>
<string name="settings_ampm_indicator_title">Mostra AM/PM</string>
<string name="clock_text_header">Stile orologio</string>
<!-- Glance -->
<string name="settings_show_next_alarm_title">Prossimo allarme</string>
<string name="next_alarm_warning">Il prossimo allarme non sembra corretto. È stato impostato dall\'app %s.</string>
<string name="settings_at_a_glance_title">Glance</string>
<string name="settings_show_music_title">Canzone in riproduzione</string>
<string name="settings_request_notification_access">È necessario l\'accesso alle notifiche per controllare la canzone in riproduzione.</string>
<string name="settings_request_fitness_access">Sono necessari i permessi per accedere ai passi di oggi su Google Fit.</string>
<string name="title_show_glance">Mostra At a Glance</string>
<string name="description_show_glance_visible">Informazioni visibili</string>
<string name="description_show_glance_not_visible">Informazioni non visibili</string>
<string name="settings_sort_glance_providers_title">Priorità provider</string>
<string name="settings_sort_glance_providers_subtitle">Cambia ordine di importanza dei provider</string>
<string name="settings_custom_notes_title">Testo</string>
<string name="settings_low_battery_level_title">Batteria</string>
<string name="settings_daily_steps_title">Passi fatti</string>
<string name="battery_low_warning">Livello batteria basso</string>
<string name="daily_steps_counter">%d passi fatti finore</string>
<string name="charging">In carica</string>
<string name="providers">Providers</string>
<!-- Settings -->
<string name="action_share">Condividi</string>
<string name="action_rate">Lascia una recensione</string>
<string name="action_support">Dona</string>
<string name="action_feedback">Feedback</string>
<string name="action_about">Informazioni</string>
<string name="action_refresh_widget">Ricarica widget</string>
<string name="error_opening_uri">Errore apertura url, link copiato negli appunti.</string>
<string name="loading_text">Caricamento…</string>
<string name="error_opening_app">Errore apertura app.</string>
<string name="default_name">App di default</string>
<string name="action_save">Salva</string>
<string name="settings_visible">Visibile</string>
<string name="settings_not_visible">Non visibile</string>
<string name="support_translations_title">Aiuta con le traduzioni</string>
<string name="support_translations_subtitle">Apri una richiesta di modifica su GitHub</string>
<string name="support_website_title">Guarda i miei altri progetti</string>
<string name="support_website_subtitle">Stesso sviluppatore, altre possibilità</string>
<string name="error">Ops, qualcosa non ha funzionato!</string>
<string name="settings_theme_title">Tema</string>
<string name="support_main_subtitle">Gli sviluppatore hanno sempre bisogno di caffè</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">In base al risparmio energetico</string>
<string name="settings_subtitle_dark_theme_follow_system">In base al sistema</string>
<string name="settings_subtitle_dark_theme_default">Default</string>
<string name="search">Cerca</string>
<string name="settings_app_version_title">Versione app</string>
<string name="settings_title_show_wallpaper">Mostra wallpaper</string>
<string name="support_refresh_widget_subtitle">Forza il riavvio del widget</string>
<string name="settings_feedback_subtitle">Questo è un progetto open-source</string>
<string name="settings_feedback_title">Feedback e richieste</string>
<string name="xiaomi_warning_title">Dispositivi Xiaomi</string> <string name="xiaomi_warning_title">Dispositivi Xiaomi</string>
<string name="xiaomi_warning_message">Concedi il permesso per mostrare finstre pop-up quando l\'applicazione è in background. Puoi trovare l\'impostazione nella sezione Altri permessi nei dettagli dell\'app. Nel caso non fosse attivata non sarà possibile aprire applicazioni cliccando sul widget.</string> <string name="xiaomi_warning_message">Attiva il permesso per mostrare finestre pop-up quando l\'applicazione è in background, altrimenti non sarà possibile eserguire nessuna azione al tap del widget.</string>
<string name="action_ignore">Ignora</string> <string name="action_ignore">Ignora</string>
<string name="action_grant_permission">Concedi permesso</string> <string name="action_grant_permission">Concedi permesso</string>
<string name="alpha">Trasparenza</string>
<string name="settings_background_color_title">Colore background</string>
<string name="transparent">Trasparente</string>
<string name="next_alarm_warning">La sveglia sembra impostata male.\nÈ stata impostata dall\'app %s.</string>
<string name="settings_title">Impostazioni</string> <string name="settings_title">Impostazioni</string>
<string name="settings_clock_text_color_title">Colore orologio</string> <string name="style_header">Stile</string>
<string name="settings_music_title">Musica</string> <string name="actions_header">Azioni</string>
<string name="settings_show_music_title">Mostra brano in riproduzione</string> <string name="provider_header">Setup</string>
<string name="settings_show_music_enabled_subtitle">Visibile</string> <string name="appearance_header">Stile</string>
<string name="settings_show_music_disabled_subtitle">Non visibile</string> <string name="preferences_header">Preferenze</string>
<string name="settings_song_info_format_title">Formato informazioni brano</string>
<string name="settings_request_notification_access">Concedi all\'app il permesso di monitorare le notifiche, è necessario per poter mostrare il brano in riproduzione.</string> <!-- Activities -->
<string name="settings_at_a_glance_title">Glance</string> <string name="action_choose_application">Scegli applicazione</string>
<string name="support_main_title">Supporta lo sviluppatore</string>
<string name="thanks">Grazie per il supporto!</string>
<string name="donation_coffee">Un caffè</string>
<string name="donation_donuts">Un gelato</string>
<string name="donation_dinner">Una cena</string>
<string name="donation_breakfast">Una colazione abbondante</string>
<string name="donation_lunch">Un pranzo veloce</string>
<string name="action_show_widget_preview">Mostra preview widget</string>
<string name="support_dev_subtitle">Questo è un progetto sviluppato da una singola persona,\n grazie per il tuo supporto!</string>
<string name="settings_title_integrations">Integrazioni</string> <string name="settings_title_integrations">Integrazioni</string>
<string name="label_count_installed_integrations">%d integrazioni installate</string> <string name="label_count_installed_integrations">%d integrazioni installate</string>
<string name="title_show_glance">Mostra notizie rapide</string> </resources>
<string name="description_show_glance">Mostra notizie rapide ottenute da diversi provider</string>
<string name="settings_show_next_alarm_subtitle">Mostra la prossima sveglia</string>
<string name="settings_show_dividers_title">Mostra divisori testo</string>
<string name="settings_sort_glance_providers_title">Ordine notizie rapide</string>
<string name="settings_sort_glance_providers_subtitle">Cambia l\'ordine di importanza delle notizie</string>
<string name="settings_custom_notes_title">Note</string>
<string name="settings_low_battery_level_title">Livello batteria</string>
<string name="settings_daily_steps_title">Passi di oggi</string>
<string name="battery_low_warning">Livello batteria basso</string>
<string name="settings_request_fitness_access">Abbiamo bisogno di alcuni permessi per leggere i tuoi passi di oggi da Google Fit.</string>
<string name="settings_ampm_indicator_title">Mostra AM/PM</string>
<string name="daily_steps_counter">%d passi</string>
<string name="soon">a breve</string>
<string name="now">ora</string>
<string name="settings_widget_update_frequency_title">Frequenza aggiornamento tempo rimanente</string>
<string name="settings_widget_update_frequency_subtitle">Maggiore è la frequenza maggiore sarà il consumo di batteria</string>
<string name="settings_widget_update_frequency_low">Bassa</string>
<string name="settings_widget_update_frequency_default">Default</string>
<string name="settings_widget_update_frequency_high">Alta</string>
<string name="settings_weather_icon_pack_title">Icon pack</string>
<string name="settings_weather_icon_pack_default">Default</string>
<string name="settings_weather_icon_pack_minimal">Minimal</string>
</resources>

View File

@ -0,0 +1,203 @@
<resources>
<string name="app_name" translatable="false">Another Widget</string>
<string name="add_widget">Добавить виджет</string>
<!-- Display -->
<string name="settings_general_title">Отображение</string>
<string name="settings_font_color_title">Цвет текста</string>
<string name="settings_secondary_font_color_title">Цвет текста</string>
<string name="settings_background_color_title">Цвет фона</string>
<string name="title_main_text_size">Размер текста</string>
<string name="title_second_text_size">Размер текста</string>
<string name="title_text_shadow">Тень текста</string>
<string name="settings_text_shadow_subtitle_none">Нет</string>
<string name="settings_text_shadow_subtitle_low">Слабая</string>
<string name="settings_text_shadow_subtitle_high">Сильная</string>
<string name="settings_custom_font_title">Шрифт виджета</string>
<string name="custom_font_subtitle_0">Шрифт устройства</string>
<string name="custom_font_subtitle_1">Product Sans</string>
<string name="custom_date_format">Настраеваемый формат даты</string>
<string name="alpha">Непрозрачность</string>
<string name="transparent">Прозрачный</string>
<string name="settings_show_dividers_title">Отображение разделителей текста</string>
<string name="first_row_header">Первая строка</string>
<string name="second_row_header">Вторая строка</string>
<string name="global_style_header">Виджет</string>
<string name="action_capitalize_the_date">Дата заглавными буквами</string>
<string name="settings_date_format_title">Формат даты</string>
<!-- Calendar -->
<string name="settings_calendar_title">Календарь</string>
<string name="title_permission_calendar">Отображать события</string>
<string name="description_permission_calendar">Предоставить доступ к календарю\nдля отображения событий в виджете.</string>
<string name="settings_filter_calendar_title">Фильтрация событий</string>
<string name="settings_filter_calendar_subtitle">Выбрать календари для отображения</string>
<string name="settings_all_day_title">События на весь день</string>
<string name="main_calendar">Календарь аккаунта</string>
<string name="calendar_settings_list_error">Ошибка загрузки списка календарей</string>
<string name="all_day">Событие на весь день</string>
<string name="show_events_visible">События отображаются</string>
<string name="show_events_not_visible">События не отображаются</string>
<string name="settings_show_until_subtitle_6">30 минут после</string>
<string name="settings_show_until_subtitle_7">1 часа после</string>
<string name="settings_show_until_subtitle_0">3 часов после</string>
<string name="settings_show_until_subtitle_1">6 часов после</string>
<string name="settings_show_until_subtitle_2">12 часов после</string>
<string name="settings_show_until_subtitle_3">24 часов после</string>
<string name="settings_show_until_subtitle_4">3 дней после</string>
<string name="settings_show_until_subtitle_5">7 дней после</string>
<string name="settings_show_until_title">Показывать события в течение</string>
<string name="day_char">д</string>
<string name="settings_calendar_app_title">Стандартное приложение календаря</string>
<string name="error_no_calendar">Календарь не найден.</string>
<string name="tomorrow">завтра</string>
<string name="today">сегодня</string>
<string name="settings_event_app_title">По нажатию на событие открывать</string>
<string name="settings_second_row_info_title">Информация о событии</string>
<string name="settings_second_row_info_subtitle_1">Адрес события</string>
<string name="settings_second_row_info_subtitle_0">Время события</string>
<string name="settings_show_diff_time_title">Осталось времени до события</string>
<string name="settings_show_declined_events_title">Отклонённые события</string>
<string name="default_event_app">Детали события</string>
<string name="default_calendar_app">Стандартное приложение календаря</string>
<string name="settings_show_multiple_events_title">Переключение между событиями</string>
<string name="soon">скоро</string>
<string name="now">сейчас</string>
<string name="settings_widget_update_frequency_title">Частота обновления оставшегося времени</string>
<string name="settings_widget_update_frequency_subtitle">Высокая частота обновления может сказаться на времени автономной работы</string>
<string name="settings_widget_update_frequency_low">Редко</string>
<string name="settings_widget_update_frequency_default">По умолчанию</string>
<string name="settings_widget_update_frequency_high">Часто</string>
<string name="filters_header">Фильтры</string>
<string name="event_detail_header">Детали события</string>
<!-- Weather -->
<string name="settings_weather_title">Погода</string>
<string name="title_permission_location">Отображать погоду</string>
<string name="description_permission_location">Предоставить доступ к местоположению\nдля отображения погоды в виджете.</string>
<string name="settings_unit_title">Единица измерения</string>
<string name="settings_weather_refresh_period_title">Частота обновления</string>
<string name="settings_weather_refresh_period_subtitle_0">30 минут</string>
<string name="settings_weather_refresh_period_subtitle_1">1 час</string>
<string name="settings_weather_refresh_period_subtitle_2">3 часа</string>
<string name="settings_weather_refresh_period_subtitle_3">6 часов</string>
<string name="settings_weather_refresh_period_subtitle_4">12 часов</string>
<string name="settings_weather_refresh_period_subtitle_5">24 часов</string>
<string name="settings_custom_location_title">Местоположение</string>
<string name="custom_location_gps">Использовать геолокацию</string>
<string name="show_weather_visible">Погода отображается</string>
<string name="show_weather_not_visible">Погода не отображается</string>
<string name="settings_weather_app_title">По нажатию на погоду открывать</string>
<string name="settings_weather_provider_api_key_title">Ключ для API погоды</string>
<string name="settings_weather_provider_api_key_subtitle_all_set">Источник данных погоды указан верно</string>
<string name="settings_weather_provider_api_key_subtitle_not_set">Источник данных погоды не настроен</string>
<string name="api_key_hint">Ключ API OpenWeather</string>
<string name="default_weather_app">Google Погода</string>
<string name="weather_warning">Погода Google Awareness устарела. Для отображения погоды в виджете требуется API ключ OpenWeather.</string>
<string name="api_key_title_1">Создайте аккаунт OpenWeather</string>
<string name="api_key_subtitle_1">Создайте бесплатный аккаунт OpenWeather. Это займёт не более нескольких минут.</string>
<string name="api_key_title_2">Скопируйте ключ API</string>
<string name="api_key_subtitle_2">Найдие меню с ключами API в настройках аккаунта и скопируйте ключ.</string>
<string name="api_key_title_3">Введите ключ в приложении</string>
<string name="api_key_subtitle_3">Вставьте ключ в поле выше и сохраните. Как только ключ будет активирован, погода начнёт отображаться.</string>
<string name="action_open_provider">Перейти на OpenWeatherMap.com</string>
<string name="api_key_info_all_set">Активация ключа может занять до десяти минут. Погода обновится как только появится возможность.</string>
<string name="settings_weather_icon_pack_title">Набор иконок</string>
<string name="settings_weather_icon_pack_default">По умолчанию</string>
<string name="settings_weather_icon_pack_minimal">Минималистичный</string>
<!-- Clock -->
<string name="settings_clock_title">Часы</string>
<string name="settings_clock_app_title">По нажатию на часы открывать</string>
<string name="title_show_clock">Отображать часы</string>
<string name="show_clock_visible">Часы отображаются</string>
<string name="show_clock_not_visible">Часы не отображаются</string>
<string name="settings_clock_text_size_title">Размер текста</string>
<string name="default_clock_app">Стандартное приложение часов</string>
<string name="settings_clock_bottom_margin_title">Нижний отступ часов</string>
<string name="settings_clock_bottom_margin_subtitle_none">Нет</string>
<string name="settings_clock_bottom_margin_subtitle_small">Маленький</string>
<string name="settings_clock_bottom_margin_subtitle_medium">Средний</string>
<string name="settings_clock_bottom_margin_subtitle_large">Большой</string>
<string name="clock_warning">В связи с техническими ограничениями часы не могут использовать нестандартные шрифты и тени.</string>
<string name="settings_clock_text_color_title">Цвет текста</string>
<string name="settings_ampm_indicator_title">Показывать AM/PM индикатор</string>
<string name="clock_text_header">Стиль текста часов</string>
<!-- Glance -->
<string name="settings_show_next_alarm_title">Следующий будильник</string>
<string name="next_alarm_warning">Проверьте следующий будильник.\nОн был установлен %s</string>
<string name="settings_at_a_glance_title">Glance</string>
<string name="settings_show_music_title">Воспроизводимая песня</string>
<string name="settings_request_notification_access">Нам необходим доступ к уведомлениям для отображения информации песни.</string>
<string name="settings_request_fitness_access">Нам нужно несколько разрешений для отображения шагов за этот день из Google Fit.</string>
<string name="title_show_glance">Отображение дополнительной информации</string>
<string name="description_show_glance_visible">Сервис включён</string>
<string name="description_show_glance_not_visible">Сервис отключён</string>
<string name="settings_sort_glance_providers_title">Приоритет источников данных</string>
<string name="settings_sort_glance_providers_subtitle">Изменить важность источников данных</string>
<string name="settings_custom_notes_title">Настраеваемые заметки</string>
<string name="settings_low_battery_level_title">Уровень заряда аккумулятора</string>
<string name="settings_daily_steps_title">Шаги за сегодня</string>
<string name="battery_low_warning">Низкий уровень заряда аккумулятора</string>
<string name="daily_steps_counter">%d шагов</string>
<string name="charging">Зарядка</string>
<string name="providers">Операторы</string>
<!-- Settings -->
<string name="action_share">Поделиться</string>
<string name="action_rate">Оценить приложение</string>
<string name="action_support">Поддержите меня</string>
<string name="action_feedback">Обратная связь</string>
<string name="action_about">О разработчике</string>
<string name="action_refresh_widget">Обновить виджет</string>
<string name="error_opening_uri">Ошибка открытия URL: Ссылка скопирована в буфер обмена.</string>
<string name="loading_text">Загрузка данных…</string>
<string name="error_opening_app">Ошибка открытия приложения.</string>
<string name="default_name">Приложение по умолчанию</string>
<string name="action_save">Сохранить</string>
<string name="settings_visible">Отображается</string>
<string name="settings_not_visible">Не отображается</string>
<string name="support_translations_title">Помочь с переводом</string>
<string name="support_translations_subtitle">Открыть GitHub</string>
<string name="support_website_title">Ознакомиться с моими другими проектами</string>
<string name="support_website_subtitle">Тот же разработчик, множество возможностей</string>
<string name="error">Упс, что-то пошло не так!</string>
<string name="settings_theme_title">Тема</string>
<string name="support_main_subtitle">Кофе — это топливо разработчиков</string>
<string name="settings_subtitle_dark_theme_light">Светлая</string>
<string name="settings_subtitle_dark_theme_dark">Тёмная</string>
<string name="settings_subtitle_dark_theme_by_battery_saver">Установлено энергосбережением</string>
<string name="settings_subtitle_dark_theme_follow_system">Следовать системной теме</string>
<string name="settings_subtitle_dark_theme_default">По умолчанию</string>
<string name="search">Поиск</string>
<string name="settings_app_version_title">Версия приложения</string>
<string name="settings_title_show_wallpaper">Показывать обои</string>
<string name="support_refresh_widget_subtitle">Принудительно перезагрузить виджет</string>
<string name="settings_feedback_subtitle">Это проект с открытым исходынм кодом, не ограничивайте себя, если хотите помочь.</string>
<string name="settings_feedback_title">Отзывы и запрос функций</string>
<string name="xiaomi_warning_title">Устройства Xiaomi</string>
<string name="xiaomi_warning_message">Предоставьте разрешение для отображения всплывающих уведомлений в фоновом режиме в разделе "Прочие разрешения" настроек. Иначе вы не сможете открывать приложения по нажатию на виджет.</string>
<string name="action_ignore">Проигнорировать</string>
<string name="action_grant_permission">Предоставьте разрешения</string>
<string name="settings_title">Настройки</string>
<string name="style_header">Стиль</string>
<string name="actions_header">Действия</string>
<string name="provider_header">Настроить</string>
<string name="appearance_header">Появление</string>
<string name="preferences_header">Настройки</string>
<!-- Activities -->
<string name="action_choose_application">Выберите приложение</string>
<string name="support_main_title">Поддержать разработчика</string>
<string name="thanks">Спасибо, что поддерживаете меня!</string>
<string name="donation_coffee">Капучино</string>
<string name="donation_donuts">Пара глазированных пончиков</string>
<string name="donation_dinner">Ужин в Ginza Project</string>
<string name="donation_breakfast">Скромный завтрак</string>
<string name="donation_lunch">Хороший обед</string>
<string name="action_show_widget_preview">Показать превью виджета</string>
<string name="support_dev_subtitle">Этот проект разрабатывает один человек,\nспасибо за поддержку</string>
<string name="settings_title_integrations">Интеграции</string>
<string name="label_count_installed_integrations">%d установленные интеграции</string>
</resources>

View File

@ -1,45 +1,84 @@
<resources> <resources>
<string name="app_name" translatable="false">Another Widget</string> <string name="app_name" translatable="false">Another Widget</string>
<string name="add_widget">Add</string> <string name="add_widget">Add</string>
<string name="main_pre_title" translatable="false">Just</string>
<string name="button_request_permission">Grant permission</string> <!-- Display -->
<string name="title_permission_calendar">Show your events</string> <string name="settings_general_title">Display</string>
<string name="title_permission_location">Show the weather</string>
<string name="description_permission_calendar">Grant access to your calendar\nto view events in your widget.</string>
<string name="description_permission_location">Grant access to your location\nto view weather in your widget.</string>
<string name="notification_title">Get more from your widget</string>
<string name="notification_subtitle">View your events and the weather in Another Widget.</string>
<string name="divider" translatable="false">|</string> <string name="divider" translatable="false">|</string>
<string name="action_share">Share</string> <string name="settings_font_color_title">Text color</string>
<string name="action_rate">Rate app</string> <string name="settings_secondary_font_color_title">Text color</string>
<string name="action_support">Support me</string> <string name="settings_background_color_title">Background color</string>
<string name="all_set_title">Good job!</string> <string name="title_main_text_size">Text size</string>
<string name="all_set_subtitle">You have completed the configuration.\nWatch out for updates.</string> <string name="title_second_text_size">Text size</string>
<string name="all_set_btn">Stay up to date</string> <string name="title_text_shadow">Text shadow</string>
<string name="action_about">About</string> <string name="settings_text_shadow_subtitle_none">None</string>
<string name="h_code">h</string> <string name="settings_text_shadow_subtitle_low">Low</string>
<string name="min_code">" min"</string> <string name="settings_text_shadow_subtitle_high">High</string>
<string name="in_code">in</string> <string name="settings_custom_font_title">Widget font</string>
<string name="action_project">Project</string> <string name="custom_font_subtitle_0">Device font</string>
<string name="settings_unit_title">Unit of measure</string> <string name="custom_font_subtitle_1">Product Sans</string>
<string name="settings_unit_subtitle">Choose the unit of temperature measurement</string> <string name="custom_date_format">Custom date format</string>
<string name="fahrenheit" translatable="false">°F - Fahrenheit</string> <string name="alpha">Alpha</string>
<string name="celsius" translatable="false">°C - Celsius</string> <string name="transparent">Transparent</string>
<string name="settings_show_dividers_title">Show text dividers</string>
<string name="first_row_header">First row</string>
<string name="second_row_header">Second row</string>
<string name="global_style_header">Widget</string>
<string name="action_capitalize_the_date">Capitalize the date</string>
<string name="settings_date_format_title">Date format</string>
<!-- Calendar -->
<string name="settings_calendar_title">Calendar</string>
<string name="title_permission_calendar">Show your events</string>
<string name="description_permission_calendar">Grant access to your calendar\nto view events in your widget.</string>
<string name="settings_filter_calendar_title">Filter events</string> <string name="settings_filter_calendar_title">Filter events</string>
<string name="settings_filter_calendar_subtitle">Change calendar visibility</string> <string name="settings_filter_calendar_subtitle">Change calendar visibility</string>
<string name="settings_all_day_title">All day events</string> <string name="settings_all_day_title">All day events</string>
<string name="settings_all_day_subtitle_visible">Visible</string>
<string name="settings_all_day_subtitle_gone">Hidden</string>
<string name="main_calendar">Account calendar</string> <string name="main_calendar">Account calendar</string>
<string name="settings_calendar_title">Calendar</string>
<string name="settings_weather_title">Weather</string>
<string name="settings_general_title">Display</string>
<string name="calendar_settings_list_error">Error loading the calendar list</string> <string name="calendar_settings_list_error">Error loading the calendar list</string>
<string name="settings_hour_format_title">Hour format</string>
<string name="settings_hour_format_subtitle_12">12 hour</string>
<string name="settings_hour_format_subtitle_24">24 hour</string>
<string name="all_day">All day event</string> <string name="all_day">All day event</string>
<string name="settings_date_format_title">Date format</string> <string name="show_events_visible">Events are visible</string>
<string name="show_events_not_visible">Events are hidden</string>
<string name="settings_show_until_subtitle_6">30 minutes later</string>
<string name="settings_show_until_subtitle_7">1 hour later</string>
<string name="settings_show_until_subtitle_0">3 hours later</string>
<string name="settings_show_until_subtitle_1">6 hours later</string>
<string name="settings_show_until_subtitle_2">12 hours later</string>
<string name="settings_show_until_subtitle_3">24 hours later</string>
<string name="settings_show_until_subtitle_4">3 days later</string>
<string name="settings_show_until_subtitle_5">7 days later</string>
<string name="settings_show_until_title">Show events at least</string>
<string name="day_char">d</string>
<string name="settings_calendar_app_title">Calendar default application</string>
<string name="error_no_calendar">No calendars found.</string>
<string name="tomorrow">tomorrow</string>
<string name="today">today</string>
<string name="settings_event_app_title">Tap on event opens</string>
<string name="settings_second_row_info_title">Event info</string>
<string name="settings_second_row_info_subtitle_1">Event address</string>
<string name="settings_second_row_info_subtitle_0">Event time</string>
<string name="settings_show_diff_time_title">Time left to the event</string>
<string name="settings_show_declined_events_title">Declined events</string>
<string name="default_event_app">Event details</string>
<string name="default_calendar_app">Default calendar app</string>
<string name="settings_show_multiple_events_title">Multiple events switcher</string>
<string name="soon">soon</string>
<string name="now">now</string>
<string name="settings_widget_update_frequency_title">Time left update frequency</string>
<string name="settings_widget_update_frequency_subtitle">High frequency causes more battery consumption</string>
<string name="settings_widget_update_frequency_low">Low</string>
<string name="settings_widget_update_frequency_default">Default</string>
<string name="settings_widget_update_frequency_high">High</string>
<string name="filters_header">Filters</string>
<string name="event_detail_header">Event detail</string>
<!-- Weather -->
<string name="settings_weather_title">Weather</string>
<string name="title_permission_location">Show the weather</string>
<string name="description_permission_location">Grant access to your location\nto view weather in your widget.</string>
<string name="settings_unit_title">Unit of measure</string>
<string name="fahrenheit" translatable="false">°F - Fahrenheit</string>
<string name="celsius" translatable="false">°C - Celsius</string>
<string name="settings_weather_refresh_period_title">Refresh frequency</string> <string name="settings_weather_refresh_period_title">Refresh frequency</string>
<string name="settings_weather_refresh_period_subtitle_0">30 minutes</string> <string name="settings_weather_refresh_period_subtitle_0">30 minutes</string>
<string name="settings_weather_refresh_period_subtitle_1">1 hour</string> <string name="settings_weather_refresh_period_subtitle_1">1 hour</string>
@ -49,124 +88,85 @@
<string name="settings_weather_refresh_period_subtitle_5">24 hours</string> <string name="settings_weather_refresh_period_subtitle_5">24 hours</string>
<string name="settings_custom_location_title">Location</string> <string name="settings_custom_location_title">Location</string>
<string name="custom_location_gps">Use geolocation</string> <string name="custom_location_gps">Use geolocation</string>
<string name="action_refresh_widget">Refresh widget</string> <string name="show_weather_visible">Weather info are visible</string>
<string name="show_events_visible">Events are visible</string> <string name="show_weather_not_visible">Weather info are hidden</string>
<string name="show_events_not_visible">Events are hidden</string>
<string name="show_weather_visible">Weather info is visible</string>
<string name="show_weather_not_visible">Weather info is hidden</string>
<string name="settings_show_until_subtitle_0">3 hours later</string>
<string name="settings_show_until_subtitle_1">6 hours later</string>
<string name="settings_show_until_subtitle_2">12 hours later</string>
<string name="settings_show_until_subtitle_3">24 hours later</string>
<string name="settings_show_until_subtitle_4">3 days later</string>
<string name="settings_show_until_subtitle_5">7 days later</string>
<string name="settings_show_until_title">Show events at least</string>
<string name="day_char">d</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="error_opening_app">Error opening app.</string>
<string name="settings_calendar_app_title">Calendar default application</string>
<string name="settings_weather_app_title">Tap on weather opens</string> <string name="settings_weather_app_title">Tap on weather opens</string>
<string name="default_name">Default app</string>
<string name="action_choose_application">Choose application</string>
<string name="settings_weather_provider_api_key_title">Weather API key</string> <string name="settings_weather_provider_api_key_title">Weather API key</string>
<string name="settings_weather_provider_api_key_subtitle_all_set">The weather provider is configured correctly</string> <string name="settings_weather_provider_api_key_subtitle_all_set">The weather provider is configured correctly</string>
<string name="settings_weather_provider_api_key_subtitle_not_set">The weather provider must be configured</string> <string name="settings_weather_provider_api_key_subtitle_not_set">The weather provider must be configured</string>
<string name="notification_gps_title">Turn location on</string>
<string name="notification_gps_subtitle">Google Awareness needs active GPS to work.</string>
<string name="action_feedback">Feedback</string>
<string name="feedback_title">AW Feedback</string>
<string name="feedback_chooser_title">Send email…</string>
<string name="feedback_error">Error sending email.</string>
<string name="api_key_hint">OpenWeather API Key</string> <string name="api_key_hint">OpenWeather API Key</string>
<string name="error_weather_api_key">The provider is not configured correctly, do you still want to go back?</string> <string name="default_weather_app">Google Weather</string>
<string name="action_save">Save</string> <string name="weather_warning">Google Awareness weather has been deprecated. It\'s now required an OpenWeather API key to show the weather in the widget.</string>
<string name="error_no_calendar">No calendars found.</string>
<string name="api_key_info_title">Instructions</string>
<string name="signature" translatable="false">Toms</string>
<string name="api_key_info_text"><![CDATA[Another Widget is a free application and will remain without banner ads.<BR /><BR />Due to its great success, surely beyond all my expectations, the weather provider fails to support all the requests that arrive (simply because it is free and therefore limited).<BR /><BR />I have to ask each of you to personally register an account on OpenWeather; the operation will take only a few minutes, and when your key has been activated, you will not have any problems with the weather.<BR /><BR />I\'m sorry for the inconvenience, keep supporting me!]]></string>
<string name="api_key_title_1">Register for an OpenWeather Account</string> <string name="api_key_title_1">Register for an OpenWeather Account</string>
<string name="api_key_subtitle_1">Register a free account on OpenWeather. It will only take a few minutes.</string> <string name="api_key_subtitle_1">Register a free account on OpenWeather. It will only take a few minutes.</string>
<string name="api_key_title_2">Copy your API Key</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_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_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="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="api_key_info_start">Hi Everyone!</string>
<string name="action_open_provider">Go to OpenWeatherMap.com</string> <string name="action_open_provider">Go to OpenWeatherMap.com</string>
<string name="api_key_info_all_set"><![CDATA[It may take up to <b>ten minutes</b> before your API key is activated. The weather will be updated as soon as it is available!]]></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="well_done">Well Done!</string> <string name="settings_weather_icon_pack_title">Icon pack</string>
<string name="hs_code">h</string> <string name="settings_weather_icon_pack_default">Default</string>
<string name="tomorrow">tomorrow</string> <string name="settings_weather_icon_pack_minimal">Minimal</string>
<string name="today">today</string>
<string name="settings_event_app_title">Tap on event opens</string> <!-- Clock -->
<string name="settings_second_row_info_title">Second row information</string>
<string name="settings_second_row_info_subtitle_1">Event address</string>
<string name="settings_second_row_info_subtitle_0">Event time</string>
<string name="settings_second_row_info_subtitle_2">Show next alarm time</string>
<string name="settings_font_color_title">First row text color</string>
<string name="settings_secondary_font_color_title">Second row text color</string>
<string name="settings_background_color_title">Background color</string>
<string name="title_main_text_size">First row text size</string>
<string name="title_second_text_size">Second row text size</string>
<string name="provider_open_weather" translatable="false">OpenWeather</string>
<string name="provider_google_awareness" translatable="false">Google Awareness</string>
<string name="settings_clock_title">Clock</string> <string name="settings_clock_title">Clock</string>
<string name="settings_clock_app_title">Tap on clock opens</string> <string name="settings_clock_app_title">Tap on clock opens</string>
<string name="title_show_clock">Show Clock</string> <string name="title_show_clock">Show Clock</string>
<string name="description_show_clock">View the time over events and weather</string> <string name="show_clock_visible">Clock is visible</string>
<string name="show_clock_visible">Clock visibility</string>
<string name="show_clock_not_visible">Clock is hidden</string> <string name="show_clock_not_visible">Clock is hidden</string>
<string name="settings_clock_text_size_title">Clock text size</string> <string name="settings_clock_text_size_title">Text size</string>
<string name="settings_show_next_alarm_title">Next clock Alarm</string> <string name="default_clock_app">Default clock app</string>
<string name="settings_show_next_alarm_subtitle">Show the next clock alarm</string> <string name="settings_clock_bottom_margin_title">Clock bottom margin</string>
<string name="title_text_shadow">Text shadow</string> <string name="settings_clock_bottom_margin_subtitle_none">None</string>
<string name="settings_text_shadow_subtitle_none">None</string> <string name="settings_clock_bottom_margin_subtitle_small">Small</string>
<string name="settings_text_shadow_subtitle_low">Low</string> <string name="settings_clock_bottom_margin_subtitle_medium">Medium</string>
<string name="settings_text_shadow_subtitle_high">High</string> <string name="settings_clock_bottom_margin_subtitle_large">Large</string>
<string name="advanced_settings_title">Advanced</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="beta" translatable="false">Beta</string> <string name="settings_clock_text_color_title">Text color</string>
<string name="settings_product_sans_font_title">Product Sans Font</string> <string name="settings_ampm_indicator_title">Show AM/PM Indicator</string>
<string name="settings_product_sans_font_subtitle">Using Product Sans disabled the possibility to tap widget elements. I\'m working on it.</string> <string name="clock_text_header">Clock text style</string>
<string name="settings_show_diff_time_title">Time left to the event</string>
<!-- Glance -->
<string name="settings_show_next_alarm_title">Next clock alarm</string>
<string name="next_alarm_warning">The next alarm clock seems to be wrong.\nIt has been set by %s.</string>
<string name="settings_at_a_glance_title">Glance</string>
<string name="settings_show_music_title">Current playing song</string>
<string name="settings_request_notification_access">We need the notification access permission to check the current playing song.</string>
<string name="settings_request_fitness_access">We need a few permissions to get your daily steps from Google Fit.</string>
<string name="title_show_glance">Show at a glance info</string>
<string name="description_show_glance_visible">Service enabled</string>
<string name="description_show_glance_not_visible">Service disabled</string>
<string name="settings_sort_glance_providers_title">Data source priority</string>
<string name="settings_sort_glance_providers_subtitle">Change the data provider importance</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="daily_steps_counter">%d steps so far</string>
<string name="charging">Charging</string>
<string name="providers">Providers</string>
<!-- Settings -->
<string name="action_share">Share</string>
<string name="action_rate">Rate app</string>
<string name="action_support">Support me</string>
<string name="action_feedback">Feedback</string>
<string name="action_about">About</string>
<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="error_opening_app">Error opening app.</string>
<string name="default_name">Default app</string>
<string name="action_save">Save</string>
<string name="settings_visible">Visible</string> <string name="settings_visible">Visible</string>
<string name="settings_not_visible">Hidden</string> <string name="settings_not_visible">Hidden</string>
<string name="settings_show_declined_events_title">Declined events</string>
<string name="default_weather_app">Google Weather</string>
<string name="default_event_app">Event details</string>
<string name="default_calendar_app">Default calendar app</string>
<string name="default_clock_app">Default clock app</string>
<string name="settings_show_until_subtitle_7">1 hour later</string>
<string name="settings_show_until_subtitle_6">30 minutes later</string>
<string name="action_default">Default</string>
<string name="action_none">Disabled</string>
<string name="settings_custom_font_title">Widget font</string>
<string name="custom_font_subtitle_0">Device font</string>
<string name="custom_font_subtitle_1">Product Sans</string>
<string name="action_go_to_next_event">Show next\nevent</string>
<string name="settings_show_multiple_events_title">Multiple events switcher</string>
<string name="support_custom_app_name" translatable="false">\"Another\" Developer</string>
<string name="support_main_title">Support the developer</string>
<string name="support_translations_title">Help with translations</string> <string name="support_translations_title">Help with translations</string>
<string name="support_translations_subtitle">Open a pull request on GitHub</string> <string name="support_translations_subtitle">Open a pull request on GitHub</string>
<string name="support_website_title">Check my other projects</string> <string name="support_website_title">Check my other projects</string>
<string name="support_website_subtitle">Same developer, many possibilities</string> <string name="support_website_subtitle">Same developer, many possibilities</string>
<string name="error">Ooops, something went wrong!</string> <string name="error">Ooops, something went wrong!</string>
<string name="thanks">Thanks for supporting me!</string>
<string name="donation_coffee">An italian coffee</string>
<string name="donation_donuts">Some glazed donuts</string>
<string name="donation_dinner">An expensive dinner</string>
<string name="donation_breakfast">An english breakfast</string>
<string name="donation_lunch">A quick lunch</string>
<string name="background_service_title">Another Widget is running</string>
<string name="background_service_subtitle">AW is running in the background</string>
<string name="action_show_widget_preview">Show widget preview</string>
<string name="action_hide_widget_preview">Hide widget preview</string>
<string name="error_widget_notification_title">Location is turned off</string>
<string name="error_widget_notification_subtitle">Turn Location back on so Another Widget can update weather information with Google Awareness API.</string>
<string name="open_location_settings">Location settings</string>
<string name="change_provider">Change provider</string>
<string name="disable_notification">Disable notification</string>
<string name="settings_theme_title">Theme</string> <string name="settings_theme_title">Theme</string>
<string name="support_main_subtitle">Devs always need a lot of coffee</string> <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_light">Light</string>
@ -175,63 +175,34 @@
<string name="settings_subtitle_dark_theme_follow_system">Follow the system theme</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="settings_subtitle_dark_theme_default">Default</string>
<string name="search">Search</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="settings_title_show_wallpaper">Show wallpaper</string>
<string name="support_refresh_widget_subtitle">Force the restart of the widget service</string> <string name="support_refresh_widget_subtitle">Force the restart of the widget service</string>
<string name="account_events">Account events</string>
<string name="clock_warning">Due to technological limitations, the clock won\'t have the custom font and the text shadows selected in the typography section.</string>
<string name="weather_warning">Google Awareness weather has been deprecated. It\'s now required an OpenWeather API key to show the weather in the widget.</string>
<string name="custom_date_format">Custom date format</string>
<string name="settings_app_version_title">App version</string>
<string name="support_dev_subtitle">This is a single developer project,\nso thank you for the support!</string>
<string name="settings_feedback_subtitle">This is an open-source project, feel free to help.</string> <string name="settings_feedback_subtitle">This is an open-source project, feel free to help.</string>
<string name="settings_feedback_title">Feedback and feature requests</string> <string name="settings_feedback_title">Feedback and feature requests</string>
<string name="title_tasksintegration" translatable="false">Google Tasks</string>
<string name="settings_clock_bottom_margin_title">Clock bottom margin</string>
<string name="settings_clock_bottom_margin_subtitle_none">None</string>
<string name="settings_clock_bottom_margin_subtitle_small">Small</string>
<string name="settings_clock_bottom_margin_subtitle_medium">Medium</string>
<string name="settings_clock_bottom_margin_subtitle_large">Large</string>
<string name="xiaomi_manufacturer" translatable="false">xiaomi</string> <string name="xiaomi_manufacturer" translatable="false">xiaomi</string>
<string name="xiaomi_warning_title">Xiaomi Devices</string> <string name="xiaomi_warning_title">Xiaomi Devices</string>
<string name="xiaomi_warning_message">Enable the permission to display pop-up windows when running in the background inside the "Other permission" section of the app settings. Otherwise, you will not able to open any applications tapping on the widget.</string> <string name="xiaomi_warning_message">Enable the permission to display pop-up windows when running in the background inside the "Other permission" section of the app settings. Otherwise, you will not able to open any applications tapping on the widget.</string>
<string name="action_ignore">Ignore</string> <string name="action_ignore">Ignore</string>
<string name="action_grant_permission">Grant permission</string> <string name="action_grant_permission">Grant permission</string>
<string name="alpha">Alpha</string>
<string name="transparent">Transparent</string>
<string name="next_alarm_warning">The next alarm clock seems to be wrong.\nIt has been set by %s.</string>
<string name="settings_title">Settings</string> <string name="settings_title">Settings</string>
<string name="settings_clock_text_color_title">Clock text color</string> <string name="style_header">Style</string>
<string name="settings_at_a_glance_title">Glance</string> <string name="actions_header">Actions</string>
<string name="settings_music_title">Music</string> <string name="provider_header">Setup</string>
<string name="settings_show_music_title">Current playing song</string> <string name="appearance_header">Appearance</string>
<string name="settings_show_music_enabled_subtitle">Show playing song info</string> <string name="preferences_header">Preferences</string>
<string name="settings_show_music_disabled_subtitle">Hide playing song info</string>
<string name="settings_song_info_format_title">Song info format</string> <!-- Activities -->
<string name="settings_request_notification_access">We need the notification access permission to check the current playing song.</string> <string name="action_choose_application">Choose application</string>
<string name="settings_request_fitness_access">We need a few permissions to get your daily steps from Google Fit.</string> <string name="support_main_title">Support the developer</string>
<string name="title_googlefit" translatable="false">Google Fit</string> <string name="thanks">Thanks for supporting me!</string>
<string name="donation_coffee">An italian coffee</string>
<string name="donation_donuts">Some glazed donuts</string>
<string name="donation_dinner">An expensive dinner</string>
<string name="donation_breakfast">An english breakfast</string>
<string name="donation_lunch">A quick lunch</string>
<string name="action_show_widget_preview">Show widget preview</string>
<string name="support_dev_subtitle">This is a single developer project,\nso thank you for the support!</string>
<string name="settings_title_integrations">Integrations</string> <string name="settings_title_integrations">Integrations</string>
<string name="label_count_installed_integrations">%d installed integrations</string> <string name="label_count_installed_integrations">%d installed integrations</string>
<string name="title_show_glance">Show at a glance info</string>
<string name="description_show_glance">Show multiple provider data when there are no events displayed.</string>
<string name="settings_show_dividers_title">Show text dividers</string>
<string name="settings_sort_glance_providers_title">Data source priority</string>
<string name="settings_sort_glance_providers_subtitle">Change the data provider importance</string>
<string name="settings_custom_notes_title">Custom notes</string>
<string name="settings_low_battery_level_title">Battery level</string>
<string name="settings_daily_steps_title">Daily steps</string>
<string name="battery_low_warning">Low battery level</string>
<string name="settings_ampm_indicator_title">Show AM/PM Indicator</string>
<string name="daily_steps_counter">%d steps so far</string>
<string name="soon">soon</string>
<string name="now">now</string>
<string name="settings_widget_update_frequency_title">Time left update frequency</string>
<string name="settings_widget_update_frequency_subtitle">High frequency causes more battery consume</string>
<string name="settings_widget_update_frequency_low">Low</string>
<string name="settings_widget_update_frequency_default">Default</string>
<string name="settings_widget_update_frequency_high">High</string>
<string name="settings_weather_icon_pack_title">Icon pack</string>
<string name="settings_weather_icon_pack_default">Default</string>
<string name="settings_weather_icon_pack_minimal">Minimal</string>
<string name="action_capitalize_the_date">Capitalize the date</string>
</resources> </resources>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
<include domain="sharedpref" path="." />
</full-backup-content>

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
<include domain="sharedpref" path="."/>
</full-backup-content>

View File

@ -1 +0,0 @@
/build

View File

@ -1,25 +0,0 @@
apply plugin: 'com.android.dynamic-feature'
android {
compileSdkVersion 29
defaultConfig {
minSdkVersion 23
targetSdkVersion 29
versionCode 1
versionName "1.0"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':app')
// At a Glance
implementation 'com.google.android.gms:play-services-awareness:18.0.0'
}

View File

@ -1,16 +0,0 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dist="http://schemas.android.com/apk/distribution"
package="com.tommasoberlose.googlefit">
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
<dist:module
dist:instant="false"
dist:title="@string/title_googlefit">
<dist:delivery>
<dist:on-demand />
</dist:delivery>
<dist:fusing dist:include="true" />
</dist:module>
</manifest>