Remove original and title only row styles

pull/189/head
Alex Baker 10 years ago
parent 96f390f967
commit 907eed2b36

@ -58,11 +58,6 @@ public class AstridApiConstants {
*/
public static final String EXTRAS_RESPONSE = "response";
/**
* Extras name for plug-in identifier
*/
public static final String EXTRAS_ADDON = "addon";
/**
* Extras name for old task due date
*/
@ -73,14 +68,6 @@ public class AstridApiConstants {
*/
public static final String EXTRAS_NEW_DUE_DATE = "newDueDate";
// --- Add-ons API
/**
* Action name for broadcast intent sending add-ons back to Astrid
* <li> EXTRAS_RESPONSE an {@link Addon} object
*/
public static final String BROADCAST_SEND_ADDONS = API_PACKAGE + ".SEND_ADDONS";
// --- Filters API
/**
@ -110,26 +97,6 @@ public class AstridApiConstants {
*/
public static final String BROADCAST_SEND_CUSTOM_FILTER_CRITERIA = API_PACKAGE + ".SEND_CUSTOM_FILTER_CRITERIA";
// --- Task Details API
/**
* Action name for broadcast intent requesting details for a task.
* Extended details are displayed when a user presses on a task.
*
* <li> EXTRAS_TASK_ID id of the task
* <li> EXTRAS_EXTENDED whether request is for standard or extended details
*/
public static final String BROADCAST_REQUEST_DETAILS = API_PACKAGE + ".REQUEST_DETAILS";
/**
* Action name for broadcast intent sending details back to Astrid
* <li> EXTRAS_ADDON your add-on identifier
* <li> EXTRAS_TASK_ID id of the task
* <li> EXTRAS_EXTENDED whether request is for standard or extended details
* <li> EXTRAS_RESPONSE a String
*/
public static final String BROADCAST_SEND_DETAILS = API_PACKAGE + ".SEND_DETAILS";
// --- Sync Action API
/**
@ -161,14 +128,6 @@ public class AstridApiConstants {
*/
public static final String BROADCAST_EVENT_REFRESH = API_PACKAGE + ".REFRESH";
/**
* Action name for broadcast intent notifying Astrid to clear detail cache
* because an event occurred that potentially affects all tasks (e.g.
* logging out of a sync provider). Use this call carefully, as loading
* details can degrade the performance of Astrid.
*/
public static final String BROADCAST_EVENT_FLUSH_DETAILS = API_PACKAGE + ".FLUSH_DETAILS";
/**
* Action name for broadcast intent notifying that task was created or
* title was changed

@ -79,16 +79,6 @@ public class Task extends RemoteModel {
public static final LongProperty DELETION_DATE = new LongProperty(
TABLE, "deleted", Property.PROP_FLAG_DATE);
/** Cached Details Column - built from add-on detail exposers. A null
* value means there is no value in the cache and it needs to be
* refreshed */
public static final StringProperty DETAILS = new StringProperty(
TABLE, "details");
/** Date details were last updated */
public static final LongProperty DETAILS_DATE = new LongProperty(
TABLE, "detailsDate", Property.PROP_FLAG_DATE);
// --- non-core task metadata
public static final StringProperty NOTES = new StringProperty(
@ -198,8 +188,6 @@ public class Task extends RemoteModel {
defaultValues.put(ELAPSED_SECONDS.name, 0);
defaultValues.put(NOTES.name, "");
defaultValues.put(TIMER_START.name, 0);
defaultValues.put(DETAILS.name, (String)null);
defaultValues.put(DETAILS_DATE.name, 0);
defaultValues.put(UUID.name, NO_UUID);
}
@ -453,14 +441,6 @@ public class Task extends RemoteModel {
setValue(TITLE, title);
}
public String getDetails() {
return getValue(DETAILS);
}
public void setDetails(String details) {
setValue(DETAILS, details);
}
public Long getDeletionDate() {
return getValue(DELETION_DATE);
}
@ -533,14 +513,6 @@ public class Task extends RemoteModel {
setValue(COMPLETION_DATE, completionDate);
}
public Long getDetailsDate() {
return getValue(DETAILS_DATE);
}
public void setDetailsDate(Long detailsDate) {
setValue(DETAILS_DATE, detailsDate);
}
public String getNotes() {
return getValue(NOTES);
}
@ -549,10 +521,6 @@ public class Task extends RemoteModel {
setValue(NOTES, notes);
}
public Long getModificationDate() {
return getValue(MODIFICATION_DATE);
}
public void setModificationDate(Long modificationDate) {
setValue(MODIFICATION_DATE, modificationDate);
}

@ -37,11 +37,6 @@ public class TaskApiDao {
return true;
}
if(values.containsKey(Task.DETAILS_DATE.name) &&
values.size() <= 3) {
return true;
}
if(values.containsKey(Task.REMINDER_LAST.name) &&
values.size() <= 2) {
return true;

@ -241,13 +241,6 @@
<!-- ========================================================= Plugins = -->
<!-- core -->
<receiver android:name="com.todoroo.astrid.core.CorePlugin">
<intent-filter>
<action android:name="org.tasks.REQUEST_ADDONS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.core.CoreFilterExposer">
<intent-filter android:priority="9000">
<action android:name="org.tasks.REQUEST_FILTERS" />
@ -277,13 +270,6 @@
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<!-- tags -->
<receiver android:name="com.todoroo.astrid.tags.TagsPlugin">
<intent-filter>
<action android:name="org.tasks.REQUEST_ADDONS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.tags.TagFilterExposer">
<intent-filter>
<action android:name="org.tasks.REQUEST_FILTERS" />
@ -298,13 +284,6 @@
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.tags.TagDetailExposer">
<intent-filter>
<action android:name="org.tasks.REQUEST_DETAILS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<!-- custom filters -->
<receiver android:name="com.todoroo.astrid.core.CustomFilterExposer">
<intent-filter android:priority="9000">
@ -337,13 +316,6 @@
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.alarms.AlarmDetailExposer">
<intent-filter>
<action android:name="org.tasks.REQUEST_DETAILS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<!-- actfm -->
<activity
android:name="com.todoroo.astrid.actfm.ActFmGoogleAuthActivity"
@ -379,13 +351,6 @@
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.gtasks.GtasksDetailExposer">
<intent-filter>
<action android:name="org.tasks.REQUEST_DETAILS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity
android:name="com.todoroo.astrid.gtasks.GtasksPreferences"
android:theme="@android:style/Theme"
@ -419,12 +384,6 @@
</receiver>
<!-- repeats -->
<receiver android:name="com.todoroo.astrid.repeats.RepeatsPlugin">
<intent-filter>
<action android:name="org.tasks.REQUEST_ADDONS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.repeats.RepeatTaskCompleteListener">
<intent-filter android:priority="1">
@ -433,13 +392,6 @@
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.repeats.RepeatDetailExposer">
<intent-filter>
<action android:name="org.tasks.REQUEST_DETAILS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<!-- calendar -->
<receiver android:name="com.todoroo.astrid.gcal.GCalTaskCompleteListener">
<intent-filter android:priority="2">
@ -515,14 +467,6 @@
<activity android:name="com.todoroo.astrid.files.FileExplore" />
<!-- notes -->
<receiver android:name="com.todoroo.astrid.notes.NotesDetailExposer">
<intent-filter>
<action android:name="org.tasks.REQUEST_DETAILS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.timers.TimerFilterExposer">
<intent-filter android:priority="10000">
<action android:name="org.tasks.REQUEST_FILTERS" />

@ -23,7 +23,6 @@ import android.speech.tts.TextToSpeech;
import android.text.TextUtils;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.api.AstridApiConstants;
@ -37,7 +36,6 @@ import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.sync.SyncProviderPreferences;
import com.todoroo.astrid.utility.Constants;
import com.todoroo.astrid.utility.Flags;
import com.todoroo.astrid.utility.TodorooPreferenceActivity;
import com.todoroo.astrid.voice.VoiceInputAssistant;
import com.todoroo.astrid.voice.VoiceOutputAssistant;
@ -141,9 +139,6 @@ public class EditPreferences extends TodorooPreferenceActivity {
addPreferenceListeners();
preference = screen.findPreference(getString(R.string.p_showNotes));
preference.setEnabled(preferences.getIntegerFromString(R.string.p_taskRowStyle_v2, 0) == 0);
removeForbiddenPreferences(screen, r);
}
@ -276,46 +271,7 @@ public class EditPreferences extends TodorooPreferenceActivity {
public void updatePreferences(final Preference preference, Object value) {
final Resources r = getResources();
if (r.getString(R.string.p_taskRowStyle_v2).equals(preference.getKey())) {
try {
Integer valueInt = Integer.parseInt((String) value);
String[] titles = getResources().getStringArray(R.array.EPr_task_row_styles);
String[] descriptions = getResources().getStringArray(R.array.EPr_task_row_style_descriptions);
preference.setTitle(getString(R.string.EPr_task_row_style_title, titles[valueInt]));
preference.setSummary(descriptions[valueInt]);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
preference.setOnPreferenceChangeListener(new SetResultOnPreferenceChangeListener(RESULT_CODE_PERFORMANCE_PREF_CHANGED) {
@Override
public boolean onPreferenceChange(Preference p, Object newValue) {
Preference notes = findPreference(getString(R.string.p_showNotes));
Preference fullTitle = findPreference(getString(R.string.p_fullTaskTitle));
try {
int newValueInt = Integer.parseInt((String) newValue);
fullTitle.setEnabled(newValueInt != 2);
notes.setEnabled(newValueInt == 0);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return super.onPreferenceChange(p, newValue);
}
});
} else if (r.getString(R.string.p_showNotes).equals(preference.getKey())) {
if (value != null && !(Boolean) value) {
preference.setSummary(R.string.EPr_showNotes_desc_disabled);
} else {
preference.setSummary(R.string.EPr_showNotes_desc_enabled);
}
if ((Boolean) value != preferences.getBoolean(preference.getKey(), false)) {
taskService.clearDetails(Criterion.all);
Flags.set(Flags.REFRESH);
}
} else if (r.getString(R.string.p_fullTaskTitle).equals(preference.getKey())) {
if (r.getString(R.string.p_fullTaskTitle).equals(preference.getKey())) {
if (value != null && (Boolean) value) {
preference.setSummary(R.string.EPr_fullTask_desc_enabled);
} else {
@ -444,14 +400,6 @@ public class EditPreferences extends TodorooPreferenceActivity {
});
}
findPreference(getString(R.string.p_showNotes)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
updatePreferences(preference, newValue);
return true;
}
});
findPreference(getString(R.string.p_fullTaskTitle)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {

@ -142,7 +142,6 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel
protected Resources resources;
protected TaskAdapter taskAdapter = null;
protected DetailReceiver detailReceiver = new DetailReceiver();
protected RefreshReceiver refreshReceiver = new RefreshReceiver();
protected final AtomicReference<String> sqlQueryTemplate = new AtomicReference<>();
protected SyncActionHelper syncActionHelper;
@ -490,8 +489,6 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel
public void onResume() {
super.onResume();
getActivity().registerReceiver(detailReceiver,
new IntentFilter(AstridApiConstants.BROADCAST_SEND_DETAILS));
getActivity().registerReceiver(refreshReceiver,
new IntentFilter(AstridApiConstants.BROADCAST_EVENT_REFRESH));
syncActionHelper.register();
@ -554,7 +551,6 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel
public void onPause() {
super.onPause();
AndroidUtilities.tryUnregisterReceiver(getActivity(), detailReceiver);
AndroidUtilities.tryUnregisterReceiver(getActivity(), refreshReceiver);
syncActionHelper.unregister();
@ -599,28 +595,6 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel
loadTaskListContent();
}
/**
* Receiver which receives detail or decoration intents
*
* @author Tim Su <tim@todoroo.com>
*
*/
protected class DetailReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
Bundle receivedExtras = intent.getExtras();
long taskId = receivedExtras.getLong(AstridApiConstants.EXTRAS_TASK_ID);
if (AstridApiConstants.BROADCAST_SEND_DETAILS.equals(intent.getAction())) {
String detail = receivedExtras.getString(AstridApiConstants.EXTRAS_RESPONSE);
taskAdapter.addDetails(taskId, detail);
}
} catch (Exception e) {
log.error("receive-detail-{}", intent.getStringExtra(AstridApiConstants.EXTRAS_ADDON), e);
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(quickAddBar.onActivityResult(requestCode, resultCode, data)) {
@ -674,21 +648,13 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel
syncActionHelper.request();
}
public static int getTaskRowResource(int rowStyle) {
switch(rowStyle) {
case 1:
return R.layout.task_adapter_row_simple;
case 2:
return R.layout.task_adapter_row_title_only;
case 0:
default:
return R.layout.task_adapter_row;
}
public static int getTaskRowResource() {
return R.layout.task_adapter_row_simple;
}
protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) {
return new TaskAdapter(preferences, taskAttachmentDao, taskService, this, getTaskRowResource(preferences.getIntegerFromString(R.string.p_taskRowStyle_v2, 0)),
return new TaskAdapter(preferences, taskAttachmentDao, taskService, this, getTaskRowResource(),
cursor, sqlQueryTemplate,
new OnCompletedTaskListener() {
@Override
@ -725,9 +691,6 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel
}
public Property<?>[] taskProperties() {
if (preferences.getIntegerFromString(R.string.p_taskRowStyle_v2, 0) == 2) {
return TaskAdapter.BASIC_PROPERTIES;
}
return TaskAdapter.PROPERTIES;
}

@ -9,19 +9,12 @@ import android.app.Activity;
import android.app.Dialog;
import android.app.PendingIntent.CanceledException;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.text.Html;
import android.text.Html.ImageGetter;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.TextUtils.TruncateAt;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@ -30,14 +23,12 @@ import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup.MarginLayoutParams;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.widget.CursorAdapter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.todoroo.andlib.data.Property;
@ -50,7 +41,6 @@ import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Pair;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.TaskAction;
import com.todoroo.astrid.core.LinkActionExposer;
import com.todoroo.astrid.dao.TaskAttachmentDao;
@ -63,7 +53,6 @@ import com.todoroo.astrid.notes.NotesAction;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.tags.TaskToTagMetadata;
import com.todoroo.astrid.ui.CheckableImageView;
import com.todoroo.astrid.utility.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -73,7 +62,6 @@ import org.tasks.preferences.ActivityPreferences;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.atomic.AtomicReference;
import static org.tasks.date.DateTimeUtils.newDate;
@ -92,8 +80,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
public void onCompletedTask(Task item, boolean newState);
}
public static final String DETAIL_SEPARATOR = " | "; //$NON-NLS-1$
private static final StringProperty TAGS = new StringProperty(null, "group_concat(nullif(" + TaskListFragment.TAGS_METADATA_JOIN + "." + TaskToTagMetadata.TAG_NAME.name + ", '')"+ ", ' | ')").as("tags");
private static final LongProperty FILE_ID_PROPERTY = TaskAttachment.ID.cloneAs(TaskListFragment.FILE_METADATA_JOIN, "fileId");
private static final IntegerProperty HAS_NOTES_PROPERTY = new IntegerProperty(null, "length(" + Task.NOTES + ") > 0").as("hasNotes");
@ -111,7 +97,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
Task.MODIFICATION_DATE,
Task.HIDE_UNTIL,
Task.DELETION_DATE,
Task.DETAILS,
Task.ELAPSED_SECONDS,
Task.TIMER_START,
Task.RECURRENCE,
@ -121,17 +106,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
FILE_ID_PROPERTY // File id
};
public static final Property<?>[] BASIC_PROPERTIES = new Property<?>[] {
Task.ID,
Task.UUID,
Task.TITLE,
Task.IMPORTANCE,
Task.RECURRENCE,
Task.COMPLETION_DATE,
Task.HIDE_UNTIL,
Task.DELETION_DATE
};
public static final int[] IMPORTANCE_RESOURCES = new int[] {
R.drawable.check_box_1,
R.drawable.check_box_2,
@ -195,8 +169,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
protected final Paint paint;
protected final DisplayMetrics displayMetrics;
private final boolean simpleLayout;
private final boolean titleOnlyLayout;
protected final int minRowHeight;
private final Map<Long, TaskAction> taskActionLoader = Collections.synchronizedMap(new HashMap<Long, TaskAction>());
@ -220,7 +192,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
this.context = ContextManager.getContext();
this.query = query;
this.resource = resource;
this.titleOnlyLayout = resource == R.layout.task_adapter_row_title_only;
this.fragment = fragment;
this.resources = fragment.getResources();
this.onCompletedTaskListener = onCompletedTaskListener;
@ -232,11 +203,8 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
displayMetrics = new DisplayMetrics();
fragment.getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
this.simpleLayout = (resource == R.layout.task_adapter_row_simple);
this.minRowHeight = computeMinRowHeight();
startDetailThread();
scaleAnimation = new ScaleAnimation(1.4f, 1.0f, 1.4f, 1.0f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnimation.setDuration(100);
@ -256,11 +224,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
protected int computeMinRowHeight() {
DisplayMetrics metrics = resources.getDisplayMetrics();
if (simpleLayout || titleOnlyLayout) {
return (int) (metrics.density * 40);
} else {
return (int) (metrics.density * 45);
}
return (int) (metrics.density * 40);
}
public int computeFullRowHeight() {
@ -272,13 +236,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
}
}
private void startDetailThread() {
if (preferences.getBoolean(R.string.p_showNotes, false) && !simpleLayout && !titleOnlyLayout) {
DetailLoaderThread detailLoader = new DetailLoaderThread();
detailLoader.start();
}
}
/* ======================================================================
* =========================================================== filterable
* ====================================================================== */
@ -312,25 +269,14 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
viewHolder.tagsView = (TextView)view.findViewById(R.id.tagsDisplay);
viewHolder.details1 = (TextView)view.findViewById(R.id.details1);
viewHolder.details2 = (TextView)view.findViewById(R.id.details2);
viewHolder.taskRow = (LinearLayout)view.findViewById(R.id.task_row);
viewHolder.taskActionContainer = view.findViewById(R.id.taskActionContainer);
viewHolder.taskActionIcon = (ImageView)view.findViewById(R.id.taskActionIcon);
boolean showFullTaskTitle = preferences.getBoolean(R.string.p_fullTaskTitle, false);
boolean showNotes = preferences.getBoolean(R.string.p_showNotes, false);
if (showFullTaskTitle && !titleOnlyLayout) {
if (showFullTaskTitle) {
viewHolder.nameView.setMaxLines(Integer.MAX_VALUE);
viewHolder.nameView.setSingleLine(false);
viewHolder.nameView.setEllipsize(null);
} else if (titleOnlyLayout) {
viewHolder.nameView.setMaxLines(1);
viewHolder.nameView.setSingleLine(true);
viewHolder.nameView.setEllipsize(TruncateAt.END);
}
if (showNotes && !simpleLayout && !titleOnlyLayout) {
RelativeLayout.LayoutParams taskRowParams = (RelativeLayout.LayoutParams)viewHolder.taskRow.getLayoutParams();
taskRowParams.addRule(RelativeLayout.CENTER_VERTICAL, 0);
}
@ -354,11 +300,9 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
TodorooCursor<Task> cursor = (TodorooCursor<Task>)c;
ViewHolder viewHolder = ((ViewHolder)view.getTag());
if (!titleOnlyLayout) {
viewHolder.tagsString = cursor.get(TAGS);
viewHolder.hasFiles = cursor.get(FILE_ID_PROPERTY) > 0;
viewHolder.hasNotes = cursor.get(HAS_NOTES_PROPERTY) > 0;
}
viewHolder.tagsString = cursor.get(TAGS);
viewHolder.hasFiles = cursor.get(FILE_ID_PROPERTY) > 0;
viewHolder.hasNotes = cursor.get(HAS_NOTES_PROPERTY) > 0;
// TODO: see if this is a performance issue
viewHolder.task = new Task(cursor);
@ -395,7 +339,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
public TextView dueDate;
public TextView tagsView;
public TextView details1, details2;
public LinearLayout taskRow;
public View taskActionContainer;
public ImageView taskActionIcon;
public String tagsString; // From join query, not part of the task model
@ -407,7 +350,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
public synchronized void setFieldContentsAndVisibility(View view) {
ViewHolder viewHolder = (ViewHolder)view.getTag();
Task task = viewHolder.task;
if (fontSize < 16 || titleOnlyLayout) {
if (fontSize < 16) {
viewHolder.rowBody.setMinimumHeight(0);
viewHolder.completeBox.setMinimumHeight(0);
} else {
@ -431,34 +374,9 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
nameView.setText(nameValue);
}
if (titleOnlyLayout) {
return;
}
float dueDateTextWidth = setupDueDateAndTags(viewHolder, task);
String details;
if(viewHolder.details1 != null) {
if(taskDetailLoader.containsKey(task.getId())) {
details = taskDetailLoader.get(task.getId()).toString();
} else {
details = task.getDetails();
}
if(TextUtils.isEmpty(details) || DETAIL_SEPARATOR.equals(details) || task.isCompleted()) {
viewHolder.details1.setVisibility(View.GONE);
viewHolder.details2.setVisibility(View.GONE);
} else if (preferences.getBoolean(R.string.p_showNotes, false)) {
viewHolder.details1.setVisibility(View.VISIBLE);
if (details.startsWith(DETAIL_SEPARATOR)) {
StringBuilder buffer = new StringBuilder(details);
int length = DETAIL_SEPARATOR.length();
while(buffer.lastIndexOf(DETAIL_SEPARATOR, length) == 0) {
buffer.delete(0, length);
}
details = buffer.toString(); //details.substring(DETAIL_SEPARATOR.length());
}
drawDetails(viewHolder, details, dueDateTextWidth);
}
viewHolder.details1.setVisibility(View.GONE);
viewHolder.details2.setVisibility(View.GONE);
}
// Task action
@ -477,59 +395,18 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
}
private TaskAction getTaskAction(Task task, boolean hasFiles, boolean hasNotes) {
if (titleOnlyLayout || task.isCompleted()) {
if (task.isCompleted()) {
return null;
}
if (taskActionLoader.containsKey(task.getId())) {
return taskActionLoader.get(task.getId());
} else {
TaskAction action = LinkActionExposer.getActionsForTask(preferences, context, task, hasFiles, hasNotes);
TaskAction action = LinkActionExposer.getActionsForTask(context, task, hasFiles, hasNotes);
taskActionLoader.put(task.getId(), action);
return action;
}
}
private void drawDetails(ViewHolder viewHolder, String details, float rightWidth) {
SpannableStringBuilder prospective = new SpannableStringBuilder();
SpannableStringBuilder actual = new SpannableStringBuilder();
details = details.trim().replace("\n", "<br>");
String[] splitDetails = details.split("\\|");
viewHolder.completeBox.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
rightWidth = rightWidth + viewHolder.dueDate.getPaddingRight();
float left = viewHolder.completeBox.getMeasuredWidth() +
((MarginLayoutParams)viewHolder.completeBox.getLayoutParams()).leftMargin;
int availableWidth = (int) (displayMetrics.widthPixels - left - (rightWidth + 16) * displayMetrics.density);
int i = 0;
for(; i < splitDetails.length; i++) {
Spanned spanned = convertToHtml(splitDetails[i] + " ", detailImageGetter);
prospective.insert(prospective.length(), spanned);
viewHolder.details1.setText(prospective);
viewHolder.details1.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
if(rightWidth > 0 && viewHolder.details1.getMeasuredWidth() > availableWidth) {
break;
}
actual.insert(actual.length(), spanned);
}
viewHolder.details1.setText(actual);
actual.clear();
if(i >= splitDetails.length) {
viewHolder.details2.setVisibility(View.GONE);
return;
} else {
viewHolder.details2.setVisibility(View.VISIBLE);
}
for(; i < splitDetails.length; i++) {
actual.insert(actual.length(), convertToHtml(splitDetails[i] + " ", detailImageGetter));
}
viewHolder.details2.setText(actual);
}
public void onClick(View v) {
// expand view (unless deleted)
final ViewHolder viewHolder = (ViewHolder)v.getTag();
@ -634,23 +511,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
* ============================================================== details
* ====================================================================== */
private final HashMap<String, Spanned> htmlCache = new HashMap<>(8);
private Spanned convertToHtml(String string, ImageGetter imageGetter) {
if(!htmlCache.containsKey(string)) {
Spanned html;
try {
html = Html.fromHtml(string, imageGetter, null);
} catch (RuntimeException e) {
log.error(e.getMessage(), e);
html = Spannable.Factory.getInstance().newSpannable(string);
}
htmlCache.put(string, html);
return html;
}
return htmlCache.get(string);
}
private final HashMap<Long, String> dateCache = new HashMap<>(8);
private String formatDate(long date) {
@ -658,7 +518,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
return dateCache.get(date);
}
String formatString = "%s" + (simpleLayout ? " " : "\n") + "%s";
String formatString = "%s %s";
String string = DateUtilities.getRelativeDay(fragment.getActivity(), date);
if(Task.hasDueTime(date)) {
string = String.format(formatString, string, //$NON-NLS-1$
@ -669,157 +529,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
return string;
}
// implementation note: this map is really costly if users have
// a large number of tasks to load, since it all goes into memory.
// it's best to do this, though, in order to append details to each other
private final Map<Long, StringBuilder> taskDetailLoader = Collections.synchronizedMap(new HashMap<Long, StringBuilder>(0));
public class DetailLoaderThread extends Thread {
@Override
public void run() {
// for all of the tasks returned by our cursor, verify details
AndroidUtilities.sleepDeep(500L);
TodorooCursor<Task> fetchCursor = taskService.fetchFiltered(
query.get(), null, Task.ID, Task.TITLE, Task.DETAILS, Task.DETAILS_DATE,
Task.MODIFICATION_DATE, Task.COMPLETION_DATE);
try {
Random random = new Random();
for(fetchCursor.moveToFirst(); !fetchCursor.isAfterLast(); fetchCursor.moveToNext()) {
Task task = new Task(fetchCursor);
if(task.isCompleted()) {
continue;
}
if(detailsAreRecentAndUpToDate(task)) {
// even if we are up to date, randomly load a fraction
if(random.nextFloat() < 0.1) {
taskDetailLoader.put(task.getId(),
new StringBuilder(task.getDetails()));
requestNewDetails(task);
}
continue;
}
addTaskToLoadingArray(task);
task.setDetails(DETAIL_SEPARATOR);
task.setDetailsDate(DateUtilities.now());
taskService.save(task);
requestNewDetails(task);
}
if(taskDetailLoader.size() > 0) {
Activity activity = fragment.getActivity();
if (activity != null) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
notifyDataSetChanged();
}
});
}
}
} catch (Exception e) {
// suppress silently
log.error(e.getMessage(), e);
} finally {
fetchCursor.close();
}
}
private boolean detailsAreRecentAndUpToDate(Task task) {
return task.getDetailsDate() >= task.getModificationDate() &&
!TextUtils.isEmpty(task.getDetails());
}
private void addTaskToLoadingArray(Task task) {
StringBuilder detailStringBuilder = new StringBuilder();
taskDetailLoader.put(task.getId(), detailStringBuilder);
}
private void requestNewDetails(Task task) {
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_REQUEST_DETAILS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, task.getId());
Activity activity = fragment.getActivity();
if (activity != null) {
activity.sendOrderedBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
}
}
/**
* Add detail to a task
*/
public void addDetails(long id, String detail) {
final StringBuilder details = taskDetailLoader.get(id);
if(details == null) {
return;
}
synchronized(details) {
if(details.toString().contains(detail)) {
return;
}
if(details.length() > 0) {
details.append(DETAIL_SEPARATOR);
}
details.append(detail);
Task task = new Task();
task.setId(id);
task.setDetails(details.toString());
task.setDetailsDate(DateUtilities.now());
taskService.save(task);
}
Activity activity = fragment.getActivity();
if (activity != null) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
notifyDataSetChanged();
}
});
}
}
private final ImageGetter detailImageGetter = new ImageGetter() {
private final HashMap<Integer, Drawable> cache =
new HashMap<>(3);
@Override
public Drawable getDrawable(String source) {
int drawable = 0;
switch (source) {
case "silk_clock":
drawable = R.drawable.details_alarm;
break;
case "silk_tag_pink":
drawable = R.drawable.details_tag;
break;
case "silk_date":
drawable = R.drawable.details_repeat;
break;
case "silk_note":
drawable = R.drawable.details_note;
break;
}
if (drawable == 0) {
drawable = resources.getIdentifier("drawable/" + source, null, Constants.PACKAGE);
}
if(drawable == 0) {
return null;
}
Drawable d;
if(!cache.containsKey(drawable)) {
d = resources.getDrawable(drawable);
d.setBounds(0,0,d.getIntrinsicWidth(),d.getIntrinsicHeight());
cache.put(drawable, d);
} else {
d = cache.get(drawable);
}
return d;
}
};
/* ======================================================================
* ============================================================== add-ons
* ====================================================================== */
@ -829,8 +538,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
*/
public void flushCaches() {
completedItems.clear();
taskDetailLoader.clear();
startDetailThread();
}
public HashMap<Object, Boolean> getCompletedItems() {
@ -905,30 +612,24 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
}
name.setTextSize(fontSize);
if (!titleOnlyLayout) {
setupDueDateAndTags(viewHolder, task);
setupDueDateAndTags(viewHolder, task);
float detailTextSize = Math.max(10, fontSize * 14 / 20);
if(viewHolder.details1 != null) {
viewHolder.details1.setTextSize(detailTextSize);
}
if(viewHolder.details2 != null) {
viewHolder.details2.setTextSize(detailTextSize);
}
if(viewHolder.dueDate != null) {
viewHolder.dueDate.setTextSize(detailTextSize);
if (simpleLayout) {
viewHolder.dueDate.setTypeface(null, 0);
}
}
if (viewHolder.tagsView != null) {
viewHolder.tagsView.setTextSize(detailTextSize);
if (simpleLayout) {
viewHolder.tagsView.setTypeface(null, 0);
}
}
paint.setTextSize(detailTextSize);
float detailTextSize = Math.max(10, fontSize * 14 / 20);
if(viewHolder.details1 != null) {
viewHolder.details1.setTextSize(detailTextSize);
}
if(viewHolder.details2 != null) {
viewHolder.details2.setTextSize(detailTextSize);
}
if(viewHolder.dueDate != null) {
viewHolder.dueDate.setTextSize(detailTextSize);
viewHolder.dueDate.setTypeface(null, 0);
}
if (viewHolder.tagsView != null) {
viewHolder.tagsView.setTextSize(detailTextSize);
viewHolder.tagsView.setTypeface(null, 0);
}
paint.setTextSize(detailTextSize);
setupCompleteBox(viewHolder);
@ -953,18 +654,14 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
boxes = completed ? IMPORTANCE_DRAWABLES_CHECKED : IMPORTANCE_DRAWABLES;
}
checkBoxView.setImageDrawable(boxes[value]);
if (titleOnlyLayout) {
return;
}
checkBoxView.setVisibility(View.VISIBLE);
}
}
// Returns due date text width
private float setupDueDateAndTags(ViewHolder viewHolder, Task task) {
private void setupDueDateAndTags(ViewHolder viewHolder, Task task) {
// due date / completion date
float dueDateTextWidth = 0;
final TextView dueDateView = viewHolder.dueDate; {
Activity activity = fragment.getActivity();
if (activity != null) {
@ -977,13 +674,11 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
}
String dateValue = formatDate(dueDate);
dueDateView.setText(dateValue);
dueDateTextWidth = paint.measureText(dateValue);
dueDateView.setVisibility(View.VISIBLE);
} else if(task.isCompleted()) {
String dateValue = formatDate(task.getCompletionDate());
dueDateView.setText(resources.getString(R.string.TAd_completed, dateValue));
dueDateView.setTextAppearance(activity, R.style.TextAppearance_TAd_ItemDueDate_Completed);
dueDateTextWidth = paint.measureText(dateValue);
dueDateView.setVisibility(View.VISIBLE);
} else {
dueDateView.setVisibility(View.GONE);
@ -1004,7 +699,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
}
}
}
return dueDateTextWidth;
}
/**

@ -1,92 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.alarms;
import android.content.Context;
import android.content.Intent;
import android.text.format.DateUtils;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.data.Metadata;
import org.tasks.injection.InjectingBroadcastReceiver;
import java.util.Date;
import javax.inject.Inject;
import static org.tasks.date.DateTimeUtils.newDate;
/**
* Exposes Task Detail for tags, i.e. "Tags: frogs, animals"
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class AlarmDetailExposer extends InjectingBroadcastReceiver {
@Inject AlarmService alarmService;
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
ContextManager.setContext(context);
// get tags associated with this task
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1) {
return;
}
String taskDetail = getTaskDetails(context, taskId);
if(taskDetail == null) {
return;
}
// transmit
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_DETAILS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, AlarmService.IDENTIFIER);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, taskDetail);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, taskId);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
public String getTaskDetails(Context context, long id) {
TodorooCursor<Metadata> cursor = alarmService.getAlarms(id);
long nextTime = -1;
try {
for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
long time = cursor.get(AlarmFields.TIME);
if(time > DateUtilities.now()) {
nextTime = time;
break;
}
}
if(nextTime == -1) {
return null;
}
int flags = DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_SHOW_TIME;
Date today = newDate();
Date alarm = newDate(nextTime);
if(today.getYear() == alarm.getYear()) {
flags |= DateUtils.FORMAT_NO_YEAR;
}
if(alarm.getTime() - today.getTime() > DateUtilities.ONE_DAY) {
flags |= DateUtils.FORMAT_SHOW_DATE;
}
CharSequence durationString = DateUtils.formatDateTime(context, nextTime,
flags);
return "<img src='silk_clock'/> " + durationString; //$NON-NLS-1$
} finally {
cursor.close();
}
}
}

@ -48,8 +48,6 @@ public class AlarmService {
// --- data retrieval
public static final String IDENTIFIER = "alarms"; //$NON-NLS-1$
private final MetadataService metadataService;
private final Context context;

@ -1,29 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.core;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.todoroo.astrid.api.Addon;
import com.todoroo.astrid.api.AstridApiConstants;
public class CorePlugin extends BroadcastReceiver {
static final String IDENTIFIER = "core"; //$NON-NLS-1$
@Override
public void onReceive(Context context, Intent intent) {
Addon plugin = new Addon(IDENTIFIER, "Core Filters", "Todoroo",
"Provides 'Inbox', 'Search', and 'More...' Filters");
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_ADDONS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, plugin);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
}

@ -24,7 +24,6 @@ import com.todoroo.astrid.files.FilesAction;
import com.todoroo.astrid.notes.NotesAction;
import org.tasks.R;
import org.tasks.preferences.Preferences;
import java.util.HashMap;
import java.util.List;
@ -37,7 +36,7 @@ import java.util.List;
*/
public class LinkActionExposer {
public static TaskAction getActionsForTask(Preferences preferences, Context context, Task task, boolean hasAttachments, boolean hasNotes) {
public static TaskAction getActionsForTask(Context context, Task task, boolean hasAttachments, boolean hasNotes) {
if (task == null) {
return null;
}
@ -70,7 +69,7 @@ public class LinkActionExposer {
return new FilesAction(icon);
}
if (hasNotes && !preferences.getBoolean(R.string.p_showNotes, false)) {
if (hasNotes) {
BitmapDrawable icon = getBitmapDrawable(R.drawable.action_notes, r);
return new NotesAction(icon);
}

@ -221,7 +221,6 @@ public class TaskDao extends RemoteModelDao<Task> {
return false;
}
if(!TaskApiDao.insignificantChange(values)) {
item.setDetails(null);
if(!values.containsKey(Task.MODIFICATION_DATE.name)) {
item.setModificationDate(DateUtilities.now());
}

@ -85,7 +85,6 @@ public class GtasksCustomFilterCriteriaExposer extends InjectingBroadcastReceive
// transmit filter list
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_CUSTOM_FILTER_CRITERIA);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, GtasksPreferenceService.IDENTIFIER);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, result);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}

@ -1,82 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.gtasks;
import android.content.Context;
import android.content.Intent;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.data.Metadata;
import org.tasks.injection.InjectingBroadcastReceiver;
import javax.inject.Inject;
/**
* Exposes Task Details for Google TAsks:
* - list
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class GtasksDetailExposer extends InjectingBroadcastReceiver {
@Inject GtasksMetadataService gtasksMetadataService;
@Inject GtasksListService gtasksListService;
@Inject GtasksPreferenceService gtasksPreferenceService;
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
ContextManager.setContext(context);
// if we aren't logged in, don't expose features
if(!gtasksPreferenceService.isLoggedIn()) {
return;
}
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1) {
return;
}
String taskDetail = getTaskDetails(taskId);
if(taskDetail == null) {
return;
}
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_DETAILS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, GtasksPreferenceService.IDENTIFIER);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, taskId);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, taskDetail);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
private String getTaskDetails(long id) {
Metadata metadata = gtasksMetadataService.getTaskMetadata(id);
if(metadata == null) {
return null;
}
StringBuilder builder = new StringBuilder();
String listId = metadata.getValue(GtasksMetadata.LIST_ID);
if(listId == null || listId.equals(gtasksPreferenceService.getDefaultList())) {
return null;
}
String listName = gtasksListService.getListName(listId);
if(listName == null) {
return null;
}
builder.append("<img src='gtasks_detail'/> ").append(listName); //$NON-NLS-1$
return builder.toString();
}
}

@ -82,7 +82,6 @@ public class GtasksFilterExposer extends InjectingBroadcastReceiver implements A
ContextManager.setContext(context);
FilterListItem[] list = prepareFilters();
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, GtasksPreferenceService.IDENTIFIER);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, list);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}

@ -22,7 +22,6 @@ import javax.inject.Singleton;
@Singleton
public class GtasksListService {
public static final String LIST_NOT_FOUND = null;
public static final StoreObject LIST_NOT_FOUND_OBJECT = null;
private final StoreObjectDao storeObjectDao;
@ -58,18 +57,6 @@ public class GtasksListService {
return lists;
}
/**
* Get list name
* @return NOT_FOUND if no list by this id exists, otherwise list name
*/
public String getListName(String listId) {
StoreObject list = getList(listId);
if(list != LIST_NOT_FOUND_OBJECT) {
return list.getValue(GtasksList.NAME);
}
return LIST_NOT_FOUND;
}
/**
* Reads in remote list information and updates local list objects.
*

@ -112,7 +112,7 @@ public class SyncActionHelper {
SyncAction syncAction = extras.getParcelable(AstridApiConstants.EXTRAS_RESPONSE);
syncActions.add(syncAction);
} catch (Exception e) {
log.error("receive-sync-action-" + intent.getStringExtra(AstridApiConstants.EXTRAS_ADDON), e);
log.error(e.getMessage(), e);
}
}
}

@ -1,112 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.notes;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService;
import org.tasks.R;
import org.tasks.injection.InjectingBroadcastReceiver;
import org.tasks.preferences.Preferences;
import javax.inject.Inject;
/**
* Exposes Task Detail for notes
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class NotesDetailExposer extends InjectingBroadcastReceiver {
private static final int NOTE_MAX = 200;
@Inject MetadataService metadataService;
@Inject TaskService taskService;
@Inject Preferences preferences;
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
// get tags associated with this task
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1) {
return;
}
String taskDetail = getTaskDetails(taskId);
if(taskDetail == null) {
return;
}
// transmit
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_DETAILS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, NotesPlugin.IDENTIFIER);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, taskDetail);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, taskId);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
private String getTaskDetails(long id) {
if(!preferences.getBoolean(R.string.p_showNotes, false)) {
return null;
}
Task task = taskService.fetchById(id, Task.ID, Task.NOTES);
if(task == null) {
return null;
}
StringBuilder notesBuilder = new StringBuilder();
String notes = task.getNotes();
if(!TextUtils.isEmpty(notes)) {
if(notes.length() > NOTE_MAX) {
int lastSpace = notes.lastIndexOf(' ', NOTE_MAX);
notes = notes.substring(0, Math.max(lastSpace, NOTE_MAX - 20)) + "...";
}
notesBuilder.append(notes);
}
TodorooCursor<Metadata> cursor = metadataService.query(
Query.select(Metadata.PROPERTIES).where(
MetadataCriteria.byTaskAndwithKey(task.getId(),
NoteMetadata.METADATA_KEY)).orderBy(Order.asc(Metadata.CREATION_DATE)));
try {
for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
Metadata metadata = new Metadata(cursor);
if(notesBuilder.length() > 0) {
notesBuilder.append("\n");
}
notesBuilder.append("<b>").append(metadata.getValue(NoteMetadata.TITLE)).append("</b>\n");
notesBuilder.append(metadata.getValue(NoteMetadata.BODY));
}
} finally {
cursor.close();
}
if(notesBuilder.length() == 0) {
return null;
}
return "<img src='silk_note'/> " + notesBuilder; //$NON-NLS-1$
}
}

@ -1,28 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.notes;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.todoroo.astrid.api.Addon;
import com.todoroo.astrid.api.AstridApiConstants;
public class NotesPlugin extends BroadcastReceiver {
public static final String IDENTIFIER = "notes"; //$NON-NLS-1$
@Override
public void onReceive(Context context, Intent intent) {
Addon plugin = new Addon(IDENTIFIER, "Notes", "Todoroo",
"Lets you add and view notes for a task.");
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_ADDONS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, plugin);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
}

@ -1,137 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.repeats;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import com.google.ical.values.Frequency;
import com.google.ical.values.RRule;
import com.google.ical.values.WeekdayNum;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;
import org.tasks.injection.InjectingBroadcastReceiver;
import java.text.DateFormatSymbols;
import java.text.ParseException;
import java.util.List;
import javax.inject.Inject;
/**
* Exposes Task Detail for repeats, i.e. "Repeats every 2 days"
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class RepeatDetailExposer extends InjectingBroadcastReceiver {
private static final Logger log = LoggerFactory.getLogger(RepeatDetailExposer.class);
@Inject TaskService taskService;
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
// get tags associated with this task
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1) {
return;
}
String taskDetail = getTaskDetails(context, taskId);
if(taskDetail == null) {
return;
}
// transmit
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_DETAILS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, RepeatsPlugin.IDENTIFIER);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, taskDetail);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, taskId);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
public String getTaskDetails(Context context, long id) {
Task task = taskService.fetchById(id, Task.RECURRENCE);
if(task == null) {
return null;
}
Resources r = context.getResources();
String recurrence = task.sanitizedRecurrence();
if(recurrence != null && recurrence.length() > 0) {
RRule rrule;
try {
rrule = new RRule(recurrence);
} catch (ParseException e) {
log.error(e.getMessage(), e);
return null;
}
String interval = getIntervalFor(r, rrule);
interval = "<b>" + interval + "</b>"; //$NON-NLS-1$//$NON-NLS-2$
List<WeekdayNum> byDay = rrule.getByDay();
if(rrule.getFreq() == Frequency.WEEKLY || byDay.size() != 7) {
if(byDay.size() > 0) {
StringBuilder byDayString = new StringBuilder();
DateFormatSymbols dfs = new DateFormatSymbols();
String[] weekdays = dfs.getShortWeekdays();
for(int i = 0; i < byDay.size(); i++) {
byDayString.append(weekdays[byDay.get(i).wday.javaDayNum]);
if(i < byDay.size() - 1) {
byDayString.append(", "); //$NON-NLS-1$
}
}
interval = r.getString(R.string.repeat_detail_byday).replace("$I", //$NON-NLS-1$
interval).replace("$D", byDayString); //$NON-NLS-1$
}
}
String detail;
if(task.repeatAfterCompletion()) {
detail = context.getString(R.string.repeat_detail_completion, interval);
} else {
detail = context.getString(R.string.repeat_detail_duedate, interval);
}
return "<img src='silk_date'/> " + detail; //$NON-NLS-1$
}
return null;
}
private String getIntervalFor(Resources r, RRule rrule) {
int plural;
switch(rrule.getFreq()) {
case MINUTELY:
plural = R.plurals.DUt_minutes; break;
case HOURLY:
plural = R.plurals.DUt_hours; break;
case DAILY:
plural = R.plurals.DUt_days; break;
case WEEKLY:
plural = R.plurals.DUt_weeks; break;
case MONTHLY:
plural = R.plurals.DUt_months; break;
case YEARLY:
plural = R.plurals.DUt_years; break;
default:
// not designed to be used, only a fail-safe
return rrule.getInterval() + "-" + rrule.getFreq().name(); //$NON-NLS-1$
}
return r.getQuantityString(plural, rrule.getInterval(), rrule.getInterval());
}
}

@ -1,32 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.repeats;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.todoroo.astrid.api.Addon;
import com.todoroo.astrid.api.AstridApiConstants;
import org.tasks.R;
public class RepeatsPlugin extends BroadcastReceiver {
static final String IDENTIFIER = "repeats"; //$NON-NLS-1$
@Override
public void onReceive(Context context, Intent intent) {
Addon plugin = new Addon(IDENTIFIER, context.getString(R.string.repeat_plugin),
context.getString(R.string.AOA_internal_author),
context.getString(R.string.repeat_plugin_desc));
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_ADDONS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, plugin);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
}

@ -1,43 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.service;
import android.content.Context;
import android.content.Intent;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.utility.Flags;
import org.tasks.injection.InjectingBroadcastReceiver;
import javax.inject.Inject;
/**
* BroadcastReceiver for receiving Astrid events not associated with a
* specific activity
*
* @author Tim Su <tim@todoroo.com>
*
*/
public final class GlobalEventReceiver extends InjectingBroadcastReceiver {
@Inject TaskService taskService;
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if(intent == null) {
return;
}
if(AstridApiConstants.BROADCAST_EVENT_FLUSH_DETAILS.equals(intent.getAction())) {
taskService.clearDetails(Criterion.all);
Flags.set(Flags.REFRESH);
}
}
}

@ -161,16 +161,6 @@ public class TaskService {
return taskDao.count(query);
}
/**
* Clear details cache. Useful if user performs some operation that
* affects details
*/
public void clearDetails(Criterion criterion) {
Task template = new Task();
template.setDetailsDate(0L);
taskDao.update(criterion, template);
}
/**
* Update all matching a clause to have the values set on template object.
* <p>

@ -171,7 +171,7 @@ public class AstridOrderedListFragmentHelper<LIST> implements OrderedListFragmen
public TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor,
AtomicReference<String> sqlQueryTemplate) {
taskAdapter = new DraggableTaskAdapter(preferences, fragment, TaskListFragment.getTaskRowResource(preferences.getIntegerFromString(R.string.p_taskRowStyle_v2, 0)),
taskAdapter = new DraggableTaskAdapter(preferences, fragment, TaskListFragment.getTaskRowResource(),
cursor, sqlQueryTemplate);
getTouchListView().setItemHightNormal(taskAdapter.computeFullRowHeight());

@ -102,10 +102,6 @@ public class OrderedMetadataListFragmentHelper<LIST> implements OrderedListFragm
@Override
public Property<?>[] taskProperties() {
Property<?>[] baseProperties = TaskAdapter.PROPERTIES;
if (preferences.getIntegerFromString(R.string.p_taskRowStyle_v2, 0) == 2) {
baseProperties = TaskAdapter.BASIC_PROPERTIES;
}
ArrayList<Property<?>> properties = new ArrayList<>(Arrays.asList(baseProperties));
properties.add(updater.indentProperty());
properties.add(updater.orderProperty());
@ -186,7 +182,7 @@ public class OrderedMetadataListFragmentHelper<LIST> implements OrderedListFragm
public TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor,
AtomicReference<String> sqlQueryTemplate) {
taskAdapter = new DraggableTaskAdapter(preferences, fragment, TaskListFragment.getTaskRowResource(preferences.getIntegerFromString(R.string.p_taskRowStyle_v2, 0)),
taskAdapter = new DraggableTaskAdapter(preferences, fragment, TaskListFragment.getTaskRowResource(),
cursor, sqlQueryTemplate);
taskAdapter.addOnCompletedTaskListener(new OnCompletedTaskListener() {

@ -89,7 +89,6 @@ public class TagCustomFilterCriteriaExposer extends InjectingBroadcastReceiver {
// transmit filter list
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_CUSTOM_FILTER_CRITERIA);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, ret);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, TagsPlugin.IDENTIFIER);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}

@ -1,57 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.tags;
import android.content.Context;
import android.content.Intent;
import com.todoroo.astrid.api.AstridApiConstants;
import org.tasks.injection.InjectingBroadcastReceiver;
import javax.inject.Inject;
/**
* Exposes Task Detail for tags, i.e. "Tags: frogs, animals"
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class TagDetailExposer extends InjectingBroadcastReceiver {
@Inject TagService tagService;
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
// get tags associated with this task
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1) {
return;
}
String taskDetail = getTaskDetails(taskId);
if(taskDetail == null) {
return;
}
// transmit
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_DETAILS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, TagsPlugin.IDENTIFIER);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, taskDetail);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, taskId);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
private String getTaskDetails(long id) {
String tagList = tagService.getTagsAsString(id);
if(tagList.length() == 0) {
return null;
}
return /*"<img src='silk_tag_pink'/> " +*/ tagList;
}
}

@ -109,7 +109,6 @@ public class TagFilterExposer extends InjectingBroadcastReceiver implements Astr
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, listAsArray);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, TagsPlugin.IDENTIFIER);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}

@ -223,37 +223,6 @@ public final class TagService {
return metadataDao.query(query);
}
/**
* Return tags as a comma-separated list of strings
* @return empty string if no tags, otherwise string
*/
public String getTagsAsString(long taskId) {
return getTagsAsString(taskId, ", ");
}
/**
* Return tags as a list of strings separated by given separator
* @return empty string if no tags, otherwise string
*/
public String getTagsAsString(long taskId, String separator) {
StringBuilder tagBuilder = new StringBuilder();
TodorooCursor<Metadata> tags = getTags(taskId);
try {
int length = tags.getCount();
for (int i = 0; i < length; i++) {
tags.moveToNext();
Metadata metadata = new Metadata(tags);
tagBuilder.append(metadata.getValue(TaskToTagMetadata.TAG_NAME));
if (i < length - 1) {
tagBuilder.append(separator);
}
}
} finally {
tags.close();
}
return tagBuilder.toString();
}
/**
* Return all tags (including metadata tags and TagData tags) in an array list
*/

@ -1,28 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.tags;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.todoroo.astrid.api.Addon;
import com.todoroo.astrid.api.AstridApiConstants;
public class TagsPlugin extends BroadcastReceiver {
static final String IDENTIFIER = "tags"; //$NON-NLS-1$
@Override
public void onReceive(Context context, Intent intent) {
Addon plugin = new Addon(IDENTIFIER, "Tags", "Todoroo",
"Provides tagging support for tasks.");
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_ADDONS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, plugin);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
}

@ -7,39 +7,22 @@ package com.todoroo.astrid.timers;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.ShortcutActivity;
import com.todoroo.astrid.api.Addon;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.data.Task;
import org.tasks.notifications.NotificationManager;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.Constants;
import org.tasks.R;
import org.tasks.notifications.NotificationManager;
public class TimerPlugin extends BroadcastReceiver {
static final String IDENTIFIER = "timer"; //$NON-NLS-1$
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
Addon plugin = new Addon(IDENTIFIER, "Timer", "Todoroo",
"Lets you time how long it takes to complete tasks.");
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_ADDONS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, plugin);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
public class TimerPlugin {
/**
* toggles timer and updates elapsed time.

@ -33,7 +33,6 @@ public class AstridDefaultPreferenceSpec {
setPreference(prefs, editor, r, R.string.p_default_reminders_key, Task.NOTIFY_AT_DEADLINE | Task.NOTIFY_AFTER_DEADLINE);
setPreference(prefs, editor, r, R.string.p_rmd_default_random_hours, 0);
setPreference(prefs, editor, r, R.string.p_fontSize, 16);
setPreference(prefs, editor, r, R.string.p_showNotes, false);
setPreference(prefs, editor, r, R.string.p_field_missed_calls, true);
@ -53,8 +52,6 @@ public class AstridDefaultPreferenceSpec {
setPreference(prefs, editor, r, R.string.p_show_task_edit_comments, true);
setPreference(prefs, editor, r, R.string.p_taskRowStyle_v2, "1"); //$NON-NLS-1$
setPreference(prefs, editor, r, R.string.p_use_date_shortcuts, false);
setPreference(prefs, editor, r, R.string.p_hide_plus_button, true);
@ -96,17 +93,6 @@ public class AstridDefaultPreferenceSpec {
setIfUnset(prefs, editor, r, key, value);
}
private static void setPreference(SharedPreferences prefs, Editor editor, Resources r, int key, String value) {
setIfUnset(prefs, editor, r, key, value);
}
private static void setIfUnset(SharedPreferences prefs, Editor editor, Resources r, int keyResource, String value) {
String key = r.getString(keyResource);
if(!prefs.contains(key) || !(prefs.getAll().get(key) instanceof String)) {
editor.putString(key, value);
}
}
private static void setIntIfUnset(SharedPreferences prefs, Editor editor, Resources r, int keyResource, int value) {
String key = r.getString(keyResource);
if(!prefs.contains(key)) {

@ -1,6 +1,5 @@
package org.tasks.injection;
import com.todoroo.astrid.alarms.AlarmDetailExposer;
import com.todoroo.astrid.alarms.AlarmTaskRepeatListener;
import com.todoroo.astrid.backup.BackupStartupReceiver;
import com.todoroo.astrid.calls.PhoneStateChangedReceiver;
@ -10,17 +9,12 @@ import com.todoroo.astrid.gcal.CalendarAlarmReceiver;
import com.todoroo.astrid.gcal.CalendarStartupReceiver;
import com.todoroo.astrid.gcal.GCalTaskCompleteListener;
import com.todoroo.astrid.gtasks.GtasksCustomFilterCriteriaExposer;
import com.todoroo.astrid.gtasks.GtasksDetailExposer;
import com.todoroo.astrid.gtasks.GtasksFilterExposer;
import com.todoroo.astrid.gtasks.GtasksStartupReceiver;
import com.todoroo.astrid.notes.NotesDetailExposer;
import com.todoroo.astrid.reminders.Notifications;
import com.todoroo.astrid.reminders.ShowNotificationReceiver;
import com.todoroo.astrid.repeats.RepeatDetailExposer;
import com.todoroo.astrid.repeats.RepeatTaskCompleteListener;
import com.todoroo.astrid.service.GlobalEventReceiver;
import com.todoroo.astrid.tags.TagCustomFilterCriteriaExposer;
import com.todoroo.astrid.tags.TagDetailExposer;
import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.timers.TimerFilterExposer;
import com.todoroo.astrid.timers.TimerTaskCompleteListener;
@ -36,17 +30,11 @@ import dagger.Module;
TasksWidget.class,
Notifications.class,
GtasksCustomFilterCriteriaExposer.class,
GtasksDetailExposer.class,
GlobalEventReceiver.class,
TagDetailExposer.class,
TagCustomFilterCriteriaExposer.class,
NotesDetailExposer.class,
GCalTaskCompleteListener.class,
RepeatDetailExposer.class,
TimerTaskCompleteListener.class,
RepeatTaskCompleteListener.class,
AlarmTaskRepeatListener.class,
AlarmDetailExposer.class,
GtasksStartupReceiver.class,
PhoneStateChangedReceiver.class,
ShowNotificationReceiver.class,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 494 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 744 B

@ -1,100 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
** Copyright (c) 2012 Todoroo Inc
**
** See the file "LICENSE" for the full license governing this code.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="?attr/asTaskRowSelector"
android:orientation="horizontal">
<RelativeLayout
android:id="@+id/rowBody"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_marginBottom="5dip"
android:minHeight="45dip">
<com.todoroo.astrid.ui.CheckableImageView
android:id="@+id/completeBox"
android:layout_width="45dip"
android:layout_marginLeft="4dip"
android:layout_height="wrap_content"
android:minHeight="45dip"
android:scaleType="center"
android:gravity="center"
android:layout_centerVertical="true" />
<LinearLayout
android:id="@+id/task_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="52dip"
android:layout_centerVertical="true"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingLeft="4dip" >
<!-- task name -->
<TextView
android:id="@+id/title"
style="@style/TextAppearance.TAd_ItemTitle"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="100"
android:gravity="center_vertical"
android:maxLines="2" />
<!-- due date -->
<LinearLayout
android:id="@+id/taskActionContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dip"
android:orientation="vertical"
android:gravity="right|center_vertical">
<TextView
android:id="@+id/dueDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|right" />
<ImageView
android:id="@+id/taskActionIcon"
android:layout_width="20dip"
android:layout_height="20dip"
android:scaleType="fitCenter"
android:visibility="gone"/>
</LinearLayout>
</LinearLayout>
<!-- details line 1 -->
<TextView
android:id="@+id/details1"
style="@style/TextAppearance.TAd_ItemDetails"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/task_row"
android:layout_below="@id/task_row"
android:visibility="gone" />
<!-- details line 2 -->
<TextView
android:id="@+id/details2"
style="@style/TextAppearance.TAd_ItemDetails"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/task_row"
android:layout_below="@id/details1"
android:layout_marginLeft="5dip"
android:visibility="gone" />
</RelativeLayout>
</LinearLayout>

@ -1,58 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
** Copyright (c) 2012 Todoroo Inc
**
** See the file "LICENSE" for the full license governing this code.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="?attr/asTaskRowSelector"
android:orientation="horizontal">
<RelativeLayout
android:id="@+id/rowBody"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:layout_marginBottom="10dip">
<com.todoroo.astrid.ui.CheckableImageView
android:id="@+id/completeBox"
android:layout_width="45dip"
android:layout_marginLeft="4dip"
android:layout_height="wrap_content"
android:minHeight="45dip"
android:scaleType="center"
android:gravity="center"
android:layout_centerVertical="true" />
<LinearLayout
android:id="@+id/task_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="52dip"
android:layout_marginRight="10dip"
android:layout_centerVertical="true"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingLeft="4dip" >
<!-- task name -->
<TextView
android:id="@+id/title"
style="@style/TextAppearance.TAd_ItemTitle"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="100"
android:gravity="center_vertical"
android:maxLines="2" />
<!-- due date -->
</LinearLayout>
</RelativeLayout>
</LinearLayout>

@ -160,15 +160,12 @@
<string name="EPr_fontSize_title">Mida de la llista de tasques</string>
<string name="EPr_showSmartConfirmation_title">Mostra la confirmació per als recordatoris intel·ligents</string>
<string name="EPr_fontSize_desc">Mida de lletra en la pàgina de llista principal</string>
<string name="EPr_showNotes_title">Mostra notes a tasques</string>
<string name="EPr_beastMode_reset">Restableix els valors predeterminats</string>
<string name="EPr_showNotes_desc_enabled">Es mostraran sempre les anotacions</string>
<string name="EPr_fullTask_title">Mostra el títol sencer de la tasca</string>
<string name="EPr_fullTask_desc_enabled">Es mostrarà el títol sencer de la tasca</string>
<string name="EPr_manage_delete_completed_message">Segur que voleu suprimir totes les tasques completades?</string>
<string name="EPr_manage_delete_completed_status">S\'han suprimit %d tasques</string>
<string name="EPr_manage_delete_completed_gcal_message">Segur que voleu suprimir els esdeveniments de calendari de les tasques completades?</string>
<string name="AOA_internal_author">Equip d\'Tasks</string>
<string name="TWi_loading">S\'està carregant…</string>
<string name="WCA_title">Seleccionar les tasques a veure ...</string>
<string name="task_killer_help">Sembla que utilitzes una aplicació que pot matar pocessos (%s)! Si pots, afegeix l\'Tasks a la llista d\'exclusió per tal de no ser morta. En cas contrari podria ser que l\'Tasks no t\'informés de les tasques quan vencin.\n</string>
@ -257,8 +254,6 @@
<string name="rmd_EPr_defaultRemind_title">Notificacions al Atzar</string>
<string name="rmd_EPr_defaultRemind_desc_disabled">Les tasques noves no mostraran notificacions a l\'atzar</string>
<string name="rmd_EPr_defaultRemind_desc">Les tasques noves notificaràn al atzar: %s</string>
<string name="repeat_plugin">Repetició de Tasques</string>
<string name="repeat_plugin_desc">Permetre tasques repetides</string>
<string name="repeat_enabled">Repeticions</string>
<string name="repeat_every">Cada %d</string>
<string name="repeat_interval_prompt">Interval de Repecitiò</string>
@ -274,7 +269,6 @@
</string-array>
<string name="repeat_detail_byday">$I en $D</string>
<string name="repeat_detail_duedate">Cada %s</string>
<string name="repeat_detail_completion">%s després de finalització</string>
<string name="repeat_rescheduling_dialog_title_last_time">S\'ha completat la tasca recurrent «%s»</string>
<string name="TEA_tag_hint">Llista nova</string>
<string name="tag_new_list">Llista nova</string>

@ -158,10 +158,7 @@
<string name="EPr_fontSize_title">Velikost seznamu úkolů</string>
<string name="EPr_showSmartConfirmation_title">Zobrazovat potvrzení chytrých upomínek</string>
<string name="EPr_fontSize_desc">Velikost písma na hlavní straně seznamu</string>
<string name="EPr_showNotes_title">Zobrazit poznámky v úkolu</string>
<string name="EPr_beastMode_reset">Obnovit výchozí hodnoty</string>
<string name="EPr_showNotes_desc_disabled">Poznámky budou zobrazeny v liště rychlého přístupu</string>
<string name="EPr_showNotes_desc_enabled">Poznámky budou vždy zobrazeny</string>
<string name="EPr_fullTask_title">Zobrazit úplný název úkolu</string>
<string name="EPr_fullTask_desc_enabled">Zobrazí se úplný název úkolu</string>
<string name="EPr_fullTask_desc_disabled">Zobrazí se první dva řádky názvu úkolu</string>
@ -183,7 +180,6 @@
<string name="EPr_manage_delete_completed_gcal">Smazat události v kalendáři pro hotové úkoly</string>
<string name="EPr_manage_delete_completed_gcal_message">Opravdu chcete smazat všechny události pro dokončené úkoly?</string>
<string name="EPr_manage_delete_completed_gcal_status">Smazáno %d událostí z kalendáře!</string>
<string name="AOA_internal_author">Tasks tým</string>
<string name="TWi_loading">Nahrávám...</string>
<string name="WCA_title">Označte úkol pro zobrazení...</string>
<string name="task_killer_help">Vypadá to, že používate aplikaci, která ukončuje programy(%s)! Pokud můžete, přidejte Tasks do vyjímek, aby nebyla ukončována. Jinak se může stát, že vás nebude upozorňovat na úkoly.\n</string>
@ -342,8 +338,6 @@
<item>měsíčně</item>
<item>každý druhý měsíc</item>
</string-array>
<string name="repeat_plugin">Opakování úkolů</string>
<string name="repeat_plugin_desc">Povolit opakování úkolů</string>
<string name="repeat_enabled">Opakování</string>
<string name="repeat_every">Každý %d</string>
<string name="repeat_interval_prompt">Opakovací interval</string>
@ -371,7 +365,6 @@
</string-array>
<string name="repeat_detail_byday">$I na $D</string>
<string name="repeat_detail_duedate">Každý %s</string>
<string name="repeat_detail_completion">%s po dokončení</string>
<string name="TEA_no_tags_modified">Nebyly provedeny žádné změny.</string>
<string name="tag_settings_title">Settings:</string>
<string name="TPl_notification">Aktivní časovače pro %s!</string>

@ -118,9 +118,6 @@
<string name="EPr_appearance_header">Udseende</string>
<string name="EPr_fontSize_title">Opgavelistestørrelse</string>
<string name="EPr_fontSize_desc">Skriftstørrelse på den centrale liste</string>
<string name="EPr_showNotes_title">Vis noter i opgave</string>
<string name="EPr_showNotes_desc_enabled">Noter vises altid</string>
<string name="AOA_internal_author">Tasks team</string>
<string name="TWi_loading">Indlæser...</string>
<string name="WCA_title">Vælg opgaver der skal vises...</string>
<string name="task_killer_help">Det ser ud som om du bruger en app der kan dræbe processer (%s)! Hvis du kan, så tilføj Tasks til udelukkelseslisten så den ikke bliver dræbt. Ellers kan Tasks muligvis ikke fortælle dig hvornår dine opgaver tidsfrist er.\n</string>
@ -222,8 +219,6 @@
<string name="rmd_EPr_defaultRemind_title">Tilfældige påmindelser</string>
<string name="rmd_EPr_defaultRemind_desc_disabled">Nye opgaver vil ikke have tilfældige påmindelser</string>
<string name="rmd_EPr_defaultRemind_desc">Nye opgaver vil blive påmindet tilfældigt: %s</string>
<string name="repeat_plugin">Gentagne opgaver</string>
<string name="repeat_plugin_desc">Tillad at opgaver gentages</string>
<string name="repeat_enabled">Gentagelser</string>
<string name="repeat_every">Hver %d</string>
<string name="repeat_interval_prompt">Interval for gentagelse</string>
@ -244,7 +239,6 @@
<string name="repeat_detail_byday">$I på $D</string>
<string name="repeat_detail_duedate">Hver %s</string>
<string name="repeat_detail_duedate_until">Hver %1$s\nindtil %2$s</string>
<string name="repeat_detail_completion">%s efter fuldførelse</string>
<string name="repeat_forever">Gentag uendeligt</string>
<string name="repeat_until">Gentag indtil %s</string>
<string name="repeat_rescheduling_dialog_title">Skemalægger opgaven \"%s\" påny </string>

@ -198,7 +198,6 @@
<string name="EPr_filters_to_show_title">Angezeigte Filter</string>
<string name="EPr_showSmartConfirmation_title">Bestätigung für Smart-Erinnerungen anzeigen</string>
<string name="EPr_fontSize_desc">Schriftgröße auf der Hauptseite</string>
<string name="EPr_showNotes_title">Zeige Beschreibung in der Aufgabe</string>
<string name="EPr_edit_screen_options">Bildschirmeinstellungen bearbeiten</string>
<string name="EPr_beastMode_title">Bearbeite Anordnung</string>
<string name="EPr_time_increment">5 Minuten Steigerung</string>
@ -207,22 +206,9 @@
<string name="EPr_beastMode_desc">Erscheinungsbild Aufgabenseite anpassen</string>
<string name="EPr_beastMode_reset">Auf Standardeinstellungen zurücksetzen</string>
<string name="EPr_beastMode_hint">Du kannst die Eingabeseite für Aufgaben mit den Schiebereglern links anpassen</string>
<string name="EPr_showNotes_desc_disabled">Beschreibung vom Eingabeschirm für Aufgaben aus erreichbar </string>
<string name="EPr_showNotes_desc_enabled">Beschreibung wird immer angezeigt</string>
<string name="EPr_fullTask_title">Gesamten Aufgabentitel anzeigen</string>
<string name="EPr_fullTask_desc_enabled">Aufgabentitel wird vollständig angezeigt</string>
<string name="EPr_fullTask_desc_disabled">Die ersten beiden Zeilen des Aufgabentitels werden angezeigt</string>
<string-array name="EPr_task_row_styles">
<item>Original</item>
<item>Einfach</item>
<item>Nur Titel</item>
</string-array>
<string-array name="EPr_task_row_style_descriptions">
<item>Titel auf zwei Zeilen begrenzen mit Datum rechts</item>
<item>Titel auf eine Zeile begrenzen, Datum und Listen darunter</item>
<item>Einzeilig, nur Titel</item>
</string-array>
<string name="EPr_task_row_style_title">Zeilenart: %s</string>
<string name="EPr_show_quickadd_controls">Erweiterte Einstellungen für Schnelleingabe</string>
<string name="EPr_hide_plus_button">Verstecke den +-Knopf</string>
<string name="EPr_list_view">Listenansicht</string>
@ -452,8 +438,6 @@
<item>monatlich</item>
<item>alle zwei Monate</item>
</string-array>
<string name="repeat_plugin">Wiederkehrende Aufgaben</string>
<string name="repeat_plugin_desc">Aufgaben erlauben sich zu wiederholen</string>
<string name="repeat_enabled">Wiederholungen</string>
<string name="repeat_every">Jeden %d</string>
<string name="repeat_interval_prompt">Wiederholungsintervall</string>
@ -462,7 +446,7 @@
<string-array name="repeat_interval_short">
<item>t</item>
<item>w</item>
<item>Mo</item>
<item>M</item>
<item>Std</item>
<item>Min</item>
<item>Jahr</item>
@ -494,7 +478,6 @@
<string name="repeat_detail_byday">$D jede $I</string>
<string name="repeat_detail_duedate">Jede(n) %s</string>
<string name="repeat_detail_duedate_until">Jede(n) %1$s\nbis %2$s</string>
<string name="repeat_detail_completion">%s nach Abschluss</string>
<string name="repeat_forever">Endlos wiederholen</string>
<string name="repeat_until">Wiederhole bis %s</string>
<string name="repeat_rescheduling_dialog_title">Aufgabe \"%s\" erneut planen</string>

@ -155,23 +155,11 @@
<string name="EPr_fontSize_title">Μέγεθος λίστας καθηκόντων</string>
<string name="EPr_filters_to_show_title">Φίλτρα που θα εμφανιστούν</string>
<string name="EPr_showSmartConfirmation_title">Εμφάνιση επιβεβαίωσης για έξυπνες ειδοποιήσεις</string>
<string name="EPr_showNotes_title">Εμφάνιση περιγραφής στο καθήκον</string>
<string name="EPr_edit_screen_options">Ρύθμιση επιλογών εμφάνισης</string>
<string name="EPr_beastMode_title">Αλλαγή σειράς επιλογών</string>
<string name="EPr_time_increment">5λεπτες αυξήσεις </string>
<string name="EPr_beastMode_reset">Επαναφορά προεπιλογών</string>
<string name="EPr_fullTask_title">Εμφάνισε πλήρη τίτλο καθήκοντος</string>
<string-array name="EPr_task_row_styles">
<item>Πρωτότυπο</item>
<item>Απλό</item>
<item>Τίτλος μόνο</item>
</string-array>
<string-array name="EPr_task_row_style_descriptions">
<item>Επέκταση τίτλου σε δύο σειρές με την ημερομηνία στα δεξια</item>
<item>Επέκταση τίτλου σε μια γραμμή με ημερομηνία και λίστες απο κάτω</item>
<item>Τίτλος μονής γραμμής μόνο</item>
</string-array>
<string name="EPr_task_row_style_title">Στύλ γραμμής: %s</string>
<string name="EPr_show_quickadd_controls">Προηγμένα χειριστήρια γρήγορης πρόσθεσης</string>
<string name="EPr_hide_plus_button">Απόκρυψη κουμπιού πρόσθεσης</string>
<string name="EPr_list_view">Εμφάνιση λίστας</string>
@ -323,8 +311,6 @@
<item>μηνιαία</item>
<item>διμηνιαία</item>
</string-array>
<string name="repeat_plugin">Επαναλαμβανόμενα καθήκοντα</string>
<string name="repeat_plugin_desc">Επιτρέπει στα καθήκοντα να επαναλαμβάνονται</string>
<string name="repeat_enabled">Επαναλήψεις</string>
<string name="repeat_every">Κάθε %d</string>
<string name="repeat_interval_prompt">Διάστημα επανάληψης</string>
@ -357,7 +343,6 @@
<string name="repeat_detail_byday">$I στο $D</string>
<string name="repeat_detail_duedate">Κάθε %s</string>
<string name="repeat_detail_duedate_until">Κάθε %1$s\nμέχρι %2$s</string>
<string name="repeat_detail_completion">%s μετά την ολοκλήρωση</string>
<string name="repeat_forever">Επανάληψη επ\'αορίστου</string>
<string name="repeat_until">Επανάληψη μέχρι %s</string>
<string name="repeat_rescheduling_dialog_title">Επανακαθορισμός καθήκοντος \"%s\"</string>

@ -203,7 +203,6 @@
<string name="EPr_filters_to_show_title">Filtros a mostrar</string>
<string name="EPr_showSmartConfirmation_title">Mostrar confirmación para recordatorios inteligentes</string>
<string name="EPr_fontSize_desc">Tamaño de letra en el listado de la página principal</string>
<string name="EPr_showNotes_title">Mostrar descripción en tarea</string>
<string name="EPr_edit_screen_options">Editar opciones de pantalla</string>
<string name="EPr_beastMode_title">Editar el orden de pantalla</string>
<string name="EPr_time_increment">Incrementos de 5 minutos</string>
@ -212,22 +211,9 @@
<string name="EPr_beastMode_desc">Personalizar la disposición de la pantalla de edición de tareas</string>
<string name="EPr_beastMode_reset">Restablecer valores predeterminados</string>
<string name="EPr_beastMode_hint">Personalice su pantalla de edición de tareas arrastrando el asa izquierda en cada fila</string>
<string name="EPr_showNotes_desc_disabled">La descripción será accesible desde la pantalla de edición de la tarea</string>
<string name="EPr_showNotes_desc_enabled">La descripción se mostrará siempre</string>
<string name="EPr_fullTask_title">Mostrar completo el título de la tarea</string>
<string name="EPr_fullTask_desc_enabled">Se mostrará completo el título de la tarea</string>
<string name="EPr_fullTask_desc_disabled">Las primeras dos lineas de las tareas serán mostradas</string>
<string-array name="EPr_task_row_styles">
<item>Original</item>
<item>Simple</item>
<item>Solo título</item>
</string-array>
<string-array name="EPr_task_row_style_descriptions">
<item>Truncar el título a dos líneas con la fecha a la derecha</item>
<item>Truncar el título a una línea con la fecha y listas debajo</item>
<item>Solo título a una línea</item>
</string-array>
<string name="EPr_task_row_style_title">Estilo de fila: %s</string>
<string name="EPr_show_quickadd_controls">Controles avanzados de agregado rápido</string>
<string name="EPr_hide_plus_button">Ocultar botón de agregado</string>
<string name="EPr_list_view">Vista de listas</string>
@ -253,7 +239,6 @@
<string name="EPr_manage_delete_all_gcal">Borrar todos los eventos del calendario de las tareas</string>
<string name="EPr_manage_delete_all_gcal_message">¿Seguro que quieres borrar todos tus eventos para las tareas?</string>
<string name="EPr_manage_delete_all_gcal_status">¡Borrados %d eventos del calendario!</string>
<string name="AOA_internal_author">Equipo de Tasks</string>
<string name="TWi_loading">Cargando…</string>
<string name="WCA_title">Seleccione las tareas que ver...</string>
<string name="task_killer_help">¡Parece que está usando una app que puede matar procesos (%s)! Si puede,
@ -279,7 +264,7 @@ Tasks podría no avisarle cuanto venza una tarea.\n</string>
<string name="EPr_default_reminders_mode_title">Tipo predeterminado de timbre/vibración</string>
<string name="EPr_default_reminders_mode_desc">Actualmente: %s</string>
<string-array name="EPr_default_importance">
<item>!!! (Máximo)</item>
<item>!!! (máximo)</item>
<item>!!</item>
<item>!</item>
<item>o (Mínimo)</item>
@ -300,7 +285,7 @@ Tasks podría no avisarle cuanto venza una tarea.\n</string>
<string-array name="EPr_default_reminders">
<item>Sin recordatorios del vencimiento</item>
<item>En la fecha de vencimiento</item>
<item>Cuando esté atrasada</item>
<item>Cuando esté vencida</item>
<item>En la fecha de vencimiento o ya vencida</item>
</string-array>
<string name="BFE_Active">Mis Tareas</string>
@ -458,10 +443,8 @@ Tasks podría no avisarle cuanto venza una tarea.\n</string>
<item>semanalmente</item>
<item>quincenalmente</item>
<item>mensualmente</item>
<item>bimestralmente</item>
<item>bimensualmente</item>
</string-array>
<string name="repeat_plugin">Tareas recurrentes</string>
<string name="repeat_plugin_desc">Permite que las tareas se repitan</string>
<string name="repeat_enabled">Repeticiones</string>
<string name="repeat_every">Cada %d</string>
<string name="repeat_interval_prompt">Intervalo de repetición</string>
@ -502,7 +485,6 @@ Tasks podría no avisarle cuanto venza una tarea.\n</string>
<string name="repeat_detail_byday">$I en $D</string>
<string name="repeat_detail_duedate">Cada %s</string>
<string name="repeat_detail_duedate_until">Cada %1$s\nhasta %2$s</string>
<string name="repeat_detail_completion">%s una vez completada</string>
<string name="repeat_forever">Repetir por siempre</string>
<string name="repeat_until">Repetir hasta %s</string>
<string name="repeat_rescheduling_dialog_title">Reprogramar tarea \"%s\"</string>

@ -199,7 +199,6 @@
<string name="EPr_filters_to_show_title">Filtres à afficher</string>
<string name="EPr_showSmartConfirmation_title">Montrer une confirmation pour les rappels intelligents</string>
<string name="EPr_fontSize_desc">Taille de la police pour la page principale des listes</string>
<string name="EPr_showNotes_title">Afficher la description dans la tâche</string>
<string name="EPr_edit_screen_options">Edition des options d\'affichage</string>
<string name="EPr_beastMode_title">Edition de l\'ordre d\'affichage</string>
<string name="EPr_time_increment">Incrément de 5 minutes</string>
@ -208,22 +207,9 @@
<string name="EPr_beastMode_desc">Personnaliser la disposition de l\'écran d\'édition de tâche</string>
<string name="EPr_beastMode_reset">Rétablir les valeurs par défaut</string>
<string name="EPr_beastMode_hint">Personnalisez votre écran d\'ajout de tâche en faisant glisser chaque ligne vers la gauche</string>
<string name="EPr_showNotes_desc_disabled">La description sera accessible depuis l\'écran d\'édition de tâche</string>
<string name="EPr_showNotes_desc_enabled">La description sera toujours affichée</string>
<string name="EPr_fullTask_title">Voir le titre complet de la tâche</string>
<string name="EPr_fullTask_desc_enabled">Le titre entier de la tâche sera montré</string>
<string name="EPr_fullTask_desc_disabled">Les deux premières lignes du titre de la tâche seront montrées</string>
<string-array name="EPr_task_row_styles">
<item>Original</item>
<item>Simple</item>
<item>Titre seulement</item>
</string-array>
<string-array name="EPr_task_row_style_descriptions">
<item>Tronquer le titre en deux lignes avec la date sur la droite</item>
<item>Tronquer le titre en une ligne avec la date et les listes en dessous</item>
<item>Titre sur une seule ligne</item>
</string-array>
<string name="EPr_task_row_style_title">Style de ligne : %s</string>
<string name="EPr_show_quickadd_controls">Contrôles d\'ajouts rapides avancés</string>
<string name="EPr_hide_plus_button">Masquer le bouton \"+\"</string>
<string name="EPr_list_view">Vue sous forme de liste</string>
@ -249,7 +235,6 @@
<string name="EPr_manage_delete_all_gcal">Supprimer toutes les entrées de calendrier des tâches</string>
<string name="EPr_manage_delete_all_gcal_message">Voulez-vous vraiment supprimer tous les événement du calendrier pour Tasks?</string>
<string name="EPr_manage_delete_all_gcal_status">%d événements du calendrier ont été supprimés!</string>
<string name="AOA_internal_author">L\'équipe d\'Tasks</string>
<string name="TWi_loading">Chargement…</string>
<string name="WCA_title">Sélectionnez les tâches à afficher…</string>
<string name="task_killer_help">Il semble que vous utilisiez un logiciel capable de fermer les processus (%s) ! Si vous pouvez, ajoutez Tasks à la liste d\'exception afin qu\'il ne soit pas fermé. Sinon, Tasks ne pourra probablement pas vous avertir lorsque vos tâches seront dues.\n</string>
@ -455,8 +440,6 @@
<item>mensuel</item>
<item>bi-mensuel</item>
</string-array>
<string name="repeat_plugin">Répétition de tâches</string>
<string name="repeat_plugin_desc">Permet aux tâches d\'être répétées</string>
<string name="repeat_enabled">Répétitions</string>
<string name="repeat_every">Tous les %d</string>
<string name="repeat_interval_prompt">Interval de répétition</string>
@ -497,7 +480,6 @@
<string name="repeat_detail_byday">$I sur $D</string>
<string name="repeat_detail_duedate">Tous les %s</string>
<string name="repeat_detail_duedate_until">Tous les %1$s jusqu\'à %2$s</string>
<string name="repeat_detail_completion">%s après achèvement</string>
<string name="repeat_forever">Répéter indéfiniment</string>
<string name="repeat_until">Répéter jusqu\'à %s</string>
<string name="repeat_rescheduling_dialog_title">Reprogrammer la tâche \"%s\"</string>

@ -192,11 +192,6 @@
<string name="EPr_fullTask_title">Visualizza titolo completo dell\'attività</string>
<string name="EPr_fullTask_desc_enabled">Sarà mostrato il titolo completo</string>
<string name="EPr_fullTask_desc_disabled">Saranno mostrate le prime due righe del titolo dell\'attività</string>
<string-array name="EPr_task_row_style_descriptions">
<item>Riduci il titolo a due righe con la data a destra</item>
<item>Riduci il titolo a una riga con la data e gli elenchi sotto</item>
<item>Single line title only</item>
</string-array>
<string name="EPr_taskRowPrefs_title">Aspetto della riga dei task</string>
<string name="EPr_manage_header">Gestisci compiti vecchi</string>
<string name="EPr_manage_delete_completed">Elimina i compiti completati</string>
@ -215,7 +210,6 @@
<string name="EPr_manage_delete_all_gcal">Elimina tutti gli eventi del calendario in programmi</string>
<string name="EPr_manage_delete_all_gcal_message">Vuoi davvero eliminare tutti i tuoi eventi in programmi?</string>
<string name="EPr_manage_delete_all_gcal_status">Eliminato il %d degli eventi del calendario!</string>
<string name="AOA_internal_author">Team Tasks</string>
<string name="TWi_loading">Caricamento...</string>
<string name="WCA_title">Seleziona le attività da visualizzare...</string>
<string name="task_killer_help">Sembra che si stia utilizzando un\'applicazione che può terminare i processi (%s)! Se è possibile, aggiungere Tasks all\'elenco di esclusione in modo che non venga terminato. Contrariamente, Tasks potrebbe non avvisarti quando le tue attività saranno compiute.\n</string>
@ -404,8 +398,6 @@ Se visualizzi questo errore più volte, ti consigliamo di cancellare tutti i dat
<item>mensilmente</item>
<item>bi-mensilmente</item>
</string-array>
<string name="repeat_plugin">Attività ricorrente</string>
<string name="repeat_plugin_desc">Permette di ripetere le attività</string>
<string name="repeat_enabled">Ripeti</string>
<string name="repeat_every">Ogni %d</string>
<string name="repeat_interval_prompt">Intervallo di ripetizione</string>
@ -437,7 +429,6 @@ Se visualizzi questo errore più volte, ti consigliamo di cancellare tutti i dat
<string name="repeat_detail_byday">$I su $D</string>
<string name="repeat_detail_duedate">Ogni %s</string>
<string name="repeat_detail_duedate_until">Ogni %1$s\nfino %2$s</string>
<string name="repeat_detail_completion">%s dopo il completamento</string>
<string name="repeat_forever">Ripeti all\'infinito</string>
<string name="repeat_until">Ripeti fino %s</string>
<string name="repeat_rescheduling_dialog_title">Ripianifica attività \"%s\"</string>

@ -201,29 +201,15 @@
<string name="EPr_filters_to_show_title">אילו מַסְנְנִים להציג</string>
<string name="EPr_showSmartConfirmation_title">הצג אישור על תזכורות חכמות</string>
<string name="EPr_fontSize_desc">גודל הגופן בדף הרישום הראשי</string>
<string name="EPr_showNotes_title">הצג תיאור עם המשימה</string>
<string name="EPr_edit_screen_options">עריכת אפשרויות מסך</string>
<string name="EPr_beastMode_title">עריכת סדר מסך</string>
<string name="EPr_time_increment">צעדים של 5 דקות</string>
<string name="EPr_use_date_shortcuts">הצג קיצורי תאריך</string>
<string name="EPr_beastMode_desc">התאם אישית את מסך עריכת משימה</string>
<string name="EPr_beastMode_reset">אפס להגדרות ברירת מחדל</string>
<string name="EPr_showNotes_desc_disabled">התיאור יהיה נגיש ממסך עריכת המשימה</string>
<string name="EPr_showNotes_desc_enabled">התיאור יוצג תמיד</string>
<string name="EPr_fullTask_title">הצג כותרת מלאה</string>
<string name="EPr_fullTask_desc_enabled">כותרות משימה מלאות תוצגנה</string>
<string name="EPr_fullTask_desc_disabled">שתי השורות הראשונות של שם המשימה תוצגנה</string>
<string-array name="EPr_task_row_styles">
<item>מקורי</item>
<item>פשוט</item>
<item>כותרת בלבד</item>
</string-array>
<string-array name="EPr_task_row_style_descriptions">
<item>צמצם את הכותרת לשתי שורות עם תאריך מצד ימין</item>
<item>צמצם את הכותרת לשורה אחת כולל תאריך ורשימות מתחת</item>
<item>שורת כותרת פשוטה בלבד</item>
</string-array>
<string name="EPr_task_row_style_title">סגנון שורה: %s</string>
<string name="EPr_show_quickadd_controls">בקרת הוספה מהירה מתקדם</string>
<string name="EPr_hide_plus_button">הסתר את כפתור ה-פלוס</string>
<string name="EPr_list_view">תצוגת רשימה</string>
@ -249,7 +235,6 @@
<string name="EPr_manage_delete_all_gcal">מַחֲקִי את כל אירועי היומן הקשורים למשימות</string>
<string name="EPr_manage_delete_all_gcal_message">האם אתה בטוח שברצונך למחוק את כל אירועי היומן בעבור המשימות?</string>
<string name="EPr_manage_delete_all_gcal_status">%d אירועי יומן נמחקו</string>
<string name="AOA_internal_author">הצוות של אסטריד</string>
<string name="TWi_loading">טוענת...</string>
<string name="WCA_title">בחר משימות להצגה...</string>
<string name="task_killer_help">ככל הנראה הנך משתמש ביישום אשר יכול להרוג תהליכים (%s)!
@ -458,8 +443,6 @@
<item>חודשי</item>
<item>דו חודשי</item>
</string-array>
<string name="repeat_plugin">משימות חוזרות</string>
<string name="repeat_plugin_desc">אפשר למשימות לחזור</string>
<string name="repeat_enabled">חזרה</string>
<string name="repeat_every">כל %d</string>
<string name="repeat_interval_prompt">אינטרוול חזרות</string>
@ -499,7 +482,6 @@
<string name="repeat_detail_byday">$I על $D</string>
<string name="repeat_detail_duedate">כל %s</string>
<string name="repeat_detail_duedate_until">כל %1$s\nעד %2$s</string>
<string name="repeat_detail_completion">%s אחרי שהמשימה הושלמה</string>
<string name="repeat_forever">חזור לנצח</string>
<string name="repeat_until">חזרה עד %s</string>
<string name="repeat_rescheduling_dialog_title">תזמון מחדש של משימה «%s\»</string>

@ -259,7 +259,6 @@
</string-array>
<string name="repeat_detail_byday">$I ($D 曜日)</string>
<string name="repeat_detail_duedate">%s</string>
<string name="repeat_detail_completion">完了日から %s</string>
<string name="tag_new_list">新しいリスト</string>
<string name="TEA_no_tags_modified">変更されませんでした</string>
<string name="tag_settings_title">Settings:</string>

@ -205,7 +205,6 @@
<string name="EPr_filters_to_show_title">표시할 필터</string>
<string name="EPr_showSmartConfirmation_title">스마트 알림시 확인하기</string>
<string name="EPr_fontSize_desc">주 목록 페이지 폰트 크기</string>
<string name="EPr_showNotes_title">일정에 설명 보기</string>
<string name="EPr_edit_screen_options">화면 설정 편집하기</string>
<string name="EPr_beastMode_title">화면 정렬 순서 편집하기</string>
<string name="EPr_time_increment">5분 증가</string>
@ -214,22 +213,9 @@
<string name="EPr_beastMode_desc">일정 편집화면 레이아웃 설정하기</string>
<string name="EPr_beastMode_reset">기본값으로 초기화하기</string>
<string name="EPr_beastMode_hint">각 줄의 왼쪽 손잡이를 끌어서 일정 편집 화면을 사용자 정의하기</string>
<string name="EPr_showNotes_desc_disabled">설명은 일정 편집 화면에서 수정할 수 있습니다.</string>
<string name="EPr_showNotes_desc_enabled">설명을 항상 표시합니다</string>
<string name="EPr_fullTask_title">전체 일정 제목 보기</string>
<string name="EPr_fullTask_desc_enabled">전체 일정 제목을 표시합니다</string>
<string name="EPr_fullTask_desc_disabled">일정 제목의 첫 두 줄을 표시합니다</string>
<string-array name="EPr_task_row_styles">
<item>원래대로</item>
<item>간단히</item>
<item>제목만</item>
</string-array>
<string-array name="EPr_task_row_style_descriptions">
<item>제목을 두 줄로 줄이고 날짜를 오른쪽에 출력</item>
<item>제목을 한 줄로 줄이고 날짜와 목록을 그 아래에 출력</item>
<item>제목을 한줄에만</item>
</string-array>
<string name="EPr_task_row_style_title">가로줄 스타일: %s</string>
<string name="EPr_show_quickadd_controls">고급 빠른추가 조정</string>
<string name="EPr_hide_plus_button">플러스 버튼 감추기</string>
<string name="EPr_list_view">목록 보기</string>
@ -255,7 +241,6 @@
<string name="EPr_manage_delete_all_gcal">일정의 모든 달력 이벤트 삭제하기</string>
<string name="EPr_manage_delete_all_gcal_message">일정의 모든 이벤트를 정말 삭제할까요?</string>
<string name="EPr_manage_delete_all_gcal_status">%d 달력 이벤트를 삭제했습니다!</string>
<string name="AOA_internal_author">아스트리드 팀</string>
<string name="TWi_loading">로드 중…</string>
<string name="WCA_title">열람할 일정 선택...</string>
<string name="task_killer_help">프로세스(%s)를 강제종료할 수 있는 앱을 사용하고 있는 것 같습니다!
@ -466,8 +451,6 @@
<item>매달</item>
<item>격월로</item>
</string-array>
<string name="repeat_plugin">일정 반복하기</string>
<string name="repeat_plugin_desc">일정 반복 허락</string>
<string name="repeat_enabled">반복 설정</string>
<string name="repeat_every">매 %d</string>
<string name="repeat_interval_prompt">반복 주기</string>
@ -507,7 +490,6 @@
</string-array>
<string name="repeat_detail_duedate">매 %s</string>
<string name="repeat_detail_duedate_until">매 %1$s 마다\n%2$s 까지</string>
<string name="repeat_detail_completion">완료 후 %s</string>
<string name="repeat_forever">영원히 반복하기</string>
<string name="repeat_until">%s 까지 반복</string>
<string name="repeat_rescheduling_dialog_title">\"%s\" 일정 변경하기</string>

@ -108,9 +108,6 @@
<string name="EPr_appearance_header">Utseende</string>
<string name="EPr_fontSize_title">Tekststørrelse for oppgavelista</string>
<string name="EPr_fontSize_desc">Tekststørrelse for hovedlista</string>
<string name="EPr_showNotes_title">Vis notater i oppgaven</string>
<string name="EPr_showNotes_desc_enabled">Notater vil alltid vises</string>
<string name="AOA_internal_author">Tasks-teamet</string>
<string name="TWi_loading">Laster ...</string>
<string name="WCA_title">Velg oppgaver å se på</string>
<string name="task_killer_help">Det ser ut til at du bruker en app som kan avslutte prosesser (%s)! Hvis du kan, legg Tasks til eksklusjonslista så den ikke blir avsluttet. Ellers vil Tasks kanskje ikke si fra når oppgavene dine forfaller.\n</string>
@ -209,8 +206,6 @@
<string name="rmd_EPr_defaultRemind_title">Tilfeldige påminnelser</string>
<string name="rmd_EPr_defaultRemind_desc_disabled">Nye oppgaver skal ikke påminnes tifeldig</string>
<string name="rmd_EPr_defaultRemind_desc">Nye oppgaver påminnes tilfeldig: %s</string>
<string name="repeat_plugin">Gjentagende oppgaver</string>
<string name="repeat_plugin_desc">Tillat gjentagende oppgaver</string>
<string name="repeat_enabled">Gjentakelser</string>
<string name="repeat_every">Hver %d</string>
<string name="repeat_interval_prompt">Gjentakelsesintervall</string>
@ -227,7 +222,6 @@
</string-array>
<string name="repeat_detail_byday">$I på $D</string>
<string name="repeat_detail_duedate">Hver %s</string>
<string name="repeat_detail_completion">%s etter avslutning</string>
<string name="TEA_tag_hint">Ny liste</string>
<string name="tag_new_list">Ny liste</string>
<string name="tag_cm_delete">Slett liste</string>

@ -202,7 +202,6 @@
<string name="EPr_filters_to_show_title">Te tonen filters</string>
<string name="EPr_showSmartConfirmation_title">Laat bevestiging zien voor slimme herinneringen</string>
<string name="EPr_fontSize_desc">Grootte van Lettertype op hoofd takenlijst</string>
<string name="EPr_showNotes_title">Toon omschrijving in taak</string>
<string name="EPr_edit_screen_options">Scherm opties bewerken</string>
<string name="EPr_beastMode_title">Scherm volgorde bewerken</string>
<string name="EPr_time_increment">stappen van 5 minuten</string>
@ -211,22 +210,9 @@
<string name="EPr_beastMode_desc">Pas de layout van het Taak Wijzigingsscherm aan</string>
<string name="EPr_beastMode_reset">Standaardinstellingen herstellen</string>
<string name="EPr_beastMode_hint">Pas uw taak bewerken scherm aan door de linker handle van elke rij te verslepen</string>
<string name="EPr_showNotes_desc_disabled">Omschrijving zal toegankelijk zijn vanaf het bewerk taak scherm</string>
<string name="EPr_showNotes_desc_enabled">Omschrijving zal altijd worden getoond</string>
<string name="EPr_fullTask_title">Laat volledige taak titel zien</string>
<string name="EPr_fullTask_desc_enabled">Volledige taak titel zal worden weergegeven</string>
<string name="EPr_fullTask_desc_disabled">Eerste twee lijnen van taak titel zullen worden weergegeven</string>
<string-array name="EPr_task_row_styles">
<item>Origineel</item>
<item>Simpel</item>
<item>Enkel titel</item>
</string-array>
<string-array name="EPr_task_row_style_descriptions">
<item>Titel afkappen naar twee regels met datum aan rechterkant</item>
<item>Titel afkappen tot één regel met datum en onderstaande lijsten</item>
<item>Enkele regel enkel titel</item>
</string-array>
<string name="EPr_task_row_style_title">Regel stijl %s</string>
<string name="EPr_show_quickadd_controls">Geavanceerde snel toevoegen controls</string>
<string name="EPr_hide_plus_button">Verberg plus knop</string>
<string name="EPr_list_view">Lijst weergave</string>
@ -459,8 +445,6 @@
<item>maandelijks</item>
<item>tweemaandelijks</item>
</string-array>
<string name="repeat_plugin">Herhalende taken</string>
<string name="repeat_plugin_desc">Herhalende taken toestaan</string>
<string name="repeat_enabled">Herhalingen</string>
<string name="repeat_every">Elke %d</string>
<string name="repeat_interval_prompt">Herhaal interval</string>
@ -501,7 +485,6 @@
<string name="repeat_detail_byday">$I op $D</string>
<string name="repeat_detail_duedate">Elke %s</string>
<string name="repeat_detail_duedate_until">Elke %1$s\ntot %2$s</string>
<string name="repeat_detail_completion">%s na voltooing</string>
<string name="repeat_forever">Altijd herhalen</string>
<string name="repeat_until">Herhalen tot %s</string>
<string name="repeat_rescheduling_dialog_title">Verplaatsen taak \"%s\"</string>

@ -194,29 +194,15 @@
<string name="EPr_filters_to_show_title">Pokazywane filtry</string>
<string name="EPr_showSmartConfirmation_title">Pokaż potwierdzenie dla inteligentnych powiadomień</string>
<string name="EPr_fontSize_desc">Rozmiar czcionki głównej listy zadań</string>
<string name="EPr_showNotes_title">Pokazuj opis w zadaniu</string>
<string name="EPr_edit_screen_options">Edytuj ustawienia ekranu</string>
<string name="EPr_beastMode_title">Edytuj kolejność</string>
<string name="EPr_time_increment">Krok co 5-minut</string>
<string name="EPr_use_date_shortcuts">Użyj skrótów dat</string>
<string name="EPr_beastMode_desc">Dostosuj układ strony edycji zadania</string>
<string name="EPr_beastMode_reset">Przywróć domyślne</string>
<string name="EPr_showNotes_desc_disabled">Opis będzie dostępny na ekranie edycji zadania</string>
<string name="EPr_showNotes_desc_enabled">Opis będzie zawsze wyświetlany</string>
<string name="EPr_fullTask_title">Pokaż pełną nazwę zadania</string>
<string name="EPr_fullTask_desc_enabled">Pełna nazwa zadania będzie wyświetlana</string>
<string name="EPr_fullTask_desc_disabled">Pierwsze dwie linie nazwy zadania będą wyświetlane</string>
<string-array name="EPr_task_row_styles">
<item>Oryginalny</item>
<item>Prosty</item>
<item>Tylko tytuł</item>
</string-array>
<string-array name="EPr_task_row_style_descriptions">
<item>Skróć tytuł do dwóch linii z datą na prawo</item>
<item>Skróć tytuł do jednej lini z datą i listami poniżej</item>
<item>Tytuł tylko w jednej linii</item>
</string-array>
<string name="EPr_task_row_style_title">Styl wiersza: %s</string>
<string name="EPr_show_quickadd_controls">Zaawansowane kontrolki szybkiego dodawania</string>
<string name="EPr_list_view">Widok listy</string>
<string name="EPr_show_task_edit_comments">Pokaż komentarze w edycji zadania</string>
@ -241,7 +227,6 @@
<string name="EPr_manage_delete_all_gcal">Usuń wszystkie zdarzenia kalendarza dla zadań</string>
<string name="EPr_manage_delete_all_gcal_message">Na pewno chcesz usunąć wszystkie wydarzenia dla zadań?</string>
<string name="EPr_manage_delete_all_gcal_status">Usunięto %d wydarzeń kalendarza!</string>
<string name="AOA_internal_author">Zespół Tasks</string>
<string name="TWi_loading">Ładowanie...</string>
<string name="WCA_title">Wybierz zadania do wyświetlenia</string>
<string name="task_killer_help">Wygląda na to, że używasz aplikacji, która zabija procesy (%s)! Jeśli możesz, dodaj Tasks do listy wyjątków. Nieaktywny program Tasks nie będzie Ci przypominać o zadaniach do wykonania.\n</string>
@ -446,8 +431,6 @@ i odzyskanie zadań z kopi zapasowej (Settings-&gt;Sync and backup-&gt;Backup-&g
<item>raz w miesiącu</item>
<item>raz na dwa miesiące</item>
</string-array>
<string name="repeat_plugin">Powtarzanie zadań</string>
<string name="repeat_plugin_desc">Zewzwól zadaniom na powtarzanie</string>
<string name="repeat_enabled">Powtarza się</string>
<string name="repeat_every">Co %d</string>
<string name="repeat_interval_prompt">Odstęp powtarzania</string>
@ -487,7 +470,6 @@ i odzyskanie zadań z kopi zapasowej (Settings-&gt;Sync and backup-&gt;Backup-&g
<string name="repeat_detail_byday">$I w $D</string>
<string name="repeat_detail_duedate">Każdy %s</string>
<string name="repeat_detail_duedate_until">Co %1$s\ndo %2$s</string>
<string name="repeat_detail_completion">%s po ukończeniu</string>
<string name="repeat_forever">Powtarzaj bez końca</string>
<string name="repeat_until">Powtarzaj do %s</string>
<string name="repeat_rescheduling_dialog_title">Przekładanie zadania \"%s\"</string>

@ -197,7 +197,6 @@
<string name="EPr_fontSize_title">Tamanho do texto</string>
<string name="EPr_showSmartConfirmation_title">Mostrar confirmação para lembretes espertos</string>
<string name="EPr_fontSize_desc">Tamanho do texto nas listagens</string>
<string name="EPr_showNotes_title">Mostrar descrição na tarefa</string>
<string name="EPr_edit_screen_options">Editar opções da tela</string>
<string name="EPr_time_increment">Incrementos de 5 minutos</string>
<string name="EPr_use_date_shortcuts">Usar atalhos de data</string>
@ -206,11 +205,6 @@
<string name="EPr_fullTask_title">Exibir título completo</string>
<string name="EPr_fullTask_desc_enabled">O título completo será exibido</string>
<string name="EPr_fullTask_desc_disabled">Somente as primeiras duas linhas serão exibidas</string>
<string-array name="EPr_task_row_style_descriptions">
<item>Truncar título para duas linhas com data à direita</item>
<item>Truncar título para uma única linha com data e lista abaixo</item>
<item>Single line title only</item>
</string-array>
<string name="EPr_taskRowPrefs_title">Aparência da Tarefa</string>
<string name="EPr_manage_header">Gerenciar tarefas antigas</string>
<string name="EPr_manage_delete_completed">Exclui as tarefas concluídas</string>
@ -229,7 +223,6 @@
<string name="EPr_manage_delete_all_gcal">Apaga todos os eventos de calendário das tarefas</string>
<string name="EPr_manage_delete_all_gcal_message">Você quer mesmo apagar todos os eventos de calendário das tarefas?</string>
<string name="EPr_manage_delete_all_gcal_status">%d eventos de agenda apagados!</string>
<string name="AOA_internal_author">Equipe do Tasks</string>
<string name="TWi_loading">Carregando...</string>
<string name="WCA_title">Selecionar tarefas para visualização...</string>
<string name="task_killer_help">Parece que você está usando um aplicativo que pode eliminar processos (%s)! Se você puder, adicione o Tasks à lista de exclusão para que ele não seja eliminado. Caso contrário, o Tasks pode não avisar para você quando suas tarefas estiverem vencidas.\n</string>
@ -419,8 +412,6 @@
<item>mensalmente</item>
<item>a cada dois meses</item>
</string-array>
<string name="repeat_plugin">Tarefas recorrentes</string>
<string name="repeat_plugin_desc">Permitir tarefas recorrentes</string>
<string name="repeat_enabled">Repetir</string>
<string name="repeat_every">A cada %d</string>
<string name="repeat_interval_prompt">Intervalo de repetição</string>
@ -460,7 +451,6 @@
<string name="repeat_detail_byday">$I na $D</string>
<string name="repeat_detail_duedate">a cada %s</string>
<string name="repeat_detail_duedate_until">Todo %1$s\naté %2$s</string>
<string name="repeat_detail_completion">%s após a conclusão</string>
<string name="repeat_forever">Repetir para sempre</string>
<string name="repeat_until">Repetir até %s</string>
<string name="repeat_rescheduling_dialog_title">Reagendando tarefa \"%s\"</string>

@ -203,7 +203,6 @@
<string name="EPr_filters_to_show_title">Filtros a mostrar</string>
<string name="EPr_showSmartConfirmation_title">Mostrar confirmação para lembretes inteligentes</string>
<string name="EPr_fontSize_desc">Tamanho da letra na página principal da lista</string>
<string name="EPr_showNotes_title">Mostrar descrição na tarefa</string>
<string name="EPr_edit_screen_options">Opções do ecrã de edição</string>
<string name="EPr_beastMode_title">Ordem do ecrã de edição</string>
<string name="EPr_time_increment">Incrementos de 5 minutos</string>
@ -212,22 +211,9 @@
<string name="EPr_beastMode_desc">Personalizar o esquema do ecrã de edição de tarefas</string>
<string name="EPr_beastMode_reset">Restaurar definições originas</string>
<string name="EPr_beastMode_hint">Personalize o ecrã de edição de tarefas arrastando a guia em cada linha</string>
<string name="EPr_showNotes_desc_disabled">A descrição estará acessível no ecrã de edição de tarefas</string>
<string name="EPr_showNotes_desc_enabled">A descrição será mostrada sempre</string>
<string name="EPr_fullTask_title">Mostrar título completo das tarefas</string>
<string name="EPr_fullTask_desc_enabled">O título completo das tarefas será mostrado</string>
<string name="EPr_fullTask_desc_disabled">Primeiras duas linhas do título serão mostradas</string>
<string-array name="EPr_task_row_styles">
<item>Original</item>
<item>Simples</item>
<item>Apenas título</item>
</string-array>
<string-array name="EPr_task_row_style_descriptions">
<item>Restringir título a duas linhas com data à direita</item>
<item>Restringir título a uma linha e com data e lista abaixo</item>
<item>Título com uma linha</item>
</string-array>
<string name="EPr_task_row_style_title">Estilo de linha: %s</string>
<string name="EPr_show_quickadd_controls">Controlos avançados de adição rápida</string>
<string name="EPr_hide_plus_button">Ocultar botão Mais</string>
<string name="EPr_list_view">Vista em lista</string>
@ -254,7 +240,6 @@
<string name="EPr_manage_delete_all_gcal">Eliminar todos os eventos de calendário das tarefas</string>
<string name="EPr_manage_delete_all_gcal_message">Quer mesmo eliminar todos os eventos das tarefas?</string>
<string name="EPr_manage_delete_all_gcal_status">Eliminados %d eventos de calendário!</string>
<string name="AOA_internal_author">Equipa do Tasks</string>
<string name="TWi_loading">Carregando...</string>
<string name="WCA_title">Escolha as tarefas a ver...</string>
<string name="task_killer_help">Parece que está a utilizar uma aplicação que pode terminar processos (%s).
@ -465,8 +450,6 @@ das tarefas através de um backup em Definições-&gt;Sincronização e backup-&
<item>mensal</item>
<item>bimensal</item>
</string-array>
<string name="repeat_plugin">Tarefas recorrentes</string>
<string name="repeat_plugin_desc">Permitir repetição de tarefas</string>
<string name="repeat_enabled">Repete</string>
<string name="repeat_every">Cada %d</string>
<string name="repeat_interval_prompt">Intervalo de repetição</string>
@ -507,7 +490,6 @@ das tarefas através de um backup em Definições-&gt;Sincronização e backup-&
<string name="repeat_detail_byday">$I em $D</string>
<string name="repeat_detail_duedate">Cada %s</string>
<string name="repeat_detail_duedate_until">Cada %1$s\naté %2$s</string>
<string name="repeat_detail_completion">%s depois da conclusão</string>
<string name="repeat_forever">Repetir eternamente</string>
<string name="repeat_until">Repetir até %s</string>
<string name="repeat_rescheduling_dialog_title">Reagendamento da tarefa %s</string>

@ -204,7 +204,6 @@
<string name="EPr_filters_to_show_title">Показать фильтры</string>
<string name="EPr_showSmartConfirmation_title">Показывать подтверждения для умных напоминаний</string>
<string name="EPr_fontSize_desc">Размер шрифта основного экрана</string>
<string name="EPr_showNotes_title">Показать описание в задаче</string>
<string name="EPr_edit_screen_options">Редактировать настройки экрана</string>
<string name="EPr_beastMode_title">Редактировать порядок экранов</string>
<string name="EPr_time_increment">Шаг 5 минут</string>
@ -213,22 +212,9 @@
<string name="EPr_beastMode_desc">Настроить внешний вид экрана правки задачи</string>
<string name="EPr_beastMode_reset">Настройки по умолчанию</string>
<string name="EPr_beastMode_hint">Настройте экран редактирования задачи, перетаскивая элементы ниже</string>
<string name="EPr_showNotes_desc_disabled">Описание будет доступно на экране редактирования задачи</string>
<string name="EPr_showNotes_desc_enabled">Всегда показывать описание</string>
<string name="EPr_fullTask_title">Показывать полное название задачи</string>
<string name="EPr_fullTask_desc_enabled">Будет показано полное название задачи</string>
<string name="EPr_fullTask_desc_disabled">Будут показаны первые две строки названия</string>
<string-array name="EPr_task_row_styles">
<item>Оригинальный</item>
<item>Простой</item>
<item>Только заголовки</item>
</string-array>
<string-array name="EPr_task_row_style_descriptions">
<item>Сократить заголовок до двух строк с указанием даты справа</item>
<item>Сократить заголовок до одной строки с указанием даты и списков ниже</item>
<item>В одну линию с заголовками</item>
</string-array>
<string name="EPr_task_row_style_title">Стиль строки: %s</string>
<string name="EPr_show_quickadd_controls">Расширенные возможности быстрого добавления</string>
<string name="EPr_hide_plus_button">Убрать кнопку плюс</string>
<string name="EPr_list_view">Списком</string>
@ -255,7 +241,6 @@
<string name="EPr_manage_delete_all_gcal">Удалить все календарные события для задач</string>
<string name="EPr_manage_delete_all_gcal_message">Вы уверены, что хотите удалить все ваши события для задач?</string>
<string name="EPr_manage_delete_all_gcal_status">Удалено %d календарных событий!</string>
<string name="AOA_internal_author">Команда Tasks</string>
<string name="TWi_loading">Загрузка...</string>
<string name="WCA_title">Выберите задачи для просмотра…</string>
<string name="task_killer_help">Возможно вы используете менеджер задач (%s). По возможности добавьте Tasks в список исключений иначе возможны сложности с напоминаниями.\n</string>
@ -464,8 +449,6 @@
<item>ежемесячно</item>
<item>каждые два месяца</item>
</string-array>
<string name="repeat_plugin">Повторяющиеся задачи</string>
<string name="repeat_plugin_desc">Позволяет задачам повторяться</string>
<string name="repeat_enabled">Повторения</string>
<string name="repeat_every">С интервалом в %d</string>
<string name="repeat_interval_prompt">Интервал повтора</string>
@ -506,7 +489,6 @@
<string name="repeat_detail_byday">$I каждый $D</string>
<string name="repeat_detail_duedate">С интервалом %s</string>
<string name="repeat_detail_duedate_until">\"Каждые %1$s пока %2$s\"</string>
<string name="repeat_detail_completion">%s после завершения</string>
<string name="repeat_forever">Повторять всегда</string>
<string name="repeat_until">Повторять пока %s</string>
<string name="repeat_rescheduling_dialog_title">Перепланирование задачи \"%s\"</string>

@ -205,7 +205,6 @@
<string name="EPr_filters_to_show_title">Filtri za prikaz</string>
<string name="EPr_showSmartConfirmation_title">Pokaži potrditev za pametne opomnike</string>
<string name="EPr_fontSize_desc">Velikost črk na strani z glavnim seznamom</string>
<string name="EPr_showNotes_title">Prikaži opis pri opravku</string>
<string name="EPr_edit_screen_options">Uredi možnosti zaslona</string>
<string name="EPr_beastMode_title">Uredi vrstni red zaslonov</string>
<string name="EPr_time_increment">5-minutni podaljški</string>
@ -214,22 +213,9 @@
<string name="EPr_beastMode_desc">Po meri postavi stran za urejevanje opravkov </string>
<string name="EPr_beastMode_reset">Povrni privzeto nastavitev</string>
<string name="EPr_beastMode_hint">Stran za urejanje opravkov se postavi po meri s potegom leve ročke posamezne vrstice</string>
<string name="EPr_showNotes_desc_disabled">Opis bo dosegljiv na zaslonu za urejanje opravkov</string>
<string name="EPr_showNotes_desc_enabled">Opis bo vedno prikazan</string>
<string name="EPr_fullTask_title">Prikaži celoten naziv opravka</string>
<string name="EPr_fullTask_desc_enabled">Celoten naziv opravka bo prikazan</string>
<string name="EPr_fullTask_desc_disabled">Prikazani bosta prvi dve vrstici naziva opravka</string>
<string-array name="EPr_task_row_styles">
<item>Originalni</item>
<item>Enostavni</item>
<item>Samo naziv</item>
</string-array>
<string-array name="EPr_task_row_style_descriptions">
<item>Skajšaj naziv v dve vrstici z datumom na desni strani</item>
<item>Skrajšaj naziv na eno vrstico z datumom in seznami pod njo.</item>
<item>Enovrstični naziv</item>
</string-array>
<string name="EPr_task_row_style_title">Slog vrstice:%s</string>
<string name="EPr_show_quickadd_controls">Napredni kontrolniki za hitro dodajanje</string>
<string name="EPr_hide_plus_button">Skrij gumb s plusom</string>
<string name="EPr_list_view">Seznamski prikaz</string>
@ -255,7 +241,6 @@
<string name="EPr_manage_delete_all_gcal">Zbriši vse dogodke na koledarju z opravki</string>
<string name="EPr_manage_delete_all_gcal_message">Ste prepričani, da želite zbrisati vse opravke iz vaših dogodkov?</string>
<string name="EPr_manage_delete_all_gcal_status">Število zbrisanih dogodkov na koledarju: %d </string>
<string name="AOA_internal_author">Sodelujoči pri izdelavi aplikacije Opravki</string>
<string name="TWi_loading">Nalagam...</string>
<string name="WCA_title">Izberi in prikaži opravke...</string>
<string name="task_killer_help">Zdi se, da uporabljate neko aplikacijo, ki ima pravico prekinjati procese(%s)! Prosimo, dodajte aplikacijo Opravki na seznam izjem, kajti sicer vas Opravki morda ne bodo mogli pravočano obvestiti o dospelosti opravkov.\n</string>
@ -461,8 +446,6 @@
<item>mesečno</item>
<item>vsake dva meseca</item>
</string-array>
<string name="repeat_plugin">Ponavljajoča se opravila</string>
<string name="repeat_plugin_desc">Omogoči ponavljanje opravil</string>
<string name="repeat_enabled">Ponovitve</string>
<string name="repeat_every">Vsakih %d</string>
<string name="repeat_interval_prompt">Pogostost ponovitev</string>
@ -503,7 +486,6 @@
<string name="repeat_detail_byday">$I dne $D</string>
<string name="repeat_detail_duedate">Vsak %s</string>
<string name="repeat_detail_duedate_until">Vsak %1$s\n do %2$s</string>
<string name="repeat_detail_completion">%s po dokončanju</string>
<string name="repeat_forever">Ponavljaj do preklica</string>
<string name="repeat_until">Ponavljaj do %s</string>
<string name="repeat_rescheduling_dialog_title">Spremenjen čas opravka \"%s\"</string>

@ -198,28 +198,14 @@
<string name="EPr_filters_to_show_title">Filter att visa</string>
<string name="EPr_showSmartConfirmation_title">Visa bekräftelse vid smarta påminnelser</string>
<string name="EPr_fontSize_desc">Textstorlek för huvudlistan</string>
<string name="EPr_showNotes_title">Visa beskrivning i uppgiften</string>
<string name="EPr_edit_screen_options">Ändra skärminställningar</string>
<string name="EPr_beastMode_title">Redigera skärmordning</string>
<string name="EPr_time_increment">5 minuters steg</string>
<string name="EPr_beastMode_desc">Ställ in layouten för uppgiftsredigeringsrutan</string>
<string name="EPr_beastMode_reset">Återställ till standardvärden</string>
<string name="EPr_showNotes_desc_disabled">Beskrivning är tillgänglig från uppgiftsredigeringsskärmen </string>
<string name="EPr_showNotes_desc_enabled">Beskrivning visas alltid</string>
<string name="EPr_fullTask_title">Visa hela namnet på uppgiften</string>
<string name="EPr_fullTask_desc_enabled">Uppgiftens namn kommer att visas i sin helhet</string>
<string name="EPr_fullTask_desc_disabled">De första två raderna i uppgiftens namn kommer att visas</string>
<string-array name="EPr_task_row_styles">
<item>Original</item>
<item>Enkel</item>
<item>Endast titel</item>
</string-array>
<string-array name="EPr_task_row_style_descriptions">
<item>Förkorta titel till två rader med datum till höger</item>
<item>Förkorta titel till en rad, med datum och listor nedanför</item>
<item>Single line title only</item>
</string-array>
<string name="EPr_task_row_style_title">Rad stil: %s</string>
<string name="EPr_show_quickadd_controls">Avancerade quickadd kontroller.</string>
<string name="EPr_hide_plus_button">Dölj plusknappen</string>
<string name="EPr_list_view">Listvy</string>
@ -242,7 +228,6 @@
<string name="EPr_manage_delete_all_gcal">Radera alla kalenderhändelser för uppgifter</string>
<string name="EPr_manage_delete_all_gcal_message">Vill du verkligen radera alla dina händelser i kalendern för uppgifter?</string>
<string name="EPr_manage_delete_all_gcal_status">%d kalenderhändelser raderade!</string>
<string name="AOA_internal_author">Tasks-teamet</string>
<string name="TWi_loading">Laddar...</string>
<string name="WCA_title">Välj uppgifter att se på...</string>
<string name="task_killer_help">Det ser ut att du använder en app som kan avsluta processer (%s)! Om du kan, lägg till Tasks i exklusionslistan så att den inte avslutas. Annars kan det hända att Tasks inte meddelar när dina uppgifter förfaller.\n</string>
@ -447,8 +432,6 @@ och återställer dina aktuella uppgifter från en backup
<item>varje månad</item>
<item>varannan månad</item>
</string-array>
<string name="repeat_plugin">Upprepande uppgifter</string>
<string name="repeat_plugin_desc">Tillåt upprepande uppgifter</string>
<string name="repeat_enabled">Upprepningar</string>
<string name="repeat_every">Varje %d</string>
<string name="repeat_interval_prompt">Upprepningsintervall</string>
@ -489,7 +472,6 @@ och återställer dina aktuella uppgifter från en backup
<string name="repeat_detail_byday">$I på $D</string>
<string name="repeat_detail_duedate">Varje %s</string>
<string name="repeat_detail_duedate_until">Varje %1$s\ntill %2$s </string>
<string name="repeat_detail_completion">%s efter avslutning</string>
<string name="repeat_forever">Repetera oändligt</string>
<string name="repeat_until">Repetera till %s</string>
<string name="repeat_rescheduling_dialog_title">Ändrar tid för uppgiften \"%s\"</string>

@ -66,8 +66,6 @@
<string name="TEA_control_notes">บันทึกย่อ</string>
<string name="EPr_appearance_header">รูปโฉม</string>
<string name="EPr_fontSize_desc">ขนาดฟอนต์บนหน้ารายการหลัก</string>
<string name="EPr_showNotes_desc_enabled">บันทึกจะแสดงให้เห็นตลอดเวลา</string>
<string name="AOA_internal_author">ทีมงาน Tasks</string>
<string name="TWi_loading">กำลังโหลด...</string>
<string name="WCA_title">เลือกแผนงานเพื่อดู...</string>
<string name="DB_corrupted_body">Uh oh! It looks like you may have a corrupted database.

@ -206,7 +206,6 @@
<string name="EPr_manage_delete_all_gcal">Görevlerdeki Bütün Takvim Olaylarını Sil</string>
<string name="EPr_manage_delete_all_gcal_message">Görevlerdeki bütün olayları silmek istediğinize emin misiniz?</string>
<string name="EPr_manage_delete_all_gcal_status">%d takvim olayı silindi!</string>
<string name="AOA_internal_author">Tasks Takımı</string>
<string name="TWi_loading">Yükleniyor...</string>
<string name="WCA_title">Görüntülenecek görevi seç...</string>
<string name="task_killer_help">Gönürüyor ki, işlemleri kapatabilen bir uygulama kullanıyorsunuz (%s)! Mümkünse, Tasks\'i programın muafiyet listesine ekleyin ki kapatılamasın. Aksi takdirde, Tasks görevlerin tarihi geldiğinde size bildiremeyebilir.\n</string>
@ -396,8 +395,6 @@
<item>ayda bir</item>
<item>ayda 2 kez</item>
</string-array>
<string name="repeat_plugin">Tekrarlanan Görevler</string>
<string name="repeat_plugin_desc">Görevlerin tekrarlanmasına izin ver</string>
<string name="repeat_enabled">Tekrarlar</string>
<string name="repeat_every">Her %d</string>
<string name="repeat_interval_prompt">Yineleme Aralığı</string>
@ -437,7 +434,6 @@
<string name="repeat_detail_byday">$I gün: $D</string>
<string name="repeat_detail_duedate">Her %s</string>
<string name="repeat_detail_duedate_until">Her %1$s\n%2$s \'e kadar</string>
<string name="repeat_detail_completion">Tamamlandıktan sonra %s</string>
<string name="repeat_forever">Sürekli yinele</string>
<string name="repeat_until">%s\'e kadar yinele</string>
<string name="repeat_rescheduling_dialog_title">Görev zamanı güncelleniyor: \"%s\"</string>

@ -205,7 +205,6 @@
<string name="EPr_filters_to_show_title">Показати фільтри</string>
<string name="EPr_showSmartConfirmation_title">Показати підтвердження для розумного нагадування</string>
<string name="EPr_fontSize_desc">Розмір шрифта на головній сторінці оголошень</string>
<string name="EPr_showNotes_title">Показувати опис в завданні</string>
<string name="EPr_edit_screen_options">Редагувати налаштування екрану</string>
<string name="EPr_beastMode_title">Редагувати порядок екранів</string>
<string name="EPr_time_increment">Крок 5 хвилин</string>
@ -214,17 +213,9 @@
<string name="EPr_beastMode_desc">Налаштувати зовнішній вигляд екрану редагування завдань</string>
<string name="EPr_beastMode_reset">Налаштування за замовчуванням</string>
<string name="EPr_beastMode_hint">Налаштуйте Ваш екран редагування нотатки перетягуванням лівої частини рядків</string>
<string name="EPr_showNotes_desc_disabled">Опис буде доступно на екрані редагування завдання</string>
<string name="EPr_showNotes_desc_enabled">Завжди показувати опис</string>
<string name="EPr_fullTask_title">Показувати повну назву завдання</string>
<string name="EPr_fullTask_desc_enabled">Повна назва завдання буде показана</string>
<string name="EPr_fullTask_desc_disabled">Перші дві стрічки назви завдання будуть показані</string>
<string-array name="EPr_task_row_styles">
<item>Оригінальний</item>
<item>Простий</item>
<item>Title only</item>
</string-array>
<string name="EPr_task_row_style_title">Стиль стрічки: %s</string>
<string name="EPr_show_quickadd_controls">Розширені можливості швидкого додавання</string>
<string name="EPr_hide_plus_button">Прибрати кнопку плюс</string>
<string name="EPr_list_view">Вигляд списку</string>
@ -250,7 +241,6 @@
<string name="EPr_manage_delete_all_gcal">Видалити всі календарні події для завдань</string>
<string name="EPr_manage_delete_all_gcal_message">Ви дійсно хочете видалити всі події для завдань?</string>
<string name="EPr_manage_delete_all_gcal_status">Видалено %d календарних подій!</string>
<string name="AOA_internal_author">Команда Tasks</string>
<string name="TWi_loading">Завантаження...</string>
<string name="WCA_title">Виберіть завдання для перегляду...</string>
<string name="task_killer_help">Можливо ви використовуєте менеджер завдань (%s)!
@ -461,8 +451,6 @@
<item>щомісяця</item>
<item>два рази на місяць</item>
</string-array>
<string name="repeat_plugin">Повторювані завдання</string>
<string name="repeat_plugin_desc">Дозволяє завданням повторюватися</string>
<string name="repeat_enabled">Повторення</string>
<string name="repeat_every">З інтервалом в %d</string>
<string name="repeat_interval_prompt">Інтервал повторення</string>
@ -491,7 +479,6 @@
<string name="repeat_detail_byday">$I кожен $D</string>
<string name="repeat_detail_duedate">З інтервалом в %s</string>
<string name="repeat_detail_duedate_until">Кожні %1$s\nпоки %2$s</string>
<string name="repeat_detail_completion">%s після завершення</string>
<string name="repeat_forever">Повторювати завжди</string>
<string name="repeat_until">Повторювати до %s</string>
<string name="repeat_rescheduling_dialog_title">Перепланування завдання \"%s\"</string>

@ -174,11 +174,6 @@
<string name="EPr_fullTask_title">显示完整的任务标题</string>
<string name="EPr_fullTask_desc_enabled">将显示完整的任务标题</string>
<string name="EPr_fullTask_desc_disabled">将显示任务标题的头两行</string>
<string-array name="EPr_task_row_style_descriptions">
<item>截取标题至两行,并在右边显示日期</item>
<item>截取标题为一行,并在下方显示日期和列表</item>
<item>Single line title only</item>
</string-array>
<string name="EPr_taskRowPrefs_title">任务栏</string>
<string name="EPr_manage_header">管理旧任务</string>
<string name="EPr_manage_delete_completed">删除已完成任务</string>
@ -197,7 +192,6 @@
<string name="EPr_manage_delete_all_gcal">删除所有日程表</string>
<string name="EPr_manage_delete_all_gcal_message">您真的想删除您所有事件中的各项任务吗?</string>
<string name="EPr_manage_delete_all_gcal_status">已经删除了 %d 个日历事件了!</string>
<string name="AOA_internal_author">清单小助理团队</string>
<string name="TWi_loading">载入中...</string>
<string name="WCA_title">选择任务以显示...</string>
<string name="task_killer_help">似乎您正在使用会删除进程的应用程序(%s)!可以的话,请将 清单小助理加入到例外列表避免被杀死。否则 清单小助理可能无法通知您任务已到期。\n</string>
@ -384,8 +378,6 @@
<item>每月</item>
<item>每两个月</item>
</string-array>
<string name="repeat_plugin">重复任务</string>
<string name="repeat_plugin_desc">允许任务重复</string>
<string name="repeat_enabled">重复</string>
<string name="repeat_every">每 %d</string>
<string name="repeat_interval_prompt">重复间隔</string>
@ -425,7 +417,6 @@
<string name="repeat_detail_byday">$I 的 $D</string>
<string name="repeat_detail_duedate">每隔 %s</string>
<string name="repeat_detail_duedate_until">每隔 %1$s\n直到 %2$s</string>
<string name="repeat_detail_completion">完成后 %s</string>
<string name="repeat_forever">永远重复</string>
<string name="repeat_until">重复到 %s</string>
<string name="repeat_rescheduling_dialog_title">重新安排“%s”这项任务</string>

@ -199,22 +199,14 @@
<string name="EPr_fontSize_title">工作清單大小</string>
<string name="EPr_showSmartConfirmation_title">在智能提示上顯示確認消息</string>
<string name="EPr_fontSize_desc">清單主頁面字型大小</string>
<string name="EPr_showNotes_title">顯示工作描述</string>
<string name="EPr_edit_screen_options">編輯畫面選項</string>
<string name="EPr_beastMode_title">編輯畫面順序</string>
<string name="EPr_use_date_shortcuts">使用日期捷徑</string>
<string name="EPr_beastMode_desc">自定義設定菜單屏幕</string>
<string name="EPr_beastMode_reset">恢復默認值</string>
<string name="EPr_showNotes_desc_disabled">描述可在工作編輯畫面下存取</string>
<string name="EPr_showNotes_desc_enabled">描述永遠顯示</string>
<string name="EPr_fullTask_title">顯示完整的任務工作標題</string>
<string name="EPr_fullTask_desc_enabled">將顯示完整的任務工作標題</string>
<string name="EPr_fullTask_desc_disabled">將顯示任務工作標題的頭兩行</string>
<string-array name="EPr_task_row_style_descriptions">
<item>截取標題至兩行,並在右邊顯示日期</item>
<item>截取標題為一行,並在下方顯示日期和列表</item>
<item>Single line title only</item>
</string-array>
<string name="EPr_taskRowPrefs_title">任務工作欄</string>
<string name="EPr_manage_header">管理舊任務工作</string>
<string name="EPr_manage_delete_completed">刪除已完成任務工作</string>
@ -233,7 +225,6 @@
<string name="EPr_manage_delete_all_gcal">刪除所有日程表</string>
<string name="EPr_manage_delete_all_gcal_message">您真的想刪除您所有事件中的各項任務工作嗎?</string>
<string name="EPr_manage_delete_all_gcal_status">已經刪除了 %d 個日曆事件了!</string>
<string name="AOA_internal_author">Tasks 團隊</string>
<string name="TWi_loading">載入中...</string>
<string name="WCA_title">選擇工作顯示...</string>
<string name="task_killer_help">似乎您正在使用會刪除進程的應用程序(%s)可以的話請將Tasks 加入到例外列表避免被殺死。否則Tasks可能無法通知您任務已到期。\n</string>
@ -428,8 +419,6 @@
<item>每月</item>
<item>每2個月</item>
</string-array>
<string name="repeat_plugin">重複工作</string>
<string name="repeat_plugin_desc">允許工作重複</string>
<string name="repeat_enabled">重複</string>
<string name="repeat_every">每 %d</string>
<string name="repeat_interval_prompt">重複間隔</string>
@ -469,7 +458,6 @@
<string name="repeat_detail_byday">$I 的 $D</string>
<string name="repeat_detail_duedate">每隔 %s</string>
<string name="repeat_detail_duedate_until">每隔 %1$s\n直到 %2$s</string>
<string name="repeat_detail_completion">完成後 %s</string>
<string name="repeat_forever">永遠重複</string>
<string name="repeat_until">重複到 %s</string>
<string name="repeat_rescheduling_dialog_title">重新安排“%s”這項任務工作</string>

@ -100,13 +100,6 @@
<!-- ======================================================= APPEARANCE == -->
<string name="p_fontSize">font_size</string>
<string name="p_taskRowStyle_v2">p_taskRowStyle_v2</string>
<string-array name="EPr_task_row_style_values">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string name="p_showNotes">notesVisible</string>
<string name="p_beastMode">beastMode</string>
<string name="p_voicePrefSection">voicePrefSection</string>

@ -455,9 +455,6 @@
<!-- slide 34g: Preference: Task List Font Size Description -->
<string name="EPr_fontSize_desc">Font size on the main listing page</string>
<!-- slide 34c: Preference: Task List Show Notes -->
<string name="EPr_showNotes_title">Show description in task</string>
<!-- Edit screen preference category -->
<string name="EPr_edit_screen_options">Edit screen options</string>
@ -477,33 +474,12 @@
<string name="EPr_beastMode_hint">Customize your task edit screen by dragging the left handle on each row</string>
<!-- slide 34i: Preference: Task List Show Notes Description (disabled) -->
<string name="EPr_showNotes_desc_disabled">Description will be accessible from the task edit screen</string>
<!-- Preference: Task List Show Notes Description (enabled) -->
<string name="EPr_showNotes_desc_enabled">Description will always be displayed</string>
<!-- slide 34b: Preferences: Wrap task titles to two lines -->
<string name="EPr_fullTask_title">Show full task title</string>
<string name="EPr_fullTask_desc_enabled">Full task title will be shown</string>
<!-- slide 34h -->
<string name="EPr_fullTask_desc_disabled">First two lines of task title will be shown</string>
<!-- Preferences: task row style -->
<string-array name="EPr_task_row_styles">
<item>Original</item>
<item>Simple</item>
<item>Title only</item>
</string-array>
<string-array name="EPr_task_row_style_descriptions">
<item>Truncate title to two lines with date on right</item>
<item>Truncate title to one line with date and lists below</item>
<item>Single line title only</item>
</string-array>
<!-- task row style title (%s -> style) -->
<string name="EPr_task_row_style_title">Row style: %s</string>
<!-- Preference: simple input box style -->
<string name="EPr_show_quickadd_controls">Advanced quickadd controls</string>
@ -562,11 +538,6 @@
<string name="EPr_manage_delete_all_gcal_message">Do you really want to delete all your events for tasks?</string>
<string name="EPr_manage_delete_all_gcal_status">Deleted %d calendar events!</string>
<!-- ==================================================== AddOnActivity == -->
<!-- Add-on Activity: author for internal authors -->
<string name="AOA_internal_author">Tasks Team</string>
<!-- ====================================================== TasksWidget == -->
<!-- Widget text when loading tasks -->

@ -3,12 +3,6 @@
<!-- Resources for built-in repeat plug-in -->
<!-- repeating plugin name -->
<string name="repeat_plugin">Repeating Tasks</string>
<!-- repeating plugin description -->
<string name="repeat_plugin_desc">Allows tasks to repeat</string>
<!-- slide 20a: checkbox for turning on/off repeats -->
<string name="repeat_enabled">Repeats</string>
@ -74,9 +68,6 @@
<!-- task detail for repeat until a specific date (%1$s -> interval, %2$s -> finish date)-->
<string name="repeat_detail_duedate_until">Every %1$s\nuntil %2$s</string>
<!-- task detail for repeat from completion date (%s -> interval) -->
<string name="repeat_detail_completion">%s after completion</string>
<!-- text for button when repeating task indefinitely -->
<string name="repeat_forever">Repeat forever</string>

@ -31,21 +31,11 @@
android:title="@string/EPr_fontSize_title"
android:summary="@string/EPr_fontSize_desc" />
<com.todoroo.astrid.ui.MultilineListPreference
android:key="@string/p_taskRowStyle_v2"
android:entries="@array/EPr_task_row_styles"
android:entryValues="@array/EPr_task_row_style_values" />
<com.todoroo.astrid.ui.MultilineCheckboxPreference
android:key="@string/p_fullTaskTitle"
android:title="@string/EPr_fullTask_title"
android:defaultValue="false" />
<com.todoroo.astrid.ui.MultilineCheckboxPreference
android:key="@string/p_showNotes"
android:title="@string/EPr_showNotes_title"
android:defaultValue="false" />
</PreferenceScreen>
<PreferenceScreen android:title="@string/EPr_edit_screen_options"

Loading…
Cancel
Save