Remove unreachable code

actFmPreferenceService.isLoggedIn() always false
pull/46/head
Alex Baker 11 years ago
parent cee142014a
commit 580ab99d91

@ -220,7 +220,6 @@ public abstract class CommentsFragment extends SherlockListFragment {
});
refreshUpdatesList();
refreshActivity(false); // start a pull in the background
}
protected void resetPictureButton() {
@ -317,21 +316,8 @@ public abstract class CommentsFragment extends SherlockListFragment {
}
}
}
@Override
public void runOnErrors(List<JSONArray> errors) {/**/}
};
protected void refreshActivity(boolean manual) {
if (actFmPreferenceService.isLoggedIn()) {
if (hasModel()) {
performFetch(manual, doneRunnable);
} else {
doneRunnable.runOnSuccess();
}
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
if(menu.size() > 0) {
@ -339,7 +325,7 @@ public abstract class CommentsFragment extends SherlockListFragment {
}
MenuItem item;
boolean showCommentsRefresh = actFmPreferenceService.isLoggedIn();
boolean showCommentsRefresh = false;
if (showCommentsRefresh) {
Activity activity = getActivity();
if (activity instanceof TaskListActivity) {
@ -360,8 +346,6 @@ public abstract class CommentsFragment extends SherlockListFragment {
switch (item.getItemId()) {
case MENU_REFRESH_ID: {
refreshActivity(true);
return true;
}

@ -227,9 +227,6 @@ public class TagSettingsActivity extends SherlockFragmentActivity {
else if (tagData.getValue(TagData.MEMBER_COUNT) > 0) {
leaveListButton.setText(getString(R.string.tag_leave_button));
}
if(actFmPreferenceService.isLoggedIn()) {
findViewById(R.id.tag_silenced_container).setVisibility(View.VISIBLE);
}
picture.setDefaultImageDrawable(ResourceDrawableCache.getImageDrawableFromId(getResources(), TagService.getDefaultImageIDForTag(tagData.getUuid())));
picture.setOnClickListener(new OnClickListener() {
@ -308,7 +305,7 @@ public class TagSettingsActivity extends SherlockFragmentActivity {
JSONArray members = new JSONArray();
if(members.length() > 0 && !actFmPreferenceService.isLoggedIn()) {
if(members.length() > 0) {
if(newName.length() > 0 && oldName.length() == 0) {
tagDataService.save(tagData);
}

@ -9,7 +9,6 @@ import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
@ -28,16 +27,11 @@ import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.NotificationManager;
import com.todoroo.andlib.service.NotificationManager.AndroidNotificationManager;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.actfm.sync.ActFmSyncService;
import com.todoroo.astrid.actfm.sync.ActFmSyncThread;
import com.todoroo.astrid.actfm.sync.ActFmSyncThread.SyncMessageCallback;
import com.todoroo.astrid.actfm.sync.messages.BriefMe;
import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.activity.FilterListFragment;
import com.todoroo.astrid.activity.TaskListActivity;
@ -47,31 +41,24 @@ import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.dao.TagMetadataDao;
import com.todoroo.astrid.dao.TaskListMetadataDao;
import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.SyncFlags;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.TagMetadata;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.service.SyncV2Service;
import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.subtasks.SubtasksTagListFragment;
import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.tags.TaskToTagMetadata;
import com.todoroo.astrid.utility.AstridPreferences;
import com.todoroo.astrid.utility.Flags;
import org.json.JSONArray;
import org.tasks.R;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
public class TagViewFragment extends TaskListFragment {
@ -187,16 +174,6 @@ public class TagViewFragment extends TaskListFragment {
return R.layout.task_list_body_tag;
}
@Override
protected void addSyncRefreshMenuItem(Menu menu, int themeFlags) {
if(actFmPreferenceService.isLoggedIn()) {
addMenuItem(menu, R.string.actfm_TVA_menu_refresh,
ThemeService.getDrawable(R.drawable.icn_menu_refresh, themeFlags), MENU_REFRESH_ID, true);
} else {
super.addSyncRefreshMenuItem(menu, themeFlags);
}
}
@Override
protected void addMenuItems(Menu menu, Activity activity) {
super.addMenuItems(menu, activity);
@ -299,123 +276,10 @@ public class TagViewFragment extends TaskListFragment {
if(DateUtilities.now() - lastAutosync > AUTOSYNC_INTERVAL) {
tagData.setValue(TagData.LAST_AUTOSYNC, DateUtilities.now());
tagDataDao.saveExisting(tagData);
refreshData();
}
}
}
/** refresh the list with latest data from the web */
private void refreshData() {
if (actFmPreferenceService.isLoggedIn() && tagData != null && !RemoteModel.isUuidEmpty(tagData.getUuid())) {
((TextView)taskListView.findViewById(android.R.id.empty)).setText(R.string.DLG_loading);
SyncMessageCallback callback = new SyncMessageCallback() {
@Override
public void runOnSuccess() {
synchronized(this) {
Activity activity = getActivity();
if (activity != null) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
try {
reloadTagData(false);
refresh();
((TextView)taskListView.findViewById(android.R.id.empty)).setText(R.string.TLA_no_items);
} catch (Exception e) {
// Can happen when swipe between lists is on
}
}
});
}
}
}
@Override
public void runOnErrors(List<JSONArray> errors) {
Activity activity = getActivity();
if (activity != null && activity instanceof TaskListActivity) {
boolean notAuthorized = false;
for (JSONArray error : errors) {
String errorCode = error.optString(1);
if ("not_authorized".equals(errorCode)) { //$NON-NLS-1$
notAuthorized = true;
break;
}
}
final String tagName = tagData.getValue(TagData.NAME);
if (notAuthorized) {
final TaskListActivity tla = (TaskListActivity) activity;
tla.runOnUiThread(new Runnable() {
@Override
public void run() {
DialogUtilities.okCancelCustomDialog(tla,
tla.getString(R.string.actfm_tag_not_authorized_title),
tla.getString(R.string.actfm_tag_not_authorized_body, tagName),
R.string.actfm_tag_not_authorized_new_list,
R.string.actfm_tag_not_authorized_leave_list,
android.R.drawable.ic_dialog_alert,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String oldUuid = tagData.getUuid();
tagData.setValue(TagData.DELETION_DATE, DateUtilities.now());
tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
tagDataDao.saveExisting(tagData);
// TODO: Make this better
tagData.clearValue(TagData.ID);
tagData.clearValue(TagData.UUID);
tagData.clearValue(TagData.USER_ID);
tagData.clearValue(TagData.DELETION_DATE);
tagData.setValue(TagData.CREATION_DATE, DateUtilities.now());
tagDataDao.createNew(tagData);
String newUuid = tagData.getUuid();
TodorooCursor<Task> tasks = taskService.fetchFiltered(filter.getSqlQuery(), null, Task.ID, Task.UUID, Task.USER_ID);
try {
Task t = new Task();
for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) {
t.clear();
t.readFromCursor(tasks);
if (Task.USER_ID_SELF.equals(t.getValue(Task.USER_ID))) {
tagService.createLink(t, tagName, newUuid);
}
}
} finally {
tasks.close();
}
tagService.deleteTagMetadata(oldUuid);
Filter newFilter = TagFilterExposer.filterFromTagData(tla, tagData);
tla.onFilterItemClicked(newFilter);
}
},
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String uuid = tagData.getUuid();
tagDataDao.delete(tagData.getId());
metadataDao.deleteWhere(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_UUID.eq(uuid)));
tagMetadataDao.deleteWhere(TagMetadata.TAG_UUID.eq(uuid));
tla.switchToActiveTasks();
}
});
}
});
}
}
}
};
ActFmSyncThread.getInstance().repopulateQueueFromOutstandingTables();
ActFmSyncThread.getInstance().enqueueMessage(new BriefMe<Task>(Task.class, null, tagData.getValue(TagData.TASKS_PUSHED_AT), BriefMe.TAG_ID_KEY, tagData.getUuid()), callback);
ActFmSyncThread.getInstance().enqueueMessage(new BriefMe<TagData>(TagData.class, tagData.getUuid(), tagData.getValue(TagData.PUSHED_AT)), callback);
ActFmSyncThread.getInstance().enqueueMessage(new BriefMe<TaskListMetadata>(TaskListMetadata.class, null, tagData.getValue(TagData.METADATA_PUSHED_AT), BriefMe.TAG_ID_KEY, tagData.getUuid()), callback);
}
}
protected void setUpMembersGallery() {
getView().findViewById(R.id.members_header).setVisibility(View.GONE);
}
@ -438,7 +302,6 @@ public class TagViewFragment extends TaskListFragment {
//refreshUpdatesList();
}
});
refreshData();
NotificationManager nm = new AndroidNotificationManager(ContextManager.getContext());
try {
@ -521,7 +384,6 @@ public class TagViewFragment extends TaskListFragment {
// handle my own menus
switch (id) {
case MENU_REFRESH_ID:
refreshData();
return true;
case MENU_LIST_SETTINGS_ID:
settingsListener.onClick(null);

@ -5,13 +5,6 @@
*/
package com.todoroo.astrid.actfm.sync;
import java.io.IOException;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
import com.todoroo.andlib.service.Autowired;
@ -23,6 +16,12 @@ import com.todoroo.astrid.data.User;
import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.tags.reusable.FeaturedListFilterExposer;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
/**
* Service for synchronizing data on Astrid.com server with local.
*
@ -88,11 +87,7 @@ public final class ActFmSyncService {
}
private boolean checkForToken() {
if(!actFmPreferenceService.isLoggedIn()) {
return false;
}
token = actFmPreferenceService.getToken();
return true;
return false;
}
// --- json reader helper

@ -1,14 +1,9 @@
package com.todoroo.astrid.actfm.sync;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import com.todoroo.andlib.data.TodorooCursor;
@ -21,14 +16,9 @@ import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.sync.messages.BriefMe;
import com.todoroo.astrid.actfm.sync.messages.ChangesHappened;
import com.todoroo.astrid.actfm.sync.messages.ClientToServerMessage;
import com.todoroo.astrid.actfm.sync.messages.JSONPayloadBuilder;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.actfm.sync.messages.ReplayOutstandingEntries;
import com.todoroo.astrid.actfm.sync.messages.ReplayTaskListMetadataOutstanding;
import com.todoroo.astrid.actfm.sync.messages.ServerToClientMessage;
import com.todoroo.astrid.actfm.sync.messages.TaskListMetadataChangesHappened;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
@ -46,31 +36,17 @@ import com.todoroo.astrid.dao.UserActivityOutstandingDao;
import com.todoroo.astrid.data.OutstandingEntry;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.TagOutstanding;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.data.TaskListMetadataOutstanding;
import com.todoroo.astrid.data.TaskOutstanding;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.utility.Constants;
import com.todoroo.astrid.widget.TasksWidget;
import org.apache.http.entity.mime.MultipartEntity;
import org.json.JSONArray;
import org.json.JSONObject;
import org.tasks.R;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class ActFmSyncThread {
@ -111,17 +87,12 @@ public class ActFmSyncThread {
@Autowired
private TaskListMetadataOutstandingDao taskListMetadataOutstandingDao;
private String token;
private boolean isTimeForBackgroundSync = false;
private final NotificationManager notificationManager;
private int notificationId = -1;
public static interface SyncMessageCallback {
public void runOnSuccess();
public void runOnErrors(List<JSONArray> errors);
}
public static enum ModelType {
@ -213,35 +184,21 @@ public class ActFmSyncThread {
}
}
public synchronized void setTimeForBackgroundSync(boolean isTimeForBackgroundSync) {
this.isTimeForBackgroundSync = isTimeForBackgroundSync;
if (isTimeForBackgroundSync) {
synchronized (monitor) {
monitor.notifyAll();
}
}
}
public static final SyncMessageCallback DEFAULT_REFRESH_RUNNABLE = new SyncMessageCallback() {
@Override
public void runOnSuccess() {
Intent refresh = new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH);
ContextManager.getContext().sendBroadcast(refresh);
}
@Override
public void runOnErrors(List<JSONArray> errors) {/**/}
};
private void sync() {
try {
int batchSize = 4;
List<ClientToServerMessage<?>> messageBatch = new ArrayList<ClientToServerMessage<?>>();
while(true) {
synchronized(monitor) {
while ((pendingMessages.isEmpty() && !timeForBackgroundSync()) || !actFmPreferenceService.isLoggedIn()) {
while (true) {
try {
if ((pendingMessages.isEmpty() || !actFmPreferenceService.isLoggedIn()) && notificationId >= 0) {
if (notificationId >= 0) {
notificationManager.cancel(notificationId);
notificationId = -1;
}
@ -252,110 +209,6 @@ public class ActFmSyncThread {
}
}
}
boolean recordSyncSuccess = true;
if (timeForBackgroundSync()) {
repopulateQueueFromOutstandingTables();
enqueueMessage(BriefMe.instantiateBriefMeForClass(TaskListMetadata.class, NameMaps.PUSHED_AT_TASK_LIST_METADATA), DEFAULT_REFRESH_RUNNABLE);
enqueueMessage(BriefMe.instantiateBriefMeForClass(Task.class, NameMaps.PUSHED_AT_TASKS), DEFAULT_REFRESH_RUNNABLE);
enqueueMessage(BriefMe.instantiateBriefMeForClass(TagData.class, NameMaps.PUSHED_AT_TAGS), DEFAULT_REFRESH_RUNNABLE);
enqueueMessage(BriefMe.instantiateBriefMeForClass(User.class, NameMaps.PUSHED_AT_USERS), DEFAULT_REFRESH_RUNNABLE);
setTimeForBackgroundSync(false);
}
while (messageBatch.size() < batchSize && !pendingMessages.isEmpty()) {
ClientToServerMessage<?> message = pendingMessages.remove(0);
if (message != null) {
messageBatch.add(message);
}
}
if (!messageBatch.isEmpty() && checkForToken()) {
JSONPayloadBuilder payload = new JSONPayloadBuilder();
MultipartEntity entity = new MultipartEntity();
boolean containsChangesHappened = false;
for (int i = 0; i < messageBatch.size(); i++) {
ClientToServerMessage<?> message = messageBatch.get(i);
boolean success = payload.addMessage(message, entity);
if (success) {
if (message instanceof ChangesHappened) {
containsChangesHappened = true;
}
} else {
messageBatch.remove(i);
i--;
}
}
if (payload.getMessageCount() == 0) {
messageBatch.clear();
continue;
}
setupNotification();
payload.addJSONObject(getClientVersion());
JSONArray errors = null;
try {
JSONObject response = actFmInvoker.postSync(payload.closeAndReturnString(), entity, containsChangesHappened, token);
// process responses
String time = response.optString("time");
JSONArray serverMessagesJson = response.optJSONArray("messages");
if (serverMessagesJson != null) {
setWidgetSuppression(true);
for (int i = 0; i < serverMessagesJson.length(); i++) {
JSONObject serverMessageJson = serverMessagesJson.optJSONObject(i);
if (serverMessageJson != null) {
ServerToClientMessage serverMessage = ServerToClientMessage.instantiateMessage(serverMessageJson);
if (serverMessage != null) {
serverMessage.processMessage(time);
} else {
syncLog("Index " + i + " unable to instantiate message " + serverMessageJson.toString());
}
}
}
errors = response.optJSONArray("errors");
boolean errorsExist = (errors != null && errors.length() > 0);
replayOutstandingChanges(errorsExist);
setWidgetSuppression(false);
}
batchSize = Math.max(12, Math.min(batchSize, messageBatch.size()) * 2);
if (recordSyncSuccess) {
actFmPreferenceService.setLastError(null, null);
actFmPreferenceService.recordSuccessfulSync();
}
} catch (IOException e) {
Log.e(ERROR_TAG, "IOException", e);
batchSize = Math.max(batchSize / 2, 1);
}
Set<SyncMessageCallback> callbacksExecutedThisLoop = new HashSet<SyncMessageCallback>();
Map<Integer, List<JSONArray>> errorMap = buildErrorMap(errors);
for (int i = 0; i < messageBatch.size(); i++) {
ClientToServerMessage<?> message = messageBatch.get(i);
try {
SyncMessageCallback r = pendingCallbacks.remove(message);
if (r != null && !callbacksExecutedThisLoop.contains(r)) {
List<JSONArray> errorList = errorMap.get(i);
if (errorList == null || errorList.isEmpty()) {
r.runOnSuccess();
} else {
r.runOnErrors(errorList);
}
callbacksExecutedThisLoop.add(r);
}
} catch (Exception e) {
Log.e(ERROR_TAG, "Unexpected exception executing sync callback", e);
}
}
messageBatch.clear();
}
}
} catch (Exception e) {
// In the worst case, restart thread if something goes wrong
@ -366,70 +219,6 @@ public class ActFmSyncThread {
}
private Map<Integer, List<JSONArray>> buildErrorMap(JSONArray errors) {
Map<Integer, List<JSONArray>> result = new HashMap<Integer, List<JSONArray>>();
if (errors != null) {
for (int i = 0; i < errors.length(); i++) {
JSONArray error = errors.optJSONArray(i);
if (error != null && error.length() > 0) {
int index = error.optInt(0);
List<JSONArray> errorList = result.get(index);
if (errorList == null) {
errorList = new LinkedList<JSONArray>();
result.put(index, errorList);
}
errorList.add(error);
}
}
}
return result;
}
// Reapplies changes still in the outstanding tables to the local database
// Called after a batch has finished processing
private void replayOutstandingChanges(boolean afterErrors) {
syncLog("Replaying outstanding changes"); //$NON-NLS-1$
new ReplayOutstandingEntries<Task, TaskOutstanding>(Task.class, NameMaps.TABLE_ID_TASKS, taskDao, taskOutstandingDao, afterErrors).execute();
new ReplayOutstandingEntries<TagData, TagOutstanding>(TagData.class, NameMaps.TABLE_ID_TAGS, tagDataDao, tagOutstandingDao, afterErrors).execute();
new ReplayTaskListMetadataOutstanding(taskListMetadataDao, taskListMetadataOutstandingDao, afterErrors).execute();
}
private boolean timeForBackgroundSync() {
return isTimeForBackgroundSync;
}
private void setWidgetSuppression(boolean suppress) {
long date = suppress ? DateUtilities.now() : 0;
TasksWidget.suppressUpdateFlag = date;
if (date == 0) {
Context context = ContextManager.getContext();
if (context != null) {
TasksWidget.updateWidgets(context);
}
}
}
private JSONObject clientVersion = null;
private JSONObject getClientVersion() {
if (clientVersion == null) {
try {
PackageManager pm = ContextManager.getContext().getPackageManager();
PackageInfo pi = pm.getPackageInfo(Constants.PACKAGE, PackageManager.GET_META_DATA);
JSONObject message = new JSONObject();
message.put(ClientToServerMessage.TYPE_KEY, "ClientVersion");
message.put("platform", "android");
message.put("versionName", pi.versionName);
message.put("versionCode", pi.versionCode);
clientVersion = message;
} catch (Exception e) {
Log.e(ERROR_TAG, "Error getting client version", e);
}
}
return clientVersion;
}
public void repopulateQueueFromOutstandingTables() {
syncLog("Constructing queue from outstanding tables"); //$NON-NLS-1$
constructChangesHappenedFromOutstandingTable(Task.class, taskDao, taskOutstandingDao);
@ -462,33 +251,6 @@ public class ActFmSyncThread {
}
}
private void setupNotification() {
try {
NotificationCompat.Builder builder = new NotificationCompat.Builder(ContextManager.getContext());
builder.setContentText(ContextManager.getString(R.string.actfm_sync_ongoing))
.setContentTitle(ContextManager.getString(R.string.app_name))
.setOngoing(true)
.setSmallIcon(android.R.drawable.stat_notify_sync)
.setContentIntent(PendingIntent.getActivity(ContextManager.getContext().getApplicationContext(), 0, new Intent(), 0));
notificationManager.notify(0, builder.getNotification());
notificationId = 0;
} catch (Exception e) {
Log.e(ERROR_TAG, "Exception creating notification", e); //$NON-NLS-1$
} catch (Error e) {
Log.e(ERROR_TAG, "Error creating notification", e); //$NON-NLS-1$
}
}
private boolean checkForToken() {
if(!actFmPreferenceService.isLoggedIn()) {
return false;
}
token = actFmPreferenceService.getToken();
return true;
}
public static void syncLog(String message) {
if (ActFmInvoker.SYNC_DEBUG) {
Log.e(ERROR_TAG, message);
@ -502,12 +264,7 @@ public class ActFmSyncThread {
public void onReceive(Context context, Intent intent) {
lastSyncFromNetworkChange = Preferences.getLong(PREF_LAST_SYNC_FROM_NETWORK_CHANGE, 0L);
if (DateUtilities.now() - lastSyncFromNetworkChange > DateUtilities.ONE_MINUTE * 10) {
NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if (info != null && NetworkInfo.State.CONNECTED.equals(info.getState()) && PluginServices.getActFmPreferenceService().isLoggedIn()) {
ActFmSyncThread syncThread = ActFmSyncThread.getInstance();
syncThread.repopulateQueueFromOutstandingTables();
Preferences.setLong(PREF_LAST_SYNC_FROM_NETWORK_CHANGE, DateUtilities.now());
}
intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
}
}
}

@ -1109,16 +1109,6 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
}
boolean wouldShowComments = actFmPreferenceService.isLoggedIn() && menu.findItem(MENU_COMMENTS_REFRESH_ID) == null;
if(wouldShowComments && showEditComments) {
item = menu.add(Menu.NONE, MENU_COMMENTS_REFRESH_ID, Menu.NONE,
R.string.ENA_refresh_comments);
item.setIcon(R.drawable.icn_menu_refresh_dark);
} else if (wouldShowComments && !showEditComments) {
item = menu.add(Menu.NONE, MENU_SHOW_COMMENTS_ID, Menu.NONE, R.string.TEA_menu_comments);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
}
@Override

@ -5,15 +5,11 @@
*/
package com.todoroo.astrid.core;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.service.ExceptionService;
import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.HistoryDao;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.StoreObjectDao;
import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.dao.TagMetadataDao;
@ -27,9 +23,7 @@ import com.todoroo.astrid.dao.TaskOutstandingDao;
import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.dao.UserActivityOutstandingDao;
import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import com.todoroo.astrid.service.AddOnService;
import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TagDataService;
@ -61,9 +55,6 @@ public final class PluginServices {
@Autowired
TagMetadataDao tagMetadataDao;
@Autowired
AddOnService addOnService;
@Autowired
TagDataService tagDataService;
@ -103,9 +94,6 @@ public final class PluginServices {
@Autowired
TaskListMetadataOutstandingDao taskListMetadataOutstandingDao;
@Autowired
ActFmPreferenceService actFmPreferenceService;
@Autowired
GtasksPreferenceService gtasksPreferenceService;
@ -181,10 +169,6 @@ public final class PluginServices {
return getInstance().metadataService;
}
public static AddOnService getAddOnService() {
return getInstance().addOnService;
}
public static StoreObjectDao getStoreObjectDao() {
return getInstance().storeObjectDao;
}
@ -213,32 +197,7 @@ public final class PluginServices {
return getInstance().taskListMetadataOutstandingDao;
}
public static ActFmPreferenceService getActFmPreferenceService() {
return getInstance().actFmPreferenceService;
}
public static GtasksPreferenceService getGtasksPreferenceService() {
return getInstance().gtasksPreferenceService;
}
// -- helpers
/**
* Find the corresponding metadata for this task
*/
public static Metadata getMetadataByTaskAndWithKey(long taskId, String metadataKey) {
TodorooCursor<Metadata> cursor = PluginServices.getMetadataService().query(Query.select(
Metadata.PROPERTIES).where(MetadataCriteria.byTaskAndwithKey(taskId, metadataKey)));
try {
if(cursor.getCount() > 0) {
cursor.moveToNext();
return new Metadata(cursor);
} else {
return null;
}
} finally {
cursor.close();
}
}
}

@ -48,9 +48,6 @@ public class RemoteModelDao<RTYPE extends RemoteModel> extends DatabaseDao<RTYPE
if (outstandingEntryFlag == -1) {
synchronized (RemoteModelDao.class) {
int newValue = 0;
if (PluginServices.getActFmPreferenceService().isLoggedIn()) {
newValue = OUTSTANDING_ENTRY_FLAG_ENQUEUE_MESSAGES | OUTSTANDING_ENTRY_FLAG_RECORD_OUTSTANDING;
}
outstandingEntryFlag = newValue;
}
}

@ -1,12 +1,5 @@
package com.todoroo.astrid.gcal;
import java.util.ArrayList;
import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
@ -16,7 +9,6 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import org.tasks.R;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
@ -32,6 +24,14 @@ import com.todoroo.astrid.data.User;
import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.service.ThemeService;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.tasks.R;
import java.util.ArrayList;
import java.util.HashMap;
public class CalendarAlarmListCreator extends Activity {
public static final String TOKEN_LIST_NAME = "listName"; //$NON-NLS-1$
@ -156,19 +156,7 @@ public class CalendarAlarmListCreator extends Activity {
@Override
public void onClick(View v) {
// Set members json and save
if (!actFmPreferenceService.isLoggedIn()) {
moreOptions.performClick();
return;
} else {
TagData tagData = new TagData();
tagData.setValue(TagData.NAME, tagName);
tagData.setValue(TagData.MEMBER_COUNT, emails.size());
tagDataService.save(tagData);
for (String email : emails) {
tagMetadataDao.createMemberLink(tagData.getId(), tagData.getUuid(), email, false);
}
dismissWithAnimation();
}
moreOptions.performClick();
}
});

@ -14,7 +14,6 @@ import android.content.Intent;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import org.tasks.R;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
@ -39,6 +38,8 @@ import com.todoroo.astrid.data.StoreObject;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.AstridDependencyInjector;
import org.tasks.R;
/**
* Exposes filters based on lists
*
@ -95,7 +96,7 @@ public class GtasksFilterExposer extends BroadcastReceiver implements AstridFilt
DependencyInjectionService.getInstance().inject(this);
// if we aren't logged in (or we are logged in to astrid.com), don't expose features
if(!gtasksPreferenceService.isLoggedIn() || actFmPreferenceService.isLoggedIn()) {
if(!gtasksPreferenceService.isLoggedIn()) {
return null;
}

@ -10,7 +10,6 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import org.tasks.R;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.utility.DialogUtilities;
@ -25,6 +24,8 @@ import com.todoroo.astrid.sync.SyncProviderUtilities;
import com.todoroo.astrid.sync.SyncResultCallbackAdapter;
import com.todoroo.astrid.tags.TagService;
import org.tasks.R;
/**
* Displays synchronization preferences and an action panel so users can
* initiate actions from the menu.
@ -72,11 +73,7 @@ public class GtasksPreferences extends SyncProviderPreferences {
}
private void syncOrImport() {
if (actFmPreferenceService.isLoggedIn()) {
startBlockingImport();
} else {
setResultForSynchronize();
}
setResultForSynchronize();
}
private void setResultForSynchronize() {
@ -84,41 +81,6 @@ public class GtasksPreferences extends SyncProviderPreferences {
finish();
}
private void startBlockingImport() {
final ProgressDialog pd = DialogUtilities.progressDialog(this, getString(R.string.gtasks_import_progress));
pd.setCancelable(false);
GtasksImportCallback callback = new GtasksImportCallback(new SyncResultCallbackAdapter() {/**/}) {
@Override
public void finished() {
super.finished();
for (GtasksImportTuple tuple : importConflicts) {
final GtasksImportTuple finalTuple = tuple;
String prompt = getString(R.string.gtasks_import_add_to_shared_list, tuple.tagName, tuple.taskName);
DialogUtilities.okCancelCustomDialog(GtasksPreferences.this,
getString(R.string.gtasks_import_dlg_title),
prompt,
R.string.gtasks_import_add_task_ok,
R.string.gtasks_import_add_task_cancel,
android.R.drawable.ic_dialog_alert,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Task task = new Task();
task.setId(finalTuple.taskId);
task.setUuid(finalTuple.taskUuid);
tagService.createLink(task, finalTuple.tagName, finalTuple.tagUuid);
}
},
null);
}
DialogUtilities.dismissDialog(GtasksPreferences.this, pd);
}
};
GtasksSyncV2Provider.getInstance().synchronizeActiveTasks(true, callback);
}
private void startLogin() {
Intent intent = new Intent(this, GtasksLoginActivity.class);
startActivityForResult(intent, REQUEST_LOGIN);

@ -5,10 +5,6 @@
*/
package com.todoroo.astrid.gtasks.sync;
import java.io.IOException;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.Semaphore;
import android.content.ContentValues;
import android.text.TextUtils;
import android.util.Log;
@ -36,6 +32,10 @@ import com.todoroo.astrid.gtasks.api.MoveRequest;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService;
import java.io.IOException;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.Semaphore;
public final class GtasksSyncService {
private static final String DEFAULT_LIST = "@default"; //$NON-NLS-1$
@ -109,9 +109,6 @@ public final class GtasksSyncService {
if(model.checkAndClearTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC)) {
return;
}
if (actFmPreferenceService.isLoggedIn()) {
return;
}
if (gtasksPreferenceService.isOngoing() && !model.checkTransitory(TaskService.TRANS_REPEAT_COMPLETE)) //Don't try and sync changes that occur during a normal sync
{
return;
@ -193,9 +190,6 @@ public final class GtasksSyncService {
if (metadata.checkAndClearTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC)) {
return;
}
if (actFmPreferenceService.isLoggedIn()) {
return;
}
if (!metadata.getValue(Metadata.KEY).equals(GtasksMetadata.METADATA_KEY)) //Don't care about non-gtasks metadata
{
return;
@ -215,10 +209,6 @@ public final class GtasksSyncService {
* Synchronize with server when data changes
*/
public void pushTaskOnSave(Task task, ContentValues values, GtasksInvoker invoker, boolean sleep) throws IOException {
if (actFmPreferenceService.isLoggedIn()) {
return;
}
if (sleep) {
AndroidUtilities.sleepDeep(1000L); //Wait for metadata to be saved
}
@ -327,9 +317,6 @@ public final class GtasksSyncService {
}
public void pushMetadataOnSave(Metadata model, GtasksInvoker invoker) throws IOException {
if (actFmPreferenceService.isLoggedIn()) {
return;
}
AndroidUtilities.sleepDeep(1000L);
String taskId = model.getValue(GtasksMetadata.ID);

@ -5,20 +5,10 @@
*/
package com.todoroo.astrid.gtasks.sync;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import org.json.JSONException;
import android.app.Activity;
import android.text.TextUtils;
import com.google.api.services.tasks.model.Tasks;
import org.tasks.R;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
@ -54,13 +44,22 @@ import com.todoroo.astrid.gtasks.api.GtasksInvoker;
import com.todoroo.astrid.gtasks.auth.GtasksTokenValidator;
import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.StatisticsConstants;
import com.todoroo.astrid.service.SyncResultCallbackWrapper.WidgetUpdatingCallbackWrapper;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.sync.SyncResultCallback;
import com.todoroo.astrid.sync.SyncV2Provider;
import com.todoroo.astrid.tags.TagService;
import org.json.JSONException;
import org.tasks.R;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
public class GtasksSyncV2Provider extends SyncV2Provider {
@Autowired TaskService taskService;
@ -114,7 +113,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
@Override
public boolean isActive() {
return gtasksPreferenceService.isLoggedIn() && !actFmPreferenceService.isLoggedIn();
return gtasksPreferenceService.isLoggedIn();
}
public static class GtasksImportTuple {
@ -142,10 +141,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
@Override
public void synchronizeActiveTasks(final boolean manual, final SyncResultCallback callback) {
// TODO: Improve this logic. Should only be able to import from settings or something.
final boolean isImport = actFmPreferenceService.isLoggedIn();
if (isImport && !manual) {
return;
}
final boolean isImport = false;
callback.started();
callback.incrementMax(100);
@ -182,11 +178,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
synchronizeListHelper(list, invoker, manual, handler, callback, isImport);
callback.incrementProgress(25);
if (finisher.decrementAndGet() == 0) {
if (!isImport) {
pushUpdated(invoker, callback);
} else {
finishImport(callback);
}
pushUpdated(invoker, callback);
finishSync(callback);
}
}
@ -234,7 +226,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
return;
}
final boolean isImport = actFmPreferenceService.isLoggedIn();
final boolean isImport = false;
callback.started();
callback.incrementMax(100);
@ -364,9 +356,6 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
private void write(GtasksTaskContainer task) throws IOException {
// merge astrid dates with google dates
if (!task.task.isSaved() && actFmPreferenceService.isLoggedIn()) {
titleMatchWithActFm(task.task);
}
if(task.task.isSaved()) {
Task local = PluginServices.getTaskService().fetchById(task.task.getId(), Task.DUE_DATE, Task.COMPLETION_DATE);
@ -389,22 +378,6 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
}
}
private void titleMatchWithActFm(Task task) {
String title = task.getValue(Task.TITLE);
TodorooCursor<Task> match = taskService.query(Query.select(Task.ID, Task.UUID)
.join(Join.left(Metadata.TABLE, Criterion.and(Metadata.KEY.eq(GtasksMetadata.METADATA_KEY), Metadata.TASK.eq(Task.ID))))
.where(Criterion.and(Task.TITLE.eq(title), GtasksMetadata.ID.isNull())));
try {
if (match.getCount() > 0) {
match.moveToFirst();
task.setId(match.get(Task.ID));
task.setUuid(match.get(Task.UUID));
}
} finally {
match.close();
}
}
private void mergeDates(Task remote, Task local) {
if(remote.hasDueDate() && local.hasDueTime()) {
Date newDate = new Date(remote.getValue(Task.DUE_DATE));
@ -417,67 +390,4 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
remote.setValue(Task.DUE_DATE, setDate);
}
}
private void finishImport(SyncResultCallback callback) {
TodorooCursor<Task> tasks = taskService.query(Query.select(Task.ID, Task.UUID, Task.TITLE, GtasksList.NAME)
.join(Join.inner(Metadata.TABLE, Task.ID.eq(Metadata.TASK)))
.join(Join.left(StoreObject.TABLE, GtasksMetadata.LIST_ID.eq(GtasksList.REMOTE_ID)))
.where(MetadataCriteria.withKey(GtasksMetadata.METADATA_KEY)));
GtasksImportCallback gtCallback = null;
if (callback instanceof GtasksImportCallback) {
gtCallback = (GtasksImportCallback) callback;
}
try {
for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) {
String listName = tasks.get(GtasksList.NAME);
String tagUuid = RemoteModel.NO_UUID;
if (!TextUtils.isEmpty(listName)) {
TodorooCursor<TagData> existingTag = tagDataDao.query(Query.select(TagData.UUID).where(TagData.NAME.eq(listName)));
try {
if (existingTag.getCount() > 0) {
existingTag.moveToFirst();
tagUuid = existingTag.get(TagData.UUID);
boolean taskIsInTag = metadataDao.taskIsInTag(tasks.get(Task.UUID), tagUuid);
if (tagMetadataDao.tagHasMembers(tagUuid) && !taskIsInTag) {
GtasksImportTuple tuple = new GtasksImportTuple();
tuple.taskId = tasks.get(Task.ID);
tuple.taskName = tasks.get(Task.TITLE);
tuple.taskUuid = tasks.get(Task.UUID);
tuple.tagUuid = tagUuid;
tuple.tagName = listName;
if (gtCallback != null) {
gtCallback.addImportConflict(tuple);
}
continue;
} else if (taskIsInTag) {
continue;
}
} else {
TagData td = new TagData();
td.setValue(TagData.NAME, listName);
tagDataDao.createNew(td);
tagUuid = td.getUuid();
}
} finally {
existingTag.close();
}
if (!RemoteModel.isUuidEmpty(tagUuid)) {
Task task = new Task();
task.setId(tasks.get(Task.ID));
task.setUuid(tasks.get(Task.UUID));
tagService.createLink(task, listName, tagUuid);
}
}
}
} finally {
tasks.close();
}
}
}

@ -70,7 +70,6 @@ import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.timers.TimerActionControlSet.TimerActionListener;
import com.todoroo.astrid.utility.ResourceDrawableCache;
import org.json.JSONArray;
import org.json.JSONObject;
import org.tasks.R;
@ -142,8 +141,6 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
}
}
}
@Override
public void runOnErrors(List<JSONArray> errors) {/**/}
};
private static boolean respondToPicture = false;
@ -205,22 +202,8 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
}
setUpInterface();
setUpListAdapter();
if(actFmPreferenceService.isLoggedIn()) {
long pushedAt = task.getValue(Task.USER_ACTIVITIES_PUSHED_AT);
if(DateUtilities.now() - pushedAt > DateUtilities.ONE_HOUR / 2) {
refreshData();
} else {
loadingText.setText(R.string.ENA_no_comments);
if(items.size() == 0) {
loadingText.setVisibility(View.VISIBLE);
}
}
}
}
// --- UI preparation
private void setUpInterface() {
@ -493,9 +476,6 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
});
}
}
@Override
public void runOnErrors(List<JSONArray> errors) {/**/}
});
new FetchHistory<Task>(taskDao, Task.HISTORY_FETCH_DATE, Task.HISTORY_HAS_MORE, NameMaps.TABLE_ID_TASKS,
task.getUuid(), task.getValue(Task.TITLE), task.getValue(Task.HISTORY_FETCH_DATE), 0, callback).execute();

@ -5,8 +5,6 @@
*/
package com.todoroo.astrid.reminders;
import org.json.JSONObject;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
@ -15,9 +13,7 @@ import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import org.tasks.R;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
@ -37,6 +33,8 @@ import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.Constants;
import com.todoroo.astrid.utility.Flags;
import org.tasks.R;
public class ReengagementReceiver extends BroadcastReceiver {
@Autowired ActFmPreferenceService actFmPreferenceService;
@ -72,16 +70,6 @@ public class ReengagementReceiver extends BroadcastReceiver {
String title = Notifications.getRandomReminder(context.getResources().getStringArray(R.array.rmd_reengage_notif_titles));
if (title.contains("%s")) { //$NON-NLS-1$
String name = ""; //$NON-NLS-1$
if (actFmPreferenceService.isLoggedIn()) {
JSONObject thisUser = ActFmPreferenceService.thisUser();
name = thisUser.optString("first_name"); //$NON-NLS-1$
if (TextUtils.isEmpty(name)) {
name = thisUser.optString("name"); //$NON-NLS-1$
}
if (TextUtils.isEmpty(name)) {
name = context.getString(R.string.rmd_reengage_name_default);
}
}
title = String.format(title, name);
}

@ -352,7 +352,7 @@ public class UpdateMessageService {
String url = URL + "?version=" + versionCode + "&" +
"language=" + Locale.getDefault().getISO3Language() + "&" +
"market=" + Constants.MARKET_STRATEGY.strategyId() + "&" +
"actfm=" + (actFmPreferenceService.isLoggedIn() ? "1" : "0") + "&" +
"actfm=0" + "&" +
"premium=1";
String result = restClient.get(url); //$NON-NLS-1$
if(TextUtils.isEmpty(result)) {

@ -31,10 +31,6 @@
<string name="actfm_feat_list_clone_success">L\'operació s\'ha realitzat correctament.</string>
<string name="actfm_feat_list_task_clone_success">Tarea copiada </string>
<string name="actfm_feat_list_clone_empty">No tarea a copiar</string>
<string name="actfm_tag_not_authorized_title">No autorizado</string>
<string name="actfm_tag_not_authorized_new_list">Crear una nueva lista</string>
<string name="actfm_tag_not_authorized_leave_list">Abandonar la lista</string>
<string name="actfm_sync_ongoing">Sincronització en curs...</string>
<string name="alarm_ACS_label">Alarmes</string>
<string name="alarm_ACS_button">Afegeix una alarma</string>
<string-array name="reminders_alarm">
@ -180,7 +176,6 @@
<string name="hide_until_prompt">Mostra a la meva llista</string>
<string name="TEA_load_more">Carrega més...</string>
<string name="TEA_when_dialog_title">Quan venç?</string>
<string name="TEA_new_task">Tasca nova</string>
<string name="MCA_title">En/na %1$s\nha trucat a les %2$s</string>
<string name="MCA_return_call">Truca ara</string>
<string name="MCA_add_task">Truca després</string>

@ -25,7 +25,6 @@
<string name="actfm_GAA_title">Vyberte, který účet Google chcete použít:</string>
<string name="actfm_feat_list_clone_success">Povedlo se!</string>
<string name="actfm_feat_list_task_clone_success">Úkol zkopírován</string>
<string name="actfm_sync_ongoing">Probíhá synchronizace...</string>
<string name="alarm_ACS_label">Alarmy</string>
<string name="alarm_ACS_button">Přidat alarm</string>
<string-array name="reminders_alarm">
@ -162,7 +161,6 @@
<string name="hide_until_prompt">Zobrazit v mém seznamu</string>
<string name="TEA_load_more">Více...</string>
<string name="TEA_when_dialog_title">Kdy je termín?</string>
<string name="TEA_new_task">Nový úkol</string>
<string name="MCA_title">V %2$s volal\n%1$s</string>
<string name="MCA_return_call">Hned zavolat</string>
<string name="MCA_add_task">Zavolat později</string>

@ -33,11 +33,6 @@
<string name="actfm_feat_list_clone_success">Viel Erfolg!</string>
<string name="actfm_feat_list_task_clone_success">Aufgabe kopiert</string>
<string name="actfm_feat_list_clone_empty">Keine Aufgaben zum Kopieren vorhanden</string>
<string name="actfm_tag_not_authorized_title">Nicht autorisiert!</string>
<string name="actfm_tag_not_authorized_body">Sie sind nicht mehr berechtigt, die Liste %s anzuzeigen (Sie wurden möglicherweise entfernt). Möchten Sie eine neue Liste mit dem gleichen Namen erstellen?</string>
<string name="actfm_tag_not_authorized_new_list">Neue Liste anlegen</string>
<string name="actfm_tag_not_authorized_leave_list">Liste verlassen</string>
<string name="actfm_sync_ongoing">Synchronisierung läuft...</string>
<string name="EPr_reset_sync_state">Synchronisation zurücksetzen</string>
<string name="EPr_reset_sync_state_summary">Setzt einige lokale Daten zur Behebung von Synchronisations-Fehlern zurück</string>
<string name="EPr_reset_sync_state_detailed">Bei der nächsten Synchronisation werden deine Aufgaben und Listen denjenigen auf Tasks.com angeglichen. Das behebt Synchronisationsfehler. Möchtest du damit beginen?</string>
@ -184,7 +179,6 @@
<string name="hide_until_prompt">Anzeigen in meiner Liste</string>
<string name="TEA_load_more">Weitere laden …</string>
<string name="TEA_when_dialog_title">Wann ist das fällig?</string>
<string name="TEA_new_task">Neue Aufgabe</string>
<string name="MCA_title">%1$s hat um %2$s angerufen</string>
<string name="MCA_return_call">Jetzt anrufen</string>
<string name="MCA_add_task">Später anrufen</string>
@ -407,10 +401,6 @@
<string name="gtasks_error_authRefresh">Anmeldung beo Google Tasks nicht möglich. Bitte Passwort prüfen oder später erneut versuchen.</string>
<string name="gtasks_error_accountManager">Fehler in den</string>
<string name="gtasks_error_background_sync_auth">Fehler bei der Hintergrunautehntifizierung. Starte eine Synchronisation in der App.</string>
<string name="gtasks_import_progress">Google Tasks importieren</string>
<string name="gtasks_import_add_to_shared_list">Die Liste %1$s wird mit anderen geteilt! Wollen Sie die Aufgabe %2$s wirklich hinzuzufügen?</string>
<string name="gtasks_import_add_task_ok">Aufgabe hinzufügen</string>
<string name="gtasks_import_add_task_cancel">Aufgabe nicht hinzufügen</string>
<string name="locale_notification">Du hast $NUM Übereinstimmungen mit: $FILTER</string>
<string name="opencrx_TEA_notes">Einen Kommentar hinzufügen</string>
<string name="opencrx_creator_input_hint">Ersteller</string>
@ -504,7 +494,6 @@
<item>Ihre Tasks-Übersicht</item>
<item>Erinnerungen von Tasks</item>
</string-array>
<string name="rmd_reengage_name_default">Sie</string>
<string name="rmd_reengage_add_tasks">Aufgabe hinzufügen</string>
<string-array name="rmd_reengage_dialog_options">
<item>Zeit, Ihre Todo-Liste zu verkürzen!</item>

@ -33,11 +33,6 @@
<string name="actfm_feat_list_clone_success">La operación se ha realizado correctamente.</string>
<string name="actfm_feat_list_task_clone_success">Tarea copiada</string>
<string name="actfm_feat_list_clone_empty">No hay tareas para copiar</string>
<string name="actfm_tag_not_authorized_title">No autorizado</string>
<string name="actfm_tag_not_authorized_body">Ya no estas autorizado para ver la lista %s (probablemente fuiste removido) Quieres crear una nueva lista con el mismo nombre?</string>
<string name="actfm_tag_not_authorized_new_list">Crea una nueva lista</string>
<string name="actfm_tag_not_authorized_leave_list">Abandonar lista</string>
<string name="actfm_sync_ongoing">Sincronización en marcha</string>
<string name="EPr_reset_sync_state">Reiniciar sincronización</string>
<string name="EPr_reset_sync_state_summary">Reinicia algunos datos locales para ayudar a resolver los problemas de sincronización</string>
<string name="EPr_reset_sync_state_detailed">La próxima ocasión que sincronices, tus tareas y listas serán cambiadas a un espejo que existe en Tareas.com, que podría ayudar a resolver los problemas de sincronización. Quieres continuar?</string>
@ -192,7 +187,6 @@
<string name="hide_until_prompt">Mostrar en mi lista</string>
<string name="TEA_load_more">Cargar mas...</string>
<string name="TEA_when_dialog_title">¿Para cuando esta previsto?</string>
<string name="TEA_new_task">Nueva Tarea</string>
<string name="MCA_title">%1$s\nllamó a las %2$s</string>
<string name="MCA_return_call">Llamar ahora</string>
<string name="MCA_add_task">Llamar luego</string>
@ -403,8 +397,6 @@ Tasks podría no avisarle cuanto venza una tarea.\n</string>
<string name="gtasks_error_authRefresh">No se pudo autenticar con Google Tasks. Por favor revisa la contraseña de tu cuenta o intenta de nuevo mas tarde.</string>
<string name="gtasks_error_accountManager">Error en el administrador de cuentas de tu teléfono. Por favor reinicia sesión desde la configuración de Google Tasks.</string>
<string name="gtasks_error_background_sync_auth">Error al autenticarse en un segundo plano. Por favor, intente iniciar la sincronización mientras Tasks está ejecutándose.</string>
<string name="gtasks_import_add_task_ok">Añadir tarea</string>
<string name="gtasks_import_add_task_cancel">No añadir tarea</string>
<string name="locale_notification">Tiene $NUM que coincide con: $FILTER</string>
<string name="opencrx_TEA_notes">Añadir un comentario</string>
<string name="opencrx_creator_input_hint">Creador</string>
@ -494,7 +486,6 @@ Tasks podría no avisarle cuanto venza una tarea.\n</string>
<item>Tu resumen Tasks</item>
<item>Recordatorios de Tasks</item>
</string-array>
<string name="rmd_reengage_name_default"></string>
<string name="rmd_reengage_add_tasks">Añadir una tarea</string>
<string-array name="rmd_reengage_dialog_options">
<item>¡Es hora de acortar la lista de tareas!</item>

@ -32,11 +32,6 @@
<string name="actfm_feat_list_clone_success">Opération réussie !</string>
<string name="actfm_feat_list_task_clone_success">Tâche copiée</string>
<string name="actfm_feat_list_clone_empty">Aucune tâche à copier</string>
<string name="actfm_tag_not_authorized_title">Non autorisé</string>
<string name="actfm_tag_not_authorized_body">Vous n\'êtes plus autorisé à voir la liste %s (vous avez peut-être été supprimé). Voulez-vous créer une nouvelle liste avec le même nom?</string>
<string name="actfm_tag_not_authorized_new_list">Créer une nouvelle liste</string>
<string name="actfm_tag_not_authorized_leave_list">Quitter la liste</string>
<string name="actfm_sync_ongoing">Synchronisation en cours...</string>
<string name="EPr_reset_sync_state">Réinitialiser la synchronisation</string>
<string name="EPr_reset_sync_state_summary">Réinitialiser certaines données locales pour aider à la résolution de problème de synchronisation</string>
<string name="EPr_reset_sync_state_detailed">A la prochaine synchronisation, vos tâches et listes seront modifiées pour refléter ce qui existe sur Tasks.com, ce qui pourrait aider à résoudre des erreurs de synchronisation. Voulez-vous continuer?</string>
@ -188,7 +183,6 @@
<string name="hide_until_prompt">Montrer dans ma liste</string>
<string name="TEA_load_more">Charger plus...</string>
<string name="TEA_when_dialog_title">Pour quand est-ce prévu ?</string>
<string name="TEA_new_task">Nouvelle tâche</string>
<string name="MCA_title">\"%1$s\na appelé à %2$s\"</string>
<string name="MCA_return_call">Appeler maintenant</string>
<string name="MCA_add_task">Appeler plus tard</string>
@ -419,11 +413,6 @@
<string name="gtasks_error_authRefresh">Impossible de s\'authentifier avec Google Tasks. Veuillez vérifier votre mot de passe ou essayez plus tard.</string>
<string name="gtasks_error_accountManager">Une erreur est apparue dans le gestionnaire de comptes de votre téléphone. Veuillez vous deconnecter de votre compte Google Task puis vous reconnecter.</string>
<string name="gtasks_error_background_sync_auth">\"Erreur d\'authentification en arrière plan. Réessayez de vous synchroniser quand Tasks est lancé.\"</string>
<string name="gtasks_import_progress">Importer les tâches de Google Tâches...</string>
<string name="gtasks_import_add_to_shared_list">La liste %1$s est partagée avec d\'autres utilisateurs! Voulez-vous quand même ajouter la tâche %2$s à celle-ci?</string>
<string name="gtasks_import_dlg_title">Importer des tâches depuis Google</string>
<string name="gtasks_import_add_task_ok">Ajout d\'une tâche</string>
<string name="gtasks_import_add_task_cancel">Ne pas ajouter de tâche </string>
<string name="locale_notification">Vous avez $NUM correspondant(s) : $FILTER</string>
<string name="opencrx_TEA_notes">Ajouter un commentaire</string>
<string name="opencrx_creator_input_hint">Auteur</string>
@ -517,7 +506,6 @@
<item>Votre résumé Tasks</item>
<item>Rappels d\'Tasks</item>
</string-array>
<string name="rmd_reengage_name_default">vous</string>
<string name="rmd_reengage_add_tasks">Ajouter une tâche</string>
<string-array name="rmd_reengage_dialog_options">
<item>Il est temps de réduire votre liste de tâches!</item>

@ -33,8 +33,6 @@
<string name="actfm_feat_list_clone_success">Operazione riuscita!</string>
<string name="actfm_feat_list_task_clone_success">Compito copiato</string>
<string name="actfm_feat_list_clone_empty">Nessun compito da copiare</string>
<string name="actfm_tag_not_authorized_new_list">Crea nuova lista</string>
<string name="actfm_sync_ongoing">Sincronizzazione in corso...</string>
<string name="alarm_ACS_label">Promemoria</string>
<string name="alarm_ACS_button">Aggiungi un promemoria</string>
<string-array name="reminders_alarm">
@ -171,7 +169,6 @@
<string name="hide_until_prompt">Mostra nella mia lista</string>
<string name="TEA_load_more">Caricane di più...</string>
<string name="TEA_when_dialog_title">Quando dovrà terminare?</string>
<string name="TEA_new_task">Nuova Attività</string>
<string name="MCA_title">%1$s\nha chiamato alle %2$s</string>
<string name="MCA_return_call">Chiama ora</string>
<string name="MCA_add_task">Chiama più tardi</string>
@ -441,7 +438,6 @@ Se visualizzi questo errore più volte, ti consigliamo di cancellare tutti i dat
<item>Your Tasks digest</item>
<item>Promemoria da Tasks</item>
</string-array>
<string name="rmd_reengage_name_default">tu</string>
<string name="rmd_reengage_add_tasks">Aggiungi un\'attività</string>
<string-array name="rmd_reengage_dialog_options">
<item>E\' tempo di accorciare la tua lista delle cose da fare!</item>

@ -33,8 +33,6 @@
<string name="actfm_feat_list_clone_success">הצלחה!</string>
<string name="actfm_feat_list_task_clone_success">משימה הועתקה</string>
<string name="actfm_feat_list_clone_empty">אין משימות להעתיק</string>
<string name="actfm_tag_not_authorized_new_list">צור רשימה חדשה</string>
<string name="actfm_sync_ongoing">הסינכרון מתבצע</string>
<string name="alarm_ACS_label">התראות</string>
<string name="alarm_ACS_button">הוסף התראה</string>
<string-array name="reminders_alarm">
@ -180,7 +178,6 @@
<string name="hide_until_prompt">הצג ברשימה שלי</string>
<string name="TEA_load_more">טען עוד...</string>
<string name="TEA_when_dialog_title">למתי?</string>
<string name="TEA_new_task">משימה חדשה</string>
<string name="MCA_title">%1$s \nהתקשר ב־%2$s</string>
<string name="MCA_return_call">התקשר כעת</string>
<string name="MCA_add_task">התקשר מאוחר יותר</string>
@ -402,11 +399,6 @@
<string name="gtasks_error_authRefresh">איני מצליחה לאמת אותך מול ״משימות גוגל״. אנא בדוק את הסיסמא שהזנת, או נסה מאוחר יותר.</string>
<string name="gtasks_error_accountManager">מנהל החשבונות של הטלפון שלך נתקל בשגיאה. אנא התנתק והתחבר מתוך הגדרות ״משימות גוגל״.</string>
<string name="gtasks_error_background_sync_auth">האימות המתבצע ברקע נכשל. אנא נסה להתחיל את הסינכרון בזמן שאסטריד פועלת.</string>
<string name="gtasks_import_progress">מייבאת את ״משימות גוגל״</string>
<string name="gtasks_import_add_to_shared_list">הרשימה %1$s משותפת עם אחרים! האם אתה בטוח שברצונך להוסיף את המשימה %2$sלרשימה זו?</string>
<string name="gtasks_import_dlg_title">ייבוא ״משימות גוגל״</string>
<string name="gtasks_import_add_task_ok">הוסף משימה</string>
<string name="gtasks_import_add_task_cancel">אל תוסיף משימה</string>
<string name="locale_notification">יש לך $NUM המתאימים: $FILTER</string>
<string name="opencrx_TEA_notes">הוסף הערה</string>
<string name="opencrx_creator_input_hint">יוצר</string>
@ -496,7 +488,6 @@
<item>תמצית מאסטריד</item>
<item>תזכורות מאסטריד</item>
</string-array>
<string name="rmd_reengage_name_default">אתה</string>
<string name="rmd_reengage_add_tasks">הוסף משימה</string>
<string-array name="rmd_reengage_dialog_options">
<item>הגיע הזמן לקצר את רשימת המשימות שלך!</item>

@ -27,7 +27,6 @@
<string name="actfm_EPA_add_person_to_list_cancel">追加しないで</string>
<string name="actfm_GAA_title">使用したいGoogleアカウントを選択してください:</string>
<string name="actfm_feat_list_clone_success">成功!</string>
<string name="actfm_sync_ongoing">同期中</string>
<string name="alarm_ACS_label">アラーム</string>
<string name="alarm_ACS_button">アラームを追加する</string>
<string-array name="reminders_alarm">
@ -140,7 +139,6 @@
<string name="TEA_control_lists">リスト</string>
<string name="TEA_control_notes">概要</string>
<string name="TEA_control_reminders">リマインダー</string>
<string name="TEA_new_task">新しいタスク</string>
<string name="MCA_title">%1$s\ncalled at %2$s</string>
<string name="MCA_ignore">無視する</string>
<string name="CRA_ignore">無視する</string>
@ -231,7 +229,6 @@
<string name="rmd_NoA_filter">お知らせ</string>
<string name="rmd_NoA_done">既に完了しています!</string>
<string name="rmd_NoA_snooze">スヌーズ</string>
<string name="rmd_reengage_name_default">あなた</string>
<string name="rmd_reengage_add_tasks">タスクを追加する</string>
<string name="rmd_EPr_alerts_header">通知の設定</string>
<string name="rmd_EPr_quiet_hours_start_title">消音時間の始まり</string>

@ -33,11 +33,6 @@
<string name="actfm_feat_list_clone_success">성공!</string>
<string name="actfm_feat_list_task_clone_success">일정 복사 완료</string>
<string name="actfm_feat_list_clone_empty">복사할 일정 없음</string>
<string name="actfm_tag_not_authorized_title">권한이 없습니다</string>
<string name="actfm_tag_not_authorized_body">더 이상 목록 %s 를 열람할 수 있는 권한이 없습니다 (권한을 삭제한 것 같습니다). 같은 이름의 새 목록을 생성하시겠습니까?</string>
<string name="actfm_tag_not_authorized_new_list">새 목록 만들기</string>
<string name="actfm_tag_not_authorized_leave_list">목록 탈퇴하기</string>
<string name="actfm_sync_ongoing">동기화 진행 중...</string>
<string name="EPr_reset_sync_state">동기화 초기화</string>
<string name="EPr_reset_sync_state_summary">동기화 에러를 해결하기 위해 몇가지 로컬 자료를 초기화합니다</string>
<string name="EPr_reset_sync_state_detailed">동기화 에러를 해결하기 위해, 다음 동기화 때 당신의 일정과 목록은 Tasks.com 상에 존재하는 미러로 변경될 것입니다. 계속하시겠습니까?</string>
@ -195,7 +190,6 @@
<string name="hide_until_prompt">내 목록에 표시</string>
<string name="TEA_load_more">더 불러오기...</string>
<string name="TEA_when_dialog_title">마감일이 언제입니까?</string>
<string name="TEA_new_task">새 일정</string>
<string name="MCA_title">%1$s\n받은 시간: %2$s</string>
<string name="MCA_return_call">지금 전화하기</string>
<string name="MCA_add_task">나중에 전화하기</string>
@ -431,11 +425,6 @@
<string name="gtasks_error_authRefresh">구글 일정으로 인증할 수 없습니다. 계정 비밀번호를 확인하거나 나중에 다시 시도해 보세요.</string>
<string name="gtasks_error_accountManager">휴대폰 계정 관리자에서 에러가 발생했습니다. 로그아웃 후 구글 일정 설정에서 다시 로그인 해 주세요.</string>
<string name="gtasks_error_background_sync_auth">백그라운드에서 인증 에러가 발생했습니다. 아스트리드가 실행중일 때 동기화를 시작해 보세요.</string>
<string name="gtasks_import_progress">구글 일정 가져오는 중...</string>
<string name="gtasks_import_add_to_shared_list">%1$s 목록을 타인과 공유 중입니다! %2$s 일정을 이 목록에 추가할까요?</string>
<string name="gtasks_import_dlg_title">구글 일정 가져오기</string>
<string name="gtasks_import_add_task_ok">일정 추가하기</string>
<string name="gtasks_import_add_task_cancel">일정 추가하지 않기</string>
<string name="locale_notification">$NUM 개의 일정이 일치합니다: $FILTER</string>
<string name="opencrx_TEA_notes">댓글 쓰기</string>
<string name="opencrx_creator_input_hint">작성자</string>
@ -532,7 +521,6 @@
<item>당신의 아스트리드 요약</item>
<item>아스트리드 알림</item>
</string-array>
<string name="rmd_reengage_name_default">당신</string>
<string name="rmd_reengage_add_tasks">일정 추가하기</string>
<string-array name="rmd_reengage_dialog_options">
<item>당신의 할일 목록을 줄일 시간이에요!</item>

@ -5,7 +5,6 @@
<!-- ******************* DO NOT MODIFY MANUALLY ******************* -->
<!-- ************************************************************** -->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<string name="actfm_sync_ongoing">Synkronisering pågår...</string>
<string name="alarm_ACS_label">Varsler</string>
<string name="alarm_ACS_button">Legg til nytt varsel</string>
<string name="backup_BPr_header">Sikkerhetskopier</string>

@ -33,11 +33,6 @@
<string name="actfm_feat_list_clone_success">Succes!</string>
<string name="actfm_feat_list_task_clone_success">Taak gekopiéerd.</string>
<string name="actfm_feat_list_clone_empty">Geen taken om te kopiéren</string>
<string name="actfm_tag_not_authorized_title">Niet geautoriseerd</string>
<string name="actfm_tag_not_authorized_body">Je bent niet langer geautoriseerd om lijst %s te bekijken (wellicht ben je verwijderd). Wil je een nieuwe lijst aanmaken met dezelfde naam?</string>
<string name="actfm_tag_not_authorized_new_list">Maak een nieuwe lijst</string>
<string name="actfm_tag_not_authorized_leave_list">Verlaat lijst</string>
<string name="actfm_sync_ongoing">Synchronisatie bezig...</string>
<string name="EPr_reset_sync_state">Synchronisatie herstellen</string>
<string name="EPr_reset_sync_state_summary">Reset sommige lokale data om synchronisatie te proberen te herstellen</string>
<string name="EPr_reset_sync_state_detailed">De volgende keer dat je synchroniseert, zullen je taken en lijsten veranderen in overeenstemming met de data die aanwezig is Tasks.com, wat synchronisatie fouten kan herstellen. Wil je doorgaan?</string>
@ -190,7 +185,6 @@
<string name="hide_until_prompt">Laat zien in mijn lijst</string>
<string name="TEA_load_more">Laad meer...</string>
<string name="TEA_when_dialog_title">Wanneer moet dit gedaan zijn?</string>
<string name="TEA_new_task">Nieuwe Taak</string>
<string name="MCA_title">%1$s\nheeft gebeld op (%2$s)</string>
<string name="MCA_return_call">Bel nu</string>
<string name="MCA_add_task">Bel later</string>
@ -419,11 +413,6 @@
<string name="gtasks_error_authRefresh">Authenticatieprobleem bij Google Taken. Controleer je wachtwoord of probeer het later opnieuw.</string>
<string name="gtasks_error_accountManager">Error in uw telefoon account manager. Log uit en log opnieuw in vanuit de Google Task instellingen.</string>
<string name="gtasks_error_background_sync_auth">Error authenticatie op achtergrond bezig. Probeer alstublieft een synchronisatie te starten wanneer Tasks is gestart.</string>
<string name="gtasks_import_progress">Google Taken importeren</string>
<string name="gtasks_import_add_to_shared_list">De lijst %1$s is gedeeld met anderen! Wil je de taak %2$s nog steeds toevoegen?</string>
<string name="gtasks_import_dlg_title">Google Taken import</string>
<string name="gtasks_import_add_task_ok">Taak toevoegen</string>
<string name="gtasks_import_add_task_cancel">Taak niet toevoegen</string>
<string name="locale_notification">Er zijn $NUM taken voor: $FILTER</string>
<string name="opencrx_TEA_notes">Commentaar toevoegen</string>
<string name="opencrx_creator_input_hint">Auteur</string>
@ -517,7 +506,6 @@
<item>Your Tasks digest</item>
<item>Herinneringen van Tasks</item>
</string-array>
<string name="rmd_reengage_name_default">jij</string>
<string name="rmd_reengage_add_tasks">Taak toevoegen</string>
<string-array name="rmd_reengage_dialog_options">
<item>Het is tijd om je to-do lijst op te schonen!</item>

@ -33,11 +33,6 @@
<string name="actfm_feat_list_clone_success">Zakończono pomyślnie!</string>
<string name="actfm_feat_list_task_clone_success">Zadanie skopiowane</string>
<string name="actfm_feat_list_clone_empty">Brak zadań do skopiowania</string>
<string name="actfm_tag_not_authorized_title">Nie autoryzowany</string>
<string name="actfm_tag_not_authorized_body">Nie masz już uprawnień do wyświetlenia listy %s (mogłeś być usunięty). Czy chcesz stworzyć nową listę o tej samej nazwie?</string>
<string name="actfm_tag_not_authorized_new_list">Utwórz nową listę</string>
<string name="actfm_tag_not_authorized_leave_list">Opuść Listę</string>
<string name="actfm_sync_ongoing">Synchronizacja trwa...</string>
<string name="EPr_reset_sync_state">Resetuj synchronizację</string>
<string name="EPr_reset_sync_state_summary">Zresetuj lokalne dane aby naprawić błędy sychronizacji</string>
<string name="EPr_reset_sync_state_detailed">Podczas następnej synchronizacji Twoje zadania zostaną zamienione na kopię, która znajduje się na Tasks.com, co może pomóc rozwiązać błędy synchronizacji. Czy chcesz kontynuować?</string>
@ -184,7 +179,6 @@
<string name="hide_until_prompt">Pokaż na mojej liście</string>
<string name="TEA_load_more">Wczytaj więcej...</string>
<string name="TEA_when_dialog_title">Na kiedy ma być zrobione?</string>
<string name="TEA_new_task">Nowe zadanie</string>
<string name="MCA_title">%1$s\ndzwonił\\-a o %2$s</string>
<string name="MCA_return_call">Zadzwoń teraz</string>
<string name="MCA_add_task">Zadzwoń później</string>
@ -409,11 +403,6 @@ i odzyskanie zadań z kopi zapasowej (Settings-&gt;Sync and backup-&gt;Backup-&g
<string name="gtasks_error_authRefresh">Uwierzytelnienie w Google Zadania nieudane. Proszę, sprawdź poprawność swego hasła lub spróbuj ponownie później.</string>
<string name="gtasks_error_accountManager">Błąd w menadżerze kont Twojego telefonu. Proszę, wyloguj się i zaloguj ponownie w ustawieniach Google Zadań.</string>
<string name="gtasks_error_background_sync_auth">Błąd uwierzytelniania w tle. Spróbuj zainicjalizować synchronizację, gdy aplikacja Tasks będzie włączone.</string>
<string name="gtasks_import_progress">Importuję Zadania Google...</string>
<string name="gtasks_import_add_to_shared_list">Lista %1$s jest współdzielona z innymi! Czy dalej chcesz dodać zadanie %2$s do niej?</string>
<string name="gtasks_import_dlg_title">Import Zadań Google</string>
<string name="gtasks_import_add_task_ok">Dodaj zadanie</string>
<string name="gtasks_import_add_task_cancel">Nie dodawaj zadania</string>
<string name="locale_notification">Masz $NUM pasujących: $FILTER</string>
<string name="opencrx_TEA_notes">Dodaj komentarz</string>
<string name="opencrx_creator_input_hint">Krator</string>
@ -505,7 +494,6 @@ i odzyskanie zadań z kopi zapasowej (Settings-&gt;Sync and backup-&gt;Backup-&g
<item>Your Tasks digest</item>
<item>Przypomnienia z Tasks</item>
</string-array>
<string name="rmd_reengage_name_default">Ty</string>
<string name="rmd_reengage_add_tasks">Dodaj zadanie</string>
<string-array name="rmd_reengage_dialog_options">
<item>Time to shorten your to-do list!</item>

@ -33,8 +33,6 @@
<string name="actfm_feat_list_clone_success">Sucesso!</string>
<string name="actfm_feat_list_task_clone_success">Tarefa copiada</string>
<string name="actfm_feat_list_clone_empty">Sem tarefas para copiar</string>
<string name="actfm_tag_not_authorized_new_list">Criar nova lista</string>
<string name="actfm_sync_ongoing">Sincronizando...</string>
<string name="alarm_ACS_label">Alarmes</string>
<string name="alarm_ACS_button">Inserir alarme</string>
<string-array name="reminders_alarm">
@ -172,7 +170,6 @@
<string name="hide_until_prompt">Mostrar na minha lista</string>
<string name="TEA_load_more">Carregar mais...</string>
<string name="TEA_when_dialog_title">Quando vence?</string>
<string name="TEA_new_task">Nova Tarefa</string>
<string name="MCA_title">%1$s\nligou às %2$s</string>
<string name="MCA_return_call">Ligar agora</string>
<string name="MCA_add_task">Ligar mais tarde</string>
@ -447,7 +444,6 @@
<item>Seu resumo no Tasks</item>
<item>Lembretes do Tasks</item>
</string-array>
<string name="rmd_reengage_name_default">você</string>
<string name="rmd_reengage_add_tasks">Inserir tarefa</string>
<string-array name="rmd_reengage_dialog_options">
<item>Hora de diminuir sua lista de tarefas!</item>

@ -33,10 +33,6 @@
<string name="actfm_feat_list_clone_success">Завершено успешно!</string>
<string name="actfm_feat_list_task_clone_success">Задача скопирована</string>
<string name="actfm_feat_list_clone_empty">Нет задач для копирования</string>
<string name="actfm_tag_not_authorized_title">Не авторизовано </string>
<string name="actfm_tag_not_authorized_new_list">Создать новый список</string>
<string name="actfm_tag_not_authorized_leave_list">Покинуть список</string>
<string name="actfm_sync_ongoing">Процесс синхронизации…</string>
<string name="EPr_reset_sync_state">Сброс синхронизации</string>
<string name="EPr_reset_sync_state_summary">Сбросьте некоторые данные, чтобы разрешить проблему синхронизации</string>
<string name="alarm_ACS_label">Напоминания</string>
@ -184,7 +180,6 @@
<string name="hide_until_prompt">Показать в моем листе</string>
<string name="TEA_load_more">Загрузить больше...</string>
<string name="TEA_when_dialog_title">Когда это должно произойти?</string>
<string name="TEA_new_task">Новое задание</string>
<string name="MCA_title">%1$s\nзвонил(а) в %2$s</string>
<string name="MCA_return_call">Позвонить сейчас</string>
<string name="MCA_add_task">Позвонить позже</string>
@ -403,11 +398,6 @@
<string name="gtasks_error_authRefresh">Не удалось пройти аутентификацию в Google Tasks. Пожалуйста, проверьте пароль к учетной записи или попробуйте еще раз позже.</string>
<string name="gtasks_error_accountManager">Ошибка в менеджере аккаунтов вашего телефона, Пожалуйста выйдите и войдите снова в настройках Google Tasks</string>
<string name="gtasks_error_background_sync_auth">Ошибка фоновой аутентификации. Пожалуйста, попробуйте синхронизироваться, когда Tasks запущен.</string>
<string name="gtasks_import_progress">Импорт из Google Tasks</string>
<string name="gtasks_import_add_to_shared_list">Список %1$s сделан общедоступным! Вы всё ещё хотите добавлять задачи в %2$s?</string>
<string name="gtasks_import_dlg_title">Импорт Google задач</string>
<string name="gtasks_import_add_task_ok">Добавить задание</string>
<string name="gtasks_import_add_task_cancel">Не добавляйте задачи</string>
<string name="locale_notification">Число соответствий $FILTER: $NUM</string>
<string name="opencrx_TEA_notes">Добавить комментарий</string>
<string name="opencrx_creator_input_hint">Автор</string>
@ -498,7 +488,6 @@
<item>Обзор задач от Tasks</item>
<item>Напоминания от Tasks</item>
</string-array>
<string name="rmd_reengage_name_default">Вы</string>
<string name="rmd_reengage_add_tasks">Добавить задание</string>
<string-array name="rmd_reengage_dialog_options">
<item>Время сократить Ваш список задач!</item>

@ -33,7 +33,6 @@
<string name="actfm_feat_list_clone_success">Klart!</string>
<string name="actfm_feat_list_task_clone_success">Uppgift kopierad</string>
<string name="actfm_feat_list_clone_empty">Ingen uppgift att kopiera</string>
<string name="actfm_sync_ongoing">Synkronisering pågår...</string>
<string name="alarm_ACS_label">Alarm</string>
<string name="alarm_ACS_button">Lägg till ett alarm</string>
<string name="backup_BPr_header">Säkerhetskopior</string>
@ -173,7 +172,6 @@
<string name="hide_until_prompt">Visa i min lista</string>
<string name="TEA_load_more">Ladda mer...</string>
<string name="TEA_when_dialog_title">När ska uppgiften vara slutförd?</string>
<string name="TEA_new_task">Ny uppgift</string>
<string name="MCA_title">%1$s\nringde kl %2$s</string>
<string name="MCA_return_call">Ring nu</string>
<string name="MCA_add_task">Ring senare</string>
@ -445,7 +443,6 @@ och återställer dina aktuella uppgifter från en backup
<string name="rmd_NoA_snooze">Vänta...</string>
<string name="rmd_NoA_completed_toast">Grattis till den slutförda uppgiften!</string>
<string name="rmd_NoA_dlg_title">Påminnelse:</string>
<string name="rmd_reengage_name_default">du</string>
<string name="rmd_reengage_add_tasks">Lägg till uppgift</string>
<string name="rmd_EPr_alerts_header">Påminnelseinställningar</string>
<string name="rmd_EPr_alerts_summary">Tysta timmar, snooze alternativ, envishets-nivå</string>

@ -33,7 +33,6 @@
<string name="actfm_feat_list_clone_success">Başarılı!</string>
<string name="actfm_feat_list_task_clone_success">Görev kopyalandı</string>
<string name="actfm_feat_list_clone_empty">Kopyalanmış görev bulunmuyor</string>
<string name="actfm_sync_ongoing">Senkronizasyon devam ediyor...</string>
<string name="alarm_ACS_label">Alarmlar</string>
<string name="alarm_ACS_button">Alarm Ekle</string>
<string name="backup_BPr_header">Yedekler</string>
@ -168,7 +167,6 @@
<string name="hide_until_prompt">Listemde göster</string>
<string name="TEA_load_more">Daha yükle...</string>
<string name="TEA_when_dialog_title">Son zamanı nedir?</string>
<string name="TEA_new_task">Yeni Görev</string>
<string name="MCA_title">%1$s aradı\nzamanı: %2$s</string>
<string name="MCA_return_call">Şimdi ara</string>
<string name="MCA_add_task">Sonra ara</string>
@ -436,7 +434,6 @@
<item>Tasks özetiniz</item>
<item>Tasks Hatırlatmaları</item>
</string-array>
<string name="rmd_reengage_name_default">siz</string>
<string name="rmd_reengage_add_tasks">Görev ekle</string>
<string-array name="rmd_reengage_dialog_options">
<item>Yapılacaklar listenizi kısaltmanın tam zamanı!</item>

@ -33,11 +33,6 @@
<string name="actfm_feat_list_clone_success">Успішно!</string>
<string name="actfm_feat_list_task_clone_success">Завдання скопійовано!</string>
<string name="actfm_feat_list_clone_empty">Жодного завдання для копіювання</string>
<string name="actfm_tag_not_authorized_title">Не авторизований</string>
<string name="actfm_tag_not_authorized_body">Ви більше не авторизовані для перегляду списку %s (ви, можливо, були видалені). Хотіли б ви створити новий список з тим же ім\'ям?</string>
<string name="actfm_tag_not_authorized_new_list">Створити новий список</string>
<string name="actfm_tag_not_authorized_leave_list">Покинути список</string>
<string name="actfm_sync_ongoing">Синхронізація в процесі...</string>
<string name="EPr_reset_sync_state">Скинути синхронізацію</string>
<string name="EPr_reset_sync_state_summary">Скидання деяких локальних даних, щоб допомогти вирішити помилоки синхронізації</string>
<string name="EPr_reset_sync_state_detailed">Наступного разу при синхронізації ваших завдань і списків буде змінена, щоб відобразити те, що існує на Tasks.com, які можуть допомогти вирішити помилки синхронізації. Ви хочете продовжити?</string>
@ -195,7 +190,6 @@
<string name="hide_until_prompt">Показувати в мому списку</string>
<string name="TEA_load_more">Завантажити більше...</string>
<string name="TEA_when_dialog_title">Коли це потрібно виконати?</string>
<string name="TEA_new_task">Нове завдання</string>
<string name="MCA_title">%1$s\nтелефонував о %2$s</string>
<string name="MCA_return_call">Зателефонувати зараз</string>
<string name="MCA_add_task">Зателефонувати пізніше</string>
@ -425,11 +419,6 @@
<string name="gtasks_error_authRefresh">Не вдалося пройти аутентифікацію в Google Tasks. Будь ласка, перевірте пароль до облікового запису або спробуйте ще раз пізніше.</string>
<string name="gtasks_error_accountManager">Помилка в менеджері акаунтів вашого телефону, ласка вийдіть і увійдіть знову в налаштуваннях Google Tasks</string>
<string name="gtasks_error_background_sync_auth">Не вдалося пройти аутентифікацію у фоні. Будь ласка, попробуйте при запущеному Tasks.</string>
<string name="gtasks_import_progress">Імпорт Google Tasks...</string>
<string name="gtasks_import_add_to_shared_list">Список %1$s зроблений загальнодоступним! Ви все ще хочете додавати завдання у %2$s ?</string>
<string name="gtasks_import_dlg_title">Імпорт Google Tasks</string>
<string name="gtasks_import_add_task_ok">Додати завдання</string>
<string name="gtasks_import_add_task_cancel">Не додавати завдання</string>
<string name="locale_notification">Число відповідностей $FILTER: $NUM</string>
<string name="opencrx_TEA_notes">Додати коментар</string>
<string name="opencrx_creator_input_hint">Автор</string>
@ -523,7 +512,6 @@
<item>Your Tasks digest</item>
<item>Нагадування від Tasks</item>
</string-array>
<string name="rmd_reengage_name_default">ти</string>
<string name="rmd_reengage_add_tasks">Додати завдання</string>
<string name="rmd_EPr_alerts_header">Налаштування нагадувань</string>
<string name="rmd_EPr_alerts_summary">Тихі години, опції короткого сну, рівень наполегливості</string>

@ -32,7 +32,6 @@
<string name="actfm_feat_list_clone_success">完成!</string>
<string name="actfm_feat_list_task_clone_success">任务已复制</string>
<string name="actfm_feat_list_clone_empty">无任务复制</string>
<string name="actfm_sync_ongoing">同步中...</string>
<string name="alarm_ACS_label">闹钟</string>
<string name="alarm_ACS_button">添加闹钟</string>
<string-array name="reminders_alarm">
@ -170,7 +169,6 @@
<string name="hide_until_prompt">在我的列表中显示</string>
<string name="TEA_load_more">加载更多……</string>
<string name="TEA_when_dialog_title">这项活动定在什么时候呀?</string>
<string name="TEA_new_task">新建任务</string>
<string name="MCA_title">%1$s\n在 %2$s 给您打过电话</string>
<string name="MCA_return_call">现在回电</string>
<string name="MCA_add_task">稍后回电</string>
@ -422,7 +420,6 @@
<item>您的清单小助理摘要</item>
<item>清单小助理的提醒</item>
</string-array>
<string name="rmd_reengage_name_default"></string>
<string name="rmd_reengage_add_tasks">添加任务</string>
<string-array name="rmd_reengage_dialog_options">
<item>是时候缩短您的任务清单了!</item>

@ -32,7 +32,6 @@
<string name="actfm_feat_list_clone_success">完成!</string>
<string name="actfm_feat_list_task_clone_success">任務工作已復制</string>
<string name="actfm_feat_list_clone_empty">無任務工作複製</string>
<string name="actfm_sync_ongoing">同步中...</string>
<string name="alarm_ACS_label">警示</string>
<string name="alarm_ACS_button">加入警示</string>
<string-array name="reminders_alarm">
@ -170,7 +169,6 @@
<string name="hide_until_prompt">在我的列表中顯示</string>
<string name="TEA_load_more">加載更多……</string>
<string name="TEA_when_dialog_title">這項活動定在什麼時候呀?</string>
<string name="TEA_new_task">新建任務工作</string>
<string name="MCA_title">%1$s\n在 %2$s 給您打過電話</string>
<string name="MCA_return_call">現在回電</string>
<string name="MCA_add_task">稍後回電</string>
@ -444,7 +442,6 @@
<item>您的 Tasks 摘要</item>
<item>Tasks 的提醒</item>
</string-array>
<string name="rmd_reengage_name_default"></string>
<string name="rmd_reengage_add_tasks">添加任務工作</string>
<string-array name="rmd_reengage_dialog_options">
<item>是時候縮短您的任務工作清單了!</item>

@ -91,13 +91,6 @@
<!-- Sync upgrade messages -->
<string name="actfm_tag_not_authorized_title">Not authorized</string>
<string name="actfm_tag_not_authorized_body">You are no longer authorized to view list %s (you may have been removed). Would you like to create a new list with the same name?</string>
<string name="actfm_tag_not_authorized_new_list">Create new list</string>
<string name="actfm_tag_not_authorized_leave_list">Leave list</string>
<string name="actfm_sync_ongoing">Sync ongoing...</string>
<string name="EPr_reset_sync_state">Reset sync</string>
<string name="EPr_reset_sync_state_summary">Resets some local data to help resolve sync errors</string>
<string name="EPr_reset_sync_state_detailed">The next time you sync, your tasks and lists will be changed to mirror what exists on Tasks.com, which may help resolve sync errors. Do you wish to continue?</string>

@ -339,8 +339,6 @@
<!-- When controls dialog -->
<string name="TEA_when_dialog_title">When is this due?</string>
<string name="TEA_new_task">New Task</string>
<!-- ===================================================== MissedCallActivity == -->
<!-- Missed call: return call (%1$s -> caller, %2$s -> time of call)-->

@ -81,14 +81,4 @@
<!-- Error when authorization error happens in background sync -->
<string name="gtasks_error_background_sync_auth">Error authenticating in background. Please try initiating a sync while Tasks is running.</string>
<string name="gtasks_import_progress">Importing Google Tasks...</string>
<string name="gtasks_import_add_to_shared_list">The list %1$s is shared with others! Do you still want to add the task %2$s to it?</string>
<string name="gtasks_import_dlg_title">Google Tasks Import</string>
<string name="gtasks_import_add_task_ok">Add task</string>
<string name="gtasks_import_add_task_cancel">Don\'t add task</string>
</resources>

@ -82,8 +82,6 @@
<item>Reminders from Tasks</item>
</string-array>
<string name="rmd_reengage_name_default">you</string>
<string name="rmd_reengage_add_tasks">Add a task</string>
<!-- Speech bubble options for astrid in reengagement notifs -->

Loading…
Cancel
Save