Compare commits
11 Commits
v2.2.2-bet
...
v2.2.2-bet
Author | SHA1 | Date | |
---|---|---|---|
6ea40a51fe | |||
1721dff3cf | |||
c389d50b09 | |||
0ea55db4b1 | |||
3fba50fd2c | |||
06583197c7 | |||
5176331e84 | |||
65f83caeb5 | |||
60e8c267bf | |||
10a3204808 | |||
98c509ef27 |
BIN
.idea/caches/build_file_checksums.ser
generated
BIN
.idea/caches/build_file_checksums.ser
generated
Binary file not shown.
@ -22,7 +22,7 @@ android {
|
||||
applicationId "com.tommasoberlose.anotherwidget"
|
||||
minSdkVersion 23
|
||||
targetSdkVersion 30
|
||||
versionCode 121
|
||||
versionCode 127
|
||||
versionName "2.2.2"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
@ -2,7 +2,6 @@ package com.tommasoberlose.anotherwidget.global
|
||||
|
||||
object Actions {
|
||||
const val ACTION_EXTRA_OPEN_WEATHER_PROVIDER = "ACTION_EXTRA_OPEN_WEATHER_PROVIDER"
|
||||
const val ACTION_EXTRA_DISABLE_GPS_NOTIFICATION = "ACTION_EXTRA_DISABLE_GPS_NOTIFICATION"
|
||||
|
||||
const val ACTION_TIME_UPDATE = "com.tommasoberlose.anotherwidget.action.TIME_UPDATE"
|
||||
const val ACTION_ALARM_UPDATE = "com.tommasoberlose.anotherwidget.action.ALARM_UPDATE"
|
||||
@ -14,4 +13,6 @@ object Actions {
|
||||
const val ACTION_REPORT_CRASH = "com.tommasoberlose.anotherwidget.action.REPORT_CRASH"
|
||||
const val ACTION_CLEAR_NOTIFICATION = "com.tommasoberlose.anotherwidget.action.CLEAR_NOTIFICATION"
|
||||
const val ACTION_UPDATE_GREETINGS = "com.tommasoberlose.anotherwidget.action.UPDATE_GREETINGS"
|
||||
|
||||
const val ACTION_REFRESH = "com.tommasoberlose.anotherwidget.action.REFRESH"
|
||||
}
|
@ -12,8 +12,10 @@ import android.provider.CalendarContract
|
||||
import android.provider.CalendarContract.Events
|
||||
import android.util.Log
|
||||
import com.tommasoberlose.anotherwidget.R
|
||||
import com.tommasoberlose.anotherwidget.global.Actions
|
||||
import com.tommasoberlose.anotherwidget.global.Preferences
|
||||
import com.tommasoberlose.anotherwidget.models.Event
|
||||
import com.tommasoberlose.anotherwidget.receivers.UpdatesReceiver
|
||||
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
|
||||
import com.tommasoberlose.anotherwidget.utils.toast
|
||||
import java.util.*
|
||||
@ -35,6 +37,13 @@ object IntentHelper {
|
||||
}
|
||||
}
|
||||
|
||||
private fun getWidgetRefreshIntent(context: Context): Intent {
|
||||
return Intent(context, UpdatesReceiver::class.java).apply {
|
||||
action = Actions.ACTION_REFRESH
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
}
|
||||
}
|
||||
|
||||
fun getGoogleMapsIntentFromAddress(context: Context, address: String): Intent {
|
||||
val gmmIntentUri: Uri = Uri.parse("geo:0,0?q=$address")
|
||||
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
|
||||
@ -57,13 +66,14 @@ object IntentHelper {
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
data = Uri.parse("dynact://velour/weather/ProxyActivity")
|
||||
component = ComponentName("com.google.android.googlequicksearchbox", "com.google.android.apps.gsa.velour.DynamicActivityTrampoline")
|
||||
setClassName("com.google.android.googlequicksearchbox", "com.google.android.apps.gsa.velour.DynamicActivityTrampoline")
|
||||
}
|
||||
}
|
||||
DO_NOTHING_OPTION -> {
|
||||
Intent()
|
||||
}
|
||||
REFRESH_WIDGET_OPTION -> {
|
||||
getWidgetUpdateIntent(context)
|
||||
getWidgetRefreshIntent(context)
|
||||
}
|
||||
else -> {
|
||||
val pm: PackageManager = context.packageManager
|
||||
@ -95,7 +105,7 @@ object IntentHelper {
|
||||
Intent()
|
||||
}
|
||||
REFRESH_WIDGET_OPTION -> {
|
||||
getWidgetUpdateIntent(context)
|
||||
getWidgetRefreshIntent(context)
|
||||
}
|
||||
else -> {
|
||||
val pm: PackageManager = context.packageManager
|
||||
@ -183,7 +193,7 @@ object IntentHelper {
|
||||
Intent()
|
||||
}
|
||||
REFRESH_WIDGET_OPTION -> {
|
||||
getWidgetUpdateIntent(context)
|
||||
getWidgetRefreshIntent(context)
|
||||
}
|
||||
else -> {
|
||||
val pm: PackageManager = context.packageManager
|
||||
|
@ -12,12 +12,12 @@ 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.ActiveNotificationsHelper
|
||||
import com.tommasoberlose.anotherwidget.helpers.BatteryHelper
|
||||
import com.tommasoberlose.anotherwidget.helpers.CalendarHelper
|
||||
import com.tommasoberlose.anotherwidget.helpers.MediaPlayerHelper
|
||||
import com.tommasoberlose.anotherwidget.helpers.*
|
||||
import com.tommasoberlose.anotherwidget.models.Event
|
||||
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import org.joda.time.Period
|
||||
import java.util.*
|
||||
|
||||
@ -55,6 +55,16 @@ class UpdatesReceiver : BroadcastReceiver() {
|
||||
Actions.ACTION_UPDATE_GREETINGS -> {
|
||||
MainWidget.updateWidget(context)
|
||||
}
|
||||
|
||||
Actions.ACTION_REFRESH -> {
|
||||
ActiveNotificationsHelper.clearLastNotification(context)
|
||||
|
||||
GlobalScope.launch(Dispatchers.IO) {
|
||||
CalendarHelper.updateEventList(context)
|
||||
MediaPlayerHelper.updatePlayingMediaInfo(context)
|
||||
WeatherHelper.updateWeather(context)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import android.content.Intent
|
||||
import android.net.Uri
|
||||
import com.tommasoberlose.anotherwidget.R
|
||||
import com.tommasoberlose.anotherwidget.global.Actions
|
||||
import com.tommasoberlose.anotherwidget.global.Preferences
|
||||
import com.tommasoberlose.anotherwidget.helpers.IntentHelper
|
||||
import com.tommasoberlose.anotherwidget.utils.toast
|
||||
|
||||
@ -15,12 +16,14 @@ class WidgetClickListenerReceiver : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
if (intent.action == Actions.ACTION_OPEN_WEATHER_INTENT) {
|
||||
try {
|
||||
if (Preferences.weatherAppPackage == IntentHelper.REFRESH_WIDGET_OPTION) {
|
||||
context.sendBroadcast(IntentHelper.getWeatherIntent(context))
|
||||
} else {
|
||||
context.startActivity(IntentHelper.getWeatherIntent(context))
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
try {
|
||||
context.applicationContext.startActivity(IntentHelper.getWeatherIntent(context.applicationContext))
|
||||
} catch (e: Exception) {
|
||||
val uri = Uri.parse("http://www.google.com/#q=weather")
|
||||
e.printStackTrace()
|
||||
val uri = Uri.parse("http://www.google.com/search?q=weather")
|
||||
val i = Intent(Intent.ACTION_VIEW, uri)
|
||||
i.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
try {
|
||||
@ -31,5 +34,4 @@ class WidgetClickListenerReceiver : BroadcastReceiver() {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -33,9 +33,8 @@ import kotlin.collections.ArrayList
|
||||
class UpdateCalendarService : Service() {
|
||||
|
||||
companion object {
|
||||
const val CALENDAR_SYNC_NOTIFICATION_ID = 28466
|
||||
const val CALENDAR_SYNC_NOTIFICATION_ID = 28468
|
||||
fun enqueueWork(context: Context) {
|
||||
context.startService(Intent(context, UpdateCalendarService::class.java))
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
|
||||
context.startForegroundService(Intent(context, UpdateCalendarService::class.java))
|
||||
} else {
|
||||
|
@ -97,7 +97,11 @@ class MainFragment : Fragment() {
|
||||
binding.actionBack.setOnClickListener {
|
||||
controller.navigateUp()
|
||||
}
|
||||
binding.actionBack.isClickable = show
|
||||
binding.actionBack.isFocusable = show
|
||||
binding.actionSettings.animate().alpha(if (!show) 1f else 0f).setDuration(200).translationX((if (!show) 0f else -4f).convertDpToPixel(requireContext())).start()
|
||||
binding.actionSettings.isClickable = !show
|
||||
binding.actionSettings.isFocusable = !show
|
||||
binding.fragmentTitle.text = if (show) destination.label.toString() else getString(R.string.app_name)
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,7 @@ import android.util.Log
|
||||
import android.util.TypedValue
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.RemoteViews
|
||||
import android.widget.TextView
|
||||
@ -34,6 +35,7 @@ import com.tommasoberlose.anotherwidget.helpers.ColorHelper.toIntValue
|
||||
import com.tommasoberlose.anotherwidget.helpers.ImageHelper.applyShadow
|
||||
import com.tommasoberlose.anotherwidget.receivers.*
|
||||
import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission
|
||||
import com.tommasoberlose.anotherwidget.utils.convertDpToPixel
|
||||
import com.tommasoberlose.anotherwidget.utils.isDarkTheme
|
||||
import com.tommasoberlose.anotherwidget.utils.toPixel
|
||||
import java.text.DateFormat
|
||||
@ -1072,7 +1074,10 @@ class MainWidget : AppWidgetProvider() {
|
||||
|
||||
// Dividers
|
||||
arrayOf(bindingView.divider1, bindingView.divider2, bindingView.divider3).forEach {
|
||||
it.isVisible = Preferences.showDividers
|
||||
it.visibility = if (Preferences.showDividers) View.VISIBLE else View.INVISIBLE
|
||||
it.layoutParams = (it.layoutParams as ViewGroup.MarginLayoutParams).apply {
|
||||
this.marginEnd = if (Preferences.showDividers) 8f.convertDpToPixel(context).toInt() else 0
|
||||
}
|
||||
}
|
||||
|
||||
eventRepository.close()
|
||||
|
@ -24,7 +24,7 @@
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Spacing"
|
||||
android:text="@string/spacing_settings_header"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="20dp"
|
||||
|
@ -21,51 +21,6 @@
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="48dp"
|
||||
android:orientation="vertical">
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settings_custom_font_title"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textAppearance="@style/AnotherWidget.Settings.Header" />
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="12dp"
|
||||
android:paddingBottom="12dp"
|
||||
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_custom_font"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:padding="12dp"
|
||||
android:src="@drawable/round_font_download_24"
|
||||
app: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/font_family_settings_title"/>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/custom_font_label"
|
||||
style="@style/AnotherWidget.Settings.Subtitle"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -283,6 +238,43 @@
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textAppearance="@style/AnotherWidget.Settings.Header" />
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="12dp"
|
||||
android:paddingBottom="12dp"
|
||||
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_custom_font"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:padding="12dp"
|
||||
android:src="@drawable/round_font_download_24"
|
||||
app: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_custom_font_title"/>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/custom_font_label"
|
||||
style="@style/AnotherWidget.Settings.Subtitle"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -81,6 +81,11 @@
|
||||
<string name="attendee_status_invited">Invitations à des évmts</string>
|
||||
<string name="attendee_status_declined">Événements refusés</string>
|
||||
|
||||
<string name="calendar_sync_notification_channel_id" translatable="false">calendar-sync</string>
|
||||
<string name="calendar_sync_notification_channel_name">Service de synchronisation du calendrier</string>
|
||||
<string name="calendar_sync_notification_channel_description">Service utilisé pour synchroniser les événements du calendrier.</string>
|
||||
<string name="calendar_sync_notification_title">Synchronisation du calendrier...</string>
|
||||
|
||||
<!-- Weather -->
|
||||
<string name="settings_weather_title">Météo</string>
|
||||
<string name="title_permission_location">Afficher la météo</string>
|
||||
@ -140,7 +145,7 @@
|
||||
<string name="weather_provider_activity_subtitle">Sélectionnez un fournisseur météo dans la liste.\nCertains fournisseurs ont besoin d\'un\ncompte personnel gratuit pour fonctionner,\nmais ils sont généralement plus précis.</string>
|
||||
|
||||
<string name="location_access_notification_channel_id" translatable="false">location-access</string>
|
||||
<string name="location_access_notification_channel_name">Arrière-plan</string>
|
||||
<string name="location_access_notification_channel_name">Service en arrière-plan</string>
|
||||
<string name="location_access_notification_channel_description">Service utilisé pour actualiser la météo en fonction de l\'emplacement actuel de l\'utilisateur.</string>
|
||||
<string name="location_access_notification_title">Actualisation de la météo...</string>
|
||||
<string name="location_access_notification_subtitle">Nous actualisons la météo en fonction de votre emplacement actuel.</string>
|
||||
@ -158,7 +163,7 @@
|
||||
<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 l\'onglet <b>Affichage</b>.</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 le menu <b>Typographie</b>.</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>
|
||||
@ -239,7 +244,7 @@
|
||||
|
||||
<string name="settings_show_events_as_glance_provider_title">Événements</string>
|
||||
<string name="settings_show_events_as_glance_provider_subtitle">Affiche un petit aperçu des événements de votre calendrier, tout en affichant toujours la date actuelle.</string>
|
||||
<string name="settings_show_events_as_glance_provider_error">Veuillez activer l\'affichage des événements dans l\'onglet <b>Calendrier</b> et accorder l\'autorisation requise.</string>
|
||||
<string name="settings_show_events_as_glance_provider_error">Veuillez activer l\'affichage des événements dans le menu <b>Calendrier</b> et accorder l\'autorisation requise.</string>
|
||||
<string name="events_glance_provider_format">%1$s %2$s</string>
|
||||
|
||||
<!-- Settings -->
|
||||
@ -305,4 +310,18 @@
|
||||
<string name="nothing">Rien</string>
|
||||
<string name="action_dismiss">REFUSER</string>
|
||||
<string name="action_accept">ACCEPTER</string>
|
||||
|
||||
<!-- More -->
|
||||
<string name="look_and_feel_header"><![CDATA[Apparence du widget]]></string>
|
||||
<string name="typography_settings_title">Typographie</string>
|
||||
<string name="typography_settings_subtitle">Définir la police, la taille et la couleur du texte</string>
|
||||
<string name="layout_settings_title">Mise en page</string>
|
||||
<string name="gestures_settings_subtitle">Actions, comportements et raccourcis</string>
|
||||
<string name="gestures_settings_title">Gestes</string>
|
||||
<string name="gestures_amp_input_header"><![CDATA[Gestes et saisie]]></string>
|
||||
<string name="clock_settings_subtitle">Définir la taille, la couleur et le fuseau horaire</string>
|
||||
<string name="layout_settings_subtitle">Espacement et ajustements du widget</string>
|
||||
<string name="smart_content_header">Contenu intelligent</string>
|
||||
<string name="font_family_settings_title">Famille de polices</string>
|
||||
|
||||
</resources>
|
||||
|
@ -196,7 +196,7 @@
|
||||
<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="clock_warning">Due to technological limitations, the clock won\'t have the custom font and the text shadows selected in the Display section.</string>
|
||||
<string name="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="settings_clock_text_color_title">Text color</string>
|
||||
<string name="settings_ampm_indicator_title">Show AM/PM indicator</string>
|
||||
<string name="clock_text_header">Clock text style</string>
|
||||
@ -357,4 +357,5 @@
|
||||
<string name="clock_settings_subtitle">Set size, color and time zones</string>
|
||||
<string name="layout_settings_subtitle">Widget spacing and tweaks</string>
|
||||
<string name="smart_content_header">Smart content</string>
|
||||
<string name="spacing_settings_header">Spacing</string>
|
||||
</resources>
|
||||
|
Reference in New Issue
Block a user