Compare commits
36 Commits
v2.0.9-bet
...
v2.0.11
Author | SHA1 | Date | |
---|---|---|---|
863b8f79d8 | |||
857a8009b6 | |||
9199f28ad9 | |||
ddb1b7494a | |||
fd2b1ba976 | |||
90f0d7de00 | |||
66ad5e0839 | |||
2ac7e072e5 | |||
a3392dabcf | |||
c2c54a04d2 | |||
2c237058b3 | |||
aa2b4b0510 | |||
4c27d1dd9b | |||
eba5575ee2 | |||
aff7e407ca | |||
f7fc31d968 | |||
90b588603d | |||
5d9bd11abb | |||
01005ec443 | |||
eaf6400e8b | |||
30339c7375 | |||
87da284be4 | |||
573c6d03e5 | |||
79e87b0648 | |||
9e9a91690e | |||
5f699af509 | |||
aae40b9dd3 | |||
cebd679856 | |||
06443ddddb | |||
233761a169 | |||
b81461f725 | |||
26b1948b70 | |||
af64818dff | |||
f28596c194 | |||
7f41a92a91 | |||
40c9253159 |
4
.gitignore
vendored
@ -1,12 +1,10 @@
|
||||
*.iml
|
||||
.gradle
|
||||
/local.properties
|
||||
/.idea/workspace.xml
|
||||
/.idea/libraries
|
||||
/.idea/*
|
||||
.DS_Store
|
||||
/build
|
||||
/captures
|
||||
.externalNativeBuild
|
||||
/tasksintegration/build
|
||||
apikey.properties
|
||||
/app/google-services.json
|
||||
|
BIN
.idea/caches/build_file_checksums.ser
generated
@ -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.
|
||||
<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
|
||||
-------
|
||||
Copyright (C) 2017-2020 Tommaso Berlose (http://tommasoberlose.com)
|
||||
|
@ -10,10 +10,6 @@ apply plugin: 'kotlin-android-extensions'
|
||||
|
||||
apply plugin: 'realm-android'
|
||||
|
||||
def apiKeyPropertiesFile = rootProject.file("apikey.properties")
|
||||
def apiKeyProperties = new Properties()
|
||||
apiKeyProperties.load(new FileInputStream(apiKeyPropertiesFile))
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
buildToolsVersion "29.0.3"
|
||||
@ -22,12 +18,10 @@ android {
|
||||
applicationId "com.tommasoberlose.anotherwidget"
|
||||
minSdkVersion 23
|
||||
targetSdkVersion 29
|
||||
versionCode 90
|
||||
versionName "2.0.9"
|
||||
versionCode 100
|
||||
versionName "2.0.11"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
manifestPlaceholders = [ "AWARENESS_API_KEY": apiKeyProperties['AWARENESS_API_KEY']]
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
|
@ -17,7 +17,6 @@
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:fullBackupContent="@xml/my_backup_rules"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:name=".AWApplication"
|
||||
@ -25,7 +24,7 @@
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
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>
|
||||
<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.BatteryListenerJob" android:permission="android.permission.BIND_JOB_SERVICE" />
|
||||
|
||||
<service android:name=".receivers.MusicNotificationListener"
|
||||
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
|
||||
<intent-filter>
|
||||
@ -131,6 +132,7 @@
|
||||
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
|
||||
<action android:name="android.intent.action.BATTERY_LOW"/>
|
||||
<action android:name="android.intent.action.BATTERY_OKAY"/>
|
||||
<action android:name="android.intent.action.BATTERY_CHANGED"/>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
|
@ -22,6 +22,12 @@ class EventRepository(val context: Context) {
|
||||
}
|
||||
}
|
||||
|
||||
fun clearEvents() {
|
||||
realm.executeTransaction { realm ->
|
||||
realm.where(Event::class.java).findAll().deleteAllFromRealm()
|
||||
}
|
||||
}
|
||||
|
||||
fun resetNextEventData() {
|
||||
Preferences.bulk {
|
||||
remove(Preferences::nextEventId)
|
||||
@ -40,7 +46,22 @@ class EventRepository(val context: Context) {
|
||||
|
||||
fun getNextEvent(): Event? {
|
||||
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
|
||||
} else {
|
||||
val events = getEvents()
|
||||
@ -101,12 +122,32 @@ class EventRepository(val context: Context) {
|
||||
MainWidget.updateWidget(context)
|
||||
}
|
||||
|
||||
fun getEvents(): RealmResults<Event> {
|
||||
fun getFutureEvents(): RealmResults<Event> {
|
||||
val now = Calendar.getInstance().timeInMillis
|
||||
realm.refresh()
|
||||
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 close() {
|
||||
|
@ -31,6 +31,8 @@ object Constants {
|
||||
|
||||
enum class WeatherIconPack(val value: Int) {
|
||||
DEFAULT(0),
|
||||
MINIMAL(1)
|
||||
MINIMAL(1),
|
||||
COOL(2),
|
||||
GOOGLE_NEWS(3)
|
||||
}
|
||||
}
|
@ -91,6 +91,7 @@ object Preferences : KotprefModel() {
|
||||
var showNextAlarm by booleanPref(default = true)
|
||||
var showBatteryCharging by booleanPref(default = false)
|
||||
var isBatteryLevelLow by booleanPref(default = false)
|
||||
var isCharging by booleanPref(default = false)
|
||||
var googleFitSteps by longPref(default = -1)
|
||||
var showDailySteps by booleanPref(default = false)
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@ -37,23 +37,11 @@ object CalendarHelper {
|
||||
set(Calendar.MINUTE, 0)
|
||||
set(Calendar.HOUR_OF_DAY, 0)
|
||||
}
|
||||
val limit = Calendar.getInstance()
|
||||
when (Preferences.showUntil) {
|
||||
0 -> limit.add(Calendar.HOUR, 3)
|
||||
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 limit = Calendar.getInstance().apply {
|
||||
timeInMillis = begin.timeInMillis
|
||||
add(Calendar.DAY_OF_YEAR, 2)
|
||||
}
|
||||
|
||||
val builder = CalendarContract.Instances.CONTENT_URI.buildUpon()
|
||||
ContentUris.appendId(builder, begin.timeInMillis)
|
||||
ContentUris.appendId(builder, limit.timeInMillis)
|
||||
|
||||
if (!context.checkGrantedPermission(
|
||||
Manifest.permission.READ_CALENDAR
|
||||
)
|
||||
@ -102,6 +90,7 @@ object CalendarHelper {
|
||||
|
||||
if (eventList.isEmpty()) {
|
||||
eventRepository.resetNextEventData()
|
||||
eventRepository.clearEvents()
|
||||
} else {
|
||||
eventList.sortWith(Comparator { event: Event, event1: Event ->
|
||||
if (event.allDay && event1.allDay) {
|
||||
@ -134,6 +123,7 @@ object CalendarHelper {
|
||||
MainWidget.updateWidget(context)
|
||||
|
||||
EventBus.getDefault().post(MainFragment.UpdateUiMessageEvent())
|
||||
eventRepository.close()
|
||||
}
|
||||
|
||||
fun getCalendarList(context: Context): List<me.everything.providers.android.calendar.Calendar> {
|
||||
|
@ -14,7 +14,6 @@ object GlanceProviderHelper {
|
||||
val enabledProviders = Preferences.enabledGlanceProviderOrder.split(",").filter { it != "" }
|
||||
|
||||
val providers = Constants.GlanceProviderId.values()
|
||||
.filter { it != Constants.GlanceProviderId.BATTERY_LEVEL_LOW }
|
||||
.filter {
|
||||
context.checkIfFitInstalled() || it != Constants.GlanceProviderId.GOOGLE_FIT_STEPS
|
||||
}.toTypedArray()
|
||||
@ -68,7 +67,7 @@ object GlanceProviderHelper {
|
||||
Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> {
|
||||
GlanceProvider(providerId.id,
|
||||
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 {
|
||||
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) != "") ||
|
||||
(MediaPlayerHelper.isSomeonePlaying(context)) ||
|
||||
(Preferences.isBatteryLevelLow) ||
|
||||
(Preferences.showBatteryCharging && Preferences.isCharging || Preferences.isBatteryLevelLow) ||
|
||||
(Preferences.customNotes.isNotEmpty()) ||
|
||||
(Preferences.showDailySteps && Preferences.googleFitSteps > 0)
|
||||
)
|
||||
eventRepository.close()
|
||||
return showGlance
|
||||
}
|
||||
}
|
@ -114,6 +114,7 @@ object IntentHelper {
|
||||
if (Preferences.calendarAppPackage == "") {
|
||||
Intent(Intent.ACTION_VIEW).apply {
|
||||
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) {
|
||||
putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, e.startDate)
|
||||
putExtra(CalendarContract.EXTRA_EVENT_END_TIME, e.endDate)
|
||||
@ -182,6 +183,10 @@ object IntentHelper {
|
||||
}
|
||||
}
|
||||
|
||||
fun getBatteryIntent(): Intent {
|
||||
return Intent(Intent.ACTION_POWER_USAGE_SUMMARY)
|
||||
}
|
||||
|
||||
fun getMusicIntent(context: Context): Intent {
|
||||
return when (Preferences.mediaPlayerPackage) {
|
||||
"" -> {
|
||||
|
@ -86,7 +86,22 @@ object SettingsStringHelper {
|
||||
return context.getString(R.string.now)
|
||||
}
|
||||
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 -> {
|
||||
return String.format("%s", context.getString(R.string.tomorrow))
|
||||
|
@ -5,7 +5,6 @@ import android.content.Context
|
||||
import android.os.Build
|
||||
import com.google.android.gms.location.LocationServices
|
||||
import com.tommasoberlose.anotherwidget.R
|
||||
import com.tommasoberlose.anotherwidget.db.EventRepository
|
||||
import com.tommasoberlose.anotherwidget.global.Constants
|
||||
import com.tommasoberlose.anotherwidget.global.Preferences
|
||||
import com.tommasoberlose.anotherwidget.network.WeatherNetworkApi
|
||||
@ -48,81 +47,201 @@ object WeatherHelper {
|
||||
}
|
||||
|
||||
fun getWeatherIconResource(icon: String): Int {
|
||||
when (icon) {
|
||||
return when (icon) {
|
||||
"01d" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.clear_day else R.drawable.clear_day_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.clear_day_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.clear_day_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.clear_day_4
|
||||
else -> R.drawable.clear_day
|
||||
}
|
||||
}
|
||||
"02d" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.partly_cloudy else R.drawable.partly_cloudy_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.partly_cloudy_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.partly_cloudy_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.partly_cloudy_4
|
||||
else -> R.drawable.partly_cloudy
|
||||
}
|
||||
}
|
||||
"03d" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.mostly_cloudy else R.drawable.mostly_cloudy_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.mostly_cloudy_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.mostly_cloudy_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.mostly_cloudy_4
|
||||
else -> R.drawable.mostly_cloudy
|
||||
}
|
||||
}
|
||||
"04d" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.cloudy_weather else R.drawable.cloudy_weather_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.cloudy_weather_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.cloudy_weather_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.cloudy_weather_4
|
||||
else -> R.drawable.cloudy_weather
|
||||
}
|
||||
}
|
||||
"09d" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.storm_weather_day else R.drawable.storm_weather_day_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.storm_weather_day_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.storm_weather_day_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.storm_weather_day_4
|
||||
else -> R.drawable.storm_weather_day
|
||||
}
|
||||
}
|
||||
"10d" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.rainy_day else R.drawable.rainy_day_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.rainy_day_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.rainy_day_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.rainy_day_4
|
||||
else -> R.drawable.rainy_day
|
||||
}
|
||||
}
|
||||
"11d" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.thunder_day else R.drawable.thunder_day_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.thunder_day_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.thunder_day_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.thunder_day_4
|
||||
else -> R.drawable.thunder_day
|
||||
}
|
||||
}
|
||||
"13d" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.snow_day else R.drawable.snow_day_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.snow_day_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.snow_day_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.snow_day_4
|
||||
else -> R.drawable.snow_day
|
||||
}
|
||||
}
|
||||
"50d" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.haze_day else R.drawable.haze_day_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.haze_day_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.haze_day_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.haze_day_4
|
||||
else -> R.drawable.haze_day
|
||||
}
|
||||
}
|
||||
"80d" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.windy_day else R.drawable.windy_day_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.windy_day_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.windy_day_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.windy_day_4
|
||||
else -> R.drawable.windy_day
|
||||
}
|
||||
}
|
||||
"81d" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.rain_snow_day else R.drawable.rain_snow_day_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.rain_snow_day_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.rain_snow_day_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.rain_snow_day_4
|
||||
else -> R.drawable.rain_snow_day
|
||||
}
|
||||
}
|
||||
"82d" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.haze_weather else R.drawable.haze_weather_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.haze_weather_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.haze_weather_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.haze_weather_4
|
||||
else -> R.drawable.haze_weather
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
"01n" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.clear_night else R.drawable.clear_night_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.clear_night_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.clear_night_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.clear_night_4
|
||||
else -> R.drawable.clear_night
|
||||
}
|
||||
}
|
||||
"02n" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.partly_cloudy_night else R.drawable.partly_cloudy_night_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.partly_cloudy_night_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.partly_cloudy_night_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.partly_cloudy_night_4
|
||||
else -> R.drawable.partly_cloudy_night
|
||||
}
|
||||
}
|
||||
"03n" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.mostly_cloudy_night else R.drawable.mostly_cloudy_night_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.mostly_cloudy_night_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.mostly_cloudy_night_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.mostly_cloudy_night_4
|
||||
else -> R.drawable.mostly_cloudy_night
|
||||
}
|
||||
}
|
||||
"04n" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.cloudy_weather else R.drawable.cloudy_weather_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.cloudy_weather_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.cloudy_weather_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.cloudy_weather_4
|
||||
else -> R.drawable.cloudy_weather
|
||||
}
|
||||
}
|
||||
"09n" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.storm_weather_night else R.drawable.storm_weather_night_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.storm_weather_night_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.storm_weather_night_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.storm_weather_night_4
|
||||
else -> R.drawable.storm_weather_night
|
||||
}
|
||||
}
|
||||
"10n" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.rainy_night else R.drawable.rainy_night_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.rainy_night_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.rainy_night_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.rainy_night_4
|
||||
else -> R.drawable.rainy_night
|
||||
}
|
||||
}
|
||||
"11n" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.thunder_night else R.drawable.thunder_night_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.thunder_night_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.thunder_night_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.thunder_night_4
|
||||
else -> R.drawable.thunder_night
|
||||
}
|
||||
}
|
||||
"13n" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.snow_night else R.drawable.snow_night_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.snow_night_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.snow_night_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.snow_night_4
|
||||
else -> R.drawable.snow_night
|
||||
}
|
||||
}
|
||||
"50n" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.haze_night else R.drawable.haze_night_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.haze_night_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.haze_night_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.haze_night_4
|
||||
else -> R.drawable.haze_night
|
||||
}
|
||||
}
|
||||
"80n" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.windy_night else R.drawable.windy_night_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.windy_night_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.windy_night_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.windy_night_4
|
||||
else -> R.drawable.windy_night
|
||||
}
|
||||
}
|
||||
"81n" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.rain_snow_night else R.drawable.rain_snow_night_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.rain_snow_night_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.rain_snow_night_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.rain_snow_night_4
|
||||
else -> R.drawable.rain_snow_night
|
||||
}
|
||||
}
|
||||
"82n" -> {
|
||||
return if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) R.drawable.haze_weather else R.drawable.haze_weather_2
|
||||
when (Preferences.weatherIconPack) {
|
||||
Constants.WeatherIconPack.COOL.value -> R.drawable.haze_weather_3
|
||||
Constants.WeatherIconPack.MINIMAL.value -> R.drawable.haze_weather_2
|
||||
Constants.WeatherIconPack.GOOGLE_NEWS.value -> R.drawable.haze_weather_4
|
||||
else -> R.drawable.haze_weather
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
return R.drawable.unknown
|
||||
|
@ -7,12 +7,15 @@ import android.os.BatteryManager
|
||||
import android.util.Log
|
||||
import com.tommasoberlose.anotherwidget.global.Preferences
|
||||
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
|
||||
import com.tommasoberlose.anotherwidget.utils.toast
|
||||
|
||||
class BatteryLevelReceiver : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
when(intent.action) {
|
||||
Intent.ACTION_BATTERY_LOW -> Preferences.isBatteryLevelLow = true
|
||||
Intent.ACTION_BATTERY_OKAY -> Preferences.isBatteryLevelLow = false
|
||||
Intent.ACTION_POWER_CONNECTED -> Preferences.isCharging = true
|
||||
Intent.ACTION_POWER_DISCONNECTED -> Preferences.isCharging = false
|
||||
}
|
||||
MainWidget.updateWidget(context)
|
||||
}
|
||||
|
@ -24,5 +24,6 @@ class NewCalendarEventReceiver : BroadcastReceiver() {
|
||||
eventRepository.goToPreviousEvent()
|
||||
}
|
||||
}
|
||||
eventRepository.close()
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import com.tommasoberlose.anotherwidget.db.EventRepository
|
||||
import com.tommasoberlose.anotherwidget.global.Actions
|
||||
import com.tommasoberlose.anotherwidget.global.Constants
|
||||
import com.tommasoberlose.anotherwidget.global.Preferences
|
||||
import com.tommasoberlose.anotherwidget.helpers.BatteryHelper
|
||||
import com.tommasoberlose.anotherwidget.helpers.CalendarHelper
|
||||
import com.tommasoberlose.anotherwidget.models.Event
|
||||
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
|
||||
@ -28,10 +29,12 @@ class UpdatesReceiver : BroadcastReceiver() {
|
||||
Intent.ACTION_TIME_CHANGED,
|
||||
Intent.ACTION_TIMEZONE_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",
|
||||
Intent.ACTION_DATE_CHANGED,
|
||||
AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED,
|
||||
Actions.ACTION_TIME_UPDATE -> {
|
||||
MainWidget.updateWidget(context)
|
||||
@ -50,7 +53,7 @@ class UpdatesReceiver : BroadcastReceiver() {
|
||||
if (eventId == null) {
|
||||
removeUpdates(context)
|
||||
|
||||
eventRepository.getEvents().forEach { event ->
|
||||
eventRepository.getFutureEvents().forEach { event ->
|
||||
setEventUpdate(context, event)
|
||||
}
|
||||
} else {
|
||||
@ -59,6 +62,7 @@ class UpdatesReceiver : BroadcastReceiver() {
|
||||
setEventUpdate(context, event)
|
||||
}
|
||||
}
|
||||
eventRepository.close()
|
||||
}
|
||||
|
||||
private fun setEventUpdate(context: Context, event: Event) {
|
||||
@ -68,65 +72,92 @@ class UpdatesReceiver : BroadcastReceiver() {
|
||||
set(Calendar.MILLISECOND, 0)
|
||||
}
|
||||
val diff = Period(now.timeInMillis, event.startDate)
|
||||
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
|
||||
val limit = when (Preferences.showUntil) {
|
||||
0 -> 1000 * 60 * 60 * 3
|
||||
1 -> 1000 * 60 * 60 * 6
|
||||
2 -> 1000 * 60 * 60 * 12
|
||||
3 -> 1000 * 60 * 60 * 24
|
||||
4 -> 1000 * 60 * 60 * 24 * 3
|
||||
5 -> 1000 * 60 * 60 * 24 * 7
|
||||
6 -> 1000 * 60 * 30
|
||||
7 -> 1000 * 60 * 60
|
||||
else -> 1000 * 60 * 60 * 6
|
||||
}
|
||||
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 -> {
|
||||
minutes = diff.minutes - (diff.minutes % 5)
|
||||
}
|
||||
}
|
||||
setExact(
|
||||
AlarmManager.RTC,
|
||||
if (event.startDate - minutes * 1000 * 60 > (now.timeInMillis + 120 * 1000)) event.startDate - 60 * 1000 * minutes else now.timeInMillis + 120000,
|
||||
PendingIntent.getBroadcast(
|
||||
context,
|
||||
event.eventID.toInt(),
|
||||
Intent(context, UpdatesReceiver::class.java).apply {
|
||||
action = Actions.ACTION_TIME_UPDATE
|
||||
putExtra(EVENT_ID, event.eventID)
|
||||
},
|
||||
0
|
||||
setExact(
|
||||
AlarmManager.RTC,
|
||||
if (event.startDate - minutes * 1000 * 60 > (now.timeInMillis + 120 * 1000)) event.startDate - 60 * 1000 * minutes else now.timeInMillis + 120000,
|
||||
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 {
|
||||
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 {
|
||||
// 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(
|
||||
AlarmManager.RTC,
|
||||
event.startDate - diff.hours * 1000 * 60 * 60,
|
||||
fireTime,
|
||||
PendingIntent.getBroadcast(
|
||||
context,
|
||||
event.eventID.toInt(),
|
||||
Intent(context, UpdatesReceiver::class.java).apply {
|
||||
action = Actions.ACTION_TIME_UPDATE
|
||||
putExtra(EVENT_ID, event.eventID)
|
||||
},
|
||||
0
|
||||
)
|
||||
)
|
||||
}
|
||||
} 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(
|
||||
AlarmManager.RTC,
|
||||
fireTime,
|
||||
if (event.startDate - limit > now.timeInMillis + 120 * 1000) event.startDate - limit else now.timeInMillis + 120000,
|
||||
PendingIntent.getBroadcast(
|
||||
context,
|
||||
event.eventID.toInt(),
|
||||
Intent(context, UpdatesReceiver::class.java).apply {
|
||||
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) {
|
||||
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))
|
||||
}
|
||||
eventRepository.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@ -76,7 +76,9 @@ class MainActivity : AppCompatActivity() {
|
||||
viewModel = ViewModelProvider(this).get(MainViewModel::class.java)
|
||||
|
||||
controlExtras(intent)
|
||||
requirePermission()
|
||||
if (Preferences.showWallpaper) {
|
||||
requirePermission()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
|
@ -6,6 +6,7 @@ import android.location.Address
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.isVisible
|
||||
@ -45,8 +46,17 @@ class SupportDevActivity : AppCompatActivity(), PurchasesUpdatedListener {
|
||||
adapter = SlimAdapter.create()
|
||||
adapter
|
||||
.register<SkuDetails>(R.layout.inapp_product_layout) { item, injector ->
|
||||
item.sku
|
||||
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)
|
||||
.clicked(R.id.item) {
|
||||
viewModel.purchase(this, item)
|
||||
|
@ -32,11 +32,6 @@ class WeatherProviderActivity : AppCompatActivity() {
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ class CalendarTabFragment : Fragment() {
|
||||
viewModel.calendarAllDay.observe(viewLifecycleOwner, Observer {
|
||||
maintainScrollPosition {
|
||||
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()
|
||||
})
|
||||
@ -215,7 +215,7 @@ class CalendarTabFragment : Fragment() {
|
||||
}
|
||||
|
||||
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
|
||||
)
|
||||
}
|
||||
@ -232,8 +232,8 @@ class CalendarTabFragment : Fragment() {
|
||||
action_show_all_day.setOnClickListener {
|
||||
if (Preferences.showEvents) {
|
||||
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_all_day_subtitle_gone), false)
|
||||
.addItem(getString(R.string.settings_visible), true)
|
||||
.addItem(getString(R.string.settings_not_visible), false)
|
||||
.addOnSelectItemListener { value ->
|
||||
Preferences.calendarAllDay = value
|
||||
}.show()
|
||||
@ -300,7 +300,7 @@ class CalendarTabFragment : Fragment() {
|
||||
action_show_until.setOnClickListener {
|
||||
if (Preferences.showEvents) {
|
||||
val dialog = BottomSheetMenu<Int>(requireContext(), header = getString(R.string.settings_show_until_title)).setSelectedValue(Preferences.showUntil)
|
||||
intArrayOf(6,7,0,1,2,3).forEach {
|
||||
intArrayOf(6,7,0,1,2,3, 4, 5).forEach {
|
||||
dialog.addItem(getString(SettingsStringHelper.getShowUntilString(it)), it)
|
||||
}
|
||||
dialog.addOnSelectItemListener { value ->
|
||||
|
@ -251,24 +251,22 @@ class GeneralTabFragment : Fragment() {
|
||||
}
|
||||
|
||||
action_date_format.setOnClickListener {
|
||||
if (Preferences.showEvents) {
|
||||
val now = Calendar.getInstance()
|
||||
val dialog = BottomSheetMenu<String>(requireContext(), header = getString(R.string.settings_date_format_title)).setSelectedValue(Preferences.dateFormat)
|
||||
val now = Calendar.getInstance()
|
||||
val dialog = BottomSheetMenu<String>(requireContext(), header = getString(R.string.settings_date_format_title)).setSelectedValue(Preferences.dateFormat)
|
||||
|
||||
dialog.addItem(DateHelper.getDefaultDateText(requireContext(), now), "")
|
||||
if (Preferences.dateFormat != "") {
|
||||
dialog.addItem(DateHelper.getDateText(requireContext(), now), Preferences.dateFormat)
|
||||
}
|
||||
dialog.addItem(getString(R.string.custom_date_format), "-")
|
||||
|
||||
dialog.addOnSelectItemListener { value ->
|
||||
if (value == "-") {
|
||||
startActivity(Intent(requireContext(), CustomDateActivity::class.java))
|
||||
} else {
|
||||
Preferences.dateFormat = value
|
||||
}
|
||||
}.show()
|
||||
dialog.addItem(DateHelper.getDefaultDateText(requireContext(), now), "")
|
||||
if (Preferences.dateFormat != "") {
|
||||
dialog.addItem(DateHelper.getDateText(requireContext(), now), Preferences.dateFormat)
|
||||
}
|
||||
dialog.addItem(getString(R.string.custom_date_format), "-")
|
||||
|
||||
dialog.addOnSelectItemListener { value ->
|
||||
if (value == "-") {
|
||||
startActivity(Intent(requireContext(), CustomDateActivity::class.java))
|
||||
} else {
|
||||
Preferences.dateFormat = value
|
||||
}
|
||||
}.show()
|
||||
}
|
||||
|
||||
action_background_color.setOnClickListener {
|
||||
@ -321,7 +319,7 @@ class GeneralTabFragment : Fragment() {
|
||||
}
|
||||
|
||||
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_not_visible), false)
|
||||
.addOnSelectItemListener { value ->
|
||||
|
@ -44,6 +44,7 @@ import com.tommasoberlose.anotherwidget.ui.activities.MainActivity
|
||||
import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel
|
||||
import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission
|
||||
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_glance_settings.*
|
||||
import kotlinx.android.synthetic.main.fragment_glance_settings.scrollView
|
||||
@ -97,6 +98,7 @@ class GlanceTabFragment : Fragment() {
|
||||
viewModel.showGlance.observe(viewLifecycleOwner, Observer {
|
||||
maintainScrollPosition {
|
||||
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 {
|
||||
if (Preferences.showGlance) {
|
||||
BottomSheetMenu<Boolean>(
|
||||
@ -231,8 +249,7 @@ class GlanceTabFragment : Fragment() {
|
||||
} catch (e: Exception) {
|
||||
alarm.showIntent?.creatorPackage ?: ""
|
||||
}
|
||||
show_next_alarm_warning.text =
|
||||
getString(R.string.next_alarm_warning).format(appNameOrPackage)
|
||||
show_next_alarm_warning.text = getString(R.string.next_alarm_warning).format(appNameOrPackage)
|
||||
} else {
|
||||
show_next_alarm_label?.text = if (Preferences.showNextAlarm) getString(R.string.settings_visible) else getString(
|
||||
R.string.settings_not_visible)
|
||||
|
@ -36,6 +36,7 @@ import com.tommasoberlose.anotherwidget.helpers.BitmapHelper
|
||||
import com.tommasoberlose.anotherwidget.helpers.ColorHelper
|
||||
import com.tommasoberlose.anotherwidget.helpers.ColorHelper.isColorDark
|
||||
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.viewmodels.MainViewModel
|
||||
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
|
||||
@ -145,7 +146,7 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
|
||||
ColorHelper.getBackgroundColor()
|
||||
)
|
||||
)
|
||||
uiJob = viewLifecycleOwner.lifecycleScope.launch(Dispatchers.IO) {
|
||||
uiJob = lifecycleScope.launch(Dispatchers.IO) {
|
||||
val generatedView = MainWidget.generateWidgetView(requireContext())
|
||||
|
||||
withContext(Dispatchers.Main) {
|
||||
@ -186,7 +187,7 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
|
||||
clock_bottom_margin_large?.isVisible =
|
||||
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) {
|
||||
time_container?.layoutParams = time_container.layoutParams.apply {
|
||||
height = RelativeLayout.LayoutParams.WRAP_CONTENT
|
||||
@ -230,10 +231,12 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
|
||||
).apply {
|
||||
duration = 500L
|
||||
addUpdateListener {
|
||||
val animatedValue = animatedValue as Int
|
||||
val layoutParams = preview.layoutParams
|
||||
layoutParams.height = animatedValue
|
||||
preview.layoutParams = layoutParams
|
||||
if (preview != null) {
|
||||
val animatedValue = animatedValue as Int
|
||||
val layoutParams = preview.layoutParams
|
||||
layoutParams.height = animatedValue
|
||||
preview.layoutParams = layoutParams
|
||||
}
|
||||
}
|
||||
}.start()
|
||||
}
|
||||
@ -253,10 +256,12 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
|
||||
).apply {
|
||||
duration = 300L
|
||||
addUpdateListener {
|
||||
val animatedValue = animatedValue as Int
|
||||
val layoutParams = preview.layoutParams
|
||||
layoutParams.height = animatedValue
|
||||
preview?.layoutParams = layoutParams
|
||||
if (preview != null) {
|
||||
val animatedValue = animatedValue as Int
|
||||
val layoutParams = preview.layoutParams
|
||||
layoutParams.height = animatedValue
|
||||
preview?.layoutParams = layoutParams
|
||||
}
|
||||
}
|
||||
}.start()
|
||||
}
|
||||
@ -278,10 +283,12 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
|
||||
).apply {
|
||||
duration = 300L
|
||||
addUpdateListener {
|
||||
val animatedValue = animatedValue as Int
|
||||
val layoutParams = preview.layoutParams
|
||||
layoutParams.height = animatedValue
|
||||
preview.layoutParams = layoutParams
|
||||
if (preview != null) {
|
||||
val animatedValue = animatedValue as Int
|
||||
val layoutParams = preview.layoutParams
|
||||
layoutParams.height = animatedValue
|
||||
preview.layoutParams = layoutParams
|
||||
}
|
||||
}
|
||||
}.start()
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.os.BuildCompat
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.fragment.app.Fragment
|
||||
@ -28,7 +29,9 @@ import com.tommasoberlose.anotherwidget.databinding.FragmentWeatherSettingsBindi
|
||||
import com.tommasoberlose.anotherwidget.global.Constants
|
||||
import com.tommasoberlose.anotherwidget.global.Preferences
|
||||
import com.tommasoberlose.anotherwidget.global.RequestCode
|
||||
import com.tommasoberlose.anotherwidget.helpers.ColorHelper
|
||||
import com.tommasoberlose.anotherwidget.helpers.SettingsStringHelper
|
||||
import com.tommasoberlose.anotherwidget.helpers.WeatherHelper
|
||||
import com.tommasoberlose.anotherwidget.receivers.WeatherReceiver
|
||||
import com.tommasoberlose.anotherwidget.ui.activities.ChooseApplicationActivity
|
||||
import com.tommasoberlose.anotherwidget.ui.activities.CustomLocationActivity
|
||||
@ -129,9 +132,12 @@ class WeatherTabFragment : Fragment() {
|
||||
|
||||
viewModel.weatherIconPack.observe(viewLifecycleOwner, Observer {
|
||||
maintainScrollPosition {
|
||||
label_weather_icon_pack?.text = when (it) {
|
||||
Constants.WeatherIconPack.MINIMAL.value -> getString(R.string.settings_weather_icon_pack_minimal)
|
||||
else -> getString(R.string.settings_weather_icon_pack_default)
|
||||
label_weather_icon_pack?.text = getString(R.string.settings_weather_icon_pack_default).format((it + 1))
|
||||
weather_icon_pack.setImageDrawable(ContextCompat.getDrawable(requireContext(), WeatherHelper.getWeatherIconResource("01d")))
|
||||
if (it == Constants.WeatherIconPack.MINIMAL.value) {
|
||||
weather_icon_pack.setColorFilter(ContextCompat.getColor(requireContext(), R.color.colorPrimaryText))
|
||||
} else {
|
||||
weather_icon_pack.setColorFilter(ContextCompat.getColor(requireContext(), android.R.color.transparent))
|
||||
}
|
||||
}
|
||||
checkLocationPermission()
|
||||
@ -230,12 +236,13 @@ class WeatherTabFragment : Fragment() {
|
||||
|
||||
action_weather_icon_pack.setOnClickListener {
|
||||
if (Preferences.showWeather) {
|
||||
BottomSheetMenu<Int>(requireContext(), header = getString(R.string.settings_weather_icon_pack_title)).setSelectedValue(Preferences.weatherIconPack)
|
||||
.addItem(getString(R.string.settings_weather_icon_pack_default), Constants.WeatherIconPack.DEFAULT.value)
|
||||
.addItem(getString(R.string.settings_weather_icon_pack_minimal), Constants.WeatherIconPack.MINIMAL.value)
|
||||
.addOnSelectItemListener { value ->
|
||||
Preferences.weatherIconPack = value
|
||||
}.show()
|
||||
val dialog = BottomSheetMenu<Int>(requireContext(), header = getString(R.string.settings_weather_icon_pack_title)).setSelectedValue(Preferences.weatherIconPack)
|
||||
Constants.WeatherIconPack.values().forEach {
|
||||
dialog.addItem(getString(R.string.settings_weather_icon_pack_default).format(it.value + 1), it.value)
|
||||
}
|
||||
dialog.addOnSelectItemListener { value ->
|
||||
Preferences.weatherIconPack = value
|
||||
}.show()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,6 +36,7 @@ import java.text.DateFormat
|
||||
import java.util.*
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.math.min
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
|
||||
class MainWidget : AppWidgetProvider() {
|
||||
@ -111,7 +112,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
context,
|
||||
appWidgetId,
|
||||
IntentHelper.getWidgetUpdateIntent(context),
|
||||
0
|
||||
PendingIntent.FLAG_UPDATE_CURRENT
|
||||
)
|
||||
views.setOnClickPendingIntent(R.id.widget_shape_background, refreshIntent)
|
||||
} catch (ex: Exception) {
|
||||
@ -140,9 +141,8 @@ class MainWidget : AppWidgetProvider() {
|
||||
}
|
||||
|
||||
private fun updateCalendarView(context: Context, v: View, views: RemoteViews, widgetID: Int): RemoteViews {
|
||||
val eventRepository = EventRepository(context)
|
||||
try {
|
||||
val eventRepository = EventRepository(context)
|
||||
|
||||
views.setImageViewBitmap(
|
||||
R.id.empty_date_rect,
|
||||
BitmapHelper.getBitmapFromView(v.empty_date, draw = false)
|
||||
@ -157,7 +157,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
context,
|
||||
widgetID,
|
||||
IntentHelper.getCalendarIntent(context),
|
||||
0
|
||||
PendingIntent.FLAG_UPDATE_CURRENT
|
||||
)
|
||||
views.setOnClickPendingIntent(R.id.empty_date_rect, calPIntent)
|
||||
|
||||
@ -180,7 +180,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
context,
|
||||
NewCalendarEventReceiver::class.java
|
||||
).apply { action = Actions.ACTION_GO_TO_NEXT_EVENT },
|
||||
0
|
||||
PendingIntent.FLAG_UPDATE_CURRENT
|
||||
)
|
||||
)
|
||||
|
||||
@ -198,7 +198,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
context,
|
||||
NewCalendarEventReceiver::class.java
|
||||
).apply { action = Actions.ACTION_GO_TO_PREVIOUS_EVENT },
|
||||
0
|
||||
PendingIntent.FLAG_UPDATE_CURRENT
|
||||
)
|
||||
)
|
||||
} else {
|
||||
@ -210,7 +210,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
context,
|
||||
widgetID,
|
||||
IntentHelper.getEventIntent(context, nextEvent),
|
||||
0
|
||||
PendingIntent.FLAG_UPDATE_CURRENT
|
||||
)
|
||||
views.setOnClickPendingIntent(R.id.next_event_rect, pIntent)
|
||||
views.setOnClickPendingIntent(R.id.next_event_difference_time_rect, pIntent)
|
||||
@ -233,7 +233,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
context,
|
||||
widgetID,
|
||||
IntentHelper.getGoogleMapsIntentFromAddress(context, nextEvent.address),
|
||||
0
|
||||
PendingIntent.FLAG_UPDATE_CURRENT
|
||||
)
|
||||
views.setOnClickPendingIntent(R.id.second_row_rect, mapIntent)
|
||||
} else {
|
||||
@ -245,7 +245,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
nextEvent,
|
||||
forceEventDetails = true
|
||||
),
|
||||
0
|
||||
PendingIntent.FLAG_UPDATE_CURRENT
|
||||
)
|
||||
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.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)) {
|
||||
when (provider) {
|
||||
Constants.GlanceProviderId.PLAYING_SONG -> {
|
||||
@ -272,7 +272,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
context,
|
||||
widgetID,
|
||||
IntentHelper.getMusicIntent(context),
|
||||
0
|
||||
PendingIntent.FLAG_UPDATE_CURRENT
|
||||
)
|
||||
views.setOnClickPendingIntent(R.id.second_row_rect, musicIntent)
|
||||
break@loop
|
||||
@ -284,22 +284,25 @@ class MainWidget : AppWidgetProvider() {
|
||||
context,
|
||||
widgetID,
|
||||
IntentHelper.getClockIntent(context),
|
||||
0
|
||||
PendingIntent.FLAG_UPDATE_CURRENT
|
||||
)
|
||||
views.setOnClickPendingIntent(R.id.second_row_rect, alarmIntent)
|
||||
break@loop
|
||||
}
|
||||
}
|
||||
Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> {
|
||||
if (Preferences.isBatteryLevelLow) {
|
||||
val alarmIntent = PendingIntent.getActivity(
|
||||
context,
|
||||
widgetID,
|
||||
IntentHelper.getClockIntent(context),
|
||||
0
|
||||
)
|
||||
views.setOnClickPendingIntent(R.id.second_row_rect, alarmIntent)
|
||||
break@loop
|
||||
if (Preferences.showBatteryCharging) {
|
||||
BatteryHelper.updateBatteryInfo(context)
|
||||
if (Preferences.isCharging || Preferences.isBatteryLevelLow) {
|
||||
val batteryIntent = PendingIntent.getActivity(
|
||||
context,
|
||||
widgetID,
|
||||
IntentHelper.getBatteryIntent(),
|
||||
PendingIntent.FLAG_UPDATE_CURRENT
|
||||
)
|
||||
views.setOnClickPendingIntent(R.id.second_row_rect, batteryIntent)
|
||||
break@loop
|
||||
}
|
||||
}
|
||||
}
|
||||
Constants.GlanceProviderId.CUSTOM_INFO -> {
|
||||
@ -313,7 +316,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
context,
|
||||
widgetID,
|
||||
IntentHelper.getFitIntent(context),
|
||||
0
|
||||
PendingIntent.FLAG_UPDATE_CURRENT
|
||||
)
|
||||
views.setOnClickPendingIntent(R.id.second_row_rect, fitIntent)
|
||||
break@loop
|
||||
@ -340,6 +343,8 @@ class MainWidget : AppWidgetProvider() {
|
||||
} catch (ex: Exception) {
|
||||
ex.printStackTrace()
|
||||
CrashlyticsReceiver.sendCrash(context, ex)
|
||||
} finally {
|
||||
eventRepository.close()
|
||||
}
|
||||
|
||||
return views
|
||||
@ -525,7 +530,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
|
||||
} else {
|
||||
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
|
||||
} else if (GlanceProviderHelper.showGlanceProviders(context)) {
|
||||
v.second_row_icon.isVisible = true
|
||||
var showSomething = false
|
||||
loop@ for (provider:Constants.GlanceProviderId in GlanceProviderHelper.getGlanceProviders(context)) {
|
||||
when (provider) {
|
||||
Constants.GlanceProviderId.PLAYING_SONG -> {
|
||||
@ -544,6 +550,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
)
|
||||
)
|
||||
v.next_event_date.text = MediaPlayerHelper.getMediaInfo()
|
||||
showSomething = true
|
||||
break@loop
|
||||
}
|
||||
}
|
||||
@ -556,47 +563,60 @@ class MainWidget : AppWidgetProvider() {
|
||||
)
|
||||
)
|
||||
v.next_event_date.text = AlarmHelper.getNextAlarm(context)
|
||||
showSomething = true
|
||||
break@loop
|
||||
}
|
||||
}
|
||||
Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> {
|
||||
if (Preferences.isBatteryLevelLow) {
|
||||
v.second_row_icon.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.round_battery_charging_full
|
||||
)
|
||||
)
|
||||
v.next_event_date.text = context.getString(R.string.battery_low_warning)
|
||||
break@loop
|
||||
if (Preferences.showBatteryCharging) {
|
||||
BatteryHelper.updateBatteryInfo(context)
|
||||
if (Preferences.isCharging) {
|
||||
v.second_row_icon.isVisible = false
|
||||
val batteryLevel = BatteryHelper.getBatteryLevel(context)
|
||||
if (batteryLevel == 100) {
|
||||
v.next_event_date.text = "%s - %d%%".format(context.getString(R.string.charging), batteryLevel)
|
||||
} else {
|
||||
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 -> {
|
||||
if (Preferences.customNotes.isNotEmpty()) {
|
||||
v.second_row_icon.isVisible = false
|
||||
v.next_event_date.text = Preferences.customNotes
|
||||
v.next_event_date.gravity
|
||||
v.next_event_date.maxLines = 2
|
||||
showSomething = true
|
||||
break@loop
|
||||
}
|
||||
}
|
||||
Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> {
|
||||
if (Preferences.showDailySteps && Preferences.googleFitSteps > 0) {
|
||||
v.second_row_icon.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.round_steps
|
||||
)
|
||||
)
|
||||
v.second_row_icon.isVisible = false
|
||||
v.next_event_date.text = context.getString(R.string.daily_steps_counter).format(Preferences.googleFitSteps)
|
||||
showSomething = true
|
||||
break@loop
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
v.next_event.text = DateHelper.getDateText(context, now)
|
||||
v.empty_layout.visibility = View.GONE
|
||||
v.calendar_layout.visibility = View.VISIBLE
|
||||
if (showSomething) {
|
||||
v.next_event.text = DateHelper.getDateText(context, now)
|
||||
v.empty_layout.visibility = View.GONE
|
||||
v.calendar_layout.visibility = View.VISIBLE
|
||||
} else {
|
||||
v.second_row_icon.isVisible = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -605,7 +625,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
it.setTextColor(ColorHelper.getFontColor())
|
||||
}
|
||||
|
||||
if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) {
|
||||
if (Preferences.weatherIconPack != Constants.WeatherIconPack.MINIMAL.value) {
|
||||
listOf<ImageView>(v.action_next, v.action_previous)
|
||||
} else {
|
||||
listOf<ImageView>(v.action_next, v.action_previous, v.empty_weather_icon, v.special_weather_icon)
|
||||
@ -617,7 +637,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
it.setTextColor(ColorHelper.getSecondaryFontColor())
|
||||
}
|
||||
|
||||
if (Preferences.weatherIconPack == Constants.WeatherIconPack.DEFAULT.value) {
|
||||
if (Preferences.weatherIconPack != Constants.WeatherIconPack.MINIMAL.value) {
|
||||
listOf<ImageView>(v.second_row_icon)
|
||||
} else {
|
||||
listOf<ImageView>(v.second_row_icon, v.weather_icon)
|
||||
@ -698,7 +718,7 @@ class MainWidget : AppWidgetProvider() {
|
||||
v.weather.visibility = View.VISIBLE
|
||||
v.calendar_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
|
||||
if (icon == "") {
|
||||
@ -734,6 +754,8 @@ class MainWidget : AppWidgetProvider() {
|
||||
it.isVisible = Preferences.showDividers
|
||||
}
|
||||
|
||||
eventRepository.close()
|
||||
|
||||
return v
|
||||
}
|
||||
}
|
||||
|
BIN
app/src/main/res/drawable/clear_day_3.png
Normal file
After Width: | Height: | Size: 685 B |
BIN
app/src/main/res/drawable/clear_day_4.png
Normal file
After Width: | Height: | Size: 7.1 KiB |
BIN
app/src/main/res/drawable/clear_night_3.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
app/src/main/res/drawable/clear_night_4.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
app/src/main/res/drawable/cloudy_weather_3.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
app/src/main/res/drawable/cloudy_weather_4.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
app/src/main/res/drawable/haze_day_3.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
app/src/main/res/drawable/haze_day_4.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
app/src/main/res/drawable/haze_night_3.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
app/src/main/res/drawable/haze_night_4.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
app/src/main/res/drawable/haze_weather_3.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
app/src/main/res/drawable/haze_weather_4.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
app/src/main/res/drawable/mostly_cloudy_3.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
app/src/main/res/drawable/mostly_cloudy_4.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
app/src/main/res/drawable/mostly_cloudy_night_3.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
app/src/main/res/drawable/mostly_cloudy_night_4.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
app/src/main/res/drawable/partly_cloudy_3.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
app/src/main/res/drawable/partly_cloudy_4.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
app/src/main/res/drawable/partly_cloudy_night_3.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
app/src/main/res/drawable/partly_cloudy_night_4.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
app/src/main/res/drawable/rain_snow_3.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
app/src/main/res/drawable/rain_snow_4.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
app/src/main/res/drawable/rain_snow_day_3.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
app/src/main/res/drawable/rain_snow_day_4.png
Normal file
After Width: | Height: | Size: 7.1 KiB |
BIN
app/src/main/res/drawable/rain_snow_night_3.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
app/src/main/res/drawable/rain_snow_night_4.png
Normal file
After Width: | Height: | Size: 7.2 KiB |
BIN
app/src/main/res/drawable/rainy_day_3.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
app/src/main/res/drawable/rainy_day_4.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
app/src/main/res/drawable/rainy_night_3.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
app/src/main/res/drawable/rainy_night_4.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.3 KiB |
BIN
app/src/main/res/drawable/rainy_weather_3.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
app/src/main/res/drawable/rainy_weather_4.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
app/src/main/res/drawable/showcase_3.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
app/src/main/res/drawable/showcase_4.png
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
app/src/main/res/drawable/snow_day_3.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
app/src/main/res/drawable/snow_day_4.png
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
app/src/main/res/drawable/snow_night_3.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
app/src/main/res/drawable/snow_night_4.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
app/src/main/res/drawable/snow_weather_3.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
app/src/main/res/drawable/snow_weather_4.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
app/src/main/res/drawable/storm_weather_3.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
app/src/main/res/drawable/storm_weather_4.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
app/src/main/res/drawable/storm_weather_day_3.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
app/src/main/res/drawable/storm_weather_day_4.png
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
app/src/main/res/drawable/storm_weather_night_3.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
app/src/main/res/drawable/storm_weather_night_4.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
app/src/main/res/drawable/thunder_day_3.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
app/src/main/res/drawable/thunder_day_4.png
Normal file
After Width: | Height: | Size: 5.4 KiB |
BIN
app/src/main/res/drawable/thunder_night_3.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
app/src/main/res/drawable/thunder_night_4.png
Normal file
After Width: | Height: | Size: 5.4 KiB |
BIN
app/src/main/res/drawable/thunder_weather_3.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
app/src/main/res/drawable/thunder_weather_4.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
app/src/main/res/drawable/unknown_3.png
Normal file
After Width: | Height: | Size: 90 B |
BIN
app/src/main/res/drawable/windy_day_3.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
app/src/main/res/drawable/windy_day_4.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
app/src/main/res/drawable/windy_night_3.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
app/src/main/res/drawable/windy_night_4.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
app/src/main/res/drawable/windy_weather_3.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
app/src/main/res/drawable/windy_weather_4.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
@ -155,7 +155,7 @@
|
||||
android:textSize="16sp"
|
||||
android:gravity="start"
|
||||
android:textAlignment="viewStart"
|
||||
android:id="@+id/last_info"/>
|
||||
android:text="@string/api_key_info_all_set"/>
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -15,7 +15,7 @@
|
||||
android:paddingBottom="8dp"
|
||||
android:paddingLeft="32dp"
|
||||
android:paddingRight="32dp"
|
||||
android:textSize="16sp"
|
||||
android:textSize="18sp"
|
||||
android:gravity="start"
|
||||
android:textAlignment="viewStart"
|
||||
android:id="@+id/header_text"
|
||||
|
@ -89,6 +89,18 @@
|
||||
android:id="@+id/calendar_settings"
|
||||
android:alpha="@{isCalendarEnabled ? 1f : 0.2f, default=1}"
|
||||
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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -237,6 +249,18 @@
|
||||
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/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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -348,6 +372,18 @@
|
||||
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/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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -95,7 +95,6 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/show_clock_label"
|
||||
android:text="@string/description_show_clock"
|
||||
style="@style/AnotherWidget.Settings.Subtitle"/>
|
||||
</LinearLayout>
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
@ -112,6 +111,18 @@
|
||||
android:id="@+id/clock_settings"
|
||||
android:alpha="@{isClockVisible ? 1f : 0.2f, default=1}"
|
||||
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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -186,6 +197,18 @@
|
||||
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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -261,6 +284,18 @@
|
||||
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/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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -298,27 +333,27 @@
|
||||
style="@style/AnotherWidget.Settings.Subtitle"/>
|
||||
</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
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingLeft="24dp"
|
||||
android:paddingRight="24dp"
|
||||
android:paddingBottom="32dp"
|
||||
android:duplicateParentState="true"
|
||||
android:textSize="14sp"
|
||||
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" />
|
||||
android:id="@+id/small_clock_warning"
|
||||
android:orientation="vertical">
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingLeft="24dp"
|
||||
android:paddingRight="24dp"
|
||||
android:paddingBottom="32dp"
|
||||
android:duplicateParentState="true"
|
||||
android:textSize="14sp"
|
||||
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>
|
||||
</ScrollView>
|
||||
|
@ -18,6 +18,18 @@
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -92,6 +104,18 @@
|
||||
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/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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -166,6 +190,18 @@
|
||||
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/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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -203,43 +239,6 @@
|
||||
style="@style/AnotherWidget.Settings.Subtitle"/>
|
||||
</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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -288,33 +287,30 @@
|
||||
android:focusable="true"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:gravity="center_vertical"
|
||||
android:id="@+id/action_background_color"
|
||||
android:id="@+id/action_date_format"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:padding="12dp"
|
||||
android:src="@drawable/round_aspect_ratio"
|
||||
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:orientation="vertical"
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="8dp">
|
||||
|
||||
android:paddingRight="8dp"
|
||||
android:orientation="vertical">
|
||||
<TextView
|
||||
style="@style/AnotherWidget.Settings.Title"
|
||||
android:layout_width="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
|
||||
android:id="@+id/background_color_label"
|
||||
style="@style/AnotherWidget.Settings.Subtitle"
|
||||
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
|
||||
@ -355,6 +351,46 @@
|
||||
android:layout_height="wrap_content" />
|
||||
</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>
|
||||
</ScrollView>
|
||||
</layout>
|
@ -38,8 +38,8 @@
|
||||
<ImageView
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:padding="11dp"
|
||||
android:src="@drawable/round_widgets"
|
||||
android:padding="12dp"
|
||||
android:src="@drawable/round_hourglass_empty"
|
||||
android:tint="@color/colorPrimaryText"/>
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
@ -56,8 +56,7 @@
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/show_clock_label"
|
||||
android:text="@string/description_show_glance"
|
||||
android:id="@+id/show_glance_label"
|
||||
style="@style/AnotherWidget.Settings.Subtitle"/>
|
||||
</LinearLayout>
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
@ -74,6 +73,18 @@
|
||||
android:id="@+id/calendar_settings"
|
||||
android:alpha="@{isGlanceVisible ? 1f : 0.2f, default=1}"
|
||||
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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -90,7 +101,7 @@
|
||||
<ImageView
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:padding="10dp"
|
||||
android:padding="11dp"
|
||||
android:src="@drawable/round_music_note"
|
||||
android:tint="@color/colorPrimaryText"/>
|
||||
<LinearLayout
|
||||
@ -143,7 +154,7 @@
|
||||
<ImageView
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:padding="11dp"
|
||||
android:padding="12dp"
|
||||
android:src="@drawable/round_alarm"
|
||||
android:tint="@color/colorPrimaryText"/>
|
||||
<LinearLayout
|
||||
@ -188,8 +199,8 @@
|
||||
<ImageView
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:padding="10dp"
|
||||
android:src="@drawable/round_steps"
|
||||
android:padding="11dp"
|
||||
android:src="@drawable/round_directions_walk"
|
||||
android:tint="@color/colorPrimaryText"/>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@ -234,7 +245,6 @@
|
||||
android:paddingRight="8dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:visibility="gone"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:gravity="center_vertical"
|
||||
android:id="@+id/action_show_low_battery_level_warning"
|
||||
@ -279,7 +289,7 @@
|
||||
<ImageView
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:padding="10dp"
|
||||
android:padding="12dp"
|
||||
android:src="@drawable/round_notes"
|
||||
android:tint="@color/colorPrimaryText"/>
|
||||
<LinearLayout
|
||||
@ -300,6 +310,18 @@
|
||||
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/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"
|
||||
@ -316,7 +338,7 @@
|
||||
<ImageView
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:padding="10dp"
|
||||
android:padding="12dp"
|
||||
android:src="@drawable/round_flip_to_front"
|
||||
android:tint="@color/colorPrimaryText"/>
|
||||
<LinearLayout
|
||||
@ -337,6 +359,27 @@
|
||||
style="@style/AnotherWidget.Settings.Subtitle"/>
|
||||
</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_height="wrap_content"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingLeft="24dp"
|
||||
android:paddingRight="24dp"
|
||||
android:paddingBottom="32dp"
|
||||
android:duplicateParentState="true"
|
||||
android:textSize="14sp"
|
||||
android:text="@string/glance_info"
|
||||
android:textColor="@color/colorPrimaryText"
|
||||
android:letterSpacing="0"
|
||||
android:fontFamily="@font/product_sans"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
|
||||
app:textAllCaps="false" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
@ -112,6 +112,18 @@
|
||||
android:id="@+id/weather_settings"
|
||||
android:alpha="@{isWeatherVisible ? 1f : 0.2f, default=1}"
|
||||
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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -212,43 +224,6 @@
|
||||
android:text="@string/action_grant_permission"/>
|
||||
</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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -286,6 +261,55 @@
|
||||
style="@style/AnotherWidget.Settings.Subtitle"/>
|
||||
</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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -303,6 +327,7 @@
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:padding="12dp"
|
||||
android:id="@+id/weather_icon_pack"
|
||||
android:src="@drawable/round_cloud_queue"
|
||||
android:tint="@color/colorPrimaryText"/>
|
||||
<LinearLayout
|
||||
@ -323,6 +348,18 @@
|
||||
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/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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -19,7 +19,7 @@
|
||||
android:paddingBottom="8dp"
|
||||
android:paddingLeft="32dp"
|
||||
android:paddingRight="32dp"
|
||||
android:textSize="16sp"
|
||||
android:textSize="18sp"
|
||||
android:gravity="start"
|
||||
android:textAlignment="viewStart"
|
||||
android:id="@+id/header_text"
|
||||
|
@ -123,7 +123,7 @@
|
||||
android:layout_height="20dp"
|
||||
android:id="@+id/special_weather_icon"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_marginEnd="4dp"/>
|
||||
android:layout_marginEnd="8dp"/>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@ -183,6 +183,8 @@
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:id="@+id/weather_icon"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:layout_marginStart="4dp"
|
||||
android:src="@drawable/clear_night"/>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
209
app/src/main/res/values-da/strings.xml
Normal file
@ -0,0 +1,209 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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">Ikonpakke %d</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>
|
||||
<string name="glance_info">Glance info will show up only when there are no events displayed and only when a few conditions are verified.</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>
|
@ -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>
|
@ -1,40 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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>
|
||||
|
||||
<!-- Display -->
|
||||
<string name="settings_general_title">Affichage</string>
|
||||
<string name="settings_font_color_title">Couleur du texte</string>
|
||||
<string name="settings_secondary_font_color_title">Couleur du texte</string>
|
||||
<string name="settings_background_color_title">Couleur de l\'arrière-plan</string>
|
||||
<string name="title_main_text_size">Taille du texte</string>
|
||||
<string name="title_second_text_size">Taille du texte</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="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="custom_date_format">Format personnalisé</string>
|
||||
<string name="alpha">Opacité </string>
|
||||
<string name="transparent">Transparent</string>
|
||||
<string name="settings_show_dividers_title">Séparateur de texte</string>
|
||||
<string name="first_row_header">Première ligne</string>
|
||||
<string name="second_row_header">Seconde ligne</string>
|
||||
<string name="global_style_header">Widget</string>
|
||||
<string name="action_capitalize_the_date">Date en majuscules</string>
|
||||
<string name="settings_date_format_title">Format de date</string>
|
||||
|
||||
<!-- Calendar -->
|
||||
<string name="settings_calendar_title">Calendrier</string>
|
||||
<string name="title_permission_calendar">Afficher vos événements</string>
|
||||
<string name="description_permission_calendar">Accordez l\'accès à votre calendrier\npour afficher les événements dans votre widget</string>
|
||||
<string name="settings_filter_calendar_title">Filtrer les événements</string>
|
||||
<string name="settings_filter_calendar_subtitle">Modifier la visibilité du calendrier</string>
|
||||
<string name="settings_all_day_title">Événements toute la journée</string>
|
||||
<string name="main_calendar">Calendrier du compte</string>
|
||||
<string name="calendar_settings_list_error">Erreur de chargement de la liste des calendriers</string>
|
||||
<string name="all_day">Événement toute la journée</string>
|
||||
<string name="show_events_visible">Événements visibles</string>
|
||||
<string name="show_events_not_visible">Événements non visibles</string>
|
||||
<string name="settings_show_until_subtitle_6">30 minutes avant</string>
|
||||
<string name="settings_show_until_subtitle_7">1 heure avant</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="settings_calendar_app_title">App calendrier par défaut</string>
|
||||
<string name="error_no_calendar">Aucun calendrier trouvé</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">Infos de l\'événement</string>
|
||||
<string name="settings_second_row_info_subtitle_1">Adresse de l\'événement</string>
|
||||
<string name="settings_second_row_info_subtitle_0">Heure de l\'événement</string>
|
||||
<string name="settings_show_diff_time_title">Temps restant jusqu\'à l\'événement</string>
|
||||
<string name="settings_show_declined_events_title">Événements refusés</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="settings_show_multiple_events_title">Sélecteur d\'événements multiples</string>
|
||||
<string name="soon">bientôt</string>
|
||||
<string name="now">maintenant</string>
|
||||
<string name="settings_widget_update_frequency_title">Fréquence de màj du temps restant</string>
|
||||
<string name="settings_widget_update_frequency_subtitle">Une fréquence élevée consomme plus de batterie</string>
|
||||
<string name="settings_widget_update_frequency_low">Faible</string>
|
||||
<string name="settings_widget_update_frequency_default">Par défaut</string>
|
||||
<string name="settings_widget_update_frequency_high">Élevée</string>
|
||||
<string name="filters_header">Filtres</string>
|
||||
<string name="event_detail_header">Détails</string>
|
||||
|
||||
<!-- Weather -->
|
||||
<string name="settings_weather_title">Météo</string>
|
||||
<string name="title_permission_location">Afficher la météo</string>
|
||||
<string name="description_permission_location">Accordez l\'accès à votre localisation\npour voir la météo dans votre widget</string>
|
||||
<string name="settings_unit_title">Unité de mesure</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>
|
||||
@ -44,115 +85,84 @@
|
||||
<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="settings_weather_provider_api_key_title">Clé API pour la météo</string>
|
||||
<string name="settings_weather_provider_api_key_subtitle_all_set">Fournisseur météo correctement configuré</string>
|
||||
<string name="settings_weather_provider_api_key_subtitle_not_set">Le fournisseur météo doit être configuré</string>
|
||||
<string name="api_key_hint">Clé API 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="default_weather_app">Google Weather</string>
|
||||
<string name="weather_warning">La météo de Google Awareness est obsolète. Il faut désormais une clé API OpenWeather pour afficher la météo dans le widget.</string>
|
||||
<string name="api_key_title_1">Inscrivez-vous sur 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_subtitle_1">Créez un compte gratuit sur OpenWeather. \nCela ne prendra que quelques minutes.</string>
|
||||
<string name="api_key_title_2">Copiez votre clé API</string>
|
||||
<string name="api_key_subtitle_2">Recherchez la clé API dans vos paramètres du compte et copiez la clé par défaut.</string>
|
||||
<string name="api_key_title_3">Saisissez la clé dans l\'app</string>
|
||||
<string name="api_key_title_3">Saisissez la clé API dans l\'app</string>
|
||||
<string name="api_key_subtitle_3">Collez la clé dans le champ ci-dessus et enregistrez-la. Une fois la clé activée, la météo deviendra visible.</string>
|
||||
<string name="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="action_open_provider">Aller sur OpenWeatherMap.com</string>
|
||||
<string name="api_key_info_all_set">Cela peut prendre jusqu\'à 10 minutes avant que votre clé API soit activée. La météo sera mise à jour dès qu\'elle sera disponible !</string>
|
||||
<string name="settings_weather_icon_pack_title">Pack d\'icônes</string>
|
||||
<string name="settings_weather_icon_pack_default">Pack d\'icônes %d</string>
|
||||
|
||||
<!-- Clock -->
|
||||
<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_clock_text_size_title">Taille du texte</string>
|
||||
<string name="default_clock_app">App horloge par défaut</string>
|
||||
<string name="settings_clock_bottom_margin_title">Marge inférieure de l\'horloge</string>
|
||||
<string name="settings_clock_bottom_margin_subtitle_none">Aucune</string>
|
||||
<string name="settings_clock_bottom_margin_subtitle_small">Petite</string>
|
||||
<string name="settings_clock_bottom_margin_subtitle_medium">Moyenne</string>
|
||||
<string name="settings_clock_bottom_margin_subtitle_large">Grande</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 Affichage.</string>
|
||||
<string name="settings_clock_text_color_title">Couleur du texte</string>
|
||||
<string name="settings_ampm_indicator_title">Afficher l\'indicateur AM/PM</string>
|
||||
<string name="clock_text_header">Style du texte</string>
|
||||
|
||||
<!-- Glance -->
|
||||
<string name="settings_show_next_alarm_title">Prochaine alarme</string>
|
||||
<string name="next_alarm_warning">La prochaine alarme semble erronée.\nElle a été définie par %s.</string>
|
||||
<string name="settings_at_a_glance_title">Coup d\'œil</string>
|
||||
<string name="settings_show_music_title">Musique en cours de lecture</string>
|
||||
<string name="settings_request_notification_access">Nous avons besoin d\'accéder aux notifications pour vérifier la musique en cours de lecture</string>
|
||||
<string name="settings_request_fitness_access">Nous avons besoin de quelques autorisations pour obtenir vos nombres de pas quotidiens depuis Google Fit</string>
|
||||
<string name="title_show_glance">Afficher les infos en un coup d\'œil</string>
|
||||
<string name="description_show_glance_visible">Services activés</string>
|
||||
<string name="description_show_glance_not_visible">Services désactivés</string>
|
||||
<string name="settings_sort_glance_providers_title">Priorité des sources de données</string>
|
||||
<string name="settings_sort_glance_providers_subtitle">Modifier l\'importance des fournisseurs</string>
|
||||
<string name="settings_custom_notes_title">Notes personnalisées</string>
|
||||
<string name="settings_low_battery_level_title">Batterie (en charge/faible)</string>
|
||||
<string name="settings_daily_steps_title">Nombre de pas quotidiens</string>
|
||||
<string name="battery_low_warning">Batterie faible</string>
|
||||
<string name="daily_steps_counter">%d pas jusqu\à présent</string>
|
||||
<string name="charging">En charge</string>
|
||||
<string name="providers">Fournisseurs</string>
|
||||
<string name="glance_info">Glance info will show up only when there are no events displayed and only when a few conditions are verified.</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="action_share">Partager</string>
|
||||
<string name="action_rate">Noter l\'app</string>
|
||||
<string name="action_support">Soutenez-moi</string>
|
||||
<string name="action_feedback">Commentaires</string>
|
||||
<string name="action_about">À propos</string>
|
||||
<string name="action_refresh_widget">Actualiser le widget</string>
|
||||
<string name="error_opening_uri">Erreur d\'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 d\'ouverture de l\'app</string>
|
||||
<string name="default_name">App par défaut</string>
|
||||
<string name="action_save">OK</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="support_website_subtitle">Un seul 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>
|
||||
@ -160,65 +170,34 @@
|
||||
<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="search">Recherche</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_title_show_wallpaper">Afficher le fond d\'écran</string>
|
||||
<string name="support_refresh_widget_subtitle">Forcer le redémarrage des services du widget</string>
|
||||
<string name="settings_feedback_subtitle">Ce projet est 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>
|
||||
<string name="xiaomi_warning_title">Appareils Xiaomi</string>
|
||||
<string name="xiaomi_warning_message">Veuillez activer l\'option "Afficher des fenêtres pop-up pendant que vous parcourez en arrière-plan" dans la section "Autres autorisations" des paramètres de l\'application. Sinon, vous ne pourrez ouvrir aucune application en tapant sur le widget.</string>
|
||||
<string name="action_ignore">Ignorer</string>
|
||||
<string name="action_grant_permission">Aller dans Paramètres</string>
|
||||
<string name="settings_title">Paramètres</string>
|
||||
<string name="style_header">Style</string>
|
||||
<string name="actions_header">Actions</string>
|
||||
<string name="provider_header">Configuration</string>
|
||||
<string name="appearance_header">Apparence</string>
|
||||
<string name="preferences_header">Préférences</string>
|
||||
|
||||
<!-- 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>
|
||||
<!-- Activities -->
|
||||
<string name="action_choose_application">Choisir l\'app</string>
|
||||
<string name="support_main_title">Soutenir le développeur</string>
|
||||
<string name="thanks">Merci de m\'avoir soutenu !</string>
|
||||
<string name="donation_coffee">Un café italien</string>
|
||||
<string name="donation_donuts">Quelques donuts glacés</string>
|
||||
<string name="donation_dinner">Un dîner chic</string>
|
||||
<string name="donation_breakfast">Un petit-déjeuner anglais</string>
|
||||
<string name="donation_lunch">Un déjeuner rapide</string>
|
||||
<string name="action_show_widget_preview">Afficher l\'aperçu du widget</string>
|
||||
<string name="support_dev_subtitle">Ceci est le projet d\'un unique développeur,\ndonc merci pour le soutien !</string>
|
||||
<string name="settings_title_integrations">Intégrations</string>
|
||||
<string name="label_count_installed_integrations">%d intégrations installées</string>
|
||||
</resources>
|
||||
|