New sort activity

pull/281/head
Alex Baker 9 years ago
parent 0af1a45f38
commit 4e70a84982

@ -116,6 +116,10 @@
android:name=".activities.LocationPickerActivity"
android:theme="@style/Tasks.Dialog" />
<activity
android:name=".activities.SortActivity"
android:theme="@style/Tasks.Dialog" />
<!-- Activity that displays task list -->
<activity
android:name="com.todoroo.astrid.activity.TaskListActivity"

@ -6,24 +6,18 @@
package com.todoroo.astrid.actfm;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.subtasks.SubtasksTagListFragment;
import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.utility.Flags;
import org.tasks.R;
import org.tasks.ui.NavigationDrawerFragment;
import javax.inject.Inject;
@ -159,24 +153,6 @@ public class TagViewFragment extends TaskListFragment {
return tagData != null;
}
@Override
protected void toggleDragDrop(boolean newState) {
Class<?> customComponent;
if(newState) {
customComponent = SubtasksTagListFragment.class;
} else {
filter.setFilterQueryOverride(null);
customComponent = TagViewFragment.class;
}
((FilterWithCustomIntent) filter).customTaskList = new ComponentName(getActivity(), customComponent);
extras.putParcelable(TOKEN_FILTER, filter);
((AstridActivity)getActivity()).setupTasklistFragmentWithFilterAndCustomTaskList(filter,
extras, customComponent);
}
@Override
protected void refresh() {
loadTaskListContent();

@ -7,7 +7,6 @@ package com.todoroo.astrid.activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
@ -18,8 +17,6 @@ import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.subtasks.SubtasksHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.ui.NavigationDrawerFragment;
@ -40,8 +37,6 @@ import javax.inject.Inject;
public abstract class AstridActivity extends InjectingAppCompatActivity
implements TaskListFragment.OnTaskListItemClickedListener {
private static final Logger log = LoggerFactory.getLogger(AstridActivity.class);
public static final int LAYOUT_SINGLE = 0;
public static final int LAYOUT_DOUBLE = 1;
@ -97,27 +92,6 @@ public abstract class AstridActivity extends InjectingAppCompatActivity
}
}
public void setupTasklistFragmentWithFilterAndCustomTaskList(Filter filter, Bundle extras, Class<?> customTaskList) {
TaskListFragment newFragment = TaskListFragment.instantiateWithFilterAndExtras(filter, extras, customTaskList);
try {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.tasklist_fragment_container, newFragment,
TaskListFragment.TAG_TASKLIST_FRAGMENT);
transaction.commit();
runOnUiThread(new Runnable() {
@Override
public void run() {
getSupportFragmentManager().executePendingTransactions();
}
});
} catch (Exception e) {
// Don't worry about it
log.error(e.getMessage(), e);
}
}
@Override
public void onTaskListItemClicked(long taskId) {
Intent intent = new Intent(this, TaskEditActivity.class);

@ -1,144 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.activity;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.support.v7.app.AlertDialog;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RadioButton;
import com.todoroo.astrid.core.SortHelper;
import org.tasks.R;
import org.tasks.preferences.ActivityPreferences;
import org.tasks.preferences.Preferences;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastHoneycomb;
/**
* Shows the sort / hidden dialog
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class SortSelectionActivity {
public interface OnSortSelectedListener {
void onSortSelected(boolean manualSettingChanged);
}
/**
* Create the dialog
*/
public static AlertDialog createDialog(Activity activity, boolean showDragDrop, ActivityPreferences activityPreferences,
OnSortSelectedListener listener) {
int editDialogTheme = activityPreferences.getEditDialogTheme();
ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(activity, editDialogTheme);
LayoutInflater themedInflater = activity.getLayoutInflater().cloneInContext(contextThemeWrapper);
View body = themedInflater.inflate(R.layout.sort_selection_dialog, null);
if (activityPreferences.getBoolean(R.string.p_reverse_sort, false)) {
((CheckBox) body.findViewById(R.id.reverse)).setChecked(true);
}
if(!showDragDrop) {
body.findViewById(R.id.sort_drag).setVisibility(View.GONE);
}
if(showDragDrop && activityPreferences.getBoolean(R.string.p_manual_sort, false)) {
((RadioButton) body.findViewById(R.id.sort_drag)).setChecked(true);
} else {
switch(activityPreferences.getSortMode()) {
case SortHelper.SORT_ALPHA:
((RadioButton)body.findViewById(R.id.sort_alpha)).setChecked(true);
break;
case SortHelper.SORT_DUE:
((RadioButton)body.findViewById(R.id.sort_due)).setChecked(true);
break;
case SortHelper.SORT_IMPORTANCE:
((RadioButton)body.findViewById(R.id.sort_importance)).setChecked(true);
break;
case SortHelper.SORT_MODIFIED:
((RadioButton)body.findViewById(R.id.sort_modified)).setChecked(true);
break;
default:
((RadioButton)body.findViewById(R.id.sort_smart)).setChecked(true);
}
}
body.findViewById(R.id.sort_drag).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// disable reverse
}
});
AlertDialog.Builder builder = atLeastHoneycomb()
? new AlertDialog.Builder(activity, editDialogTheme)
: new AlertDialog.Builder(activity);
AlertDialog dialog = builder.
setTitle(R.string.TLA_menu_sort).
setView(body).
setPositiveButton(R.string.TLA_menu_sort, new DialogOkListener(activityPreferences, body, listener)).
setNegativeButton(android.R.string.cancel, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).
create();
dialog.setOwnerActivity(activity);
return dialog;
}
// --- internal implementation
private SortSelectionActivity() {
// use the static method
}
private static class DialogOkListener implements OnClickListener {
private final OnSortSelectedListener listener;
private Preferences preferences;
private final View body;
public DialogOkListener(Preferences preferences, View body, OnSortSelectedListener listener) {
this.preferences = preferences;
this.body = body;
this.listener = listener;
}
@Override
public void onClick(DialogInterface view, int button) {
int sort;
boolean wasManual = preferences.getBoolean(R.string.p_manual_sort, false);
boolean isManual = ((RadioButton) body.findViewById(R.id.sort_drag)).isChecked();
preferences.setBoolean(R.string.p_manual_sort, isManual);
preferences.setBoolean(R.string.p_reverse_sort, ((CheckBox) body.findViewById(R.id.reverse)).isChecked());
if(((RadioButton)body.findViewById(R.id.sort_alpha)).isChecked()) {
sort = SortHelper.SORT_ALPHA;
} else if(((RadioButton)body.findViewById(R.id.sort_due)).isChecked()) {
sort = SortHelper.SORT_DUE;
} else if(((RadioButton)body.findViewById(R.id.sort_importance)).isChecked()) {
sort = SortHelper.SORT_IMPORTANCE;
} else if(((RadioButton)body.findViewById(R.id.sort_modified)).isChecked()) {
sort = SortHelper.SORT_MODIFIED;
} else {
sort = SortHelper.SORT_AUTO;
}
preferences.setSortMode(sort);
listener.onSortSelected(wasManual != isManual);
}
}
}

@ -9,6 +9,8 @@ import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.support.v4.widget.DrawerLayout;
@ -38,11 +40,17 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gtasks.GtasksListFragment;
import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import com.todoroo.astrid.subtasks.SubtasksHelper;
import com.todoroo.astrid.subtasks.SubtasksListFragment;
import com.todoroo.astrid.subtasks.SubtasksTagListFragment;
import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.utility.Flags;
import com.todoroo.astrid.voice.VoiceInputAssistant;
import com.todoroo.astrid.widget.TasksWidget;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;
import org.tasks.activities.SortActivity;
import org.tasks.preferences.ActivityPreferences;
import org.tasks.receivers.RepeatConfirmationReceiver;
import org.tasks.ui.NavigationDrawerFragment;
@ -54,6 +62,8 @@ import static org.tasks.ui.NavigationDrawerFragment.OnFilterItemClickedListener;
public class TaskListActivity extends AstridActivity implements OnPageChangeListener, OnFilterItemClickedListener {
private static final Logger log = LoggerFactory.getLogger(TaskListActivity.class);
@Inject TagDataDao tagDataDao;
@Inject ActivityPreferences preferences;
@Inject GtasksPreferenceService gtasksPreferenceService;
@ -61,6 +71,7 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
private static final int REQUEST_EDIT_TAG = 11543;
private static final int REQUEST_EDIT_FILTER = 11544;
private static final int REQUEST_SORT = 11545;
private final RepeatConfirmationReceiver repeatConfirmationReceiver = new RepeatConfirmationReceiver(this);
private NavigationDrawerFragment navigationDrawer;
@ -164,13 +175,19 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
if (tlf instanceof GtasksListFragment) {
menu.findItem(R.id.menu_clear_completed).setVisible(true);
menu.findItem(R.id.menu_sort).setVisible(false);
hidden.setVisible(false);
completed.setVisible(false);
completed.setChecked(true);
completed.setEnabled(false);
} else if(tlf instanceof TagViewFragment) {
menu.findItem(R.id.menu_tag_settings).setVisible(true);
} else if(tlf.getFilter() instanceof CustomFilter && ((CustomFilter) tlf.getFilter()).getId() > 0) {
menu.findItem(R.id.menu_filter_settings).setVisible(true);
}
if (tlf instanceof SubtasksTagListFragment || tlf instanceof SubtasksListFragment) {
hidden.setChecked(true);
hidden.setEnabled(false);
}
menu.findItem(R.id.menu_voice_add).setVisible(voiceInputAvailable(this));
final MenuItem item = menu.findItem(R.id.menu_search);
final SearchView actionView = (SearchView) MenuItemCompat.getActionView(item);
@ -244,11 +261,28 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
public void setupTasklistFragmentWithFilter(Filter filter, Bundle extras) {
Class<?> customTaskList = null;
if (subtasksHelper.shouldUseSubtasksFragmentForFilter(filter, getTaskListFragment().isDraggable())) {
if (subtasksHelper.shouldUseSubtasksFragmentForFilter(filter)) {
customTaskList = SubtasksHelper.subtasksClassForFilter(filter);
}
setupTasklistFragmentWithFilterAndCustomTaskList(filter, extras, customTaskList);
TaskListFragment newFragment = TaskListFragment.instantiateWithFilterAndExtras(filter, extras, customTaskList);
try {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.tasklist_fragment_container, newFragment,
TaskListFragment.TAG_TASKLIST_FRAGMENT);
transaction.commit();
runOnUiThread(new Runnable() {
@Override
public void run() {
getSupportFragmentManager().executePendingTransactions();
}
});
} catch (Exception e) {
// Don't worry about it
log.error(e.getMessage(), e);
}
}
@Override
@ -445,6 +479,16 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
navigationDrawer.refresh();
}
} else if (requestCode == REQUEST_SORT) {
if (resultCode == RESULT_OK && data != null) {
TasksWidget.updateWidgets(this);
if (data.hasExtra(SortActivity.EXTRA_TOGGLE_MANUAL)) {
getIntent().putExtra(TOKEN_SWITCH_TO_FILTER, getTaskListFragment().getFilter());
} else {
getTaskListFragment().setUpTaskList();
}
}
}
super.onActivityResult(requestCode, resultCode, data);
@ -481,9 +525,9 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
voiceInputAssistant.startVoiceRecognitionActivity(R.string.voice_create_prompt);
return true;
case R.id.menu_sort:
SortSelectionActivity
.createDialog(this, tlf.hasDraggableOption(), preferences, tlf)
.show();
startActivityForResult(new Intent(this, SortActivity.class) {{
putExtra(SortActivity.EXTRA_MANUAL_ENABLED, tlf.hasDraggableOption());
}}, REQUEST_SORT);
return true;
case R.id.menu_tag_settings:
startActivityForResult(new Intent(this, TagSettingsActivity.class) {{

@ -40,7 +40,6 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Field;
import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.activity.SortSelectionActivity.OnSortSelectedListener;
import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.adapter.TaskAdapter.OnCompletedTaskListener;
import com.todoroo.astrid.adapter.TaskAdapter.ViewHolder;
@ -70,7 +69,6 @@ import com.todoroo.astrid.tags.TaskToTagMetadata;
import com.todoroo.astrid.timers.TimerPlugin;
import com.todoroo.astrid.ui.QuickAddBar;
import com.todoroo.astrid.utility.Flags;
import com.todoroo.astrid.widget.TasksWidget;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -97,7 +95,7 @@ import static org.tasks.intents.TaskIntents.getNewTaskIntent;
* @author Tim Su <tim@todoroo.com>
*
*/
public class TaskListFragment extends InjectingListFragment implements OnSortSelectedListener, SwipeRefreshLayout.OnRefreshListener {
public class TaskListFragment extends InjectingListFragment implements SwipeRefreshLayout.OnRefreshListener {
private static final Logger log = LoggerFactory.getLogger(TaskListFragment.class);
@ -874,39 +872,7 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel
mListener.onTaskListItemClicked(taskId);
}
protected void toggleDragDrop(boolean newState) {
extras.putParcelable(TOKEN_FILTER, filter);
if(newState) {
((AstridActivity) getActivity()).setupTasklistFragmentWithFilterAndCustomTaskList(filter,
extras, SubtasksListFragment.class);
} else {
filter.setFilterQueryOverride(null);
((AstridActivity)getActivity()).setupTasklistFragmentWithFilterAndCustomTaskList(filter,
extras, TaskListFragment.class);
}
}
protected boolean isDraggable() {
return false;
}
protected boolean hasDraggableOption() {
return isInbox || isTodayFilter;
}
@Override
public void onSortSelected(boolean manualSettingChanged) {
TasksWidget.updateWidgets(context);
try {
if(manualSettingChanged) {
toggleDragDrop(preferences.getBoolean(R.string.p_manual_sort, false));
} else {
setUpTaskList();
}
} catch (IllegalStateException e) {
log.error(e.getMessage(), e);
// TODO: Fragment got detached somehow (rare)
}
}
}

@ -9,7 +9,6 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.core.BuiltInFilterExposer;
import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.dao.TaskListMetadataDao;
@ -51,9 +50,9 @@ public class SubtasksHelper {
this.taskListMetadataDao = taskListMetadataDao;
}
public boolean shouldUseSubtasksFragmentForFilter(Filter filter, boolean isDraggable) {
public boolean shouldUseSubtasksFragmentForFilter(Filter filter) {
if(filter == null || BuiltInFilterExposer.isInbox(context, filter) || BuiltInFilterExposer.isTodayFilter(context, filter) || filter.isTagFilter()) {
if(isDraggable && preferences.getBoolean(R.string.p_manual_sort, false)) {
if(preferences.getBoolean(R.string.p_manual_sort, false)) {
return true;
}
}
@ -68,7 +67,7 @@ public class SubtasksHelper {
}
public String applySubtasksToWidgetFilter(Filter filter, String query, String tagName, int limit) {
if (shouldUseSubtasksFragmentForFilter(filter, true)) {
if (shouldUseSubtasksFragmentForFilter(filter)) {
// care for manual ordering
TagData tagData = tagDataDao.getTagByName(tagName, TagData.UUID, TagData.TAG_ORDERING);
TaskListMetadata tlm = null;

@ -91,11 +91,6 @@ public class SubtasksListFragment extends TaskListFragment {
}
}
@Override
protected boolean isDraggable() {
return true;
}
@Override
public void onTaskCreated(Task task) {
super.onTaskCreated(task);

@ -84,11 +84,6 @@ public class SubtasksTagListFragment extends TagViewFragment {
}
}
@Override
protected boolean isDraggable() {
return true;
}
@Override
public void onTaskCreated(Task task) {
super.onTaskCreated(task);

@ -0,0 +1,167 @@
package org.tasks.activities;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import com.todoroo.astrid.core.SortHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;
import org.tasks.injection.InjectingFragmentActivity;
import org.tasks.preferences.Preferences;
import javax.inject.Inject;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop;
public class SortActivity extends InjectingFragmentActivity {
private static final Logger log = LoggerFactory.getLogger(SortActivity.class);
public static final String EXTRA_MANUAL_ENABLED = "extra_manual_enabled";
public static final String EXTRA_TOGGLE_MANUAL = "extra_toggle_manual";
@Inject Preferences preferences;
private boolean manualEnabled;
private AlertDialog alertDialog;
private int selectedIndex;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
manualEnabled = getIntent().getBooleanExtra(EXTRA_MANUAL_ENABLED, false);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_single_choice);
if (manualEnabled) {
adapter.add(getString(R.string.SSD_sort_drag));
}
adapter.add(getString(R.string.SSD_sort_auto));
adapter.add(getString(R.string.SSD_sort_due));
adapter.add(getString(R.string.SSD_sort_importance));
adapter.add(getString(R.string.SSD_sort_alpha));
adapter.add(getString(R.string.SSD_sort_modified));
selectedIndex = getIndex(preferences.getSortMode());
if (manualEnabled) {
if (preferences.getBoolean(R.string.p_manual_sort, false)) {
selectedIndex = 0;
}
} else {
selectedIndex -= 1;
}
alertDialog = new AlertDialog.Builder(this, R.style.Tasks_Dialog)
.setSingleChoiceItems(adapter, selectedIndex, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
selectedIndex = which;
enableReverse();
}
})
.setPositiveButton(R.string.TLA_menu_sort, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setSelection(false);
}
})
.setNeutralButton(R.string.reverse, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setSelection(true);
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
finish();
}
})
.show();
enableReverse();
}
private void enableReverse() {
if (manualEnabled) {
Button reverse = alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL);
if (atLeastLollipop()) {
reverse.setEnabled(selectedIndex != 0);
} else {
reverse.setVisibility(selectedIndex == 0 ? View.GONE : View.VISIBLE);
}
}
}
private void setSelection(boolean reverse) {
preferences.setBoolean(R.string.p_reverse_sort, reverse);
final boolean wasManual = preferences.getBoolean(R.string.p_manual_sort, false);
final boolean isManual = manualEnabled && selectedIndex == 0;
preferences.setBoolean(R.string.p_manual_sort, isManual);
if (!isManual) {
preferences.setSortMode(getSortMode(manualEnabled ? selectedIndex : selectedIndex + 1));
}
setResult(RESULT_OK, new Intent() {{
if (wasManual != isManual) {
putExtra(EXTRA_TOGGLE_MANUAL, isManual);
}
}});
finish();
}
private int getIndex(int sortMode) {
switch (sortMode) {
case SortHelper.SORT_AUTO:
return 1;
case SortHelper.SORT_DUE:
return 2;
case SortHelper.SORT_IMPORTANCE:
return 3;
case SortHelper.SORT_ALPHA:
return 4;
case SortHelper.SORT_MODIFIED:
return 5;
}
log.error("Invalid sort mode: {}", sortMode);
return 1;
}
private int getSortMode(int index) {
switch (index) {
case 1:
return SortHelper.SORT_AUTO;
case 2:
return SortHelper.SORT_DUE;
case 3:
return SortHelper.SORT_IMPORTANCE;
case 4:
return SortHelper.SORT_ALPHA;
case 5:
return SortHelper.SORT_MODIFIED;
}
log.error("Invalid sort mode: {}", index);
return SortHelper.SORT_ALPHA;
}
}

@ -30,6 +30,7 @@ import org.tasks.activities.ExportTaskActivity;
import org.tasks.activities.ImportTaskActivity;
import org.tasks.activities.LocationPickerActivity;
import org.tasks.activities.PurgeDeletedActivity;
import org.tasks.activities.SortActivity;
import org.tasks.preferences.AppearancePreferences;
import org.tasks.preferences.BackupPreferences;
import org.tasks.preferences.BasicPreferences;
@ -82,7 +83,8 @@ import dagger.Provides;
LocationPickerActivity.class,
NotificationActivity.class,
HelpAndFeedbackActivity.class,
DateShortcutPreferences.class
DateShortcutPreferences.class,
SortActivity.class
})
public class ActivityModule {

@ -1,64 +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.
-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:paddingRight="10dip">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Sorting -->
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton android:id="@+id/sort_drag"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_sort_drag" />
<RadioButton android:id="@+id/sort_smart"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_sort_auto" />
<RadioButton android:id="@+id/sort_due"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_sort_due" />
<RadioButton android:id="@+id/sort_importance"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_sort_importance" />
<RadioButton android:id="@+id/sort_alpha"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_sort_alpha" />
<RadioButton android:id="@+id/sort_modified"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_sort_modified" />
</RadioGroup>
<CheckBox android:id="@+id/reverse"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_sort_reverse" />
</LinearLayout>
</ScrollView>

@ -54,7 +54,6 @@
<string name="SSD_sort_due">По краен срок</string>
<string name="SSD_sort_importance">По приоритет</string>
<string name="SSD_sort_modified">По последна промяна</string>
<string name="SSD_sort_reverse">В обратен ред</string>
<string name="FLA_search_filter">Съвпада с \'%s\'</string>
<string name="FLA_new_filter">Нов филтър</string>
<string name="FLA_no_filter_selected">Няма избран филтър! Моля изберете филтър или списък.</string>

@ -49,7 +49,6 @@
<string name="SSD_sort_due">Per data de venciment</string>
<string name="SSD_sort_importance">Per importància</string>
<string name="SSD_sort_modified">Per darrera modificació</string>
<string name="SSD_sort_reverse">Ordenació inversa</string>
<string name="FLA_search_filter">Coincidència \'%s\'</string>
<string name="FLA_new_filter">Filtre nou</string>
<string name="FLA_no_filter_selected">No heu seleccionat cap filtre. Seleccioneu un filtre o una llista.</string>

@ -51,7 +51,6 @@
<string name="SSD_sort_due">Podle data ukončení</string>
<string name="SSD_sort_importance">Podle důležitosti</string>
<string name="SSD_sort_modified">Podle naposled upraveného</string>
<string name="SSD_sort_reverse">Třídit</string>
<string name="FLA_search_filter">Hledanému \'%s\' odpovídá:</string>
<string name="FLA_new_filter">Nový Filtr</string>
<string name="FLA_no_filter_selected">Není vybrán žádný filtr! Vyberte prosím filtr nebo seznam.</string>

@ -45,7 +45,6 @@
<string name="SSD_sort_due">Efter deadline</string>
<string name="SSD_sort_importance">Efter vigtighed</string>
<string name="SSD_sort_modified">Efter senest ændret</string>
<string name="SSD_sort_reverse">Omvendt sortering</string>
<string name="FLA_search_filter">Matcher \'%s\'</string>
<string name="FLA_new_filter">Nyt filter</string>
<string name="FLA_no_filter_selected">Der er ikke valgt et filter! Vælg venligst et filter eller en liste.</string>

@ -50,7 +50,6 @@
<string name="SSD_sort_due">Nach Fälligkeit</string>
<string name="SSD_sort_importance">Nach Priorität</string>
<string name="SSD_sort_modified">Nach letzter Änderung</string>
<string name="SSD_sort_reverse">Umgekehrte Sortierung</string>
<string name="FLA_search_filter">Übereinstimmung mit %s</string>
<string name="FLA_new_filter">Neuer Filter</string>
<string name="FLA_no_filter_selected">Kein Filter ausgewählt! Bitte Filter oder Liste auswählen.</string>

@ -49,7 +49,6 @@
<string name="SSD_sort_due">Με βάση την ημερομηνία λήξης</string>
<string name="SSD_sort_importance">Κατά προτεραιότητα</string>
<string name="SSD_sort_modified">Με βάση τελευταία τροποποίηση</string>
<string name="SSD_sort_reverse">Αντίστροφη ταξινόμηση</string>
<string name="FLA_search_filter">Ταιριάζουν \'%s\'</string>
<string name="FLA_new_filter">Νέο φίλτρο</string>
<string name="FLA_no_filter_selected">Δεν επιλέχθηκε φίλτρο! Παρακαλώ επιλέξτε ενα φίλτρο η μια λίστα</string>

@ -51,7 +51,6 @@
<string name="SSD_sort_due">Por fecha límite</string>
<string name="SSD_sort_importance">Por prioridad</string>
<string name="SSD_sort_modified">Por última modificación</string>
<string name="SSD_sort_reverse">Invertir orden</string>
<string name="FLA_search_filter">Coincidencias con \'%s\'</string>
<string name="FLA_new_filter">Nuevo filtro</string>
<string name="FLA_no_filter_selected">No hay filtro seleccionado! Por favor seleccione un filtro o lista.</string>

@ -13,7 +13,6 @@
<string name="SSD_sort_due">Eräpäivään mennessä</string>
<string name="SSD_sort_importance">Prioriteetin mukaan</string>
<string name="SSD_sort_modified">Viimeisen muutoksen mukaan</string>
<string name="SSD_sort_reverse">Käänteinen järjestys</string>
<string name="FLA_search_filter">Sopivuus \'%s\'</string>
<string name="FLA_new_filter">Uusi suodin</string>
<string name="FLA_no_filter_selected">Suodatinta ei valittu! Valitse suodatin tai lista.</string>

@ -51,7 +51,6 @@
<string name="SSD_sort_due">Par date d\'échéance</string>
<string name="SSD_sort_importance">Par priorité</string>
<string name="SSD_sort_modified">Dernier modifié</string>
<string name="SSD_sort_reverse">Tri inversé</string>
<string name="FLA_search_filter">Correspondant \'%s\'</string>
<string name="FLA_new_filter">Nouveau filtre</string>
<string name="FLA_no_filter_selected">Aucun filtre sélectionné ! Veuillez sélectionner un filtre ou une liste.</string>

@ -48,7 +48,6 @@
<string name="SSD_sort_alpha">Per Titotlo</string>
<string name="SSD_sort_due">Per scadenza</string>
<string name="SSD_sort_modified">Per Ultima Modifica</string>
<string name="SSD_sort_reverse">Inverti Ordinamento</string>
<string name="FLA_search_filter">Confrontando \'%s\'</string>
<string name="FLA_new_filter">Nuovo Filtro</string>
<string name="FLA_no_filter_selected">Filtro non selezionato! Perfavore seleziona un filtro o una lista.</string>

@ -51,7 +51,6 @@
<string name="SSD_sort_due">ע״פ מועד יעד</string>
<string name="SSD_sort_importance">ע״פ עדיפות</string>
<string name="SSD_sort_modified">ע״פ מועד עדכון אחרון</string>
<string name="SSD_sort_reverse">מיון בסדר הפוך</string>
<string name="FLA_search_filter">התאים ל\'%s\'</string>
<string name="FLA_new_filter">מַסְנֵן חדש</string>
<string name="FLA_no_filter_selected">לא נבחר מַסְנֵן! אנא בחר מַסְנֵן או רשימה.</string>

@ -51,7 +51,6 @@
<string name="SSD_sort_due">期限順</string>
<string name="SSD_sort_importance">優先順位順</string>
<string name="SSD_sort_modified">更新日時順</string>
<string name="SSD_sort_reverse">逆順</string>
<string name="FLA_search_filter">「%s」の検索結果</string>
<string name="FLA_new_filter">新しいフィルタ</string>
<string name="FLA_no_filter_selected">フィルターが選択されていません! フィルターかリストを選択してください.</string>

@ -54,7 +54,6 @@
<string name="SSD_sort_due">마감일 순서</string>
<string name="SSD_sort_importance">우선순위 순서로</string>
<string name="SSD_sort_modified">최종 수정일 순서</string>
<string name="SSD_sort_reverse">역순 정렬</string>
<string name="FLA_search_filter">\'%s\' 검색 중</string>
<string name="FLA_new_filter">새 필터</string>
<string name="FLA_no_filter_selected">필터를 선택하지 않았습니다! 필터나 목록을 선택하세요.</string>

@ -41,7 +41,6 @@
<string name="SSD_sort_due">Etter forfallsdato</string>
<string name="SSD_sort_importance">Etter viktighet</string>
<string name="SSD_sort_modified">Etter siste endring</string>
<string name="SSD_sort_reverse">Omvendt sortering</string>
<string name="FLA_search_filter">Matcher \'%s\'</string>
<string name="FLA_new_filter">Nytt filter</string>
<string name="TEA_title_hint">Oppgavesammendrag</string>

@ -51,7 +51,6 @@
<string name="SSD_sort_due">Op einddatum</string>
<string name="SSD_sort_importance">Op prioriteit</string>
<string name="SSD_sort_modified">Op datum gewijzigd</string>
<string name="SSD_sort_reverse">Omgekeerd sorteren</string>
<string name="FLA_search_filter">Bevat \'%s\'</string>
<string name="FLA_new_filter">Nieuw Filter</string>
<string name="FLA_no_filter_selected">Geen filter geselecteerd! Selecteer een filter of lijst.</string>

@ -51,7 +51,6 @@
<string name="SSD_sort_due">Wg. daty</string>
<string name="SSD_sort_importance">Wg priorytetów</string>
<string name="SSD_sort_modified">Wg. ostatniej modyfikacji</string>
<string name="SSD_sort_reverse">Odwrotna kolejność</string>
<string name="FLA_search_filter">Pasujących do: %s</string>
<string name="FLA_new_filter">Nowy filtr</string>
<string name="FLA_no_filter_selected">Nie wybraon filtra! Wybierz filtr lub listę.</string>

@ -50,7 +50,6 @@
<string name="SSD_sort_due">Por data de vencimento</string>
<string name="SSD_sort_importance">Por prioridade</string>
<string name="SSD_sort_modified">Por data de modificação</string>
<string name="SSD_sort_reverse">Ordenação reversa</string>
<string name="FLA_search_filter">Encontradas para \'%s\'</string>
<string name="FLA_new_filter">Novo Filtro</string>
<string name="FLA_no_filter_selected">Sem filtro selecionado! Selecione um filtro ou lista.</string>

@ -53,7 +53,6 @@
<string name="SSD_sort_due">Por data limite</string>
<string name="SSD_sort_importance">Por Importância</string>
<string name="SSD_sort_modified">Por Última Modificação</string>
<string name="SSD_sort_reverse">Ordem Inversa</string>
<string name="FLA_search_filter">Coincidente com %s</string>
<string name="FLA_new_filter">Novo filtro</string>
<string name="FLA_no_filter_selected">Não selecionou o filtro! Selecione um filtro ou uma lista.</string>

@ -51,7 +51,6 @@
<string name="SSD_sort_due">По намеченному сроку</string>
<string name="SSD_sort_importance">По приоритету</string>
<string name="SSD_sort_modified">Последние изменённые</string>
<string name="SSD_sort_reverse">Обратный порядок сортировки</string>
<string name="FLA_search_filter">Соответствует \'%s\'</string>
<string name="FLA_new_filter">Новый фильтр</string>
<string name="FLA_no_filter_selected">Фильтры не выбраны! Пожалуйста, выберите фильтр или список</string>

@ -51,7 +51,6 @@
<string name="SSD_sort_due">Podľa dátumu</string>
<string name="SSD_sort_importance">Podľa priority</string>
<string name="SSD_sort_modified">Podľa úpravy</string>
<string name="SSD_sort_reverse">Zmeniť usporiadnanie</string>
<string name="FLA_search_filter">Zodpovedá \'%s\'</string>
<string name="FLA_new_filter">Nový filter</string>
<string name="FLA_no_filter_selected">Nieje vybraný filter! Prosím, zvoľ si filter, alebo zoznam.</string>

@ -54,7 +54,6 @@
<string name="SSD_sort_due">Po datumu roka</string>
<string name="SSD_sort_importance">Po prioriteti</string>
<string name="SSD_sort_modified">Po zadnjih spremembah</string>
<string name="SSD_sort_reverse">Razvrsti po obratnem vrstnem redu</string>
<string name="FLA_search_filter">Ujemanje za \'%s\'</string>
<string name="FLA_new_filter">Nov filter</string>
<string name="FLA_no_filter_selected">Noben filter ni izbran. Izberite filter ali seznam.</string>

@ -51,7 +51,6 @@
<string name="SSD_sort_due">Efter förfallodatum</string>
<string name="SSD_sort_importance">Efter prioritet</string>
<string name="SSD_sort_modified">Efter senaste ändringen</string>
<string name="SSD_sort_reverse">Omvänd sortering</string>
<string name="FLA_search_filter">Matchar \'%s\'</string>
<string name="FLA_new_filter">Nytt filter</string>
<string name="FLA_no_filter_selected">Inget filter valt! Välj ett filter eller en lista.</string>

@ -28,7 +28,6 @@
<string name="SSD_sort_alpha">ตามชื่อ</string>
<string name="SSD_sort_importance">ตามความสำคัญ</string>
<string name="SSD_sort_modified">ตามวันที่แก้ไขล่าสุด</string>
<string name="SSD_sort_reverse">จัดเรียงย้อนหลัง</string>
<string name="TEA_title_hint">สรุปแผนงาน</string>
<string name="TEA_importance_label">ความสำคัญ</string>
<string name="TEA_note_label">บันทึกย่อ</string>

@ -48,7 +48,6 @@
<string name="SSD_sort_alpha">Başlığa göre</string>
<string name="SSD_sort_due">Bitiş Tarihine Göre</string>
<string name="SSD_sort_modified">Son Değiştirme Tarihine Göre</string>
<string name="SSD_sort_reverse">Sıralamayı Tersine Çevir</string>
<string name="FLA_search_filter">\'%s\' ile eşleşenler</string>
<string name="FLA_new_filter">Yeni Filtre</string>
<string name="FLA_no_filter_selected">Süzgeç seçilmemiş! Lütfen bir süzgeç ya da liste seçin.</string>

@ -54,7 +54,6 @@
<string name="SSD_sort_due">За кінцевою датою</string>
<string name="SSD_sort_importance">За пріоритетом</string>
<string name="SSD_sort_modified">За останньою модифікованою</string>
<string name="SSD_sort_reverse">Обернений порядок сортування</string>
<string name="FLA_search_filter">Відповідності до %s</string>
<string name="FLA_new_filter">Новий фільтр</string>
<string name="FLA_no_filter_selected">Не вибраний жодний фільтр! Будь ласка, виберіть фільтр або список.</string>

@ -48,7 +48,6 @@
<string name="SSD_sort_alpha">按标题</string>
<string name="SSD_sort_due">按到期日</string>
<string name="SSD_sort_modified">按最后修改</string>
<string name="SSD_sort_reverse">反向排序</string>
<string name="FLA_search_filter">比对 \'%s\'</string>
<string name="FLA_new_filter">新建过滤器</string>
<string name="FLA_no_filter_selected">还没有选定过滤器呢!请选择一个过滤器或列表呗。</string>

@ -50,7 +50,6 @@
<string name="SSD_sort_due">依到期日</string>
<string name="SSD_sort_importance">依照優先權</string>
<string name="SSD_sort_modified">依最後修改</string>
<string name="SSD_sort_reverse">反向排序</string>
<string name="FLA_search_filter">比對 \'%s\'</string>
<string name="FLA_new_filter">新建過濾器</string>
<string name="FLA_no_filter_selected">還沒有選定過濾器呢!請選擇一個過濾器或列表唄。</string>

@ -98,9 +98,6 @@
<!-- slide 23f: Sort Selection: sort by modified date -->
<string name="SSD_sort_modified">By last modified</string>
<!-- slide 23g: Sort Selection: reverse -->
<string name="SSD_sort_reverse">Reverse sort</string>
<!-- =============================================== FilterListActivity == -->
<!-- Search Filter name (%s => query) -->

@ -123,6 +123,7 @@
<string name="deprecated_setting">This setting will be removed in a future update</string>
<string name="show_hidden">Show hidden</string>
<string name="show_completed">Show completed</string>
<string name="reverse">Reverse</string>
<string-array name="sync_SPr_interval_entries">
<!-- sync_SPr_interval_entries: Synchronization Intervals -->

Loading…
Cancel
Save