Run StartupService on application launch

pull/437/head
Alex Baker 8 years ago
parent bb5cff0d08
commit a528b740a5

@ -205,10 +205,6 @@
</intent-filter>
</activity>
<activity
android:name="com.todoroo.astrid.service.UpgradeActivity"
android:screenOrientation="portrait" />
<!-- ======================================================= Receivers = -->
<receiver android:name=".receivers.TaskNotificationReceiver" />

@ -7,7 +7,6 @@ import android.content.Intent;
import android.os.Bundle;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.service.TaskCreator;
import com.todoroo.astrid.service.TaskService;
@ -25,7 +24,6 @@ import static org.tasks.intents.TaskIntents.getEditTaskStack;
*/
public final class ShareLinkActivity extends InjectingAppCompatActivity {
@Inject StartupService startupService;
@Inject TaskService taskService;
@Inject TaskCreator taskCreator;
@ -33,8 +31,6 @@ public final class ShareLinkActivity extends InjectingAppCompatActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startupService.onStartupApplication(this);
readIntent();
}

@ -34,9 +34,7 @@ import com.todoroo.astrid.gtasks.GtasksList;
import com.todoroo.astrid.gtasks.GtasksListFragment;
import com.todoroo.astrid.gtasks.GtasksListService;
import com.todoroo.astrid.repeats.RepeatControlSet;
import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.service.UpgradeActivity;
import com.todoroo.astrid.subtasks.SubtasksHelper;
import com.todoroo.astrid.subtasks.SubtasksListFragment;
import com.todoroo.astrid.subtasks.SubtasksTagListFragment;
@ -84,7 +82,6 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
GoogleTaskListSelectionHandler {
@Inject Preferences preferences;
@Inject StartupService startupService;
@Inject SubtasksHelper subtasksHelper;
@Inject TaskService taskService;
@Inject RepeatConfirmationReceiver repeatConfirmationReceiver;
@ -99,8 +96,6 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
@BindView(R.id.drawer_layout) DrawerLayout drawerLayout;
public static final int REQUEST_UPGRADE = 505;
private NavigationDrawerFragment navigationDrawer;
/** For indicating the new list screen should be launched at fragment setup time */
@ -123,8 +118,6 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
currentNightMode = getNightMode();
startupService.onStartupApplication(this);
setContentView(R.layout.task_list_activity);
ButterKnife.bind(this);
@ -399,14 +392,6 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
}
repopulateNavigationDrawer();
} else if (requestCode == REQUEST_UPGRADE) {
if (resultCode == RESULT_OK) {
if (data != null && data.getBooleanExtra(UpgradeActivity.EXTRA_RESTART, false)) {
Timber.w("Upgrade requires restart");
finish();
startActivity(getIntent());
}
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}

@ -17,7 +17,6 @@ import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.service.TaskDeleter;
import com.todoroo.astrid.service.TaskService;
@ -32,7 +31,6 @@ import javax.inject.Inject;
public class OldTaskPreferences extends InjectingPreferenceActivity {
@Inject StartupService startupService;
@Inject DialogBuilder dialogBuilder;
@Inject TaskService taskService;
@Inject GCalHelper gcalHelper;
@ -45,8 +43,6 @@ public class OldTaskPreferences extends InjectingPreferenceActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startupService.onStartupApplication(this);
addPreferencesFromResource(R.xml.preferences_oldtasks);
findPreference(getString(R.string.EPr_manage_purge_deleted)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

@ -11,7 +11,6 @@ import android.widget.TextView;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.service.StartupService;
import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
@ -39,7 +38,6 @@ public class CalendarReminderActivity extends ThemedInjectingAppCompatActivity {
// Prompt user to ignore all missed calls after this many ignore presses
private static final int IGNORE_PROMPT_COUNT = 3;
@Inject StartupService startupService;
@Inject Preferences preferences;
@Inject ResourceResolver resourceResolver;
@Inject DialogBuilder dialogBuilder;
@ -98,8 +96,6 @@ public class CalendarReminderActivity extends ThemedInjectingAppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startupService.onStartupApplication(this);
setContentView(R.layout.calendar_reminder_activity);
Intent intent = getIntent();

@ -5,34 +5,33 @@
*/
package com.todoroo.astrid.service;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteException;
import android.os.Environment;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.dao.Database;
import org.tasks.Broadcaster;
import org.tasks.BuildConfig;
import org.tasks.R;
import org.tasks.analytics.Tracker;
import org.tasks.analytics.Tracking;
import org.tasks.injection.ForApplication;
import org.tasks.preferences.Preferences;
import java.io.File;
import javax.inject.Inject;
import javax.inject.Singleton;
import timber.log.Timber;
/**
* Service which handles jobs that need to be run when Astrid starts up.
*
* @author Tim Su <tim@todoroo.com>
*
*/
@Singleton
public class StartupService {
// --- application startup
public static final int V4_8_0 = 380;
private final Context context;
private final Database database;
private final Preferences preferences;
private final TaskDeleter taskDeleter;
@ -40,8 +39,9 @@ public class StartupService {
private final Tracker tracker;
@Inject
public StartupService(Database database, Preferences preferences, TaskDeleter taskDeleter,
public StartupService(@ForApplication Context context, Database database, Preferences preferences, TaskDeleter taskDeleter,
Broadcaster broadcaster, Tracker tracker) {
this.context = context;
this.database = database;
this.preferences = preferences;
this.taskDeleter = taskDeleter;
@ -49,17 +49,8 @@ public class StartupService {
this.tracker = tracker;
}
/**
* bit to prevent multiple initializations
*/
private static boolean hasStartedUp = false;
/** Called when this application is started up */
public synchronized void onStartupApplication(final Activity activity) {
if(hasStartedUp || activity == null) {
return;
}
public synchronized void onStartupApplication() {
try {
database.openForWriting();
} catch (SQLiteException e) {
@ -70,19 +61,19 @@ public class StartupService {
// read current version
final int lastVersion = preferences.getLastSetVersion();
int currentVersion = BuildConfig.VERSION_CODE;
final int currentVersion = BuildConfig.VERSION_CODE;
Timber.i("Astrid Startup. %s => %s", lastVersion, currentVersion);
// invoke upgrade service
if(lastVersion != currentVersion) {
if(lastVersion > 0) {
activity.startActivityForResult(new Intent(activity, UpgradeActivity.class) {{
putExtra(UpgradeActivity.TOKEN_FROM_VERSION, lastVersion);
}}, TaskListActivity.REQUEST_UPGRADE);
}
new Thread() {
@Override
public void run() {
upgrade(lastVersion, currentVersion);
}
}.start();
preferences.setDefaults();
preferences.setCurrentVersion(currentVersion);
}
// perform startup activities in a background thread
@ -96,7 +87,37 @@ public class StartupService {
if (lastVersion == 0) {
broadcaster.firstLaunch();
}
}
hasStartedUp = true;
private void upgrade(int from, int to) {
try {
if (from < V4_8_0) {
performMarshmallowMigration();
}
if (from > 0) {
tracker.reportEvent(Tracking.Events.UPGRADE, Integer.toString(from));
}
preferences.setCurrentVersion(to);
} finally {
context.sendBroadcast(new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH));
}
}
private void performMarshmallowMigration() {
try {
// preserve pre-marshmallow default backup location
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
if (!preferences.isStringValueSet(R.string.p_backup_dir)) {
String directory = String.format("%s/astrid",
Environment.getExternalStorageDirectory());
File file = new File(directory);
if (file.exists() && file.isDirectory()) {
preferences.setString(R.string.p_backup_dir, directory);
}
}
}
} catch (Exception e) {
tracker.reportException(e);
}
}
}

@ -1,99 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
* <p/>
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.service;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.api.AstridApiConstants;
import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.Preferences;
import java.io.File;
import javax.inject.Inject;
public class UpgradeActivity extends InjectingAppCompatActivity {
public static final String TOKEN_FROM_VERSION = "from_version"; //$NON-NLS-1$
public static final String EXTRA_RESTART = "extra_restart";
public static final int V4_8_0 = 380;
public static final int V3_0_0 = 136;
@Inject DialogBuilder dialogBuilder;
@Inject Preferences preferences;
private ProgressDialog dialog;
private int from;
private boolean finished = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
from = getIntent().getIntExtra(TOKEN_FROM_VERSION, -1);
if (from > 0) {
dialog = dialogBuilder.newProgressDialog(R.string.DLG_upgrading);
new Thread() {
@Override
public void run() {
boolean restartRequired = false;
try {
if (from < V4_8_0) {
performMarshmallowMigration();
}
} finally {
finished = true;
DialogUtilities.dismissDialog(UpgradeActivity.this, dialog);
sendBroadcast(new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH));
Intent data = new Intent();
data.putExtra(EXTRA_RESTART, restartRequired);
setResult(RESULT_OK, data);
finish();
}
}
}.start();
} else {
finished = true;
finish();
}
}
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
@Override
public void onBackPressed() {
// Don't allow the back button to finish this activity before things are done
if (finished) {
super.onBackPressed();
}
}
private void performMarshmallowMigration() {
// preserve pre-marshmallow default backup location
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
if (!preferences.isStringValueSet(R.string.p_backup_dir)) {
String directory = String.format("%s/astrid",
Environment.getExternalStorageDirectory());
File file = new File(directory);
if (file.exists() && file.isDirectory()) {
preferences.setString(R.string.p_backup_dir, directory);
}
}
}
}
}

@ -27,9 +27,6 @@ public class Tasks extends InjectingApplication {
@Inject MetadataDao metadataDao;
@Inject TagDataDao tagDataDao;
@Inject StoreObjectDao storeObjectDao;
@Inject UserActivityDao userActivityDao;
@Inject TaskAttachmentDao taskAttachmentDao;
@Inject TaskListMetadataDao taskListMetadataDao;
@Inject TaskService taskService;
@Inject TagService tagService;
@Inject Broadcaster broadcaster;
@ -49,6 +46,8 @@ public class Tasks extends InjectingApplication {
tracker.setTrackingEnabled(preferences.isTrackingEnabled());
themeCache.getThemeBase(preferences.getInt(R.string.p_theme, 0)).setDefaultNightMode();
startupService.onStartupApplication();
}
@Override

@ -17,6 +17,7 @@ public class Tracking {
GTASK_DISABLED(R.string.tracking_category_google_tasks, R.string.tracking_action_off),
GTASK_LOGOUT(R.string.tracking_category_google_tasks, R.string.tracking_action_clear),
GTASK_MOVE(R.string.tracking_category_google_tasks, R.string.tracking_action_move),
UPGRADE(R.string.tracking_category_event, R.string.tracking_event_upgrade),
NIGHT_MODE_MISMATCH(R.string.tracking_category_event, R.string.tracking_event_night_mode_mismatch),
SET_PREFERENCE(R.string.tracking_category_preferences, 0);

@ -11,7 +11,6 @@ import com.todoroo.astrid.core.OldTaskPreferences;
import com.todoroo.astrid.files.AACRecordingActivity;
import com.todoroo.astrid.gcal.CalendarReminderActivity;
import com.todoroo.astrid.reminders.ReminderPreferences;
import com.todoroo.astrid.service.UpgradeActivity;
import org.tasks.activities.AddAttachmentActivity;
import org.tasks.activities.CalendarSelectionActivity;
@ -57,8 +56,6 @@ public interface BaseActivityComponent {
void inject(TagSettingsActivity tagSettingsActivity);
void inject(UpgradeActivity upgradeActivity);
void inject(ShareLinkActivity shareLinkActivity);
void inject(TaskListActivity taskListActivity);

@ -1,20 +1,19 @@
package org.tasks.reminders;
import android.support.v4.app.FragmentManager;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.service.TaskService;
import org.tasks.injection.ActivityComponent;
import org.tasks.time.DateTime;
import org.tasks.activities.DateAndTimePickerActivity;
import org.tasks.activities.TimePickerActivity;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.notifications.NotificationManager;
import org.tasks.time.DateTime;
import javax.inject.Inject;
@ -27,7 +26,6 @@ public class SnoozeActivity extends InjectingAppCompatActivity implements Snooze
public static final String EXTRA_TASK_ID = "id";
public static final String EXTRA_SNOOZE_TIME = "snooze_time";
@Inject StartupService startupService;
@Inject TaskService taskService;
@Inject NotificationManager notificationManager;
@ -63,8 +61,6 @@ public class SnoozeActivity extends InjectingAppCompatActivity implements Snooze
}
}
startupService.onStartupApplication(this);
if (intent.hasExtra(EXTRA_SNOOZE_TIME)) {
snoozeForTime(new DateTime(intent.getLongExtra(EXTRA_SNOOZE_TIME, 0L)));
} else {

@ -14,7 +14,6 @@
<string name="read_permission_label">إذن المهام</string>
<string name="write_permission_label">أخذ التصاريح</string>
<string name="DLG_delete_this_task_question">حذف هذه المهمه؟</string>
<string name="DLG_upgrading">ترقية المهام...</string>
<string name="DLG_hour_minutes">الوقت (ساعة : دقيقة)</string>
<string name="DLG_undo">تراجع</string>
<string name="WID_dateButtonUnset">اضغط لتعيين</string>

@ -29,7 +29,6 @@
<string name="discard_confirmation">Сигурни ли сте че искате да отхвърлите промените си?</string>
<string name="keep_editing">Продължаване на редактиране</string>
<string name="DLG_delete_this_task_question">Изтриване на тази задача?</string>
<string name="DLG_upgrading">Обновяване на твоите задачи...</string>
<string name="DLG_hour_minutes">Време (часове: минути)</string>
<string name="DLG_undo">Върни</string>
<string name="WID_dateButtonUnset">Кликнете, за да зададете</string>

@ -18,7 +18,6 @@
<string name="read_permission_label">Permís de l\'Tasks</string>
<string name="write_permission_label">Permís de l\'Tasks</string>
<string name="DLG_delete_this_task_question">Voleu suprimir aquesta tasca?</string>
<string name="DLG_upgrading">S\'estan actualitzant les vostres tasques...</string>
<string name="DLG_hour_minutes">Temps (hores : minuts)</string>
<string name="DLG_undo">Desfés</string>
<string name="WID_dateButtonUnset">Prem per establir</string>

@ -20,7 +20,6 @@
<string name="read_permission_label">Tasks Práva</string>
<string name="write_permission_label">Tasks Práva</string>
<string name="DLG_delete_this_task_question">Smazat tento úkol?</string>
<string name="DLG_upgrading">Obnovování vašich úkolů...</string>
<string name="DLG_hour_minutes">Čas (hodin : minut)</string>
<string name="DLG_undo">Vrátit změny</string>
<string name="WID_dateButtonUnset">Klikni pro nastavení</string>

@ -20,7 +20,6 @@
<string name="read_permission_label">Tasks Tilladelser</string>
<string name="write_permission_label">Tasks Tilladelser</string>
<string name="DLG_delete_this_task_question">Slet denne opgave?</string>
<string name="DLG_upgrading">Opgraderer dine opgaver...</string>
<string name="DLG_hour_minutes">Tid (timer : minutter)</string>
<string name="WID_dateButtonUnset">Tryk for at indstille</string>
<string name="TLA_menu_sort">Sorter &amp; skjulte</string>

@ -24,7 +24,6 @@
<string name="discard_confirmation">Änderungen wirklich verwerfen?</string>
<string name="keep_editing">Weiter bearbeiten</string>
<string name="DLG_delete_this_task_question">Diese Aufgabe löschen?</string>
<string name="DLG_upgrading">Ihre Aufgaben werden aktualisiert …</string>
<string name="DLG_hour_minutes">Zeit (Stunden : Minuten)</string>
<string name="DLG_undo">Rückgängig</string>
<string name="WID_dateButtonUnset">Klicken zur Bestätigung</string>

@ -23,7 +23,6 @@
<string name="read_permission_label">Άδεια εργασιών</string>
<string name="write_permission_label">Άδεια Εργασιών</string>
<string name="DLG_delete_this_task_question">Διαγραφή εργασίας;</string>
<string name="DLG_upgrading">Αναβάθμιση των εργασιών σας...</string>
<string name="DLG_hour_minutes">Ώρα (ώρες : λεπτά)</string>
<string name="DLG_undo">Αναίρεση</string>
<string name="WID_dateButtonUnset">Κλικ για καθορισμό</string>

@ -26,7 +26,6 @@
<string name="discard_confirmation">¿Quieres descartar los cambios?</string>
<string name="keep_editing">Seguir editando</string>
<string name="DLG_delete_this_task_question">¿Borrar esta tarea?</string>
<string name="DLG_upgrading">Actualizando sus tareas....</string>
<string name="DLG_hour_minutes">Tiempo (horas : minutos)</string>
<string name="DLG_undo">Deshacer</string>
<string name="WID_dateButtonUnset">Pulsar para establecer</string>

@ -26,7 +26,6 @@
<string name="discard_confirmation">Etes-vous sûrs de vouloir annuler vos modifications ?</string>
<string name="keep_editing">Continuer l\'édition</string>
<string name="DLG_delete_this_task_question">Supprimer cette tâche ?</string>
<string name="DLG_upgrading">Mise à jour de vos tâches…</string>
<string name="DLG_hour_minutes">Temps (heures : minutes)</string>
<string name="DLG_undo">Annuler Action</string>
<string name="WID_dateButtonUnset">Cliquez pour définir</string>

@ -26,7 +26,6 @@
<string name="discard_confirmation">Sicuro di voler annullare tutte le modifiche?</string>
<string name="keep_editing">Continua modifica</string>
<string name="DLG_delete_this_task_question">Eliminare questa attività?</string>
<string name="DLG_upgrading">Aggiornare le attività ...</string>
<string name="DLG_hour_minutes">Tempo (ore : minuti)</string>
<string name="DLG_undo">Annulla l\'ultima azione</string>
<string name="WID_dateButtonUnset">Clicca per Impostare</string>

@ -26,7 +26,6 @@
<string name="discard_confirmation">להתעלם מהשינויים ?</string>
<string name="keep_editing">המשך לערוך</string>
<string name="DLG_delete_this_task_question">למחוק משימה זו?</string>
<string name="DLG_upgrading">משדרגת את משימותיך...</string>
<string name="DLG_hour_minutes">זמן (שעות : דקות)</string>
<string name="DLG_undo">בטל פעולה אחרונה</string>
<string name="WID_dateButtonUnset">הקלק כדי לקבוע</string>

@ -26,7 +26,6 @@
<string name="discard_confirmation">変更を破棄してもよろしいですか?</string>
<string name="keep_editing">編集を続ける</string>
<string name="DLG_delete_this_task_question">このタスクを削除しますか?</string>
<string name="DLG_upgrading">タスクを更新しています</string>
<string name="DLG_hour_minutes">時間 (時:分)</string>
<string name="DLG_undo">動作を取り消す</string>
<string name="WID_dateButtonUnset">入力する</string>

@ -29,7 +29,6 @@
<string name="discard_confirmation">변경 사항을 버리시겠습니까?</string>
<string name="keep_editing">계속 편집</string>
<string name="DLG_delete_this_task_question">이 일정을 삭제할까요?</string>
<string name="DLG_upgrading">일정 업그레이드 중...</string>
<string name="DLG_hour_minutes">시간 (시 : 분)</string>
<string name="DLG_undo">실행 취소</string>
<string name="WID_dateButtonUnset">누르세요</string>

@ -18,7 +18,6 @@
<string name="read_permission_label">Tasks Tillatelse</string>
<string name="write_permission_label">Tasks Tillatelse</string>
<string name="DLG_delete_this_task_question">Slett denne oppgaven?</string>
<string name="DLG_upgrading">Oppgraderer oppgavene dine...</string>
<string name="DLG_hour_minutes">Tid (timer : minutter)</string>
<string name="WID_dateButtonUnset">Klikk for å sette</string>
<string name="TLA_menu_sort">Sorter &amp; Skjult</string>

@ -26,7 +26,6 @@
<string name="discard_confirmation">Weet u zeker dat u de wijzigingen niet wilt opslaan?</string>
<string name="keep_editing">Blijf editen</string>
<string name="DLG_delete_this_task_question">Taak verwijderen?</string>
<string name="DLG_upgrading">Taken bijwerken...</string>
<string name="DLG_hour_minutes">Tijd (uren : minuten)</string>
<string name="DLG_undo">Ongedaan Maken</string>
<string name="WID_dateButtonUnset">Klikken om in te stellen</string>

@ -20,7 +20,6 @@
<string name="read_permission_label">Uprawnienia Tasks</string>
<string name="write_permission_label">Zezwolenia Tasks</string>
<string name="DLG_delete_this_task_question">Usunąć to zadanie?</string>
<string name="DLG_upgrading">Uaktualniam Twoje zadania...</string>
<string name="DLG_hour_minutes">Czas (godziny : minuty)</string>
<string name="DLG_undo">Cofnij</string>
<string name="WID_dateButtonUnset">Kliknij, aby ustawić</string>

@ -21,7 +21,6 @@
<string name="discard_confirmation">Você tem certeza que deseja descartar suas mudanças?</string>
<string name="keep_editing">Continuar editando</string>
<string name="DLG_delete_this_task_question">Excluir esta tarefa?</string>
<string name="DLG_upgrading">Atualizando suas tarefas...</string>
<string name="DLG_hour_minutes">Horário (horas:minutos)</string>
<string name="DLG_undo">Desfazer</string>
<string name="WID_dateButtonUnset">Toque para definir</string>

@ -25,7 +25,6 @@
<string name="read_permission_label">Permissões do Tasks</string>
<string name="write_permission_label">Permissões do Tasks</string>
<string name="DLG_delete_this_task_question">Remover esta tarefa?</string>
<string name="DLG_upgrading">Atualização de tarefas...</string>
<string name="DLG_hour_minutes">Tempo (horas:minutos)</string>
<string name="DLG_undo">Anular</string>
<string name="WID_dateButtonUnset">Clique para definir</string>

@ -26,7 +26,6 @@
<string name="discard_confirmation">Вы действительно хотите отказаться от сделанных изменений?</string>
<string name="keep_editing">Продолжайте редактировать</string>
<string name="DLG_delete_this_task_question">Удалить эту задачу?</string>
<string name="DLG_upgrading">Обновление ваших задач…</string>
<string name="DLG_hour_minutes">Время (час : мин)</string>
<string name="DLG_undo">Отмена</string>
<string name="WID_dateButtonUnset">Установить</string>

@ -22,7 +22,6 @@
<string name="read_permission_label">Tasks povolenia</string>
<string name="write_permission_label">Tasks povolenia</string>
<string name="DLG_delete_this_task_question">Vymazať túto úlohu?</string>
<string name="DLG_upgrading">Aktualizácia tvojich úloh...</string>
<string name="DLG_hour_minutes">Čas (hodiny : minúty)</string>
<string name="DLG_undo">Späť</string>
<string name="WID_dateButtonUnset">Klikni pre nastavenie</string>

@ -23,7 +23,6 @@
<string name="read_permission_label">Dovoljenje Opravkom</string>
<string name="write_permission_label">Dovoljenje Opravkom</string>
<string name="DLG_delete_this_task_question">Zbrišem ta opravek?</string>
<string name="DLG_upgrading">Nadgrajujem tvoje opravke...</string>
<string name="DLG_hour_minutes">Čas (ure : minute)</string>
<string name="DLG_undo">Razveljavi</string>
<string name="WID_dateButtonUnset">Klikni za nastavitev</string>

@ -26,7 +26,6 @@
<string name="discard_confirmation">Är du säker på att du inte vill spara dina ändringar?</string>
<string name="keep_editing">Fortsätt redigera</string>
<string name="DLG_delete_this_task_question">Radera denna uppgift?</string>
<string name="DLG_upgrading">Uppgraderar dina uppgifter...</string>
<string name="DLG_hour_minutes">Tid (timmar : minuter</string>
<string name="DLG_undo">Ångra</string>
<string name="WID_dateButtonUnset">Klicka för att ställa</string>

@ -20,7 +20,6 @@
<string name="read_permission_label">Tasks İzni</string>
<string name="write_permission_label">Tasks İzni</string>
<string name="DLG_delete_this_task_question">Bu görev silinsin mi?</string>
<string name="DLG_upgrading">Görevleriniz güncelleniyor...</string>
<string name="DLG_hour_minutes">Zaman (saat : dakika)</string>
<string name="DLG_undo">Geri al</string>
<string name="WID_dateButtonUnset">Ayar İçin Dokun</string>

@ -29,7 +29,6 @@
<string name="discard_confirmation">Дійсно хочете скасувати ваші зміни?</string>
<string name="keep_editing">Продовжити редагування</string>
<string name="DLG_delete_this_task_question">Видалити цю задачу?</string>
<string name="DLG_upgrading">Оновлення ваших завдань...</string>
<string name="DLG_hour_minutes">Час (години : хвилини)</string>
<string name="DLG_undo">Відмінити</string>
<string name="WID_dateButtonUnset">Натисніть для установки</string>

@ -20,7 +20,6 @@
<string name="read_permission_label">清单小助理权限</string>
<string name="write_permission_label">清单小助理权限</string>
<string name="DLG_delete_this_task_question">确认删除?</string>
<string name="DLG_upgrading">升级您的任务...</string>
<string name="DLG_hour_minutes">时间(小时:分钟)</string>
<string name="DLG_undo">撤消</string>
<string name="WID_dateButtonUnset">点选</string>

@ -20,7 +20,6 @@
<string name="read_permission_label">Tasks 權限</string>
<string name="write_permission_label">Tasks 權限</string>
<string name="DLG_delete_this_task_question">確認刪除?</string>
<string name="DLG_upgrading">升級您的工作...</string>
<string name="DLG_hour_minutes">時間 (小時:分鐘)</string>
<string name="DLG_undo">撤消</string>
<string name="WID_dateButtonUnset">點選</string>

@ -293,6 +293,7 @@
<string name="tracking_action_off">Off</string>
<string name="tracking_action_clear">Clear</string>
<string name="tracking_event_night_mode_mismatch">Night Mismatch</string>
<string name="tracking_event_upgrade">Upgrade</string>
<string name="p_tesla_unread_enabled">tesla_unread_enabled</string>
<string name="p_purchased_tesla_unread">purchased_tesla_unread</string>
<string name="p_purchased_tasker">purchased_tasker</string>

@ -79,9 +79,6 @@ File %1$s contained %2$s.\n\n
<!-- question for deleting tasks -->
<string name="DLG_delete_this_task_question">Delete this task?</string>
<!-- Progress dialog shown when upgrading -->
<string name="DLG_upgrading">Upgrading your tasks...</string>
<!-- Title for dialog selecting a time (hours and minutes) -->
<string name="DLG_hour_minutes">Time (hours : minutes)</string>

Loading…
Cancel
Save