diff --git a/app/build.gradle b/app/build.gradle index a53427016..7b1d1e453 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -147,6 +147,7 @@ dependencies { compile ('com.wdullaer:materialdatetimepicker:3.2.3') { exclude group: 'com.android.support', module: 'support-v4' } + compile "me.leolin:ShortcutBadger:1.1.18@aar" googleplayCompile "com.google.android.gms:play-services-location:${GPS_VERSION}" googleplayCompile "com.google.android.gms:play-services-analytics:${GPS_VERSION}" diff --git a/app/src/googleplay/java/org/tasks/billing/InventoryHelper.java b/app/src/googleplay/java/org/tasks/billing/InventoryHelper.java index db25105d8..5b0391cc9 100644 --- a/app/src/googleplay/java/org/tasks/billing/InventoryHelper.java +++ b/app/src/googleplay/java/org/tasks/billing/InventoryHelper.java @@ -66,7 +66,6 @@ public class InventoryHelper implements IabBroadcastReceiver.IabBroadcastListene if (result.isSuccess()) { inventory = inv; checkPurchase(R.string.sku_tasker, R.string.p_purchased_tasker); - checkPurchase(R.string.sku_tesla_unread, R.string.p_purchased_tesla_unread); checkPurchase(R.string.sku_dashclock, R.string.p_purchased_dashclock); checkPurchase(R.string.sku_themes, R.string.p_purchased_themes); localBroadcastManager.broadcastRefresh(); diff --git a/app/src/googleplay/java/org/tasks/billing/PurchaseHelper.java b/app/src/googleplay/java/org/tasks/billing/PurchaseHelper.java index 1e5afdef0..967a64018 100644 --- a/app/src/googleplay/java/org/tasks/billing/PurchaseHelper.java +++ b/app/src/googleplay/java/org/tasks/billing/PurchaseHelper.java @@ -69,7 +69,6 @@ public class PurchaseHelper implements IabHelper.OnIabSetupFinishedListener { final List purchases = new ArrayList<>(); final Purchase tasker = inventory.getPurchase(context.getString(R.string.sku_tasker)); final Purchase dashclock = inventory.getPurchase(context.getString(R.string.sku_dashclock)); - final Purchase teslaUnread = inventory.getPurchase(context.getString(R.string.sku_tesla_unread)); final Purchase themes = inventory.getPurchase(context.getString(R.string.sku_themes)); if (tasker != null) { purchases.add(tasker); @@ -77,9 +76,6 @@ public class PurchaseHelper implements IabHelper.OnIabSetupFinishedListener { if (dashclock != null) { purchases.add(dashclock); } - if (teslaUnread != null) { - purchases.add(teslaUnread); - } if (themes != null) { purchases.add(themes); } @@ -96,9 +92,6 @@ public class PurchaseHelper implements IabHelper.OnIabSetupFinishedListener { preferences.setBoolean(R.string.p_purchased_tasker, false); } else if (purchase.equals(dashclock)) { preferences.setBoolean(R.string.p_purchased_dashclock, false); - } else if (purchase.equals(teslaUnread)) { - preferences.setBoolean(R.string.p_purchased_tesla_unread, false); - preferences.setBoolean(R.string.p_tesla_unread_enabled, false); } else if (purchase.equals(themes)) { preferences.setBoolean(R.string.p_purchased_themes, false); } else { diff --git a/app/src/main/java/org/tasks/Tasks.java b/app/src/main/java/org/tasks/Tasks.java index ccfb91ac0..2d51d3b27 100644 --- a/app/src/main/java/org/tasks/Tasks.java +++ b/app/src/main/java/org/tasks/Tasks.java @@ -7,7 +7,7 @@ import org.tasks.analytics.Tracker; import org.tasks.injection.ApplicationComponent; import org.tasks.injection.InjectingApplication; import org.tasks.preferences.Preferences; -import org.tasks.receivers.TeslaUnreadReceiver; +import org.tasks.receivers.Badger; import org.tasks.themes.ThemeCache; import javax.inject.Inject; @@ -20,7 +20,7 @@ public class Tasks extends InjectingApplication { @Inject FlavorSetup flavorSetup; @Inject BuildSetup buildSetup; @Inject ThemeCache themeCache; - @Inject TeslaUnreadReceiver teslaUnreadReceiver; + @Inject Badger badger; @Override public void onCreate() { @@ -36,7 +36,7 @@ public class Tasks extends InjectingApplication { flavorSetup.setup(); - teslaUnreadReceiver.setEnabled(preferences.getBoolean(R.string.p_tesla_unread_enabled, false)); + badger.setEnabled(preferences.getBoolean(R.string.p_badges_enabled, true)); themeCache.getThemeBase(preferences.getInt(R.string.p_theme, 0)).setDefaultNightMode(); diff --git a/app/src/main/java/org/tasks/analytics/Tracking.java b/app/src/main/java/org/tasks/analytics/Tracking.java index bb5b3dc4e..9c5ec7b19 100644 --- a/app/src/main/java/org/tasks/analytics/Tracking.java +++ b/app/src/main/java/org/tasks/analytics/Tracking.java @@ -6,6 +6,7 @@ public class Tracking { public enum Events { SET_DEFAULT_LIST(R.string.tracking_category_preferences, R.string.p_default_list), + SET_BADGE_LIST(R.string.tracking_category_preferences, R.string.p_badge_list), GTASK_DEFAULT_LIST(R.string.tracking_category_preferences, R.string.p_gtasks_default_list), SET_THEME(R.string.tracking_category_preferences, R.string.p_theme), SET_COLOR(R.string.tracking_category_preferences, R.string.p_theme_color), diff --git a/app/src/main/java/org/tasks/injection/BroadcastComponent.java b/app/src/main/java/org/tasks/injection/BroadcastComponent.java index 04d05bd70..4434bff3b 100644 --- a/app/src/main/java/org/tasks/injection/BroadcastComponent.java +++ b/app/src/main/java/org/tasks/injection/BroadcastComponent.java @@ -9,7 +9,6 @@ import org.tasks.receivers.BootCompletedReceiver; import org.tasks.receivers.CompleteTaskReceiver; import org.tasks.receivers.MyPackageReplacedReceiver; import org.tasks.receivers.PushReceiver; -import org.tasks.receivers.TeslaUnreadReceiver; import org.tasks.widget.TasksWidget; import dagger.Subcomponent; @@ -30,8 +29,6 @@ public interface BroadcastComponent { void inject(TasksWidget tasksWidget); - void inject(TeslaUnreadReceiver teslaUnreadReceiver); - void inject(PushReceiver pushReceiver); void inject(NotificationClearedReceiver notificationClearedReceiver); diff --git a/app/src/main/java/org/tasks/preferences/BasicPreferences.java b/app/src/main/java/org/tasks/preferences/BasicPreferences.java index a1f7f0948..4c885c40d 100644 --- a/app/src/main/java/org/tasks/preferences/BasicPreferences.java +++ b/app/src/main/java/org/tasks/preferences/BasicPreferences.java @@ -15,8 +15,10 @@ import com.todoroo.astrid.core.OldTaskPreferences; import com.todoroo.astrid.reminders.ReminderPreferences; import org.tasks.BuildConfig; +import org.tasks.LocalBroadcastManager; import org.tasks.R; import org.tasks.activities.ColorPickerActivity; +import org.tasks.activities.FilterSelectionActivity; import org.tasks.analytics.Tracker; import org.tasks.analytics.Tracking; import org.tasks.billing.PurchaseHelper; @@ -28,7 +30,7 @@ import org.tasks.injection.ActivityComponent; import org.tasks.injection.InjectingPreferenceActivity; import org.tasks.locale.Locale; import org.tasks.locale.LocalePickerDialog; -import org.tasks.receivers.TeslaUnreadReceiver; +import org.tasks.receivers.Badger; import org.tasks.themes.ThemeAccent; import org.tasks.themes.ThemeBase; import org.tasks.themes.ThemeCache; @@ -61,6 +63,7 @@ public class BasicPreferences extends InjectingPreferenceActivity implements private static final int REQUEST_CODE_BACKUP_DIR = 10005; private static final int REQUEST_PICKER = 10006; public static final int REQUEST_PURCHASE = 10007; + private static final int REQUEST_BADGE_LIST = 10008; @Inject Tracker tracker; @Inject Preferences preferences; @@ -70,8 +73,10 @@ public class BasicPreferences extends InjectingPreferenceActivity implements @Inject DialogBuilder dialogBuilder; @Inject Locale locale; @Inject ThemeCache themeCache; - @Inject TeslaUnreadReceiver teslaUnreadReceiver; + @Inject Badger badger; @Inject PurchaseHelper purchaseHelper; + @Inject DefaultFilterProvider defaultFilterProvider; + @Inject LocalBroadcastManager localBroadcastManager; private Bundle result; @@ -152,14 +157,24 @@ public class BasicPreferences extends InjectingPreferenceActivity implements return false; }); - findPreference(R.string.p_tesla_unread_enabled).setOnPreferenceChangeListener((preference, newValue) -> { + Preference defaultList = findPreference(getString(R.string.p_badge_list)); + Filter filter = defaultFilterProvider.getBadgeFilter(); + defaultList.setSummary(filter.listingTitle); + defaultList.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(BasicPreferences.this, FilterSelectionActivity.class); + intent.putExtra(FilterSelectionActivity.EXTRA_RETURN_FILTER, true); + startActivityForResult(intent, REQUEST_BADGE_LIST); + return true; + }); + + findPreference(R.string.p_badges_enabled).setOnPreferenceChangeListener((preference, newValue) -> { if (newValue != null) { - if ((boolean) newValue && !preferences.hasPurchase(R.string.p_purchased_tesla_unread)) { - purchaseHelper.purchase(BasicPreferences.this, getString(R.string.sku_tesla_unread), getString(R.string.p_purchased_tesla_unread), REQUEST_PURCHASE, BasicPreferences.this); - } else { - teslaUnreadReceiver.setEnabled((boolean) newValue); - return true; + boolean enabled = (boolean) newValue; + badger.setEnabled(enabled); + if (enabled) { + showRestartDialog(); } + return true; } return false; }); @@ -184,7 +199,6 @@ public class BasicPreferences extends InjectingPreferenceActivity implements findPreference(getString(R.string.debug_unlock_purchases)).setOnPreferenceClickListener(preference -> { preferences.setBoolean(R.string.p_purchased_dashclock, true); preferences.setBoolean(R.string.p_purchased_tasker, true); - preferences.setBoolean(R.string.p_purchased_tesla_unread, true); preferences.setBoolean(R.string.p_purchased_themes, true); recreate(); return true; @@ -276,7 +290,14 @@ public class BasicPreferences extends InjectingPreferenceActivity implements .show(getFragmentManager(), FRAG_TAG_IMPORT_TASKS); } } else if (requestCode == REQUEST_PURCHASE) { - purchaseHelper.handleActivityResult(this, requestCode, resultCode, data); + purchaseHelper.handleActivityResult(this, requestCode, resultCode, data); + } else if (requestCode == REQUEST_BADGE_LIST) { + if (resultCode == RESULT_OK) { + Filter filter = data.getParcelableExtra(FilterSelectionActivity.EXTRA_FILTER); + defaultFilterProvider.setBadgeFilter(filter); + findPreference(getString(R.string.p_badge_list)).setSummary(filter.listingTitle); + localBroadcastManager.broadcastRefresh(); + } } else { super.onActivityResult(requestCode, resultCode, data); } @@ -329,8 +350,6 @@ public class BasicPreferences extends InjectingPreferenceActivity implements runOnUiThread(() -> { if (getString(R.string.sku_tasker).equals(sku)) { ((TwoStatePreference) findPreference(R.string.p_purchased_tasker)).setChecked(success); - } else if (getString(R.string.sku_tesla_unread).equals(sku)) { - ((TwoStatePreference) findPreference(R.string.p_tesla_unread_enabled)).setChecked(success); } else if (getString(R.string.sku_dashclock).equals(sku)) { ((TwoStatePreference) findPreference(R.string.p_purchased_dashclock)).setChecked(success); } else if (getString(R.string.sku_themes).equals(sku)) { diff --git a/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.java b/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.java index 9911ef4ab..840d92597 100644 --- a/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.java +++ b/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.java @@ -62,6 +62,10 @@ public class DefaultFilterProvider { this.gtasksFilterExposer = gtasksFilterExposer; } + public Filter getBadgeFilter() { + return getFilterFromPreference(R.string.p_badge_list); + } + public Filter getDefaultFilter() { return getFilterFromPreference(R.string.p_default_list); } @@ -108,6 +112,14 @@ public class DefaultFilterProvider { } } + public void setBadgeFilter(Filter filter) { + tracker.reportEvent(Tracking.Events.SET_BADGE_LIST); + String filterPreferenceValue = getFilterPreferenceValue(filter); + if (!Strings.isNullOrEmpty(filterPreferenceValue)) { + preferences.setString(R.string.p_badge_list, filterPreferenceValue); + } + } + public String getFilterPreferenceValue(Filter filter) { int filterType = getFilterType(filter); switch (filterType) { diff --git a/app/src/main/java/org/tasks/receivers/Badger.java b/app/src/main/java/org/tasks/receivers/Badger.java new file mode 100644 index 000000000..1b22d3d5a --- /dev/null +++ b/app/src/main/java/org/tasks/receivers/Badger.java @@ -0,0 +1,66 @@ +package org.tasks.receivers; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.dao.TaskDao; + +import org.tasks.LocalBroadcastManager; +import org.tasks.injection.ApplicationScope; +import org.tasks.injection.ForApplication; +import org.tasks.preferences.DefaultFilterProvider; + +import javax.inject.Inject; + +import me.leolin.shortcutbadger.ShortcutBadger; +import timber.log.Timber; + +@ApplicationScope +public class Badger { + + private final Context context; + private final DefaultFilterProvider defaultFilterProvider; + private final TaskDao taskDao; + private final LocalBroadcastManager localBroadcastManager; + + private boolean enabled; + + private BroadcastReceiver receiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + publishCount(); + } + }; + + @Inject + public Badger(@ForApplication Context context, DefaultFilterProvider defaultFilterProvider, + TaskDao taskDao, LocalBroadcastManager localBroadcastManager) { + this.context = context; + this.defaultFilterProvider = defaultFilterProvider; + this.taskDao = taskDao; + this.localBroadcastManager = localBroadcastManager; + } + + public void setEnabled(boolean newValue) { + try { + if (newValue) { + localBroadcastManager.registerRefreshReceiver(receiver); + publishCount(); + } else if (enabled) { + localBroadcastManager.unregisterReceiver(receiver); + ShortcutBadger.removeCount(context); + } + enabled = newValue; + } catch (Exception e) { + Timber.e(e, e.getMessage()); + } + } + + private void publishCount() { + Filter badgeFilter = defaultFilterProvider.getBadgeFilter(); + int count = taskDao.count(badgeFilter); + ShortcutBadger.applyCount(context, count); + } +} diff --git a/app/src/main/java/org/tasks/receivers/TeslaUnreadReceiver.java b/app/src/main/java/org/tasks/receivers/TeslaUnreadReceiver.java deleted file mode 100644 index 49428f74e..000000000 --- a/app/src/main/java/org/tasks/receivers/TeslaUnreadReceiver.java +++ /dev/null @@ -1,90 +0,0 @@ -package org.tasks.receivers; - -import android.content.ContentValues; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.net.Uri; - -import com.todoroo.astrid.api.AstridApiConstants; -import com.todoroo.astrid.api.Filter; -import com.todoroo.astrid.dao.TaskDao; - -import org.tasks.BuildConfig; -import org.tasks.LocalBroadcastManager; -import org.tasks.analytics.Tracker; -import org.tasks.injection.ApplicationScope; -import org.tasks.injection.BroadcastComponent; -import org.tasks.injection.ForApplication; -import org.tasks.injection.InjectingBroadcastReceiver; -import org.tasks.preferences.DefaultFilterProvider; - -import javax.inject.Inject; - -import timber.log.Timber; - -@ApplicationScope -public class TeslaUnreadReceiver extends InjectingBroadcastReceiver { - - private static final String TESLA_URI = "content://com.teslacoilsw.notifier/unread_count"; - private static final String TESLA_TAG = BuildConfig.APPLICATION_ID + "/com.todoroo.astrid.activity.TaskListActivity"; - - private final Context context; - private final DefaultFilterProvider defaultFilterProvider; - private final TaskDao taskDao; - private final Tracker tracker; - private final LocalBroadcastManager localBroadcastManager; - - private boolean enabled; - - @Inject - public TeslaUnreadReceiver(@ForApplication Context context, DefaultFilterProvider defaultFilterProvider, - TaskDao taskDao, Tracker tracker, LocalBroadcastManager localBroadcastManager) { - this.context = context; - this.defaultFilterProvider = defaultFilterProvider; - this.taskDao = taskDao; - this.tracker = tracker; - this.localBroadcastManager = localBroadcastManager; - } - - @Override - public void onReceive(Context context, Intent intent) { - super.onReceive(context, intent); - - Filter defaultFilter = defaultFilterProvider.getDefaultFilter(); - publishCount(taskDao.count(defaultFilter)); - } - - @Override - protected void inject(BroadcastComponent component) { - component.inject(this); - } - - public void setEnabled(boolean newValue) { - try { - if (newValue) { - localBroadcastManager.registerRefreshReceiver(this); - localBroadcastManager.broadcastRefresh(); - } else if (enabled) { - localBroadcastManager.unregisterReceiver(this); - publishCount(0); - } - enabled = newValue; - } catch (Exception e) { - Timber.e(e, e.getMessage()); - } - } - - private void publishCount(int count) { - try { - ContentValues contentValues = new ContentValues(); - contentValues.put("tag", TESLA_TAG); - contentValues.put("count", count); - context.getContentResolver().insert(Uri.parse(TESLA_URI), contentValues); - } catch (IllegalArgumentException ex) { - /* Fine, TeslaUnread is not installed. */ - } catch (Exception e) { - tracker.reportException(e); - } - } -} diff --git a/app/src/main/res/values-bg-rBG/strings.xml b/app/src/main/res/values-bg-rBG/strings.xml index 5978b6e93..93505461e 100644 --- a/app/src/main/res/values-bg-rBG/strings.xml +++ b/app/src/main/res/values-bg-rBG/strings.xml @@ -324,7 +324,6 @@ Бутон \"Назад\" запазва задачата Списък по подразбиране Tasks е проект с отворен код, поддържан от един разработчик. Някои функции се предлагат както покупки в приложението за да се подпомогне процеса на разработка. - Показване на значка за броя на активните задачи в списъка Ви по подразбиране. Изисква TeslaUnread за Nova Launcher Отключете всички теми и да добавите малко цвят към Tasks Context-Aware списък уведомления. Изисква Tasker или Locale Даренията са добре дошли diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index a1a3bd763..938256e86 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -317,7 +317,6 @@ Zurück-Button speichert die Aufgabe Standard-Liste Tasks ist ein Open Source-Projekt eines einzelnen Entwicklers. Manche Funktionen werden daher als In App-Käufe angeboten, um die Entwicklung zu unterstützen. - Badge anzeigen mit der Anzahl an aktiven Augaben in der Standard-Liste. Benötigt TeslaUnread für Nova Launcher Entsperre alle Themes Kontext-bezogene Listenbenachrichtigungen. Benötigt Tasker oder Locale Spenden sind sehr willkommen diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 59693efd5..364aefa62 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -320,7 +320,6 @@ Botón atrás guarda la tarea Lista por defecto Tasks es un proyecto de código abierto mantenido por un único desarrollador. Algunas características especializadas se podrán comprar desde la aplicación para mantener su desarrollo. - Mostrar distintivo con número de tareas activas en la lista predeterminada. Requiere TeslaUnread de Nova Launcher. Desbloquea todos los temas y añade color a Tasks Notificaciones dependientes del contexto. Requiere Tasker o Locale. Se agradecen enormemente las donaciones diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 633d862dc..4bd672d18 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -322,7 +322,6 @@ Takaisin -painike tallentaa tehtävän Oletuslista Tasks on avoimen koodin projekti jota ylläpitää yksi kehittäjä. Jotkut ominaisuudet ovat saatavina sovelluksen sisäisinä ostoksina joilla tuetaan kehitystyötä. - Näytä aktiivisten tehtävien tunnus oletuslistalta. Vaatii TeslaUnread lisäosan Nova -käynnistimelle Avaa kaikki teemat ja lisää väriä Tasks -ohjelmaan Kontekstiriippuvainen listaus ilmoituksille. Vaatii Tasker tai Locale -sovelluksen Lahjoitukset ovat erittäin tervetulleita diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 7f065c210..adf71e98d 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -314,7 +314,6 @@ Faire un retour-arrière pour sauvegarder la tâche Liste par défaut Tasks est un projet à source ouverte entretenu par un développeur. Quelques contenus payants sont disponible dans l\'application pour supporter le développement. - Affiche un badge pour le nombre de tâches actives dans votre liste par défaut. TeslaUnread pour Nova Launcher est requis. Débloquer tous les thèmes et quelques couleurs à Tasks Notifications de la sensibilité du contexte de la liste. Tasker ou Local est requis. Les donations sont grandement appréciées. diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index cad9449e5..4cd8b4355 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -321,7 +321,6 @@ Botón atrás guarda la tarea Lista por defecto Tasks es un proyecto de código abierto mantenido por un único desarrollador. Algunas características especializadas se podrán comprar desde la aplicación para mantener su desarrollo. - Mostrar distintivo con número de tareas activas en la lista predeterminada. Requiere TeslaUnread de Nova Launcher. Desbloquea todos los temas y añade color a Tasks Notificaciones dependientes del contexto. Requiere Tasker o Locale. Se agradecen enormemente las donaciones diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 89894d1b6..e7ba9cbd4 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -324,7 +324,6 @@ A vissza gomb elmenti a feladatot Alapértelmezett lista A Tasks egyetlen fejlesztő által karbantartott nyílt forráskódú projekt. Néhány funkció csak alkalmazáson belüli vásárlással érhető el, ezzel is támogatva a fejlesztést. - Az alkalmazás ikonján megjeleníti az alapértelmezett listában levő feladatok számát. Használatához TeslaUnread for Nova Launcher szükséges. Az összes Tasks téma és szín elérhetővé tétele Kontextus-függő lista emlékeztető. Használatához Tasker vagy Locale szükséges. Támogatását nagyra értékeljük diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index f3325acb6..d1b93b22a 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -321,7 +321,6 @@ Il tasto indietro salva l\'attività Lista predefinita Tasks è un progetto open source manutenuto da un singolo sviluppatore. Per supportarne lo sviluppo all\'interno dell\'applicazione sono offerte alcune funzioni di nicchia a pagamento... - Mostra nella lista predefinita un contrassegno con il numero di compiti attivi. Richiede TeslaUnread for Nova Launcher Sblocca tutti i temi e aggiungi colori alle attività Lista notifiche in base al contesto. Richiede Tasker o Locale Sono gradite offerte diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 3dc8aa1ad..ee9cfc763 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -322,7 +322,6 @@ כפתור \"חזרה\" שומר שינויים במשימה רשימת ברירת מחדל זו אפליקציית קוד פתוח, מתוחזקת ע\"י מפתח אחד. מספר מאפיינים מוצעים לרכישה בתוך האפליקציה בכדי לתמוך בפיתוח. - הצג סמליל של מספר המשימות הפעילות ברשימת ברירת המחדל. נדרשת אפליקציה TeslaUnread ל-Nova Launcher בטל נעילת ערכות נושא והוסף צבע למשימות Context-aware רשימת משימות. נדרש Tasker או Locale תרומות יתקבלו בברכה diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index d0cb84fa6..025801be0 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -322,7 +322,6 @@ 戻るボタンでタスクを保存します デフォルトリスト Tasks は、1人の開発者が維持しているオープンソース プロジェクトです。開発をサポートするために、ニッチの機能はアプリ内課金で提供されています。 - デフォルトのリストに、アクティブなタスクの数のバッジを表示します。TeslaUnread for Nova Launcher が必要です すべてのテーマのロックを解除して Tasks に色を追加します コンテキスト アウェア リストの通知。Tasker または Locale が必要です 寄付は大歓迎です diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 477b44ece..ac77eb229 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -326,7 +326,6 @@ 뒤로가기 버튼으로 할일 저장 기본 목록 Tasks는 한 명의 개발자에 의해 유지되고 있는 오픈 소스 프로젝트입니다. 개발을 지속하기 위해 몇몇 기능들은 인앱 결제를 통해 제공되고 있습니다. - 기본 목록에 있는 활성화된 할일의 숫자 뱃지를 표시합니다. Nova Launcher용 TeslaUnread가 필요합니다. 모든 테마 잠금 해제 및 색상 추가 컨텍스트 기반의 리스트 알림. Tasker 또는 Locale이 필요합니다. 기부를 해주시면 감사하겠습니다 diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 70210b0aa..3fd024d02 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -316,7 +316,6 @@ Terug knop slaat taak op Standaard lijst Tasks is een open source project onderhouden bij een ontwikkelaar. Sommige functionaliteit worden als in-app aankopen aangeboden om de ontwikkeling te ondersteunen. - Toon een badge voor het aantal actieve taken in je standaard lijst. Vereist TeslaUnread voor Nova Launcher Ontlock alle thema\'s en voeg kleuren toe aan Tasks Contextbewuste notificaties. Vereist Tasker of Locale Donaties worden erg gewaardeerd diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index a33272dc9..5f45edb93 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -321,7 +321,6 @@ Przycisk Cofnij zapisuje zadanie Domyślna lista Tasks jest projektem na licencji open source utrzymywanym przez jednego developera. Płatne funkcje wspierają rozwój aplikacji. - Pokaż licznik aktywnych zadań w domyślnej liście. Wymaga TeslaUnread dla Nova Launcher Odblokuj wszystkie motywy i dodaj trochę kolorów do Tasks Dotacje są bardzo mile widziane Wyświetla liczbę aktywnych zadań. Wymaga DashClock Widget diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 0781c7280..00feca360 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -314,7 +314,6 @@ Botão voltar salva a tarefa Lista padrão Tasks é um projeto de código aberto mantido por um desenvolvedor. Algumas funções são oferecidas como compras dentro do app a fim de apoiar o desenvolvimento. - Mostrar um emblema para o número de tarefas ativas na sua lista padrão. Necessita ter o TeslaUnread para Nova Launcher. Desbloquear todos os temas e adicionar um pouco de cor ao Tasks Notificações contextuadas de listas. Necessita Tasker ou Locale. Doações são muito valiosas diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 79463690d..38c653d64 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -321,7 +321,6 @@ Кнопка «Назад» сохраняет задачу Список по умолчанию Tasks развивается как проект с открытым исходным кодом и поддерживается единственным разработчиком. Некоторые функции приложения предлагаются как платные для дальнейшего развития программы - Показывать значок для числа активных задач в вашем основном списке. Требуется TeslaUnread для Nova Launcher Разблокировать все темы и добавить цвета в оформление Tasks Уведомления списка контекстного подбора. Требуется Tasker или Locale Благодарю за поддержку diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 855b17156..ef8049a7a 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -318,7 +318,6 @@ Bakåtknapp sparar uppgift Standardlista Tasks är ett open source projekt som drivs av en ensam utvecklare. Några av funktionerna blir tillgängliga via köp i appar för att stödja fortsatt utveckling. - Visa ett märke för antalet aktiva uppgifter i standardlistan. Kräver TeslaUnread för Nova Launcher Lås upp alla teman och sätt lite färg på Tasks Innehållsbaserade listpåminnelser. Kräver Tasker eller Locale Donationer uppskattas varmt diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 34c38289c..79e8a78cd 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -323,7 +323,6 @@ Зберігати завдання кнопкою Назад Типовий список Tasks це проект з відкритим кодом, що обслуговується одним розробником. З метою підтримки розробки, деякі функції доступні лише після придбання через додаток. - Показувати значок з кількістю активних завдань в типовому списку. Потрібен TeslaUnread for Nova Launcher Розблокувати усі схеми та додати кольори до Tasks Контекстні сповіщення списку. Потрібен Tasker або Locale Пожертви щиро вітаються diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml index 0b86e1b34..3a23d67b5 100644 --- a/app/src/main/res/values/keys.xml +++ b/app/src/main/res/values/keys.xml @@ -244,12 +244,11 @@ Upgrade Multiselect delete Multiselect clone - tesla_unread_enabled - purchased_tesla_unread + badges_enabled + badge_list purchased_tasker purchased_dashclock purchased_themes - TeslaUnread Tasker/Locale DashClock extension theme_style @@ -272,7 +271,6 @@ dashclock_filter tasker - tesla_unread dashclock Unlock purchases Consume purchases diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c0da4b9b0..900aeb439 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -713,7 +713,6 @@ File %1$s contained %2$s.\n\n Back button saves task Default list Tasks is an open source project maintained by one developer. Some features are offered as in-app purchases in order to support development. - Display a badge for the number of active tasks in your default list. Requires TeslaUnread for Nova Launcher Unlock all themes and add some color to Tasks Context-aware list notifications. Requires Tasker or Locale Donations are greatly appreciated @@ -788,4 +787,7 @@ File %1$s contained %2$s.\n\n Manage battery optimizations Battery optimizations may delay notifications Bundle notifications + Badges + Launcher support required + List diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 47507f4ce..55e15827d 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -61,6 +61,19 @@ + + + + + + diff --git a/app/src/main/res/xml/preferences_addons.xml b/app/src/main/res/xml/preferences_addons.xml index 303d9d0b5..eb68d1a1a 100644 --- a/app/src/main/res/xml/preferences_addons.xml +++ b/app/src/main/res/xml/preferences_addons.xml @@ -35,11 +35,6 @@ android:summary="@string/tasker_description" android:title="@string/tasker_locale" /> - - \ No newline at end of file