diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index 9ed0ffe17..686e6e178 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -174,26 +174,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
callApiMethod to ensure
- * you really pass an Activity-instance.
- *
- * @param activity the activity-instance for which to set the finish-transition
- * @param enterAnim the incoming-transition of the next activity
- * @param exitAnim the outgoing-transition of this activity
- */
- public static void callOverridePendingTransition(Activity activity, int enterAnim, int exitAnim) {
- activity.overridePendingTransition(enterAnim, exitAnim);
- }
-
/**
* Capitalize the first character
*/
diff --git a/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java b/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java
index 82328a976..6f7736af2 100644
--- a/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java
+++ b/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java
@@ -18,7 +18,6 @@ import android.view.MenuItem;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
-import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.CustomFilter;
import com.todoroo.astrid.dao.StoreObjectDao;
@@ -94,7 +93,6 @@ public class FilterSettingsActivity extends InjectingAppCompatActivity {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(filterName.getWindowToken(), 0);
super.finish();
- AndroidUtilities.callOverridePendingTransition(this, R.anim.slide_right_in, R.anim.slide_right_out);
}
@Override
diff --git a/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java b/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java
index ef2b39d3a..9ada1eed4 100644
--- a/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java
+++ b/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java
@@ -23,7 +23,6 @@ import android.widget.EditText;
import android.widget.TextView;
import com.todoroo.andlib.sql.Criterion;
-import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.TagDataDao;
@@ -153,7 +152,6 @@ public class TagSettingsActivity extends InjectingAppCompatActivity {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(tagName.getWindowToken(), 0);
super.finish();
- AndroidUtilities.callOverridePendingTransition(this, R.anim.slide_right_in, R.anim.slide_right_out);
}
@Override
diff --git a/src/main/java/com/todoroo/astrid/activity/AstridActivity.java b/src/main/java/com/todoroo/astrid/activity/AstridActivity.java
deleted file mode 100644
index 8872dab7c..000000000
--- a/src/main/java/com/todoroo/astrid/activity/AstridActivity.java
+++ /dev/null
@@ -1,192 +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.FragmentTransaction;
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.View;
-
-import com.todoroo.andlib.utility.AndroidUtilities;
-import com.todoroo.astrid.api.Filter;
-import com.todoroo.astrid.api.FilterWithCustomIntent;
-import com.todoroo.astrid.data.TagData;
-import com.todoroo.astrid.data.Task;
-import com.todoroo.astrid.repeats.RepeatControlSet;
-import com.todoroo.astrid.service.StartupService;
-import com.todoroo.astrid.service.UpgradeActivity;
-import com.todoroo.astrid.subtasks.SubtasksHelper;
-import com.todoroo.astrid.timers.TimerControlSet;
-
-import org.tasks.R;
-import org.tasks.injection.InjectingAppCompatActivity;
-import org.tasks.ui.NavigationDrawerFragment;
-import org.tasks.ui.PriorityControlSet;
-
-import javax.inject.Inject;
-
-import timber.log.Timber;
-
-/**
- * This wrapper activity contains all the glue-code to handle the callbacks between the different
- * fragments that could be visible on the screen in landscape-mode.
- * So, it basically contains all the callback-code from the filterlist-fragment, the tasklist-fragments
- * and the taskedit-fragment (and possibly others that should be handled).
- * Using this AstridWrapperActivity helps to avoid duplicated code because its all gathered here for sub-wrapperactivities
- * to use.
- *
- * @author Arne
- *
- */
-public abstract class AstridActivity extends InjectingAppCompatActivity implements
- TaskListFragment.OnTaskListItemClickedListener,
- PriorityControlSet.OnPriorityChanged,
- TimerControlSet.TimerControlSetCallback,
- RepeatControlSet.RepeatChangedListener {
-
- public static final int LAYOUT_SINGLE = 0;
- public static final int LAYOUT_DOUBLE = 1;
-
- public static final int REQUEST_UPGRADE = 505;
-
- protected int fragmentLayout = LAYOUT_SINGLE;
-
- public TaskListFragment getTaskListFragment() {
- return (TaskListFragment) getFragmentManager()
- .findFragmentByTag(TaskListFragment.TAG_TASKLIST_FRAGMENT);
- }
-
- public TaskEditFragment getTaskEditFragment() {
- return (TaskEditFragment) getFragmentManager()
- .findFragmentByTag(TaskEditFragment.TAG_TASKEDIT_FRAGMENT);
- }
-
- @Inject StartupService startupService;
- @Inject SubtasksHelper subtasksHelper;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- startupService.onStartupApplication(this);
- }
-
- protected Bundle configureIntentAndExtrasWithFilter(Intent intent, Filter filter) {
- if(filter instanceof FilterWithCustomIntent) {
- int lastSelectedList = intent.getIntExtra(NavigationDrawerFragment.TOKEN_LAST_SELECTED, 0);
- intent = ((FilterWithCustomIntent)filter).getCustomIntent();
- intent.putExtra(NavigationDrawerFragment.TOKEN_LAST_SELECTED, lastSelectedList);
- } else {
- intent.putExtra(TaskListFragment.TOKEN_FILTER, filter);
- }
-
- setIntent(intent);
-
- Bundle extras = intent.getExtras();
- if (extras != null) {
- extras = (Bundle) extras.clone();
- }
- return extras;
- }
-
- public void setupActivityFragment(TagData tagData) {
- if (fragmentLayout == LAYOUT_SINGLE) {
- return;
- }
-
- if (fragmentLayout == LAYOUT_DOUBLE) {
- findViewById(R.id.taskedit_fragment_container).setVisibility(View.VISIBLE);
- }
- }
-
- @Override
- public void onTaskListItemClicked(long taskId) {
- Intent intent = new Intent(this, TaskEditActivity.class);
- intent.putExtra(TaskEditFragment.TOKEN_ID, taskId);
- getIntent().putExtra(TaskEditFragment.TOKEN_ID, taskId); // Needs to be in activity intent so that TEA onResume doesn't create a blank activity
- if (getIntent().hasExtra(TaskListFragment.TOKEN_FILTER)) {
- intent.putExtra(TaskListFragment.TOKEN_FILTER, getIntent().getParcelableExtra(TaskListFragment.TOKEN_FILTER));
- }
-
- startEditActivity(intent);
- }
-
- protected void startEditActivity(Intent intent) {
- if (fragmentLayout == LAYOUT_SINGLE) {
- startActivityForResult(intent, TaskListFragment.ACTIVITY_EDIT_TASK);
- AndroidUtilities.callOverridePendingTransition(this, R.anim.slide_left_in, R.anim.slide_left_out);
- } else {
- TaskEditFragment editActivity = getTaskEditFragment();
- findViewById(R.id.taskedit_fragment_container).setVisibility(View.VISIBLE);
-
- if(editActivity == null) {
- editActivity = new TaskEditFragment();
- FragmentTransaction transaction = getFragmentManager().beginTransaction();
- transaction.add(R.id.taskedit_fragment_container, editActivity, TaskEditFragment.TAG_TASKEDIT_FRAGMENT);
- transaction.addToBackStack(null);
- transaction.commit();
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- // Force the transaction to occur so that we can be guaranteed of the fragment existing if we try to present it
- getFragmentManager().executePendingTransactions();
- }
- });
- } else {
- editActivity.save(true);
- editActivity.repopulateFromScratch(intent);
- }
-
- TaskListFragment tlf = getTaskListFragment();
- if (tlf != null) {
- tlf.loadTaskListContent();
- }
- }
- }
-
- @Override
- public void onBackPressed() {
- if (isFinishing()) {
- return;
- }
- super.onBackPressed();
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == REQUEST_UPGRADE) {
- if (resultCode == RESULT_OK) {
- if (data != null && data.getBooleanExtra(UpgradeActivity.EXTRA_RESTART, false)) {
- Timber.w("Upgrade requires restart");
- finish();
- startActivity(getIntent());
- }
- }
- } else {
- super.onActivityResult(requestCode, resultCode, data);
- }
- }
-
- @Override
- public void onPriorityChange(int priority) {
- getTaskEditFragment().onPriorityChange(priority);
- }
-
- @Override
- public void repeatChanged(boolean repeat) {
- getTaskEditFragment().onRepeatChanged(repeat);
- }
-
- @Override
- public Task stopTimer() {
- return getTaskEditFragment().stopTimer();
- }
-
- @Override
- public Task startTimer() {
- return getTaskEditFragment().startTimer();
- }
-}
diff --git a/src/main/java/com/todoroo/astrid/activity/TaskEditActivity.java b/src/main/java/com/todoroo/astrid/activity/TaskEditActivity.java
deleted file mode 100644
index 15cd4abd4..000000000
--- a/src/main/java/com/todoroo/astrid/activity/TaskEditActivity.java
+++ /dev/null
@@ -1,84 +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.Fragment;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.support.v4.graphics.drawable.DrawableCompat;
-import android.support.v7.app.ActionBar;
-import android.support.v7.widget.Toolbar;
-import android.view.KeyEvent;
-
-import com.todoroo.andlib.utility.AndroidUtilities;
-
-import org.tasks.ui.CalendarControlSet;
-import org.tasks.ui.DescriptionControlSet;
-
-import org.tasks.R;
-import org.tasks.preferences.ActivityPreferences;
-import org.tasks.ui.PriorityControlSet;
-
-import javax.inject.Inject;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-
-public class TaskEditActivity extends AstridActivity {
-
- @Inject ActivityPreferences preferences;
-
- @Bind(R.id.toolbar) Toolbar toolbar;
-
- /**
- * @see android.app.Activity#onCreate(Bundle)
- */
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- preferences.applyThemeAndStatusBarColor();
-
- setContentView(R.layout.task_edit_wrapper_activity);
- ButterKnife.bind(this);
-
- setSupportActionBar(toolbar);
- ActionBar supportActionBar = getSupportActionBar();
- if (supportActionBar != null) {
- supportActionBar.setDisplayHomeAsUpEnabled(true);
- supportActionBar.setDisplayShowTitleEnabled(false);
- Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_arrow_back_24dp));
- DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
- supportActionBar.setHomeAsUpIndicator(drawable);
- }
- }
-
- @Override
- protected void onResume() {
- super.onResume();
-
- Fragment frag = getFragmentManager()
- .findFragmentByTag(TaskListFragment.TAG_TASKLIST_FRAGMENT);
- if (frag == null) {
- fragmentLayout = LAYOUT_SINGLE;
- }
- }
-
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- TaskEditFragment frag = (TaskEditFragment) getFragmentManager()
- .findFragmentByTag(TaskEditFragment.TAG_TASKEDIT_FRAGMENT);
- if (frag != null && frag.isInLayout()) {
- return frag.onKeyDown(keyCode);
- }
- return super.onKeyDown(keyCode, event);
- }
-
- @Override
- public void finish() {
- super.finish();
- AndroidUtilities.callOverridePendingTransition(this, R.anim.slide_right_in, R.anim.slide_right_out);
- }
-}
diff --git a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java
index 8bb9ec327..099d112aa 100755
--- a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java
+++ b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java
@@ -6,9 +6,6 @@
package com.todoroo.astrid.activity;
import android.app.Activity;
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
@@ -17,7 +14,6 @@ import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.text.TextUtils;
-import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -29,30 +25,22 @@ import android.view.ViewGroup.LayoutParams;
import android.view.ViewParent;
import android.widget.EditText;
import android.widget.FrameLayout;
-import android.widget.LinearLayout;
import android.widget.ScrollView;
import com.todoroo.andlib.utility.AndroidUtilities;
-import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.actfm.ActFmCameraModule;
-import com.todoroo.astrid.api.PermaSql;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.UserActivityDao;
-import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.files.AACRecordingActivity;
import com.todoroo.astrid.files.FilesControlSet;
import com.todoroo.astrid.notes.EditNoteActivity;
-import com.todoroo.astrid.repeats.RepeatControlSet;
import com.todoroo.astrid.service.TaskDeleter;
import com.todoroo.astrid.service.TaskService;
-import com.todoroo.astrid.tags.TagsControlSet;
import com.todoroo.astrid.timers.TimerControlSet;
import com.todoroo.astrid.timers.TimerPlugin;
import com.todoroo.astrid.ui.EditTitleControlSet;
-import com.todoroo.astrid.ui.HideUntilControlSet;
-import com.todoroo.astrid.ui.ReminderControlSet;
import com.todoroo.astrid.utility.Flags;
import org.tasks.R;
@@ -62,24 +50,13 @@ import org.tasks.injection.ForActivity;
import org.tasks.injection.InjectingFragment;
import org.tasks.notifications.NotificationManager;
import org.tasks.preferences.ActivityPreferences;
-import org.tasks.ui.CalendarControlSet;
-import org.tasks.ui.DeadlineControlSet;
-import org.tasks.ui.DescriptionControlSet;
import org.tasks.ui.MenuColorizer;
-import org.tasks.ui.PriorityControlSet;
import org.tasks.ui.TaskEditControlFragment;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
import javax.inject.Inject;
import butterknife.Bind;
import butterknife.ButterKnife;
-import timber.log.Timber;
import static android.app.Activity.RESULT_OK;
@@ -93,16 +70,22 @@ import static android.app.Activity.RESULT_OK;
*/
public final class TaskEditFragment extends InjectingFragment implements EditNoteActivity.UpdatesChangedListener {
+ public interface TaskEditFragmentCallbackHandler {
+ void taskEditFinished();
+ }
+
+ public static TaskEditFragment newTaskEditFragment(boolean isNewTask, Task task) {
+ TaskEditFragment taskEditFragment = new TaskEditFragment();
+ taskEditFragment.isNewTask = isNewTask;
+ taskEditFragment.model = task;
+ taskEditFragment.applyModel = true;
+ return taskEditFragment;
+ }
+
public static final String TAG_TASKEDIT_FRAGMENT = "taskedit_fragment"; //$NON-NLS-1$
// --- bundle tokens
- /**
- * Task ID
- */
- public static final String TOKEN_ID = "id"; //$NON-NLS-1$
- public static final String TOKEN_UUID = "uuid";
-
/**
* Content Values to set
*/
@@ -111,12 +94,8 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
/**
* Task in progress (during orientation change)
*/
- private static final String TASK_IN_PROGRESS = "task_in_progress"; //$NON-NLS-1$
-
- /**
- * Task remote id (during orientation change)
- */
- private static final String TASK_UUID = "task_uuid"; //$NON-NLS-1$
+ private static final String EXTRA_TASK = "extra_task"; //$NON-NLS-1$
+ private static final String EXTRA_APPLY_MODEL = "extra_apply_model";
/**
* Token for saving a bitmap in the intent before it has been added with a comment
@@ -128,12 +107,6 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
public static final int REQUEST_CODE_RECORD = 30; // TODO: move this to file control set
public static final int REQUEST_CODE_CAMERA = 60;
- // --- result codes
-
- public static final String OVERRIDE_FINISH_ANIM = "finishAnim"; //$NON-NLS-1$
-
- public static final String TOKEN_TAGS_CHANGED = "tags_changed"; //$NON-NLS-1$
-
// --- services
public static final int TAB_VIEW_UPDATES = 0;
@@ -150,16 +123,27 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
// --- UI components
- private final Map controlSetFragments = new HashMap<>();
- private final List displayedFragments = new ArrayList<>();
private EditNoteActivity editNotes;
@Bind(R.id.pager) ViewPager mPager;
@Bind(R.id.updatesFooter) View commentsBar;
- @Bind(R.id.basic_controls) LinearLayout basicControls;
@Bind(R.id.edit_scroll) ScrollView scrollView;
@Bind(R.id.commentField) EditText commentField;
+ public static final int[] rowIds = new int[] {
+ R.id.row_1,
+ R.id.row_2,
+ R.id.row_3,
+ R.id.row_4,
+ R.id.row_5,
+ R.id.row_6,
+ R.id.row_7,
+ R.id.row_8,
+ R.id.row_9,
+ R.id.row_10,
+ R.id.row_11,
+ };
+
// --- other instance variables
/** true if editing started with a new task */
@@ -167,15 +151,10 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
/** task model */
Task model = null;
-
- /** whether task should be saved when this activity exits */
- private boolean shouldSaveState = true;
-
- private boolean overrideFinishAnim;
-
- private String uuid = RemoteModel.NO_UUID;
+ private boolean applyModel = false;
private boolean showEditComments;
+ private TaskEditFragmentCallbackHandler callback;
/*
* ======================================================================
@@ -188,22 +167,23 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
super.onCreate(savedInstanceState);
// if we were editing a task already, restore it
- if (savedInstanceState != null
- && savedInstanceState.containsKey(TASK_IN_PROGRESS)) {
- Task task = savedInstanceState.getParcelable(TASK_IN_PROGRESS);
- if (task != null) {
- model = task;
- }
- if (savedInstanceState.containsKey(TASK_UUID)) {
- uuid = savedInstanceState.getString(TASK_UUID);
- }
- }
+ if (savedInstanceState != null) {
+ model = savedInstanceState.getParcelable(EXTRA_TASK);
+ applyModel = savedInstanceState.getBoolean(EXTRA_APPLY_MODEL);
+ }
showEditComments = preferences.getBoolean(R.string.p_show_task_edit_comments, true);
getActivity().setResult(RESULT_OK);
}
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+
+ callback = (TaskEditFragmentCallbackHandler) activity;
+ }
+
/*
* ======================================================================
* ==================================================== UI initialization
@@ -213,51 +193,12 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.task_edit_activity, container, false);
+ View view = inflater.inflate(R.layout.task_edit_fragment, container, false);
ButterKnife.bind(this, view);
- loadItem(getActivity().getIntent());
-
- registerFragment(R.string.TEA_ctrl_title_pref);
- registerFragment(R.string.TEA_ctrl_when_pref);
- registerFragment(R.string.TEA_ctrl_gcal);
- registerFragment(R.string.TEA_ctrl_importance_pref);
- registerFragment(R.string.TEA_ctrl_notes_pref);
- registerFragment(R.string.TEA_ctrl_hide_until_pref);
- registerFragment(R.string.TEA_ctrl_reminders_pref);
- registerFragment(R.string.TEA_ctrl_files_pref);
- registerFragment(R.string.TEA_ctrl_timer_pref);
- registerFragment(R.string.TEA_ctrl_lists_pref);
- registerFragment(R.string.TEA_ctrl_repeat_pref);
-
- ArrayList controlOrder = BeastModePreferences.constructOrderedControlList(preferences, getActivity());
- controlOrder.add(0, getString(R.string.TEA_ctrl_title_pref));
-
- String hideAlwaysTrigger = getString(R.string.TEA_ctrl_hide_section_pref);
-
- FragmentManager fragmentManager = getFragmentManager();
- FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
-
- for (String item : controlOrder) {
- if (item.equals(hideAlwaysTrigger)) {
- break;
- }
- Integer fragmentId = controlSetFragments.get(item);
- if (fragmentId == null) {
- Timber.e("Unknown task edit control %s", item);
- continue;
- }
- displayedFragments.add(fragmentId);
- if (fragmentManager.findFragmentByTag(item) == null) {
- TaskEditControlFragment fragment = createFragment(controlSetFragments.get(item));
- if (fragment != null) {
- fragment.initialize(isNewTask, model);
- fragmentTransaction.add(basicControls.getId(), fragment, item);
- }
- }
- }
+ notificationManager.cancel(model.getId());
- fragmentTransaction.commit();
+ applyModel = false;
if (!showEditComments) {
commentsBar.setVisibility(View.GONE);
@@ -266,38 +207,6 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
return view;
}
- private void registerFragment(int resId) {
- controlSetFragments.put(getString(resId), resId);
- }
-
- private TaskEditControlFragment createFragment(int fragmentId) {
- switch (fragmentId) {
- case R.string.TEA_ctrl_title_pref:
- return new EditTitleControlSet();
- case R.string.TEA_ctrl_when_pref:
- return new DeadlineControlSet();
- case R.string.TEA_ctrl_importance_pref:
- return new PriorityControlSet();
- case R.string.TEA_ctrl_notes_pref:
- return new DescriptionControlSet();
- case R.string.TEA_ctrl_gcal:
- return new CalendarControlSet();
- case R.string.TEA_ctrl_hide_until_pref:
- return new HideUntilControlSet();
- case R.string.TEA_ctrl_reminders_pref:
- return new ReminderControlSet();
- case R.string.TEA_ctrl_files_pref:
- return new FilesControlSet();
- case R.string.TEA_ctrl_timer_pref:
- return new TimerControlSet();
- case R.string.TEA_ctrl_lists_pref:
- return new TagsControlSet();
- case R.string.TEA_ctrl_repeat_pref:
- return new RepeatControlSet();
- default:
- throw new RuntimeException("Unsupported fragment");
- }
- }
@Override
public void onActivityCreated(Bundle savedInstanceState) {
@@ -306,25 +215,14 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
// We have a menu item to show in action bar.
setHasOptionsMenu(true);
- AstridActivity activity = (AstridActivity) getActivity();
-
- overrideFinishAnim = false;
- if (activity != null) {
- if (activity.getIntent() != null) {
- overrideFinishAnim = activity.getIntent().getBooleanExtra(
- OVERRIDE_FINISH_ANIM, true);
- }
- }
-
// Load task data in background
new TaskEditBackgroundLoader().start();
}
private void instantiateEditNotes() {
if (showEditComments) {
- long idParam = getActivity().getIntent().getLongExtra(TOKEN_ID, -1L);
editNotes = new EditNoteActivity(actFmCameraModule, metadataDao, userActivityDao,
- taskService, this, getView(), idParam);
+ taskService, this, getView(), model.getId());
editNotes.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
@@ -333,8 +231,6 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
}
private void loadMoreContainer() {
- long idParam = getActivity().getIntent().getLongExtra(TOKEN_ID, -1L);
-
int tabStyle = TaskEditViewPager.TAB_SHOW_ACTIVITY;
if (!showEditComments) {
@@ -344,7 +240,7 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
if (editNotes == null) {
instantiateEditNotes();
} else {
- editNotes.loadViewForTaskID(idParam);
+ editNotes.loadViewForTaskID(model.getId());
}
if (editNotes != null) {
@@ -424,76 +320,12 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
* ======================================================================
*/
- /**
- * Loads action item from the given intent
- */
- private void loadItem(Intent intent) {
- if (model != null) {
- // came from bundle
- setIsNewTask(model.getTitle().length() == 0);
- return;
- }
-
- long idParam = intent.getLongExtra(TOKEN_ID, -1L);
- if (idParam > -1L) {
- model = taskService.fetchById(idParam, Task.PROPERTIES);
-
- if (model != null && model.containsNonNullValue(Task.UUID)) {
- uuid = model.getUUID();
- }
- }
-
- // not found by id or was never passed an id
- if (model == null) {
- String valuesAsString = intent.getStringExtra(TOKEN_VALUES);
- ContentValues values = null;
- try {
- if (valuesAsString != null) {
- valuesAsString = PermaSql.replacePlaceholders(valuesAsString);
- values = AndroidUtilities.contentValuesFromSerializedString(valuesAsString);
- }
- } catch (Exception e) {
- // oops, can't serialize
- Timber.e(e, e.getMessage());
- }
- model = taskService.createWithValues(values, null);
- getActivity().getIntent().putExtra(TOKEN_ID, model.getId());
- }
-
- if (model.getTitle().length() == 0) {
-
- // set deletion date until task gets a title
- model.setDeletionDate(DateUtilities.now());
- }
-
- setIsNewTask(model.getTitle().length() == 0);
-
- if (model == null) {
- Timber.e(new NullPointerException("model"), "task-edit-no-task");
- getActivity().onBackPressed();
- return;
- }
-
- notificationManager.cancel(model.getId());
- }
-
- private void setIsNewTask(boolean isNewTask) {
- this.isNewTask = isNewTask;
- }
-
- /** Convenience method to populate fields after setting model to null */
- public void repopulateFromScratch(Intent intent) {
- model = null;
- uuid = RemoteModel.NO_UUID;
- loadMoreContainer();
- }
-
private String getTitle() {
return getEditTitleControlSet().getTitle();
}
/** Save task model from values in UI components */
- public void save(boolean onPause) {
+ public void save() {
String title = getTitle();
if (title == null) {
return;
@@ -507,53 +339,42 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
return;
}
- if (!onPause) {
- for (Integer fragmentId : displayedFragments) {
- getFragment(fragmentId).apply(model);
+ for (int fragmentId : rowIds) {
+ TaskEditControlFragment fragment = (TaskEditControlFragment) getFragmentManager().findFragmentById(fragmentId);
+ if (fragment == null) {
+ break;
}
- taskService.save(model);
-
- boolean taskEditActivity = (getActivity() instanceof TaskEditActivity);
-
- boolean tagsChanged = Flags.check(Flags.TAGS_CHANGED);
+ fragment.apply(model);
+ }
+ taskService.save(model);
- if (taskEditActivity) {
- Intent data = new Intent();
- data.putExtra(TOKEN_TAGS_CHANGED, tagsChanged);
- data.putExtra(TOKEN_ID, model.getId());
- data.putExtra(TOKEN_UUID, model.getUuid());
- getActivity().setResult(RESULT_OK, data);
+ boolean tagsChanged = Flags.check(Flags.TAGS_CHANGED);
- } else {
- // Notify task list fragment in multi-column case
- // since the activity isn't actually finishing
- TaskListActivity tla = (TaskListActivity) getActivity();
+ // Notify task list fragment in multi-column case
+ // since the activity isn't actually finishing
+ TaskListActivity tla = (TaskListActivity) getActivity();
- if (tagsChanged) {
- tla.tagsChanged();
- }
- tla.refreshTaskList();
- if (isNewTask) {
- tla.getTaskListFragment().onTaskCreated(model.getId(), model.getUuid());
- }
- }
-
- removeExtrasFromIntent(getActivity().getIntent());
- shouldSaveState = false;
- getActivity().onBackPressed();
+ if (tagsChanged) {
+ tla.tagsChanged();
}
+ tla.refreshTaskList();
+ if (isNewTask) {
+ tla.getTaskListFragment().onTaskCreated(model.getId(), model.getUuid());
+ }
+
+ removeExtrasFromIntent(getActivity().getIntent());
}
private EditTitleControlSet getEditTitleControlSet() {
- return getFragment(R.string.TEA_ctrl_title_pref);
+ return getFragment(EditTitleControlSet.TAG);
}
private FilesControlSet getFilesControlSet() {
- return getFragment(R.string.TEA_ctrl_files_pref);
+ return getFragment(FilesControlSet.TAG);
}
private TimerControlSet getTimerControl() {
- return getFragment(R.string.TEA_ctrl_timer_pref);
+ return getFragment(TimerControlSet.TAG );
}
@SuppressWarnings("unchecked")
@@ -561,39 +382,13 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
return (T) getFragmentManager().findFragmentByTag(getString(tag));
}
- public boolean onKeyDown(int keyCode) {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- if(getTitle().length() == 0) {
- discardButtonClick();
- } else {
- saveButtonClick();
- }
- return true;
- }
- return false;
- }
-
- @Override
- public void onDetach() {
- super.onDetach();
-
- // abandon editing and delete the newly created task if
- // no title was entered
- Activity activity = getActivity();
- if (overrideFinishAnim) {
- AndroidUtilities.callOverridePendingTransition(activity,
- R.anim.slide_right_in, R.anim.slide_right_out);
- }
-
- if (activity instanceof TaskListActivity) {
- if (getTitle().length() == 0 && isNewTask && model != null && model.isSaved()) {
- taskDeleter.delete(model);
- }
- } else if (activity instanceof TaskEditActivity) {
- if (getTitle().length() == 0 && isNewTask && model != null && model.isSaved()) {
- taskDeleter.delete(model);
- }
+ public void onBackPressed() {
+ if(getTitle().length() == 0) {
+ discardButtonClick();
+ } else {
+ save();
}
+ callback.taskEditFinished();
}
/**
@@ -601,6 +396,7 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
*/
public static void removeExtrasFromIntent(Intent intent) {
if (intent != null) {
+ intent.removeExtra(TaskListActivity.TOKEN_SWITCH_TO_FILTER);
intent.removeExtra(TaskListActivity.OPEN_TASK);
intent.removeExtra(TOKEN_PICTURE_IN_PROGRESS);
}
@@ -612,13 +408,7 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
* ======================================================================
*/
- protected void saveButtonClick() {
- save(false);
- }
-
protected void discardButtonClick() {
- shouldSaveState = false;
-
// abandon editing in this case
if (getTitle().trim().length() == 0 || TextUtils.isEmpty(model.getTitle())) {
if (isNewTask) {
@@ -632,7 +422,6 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
}
removeExtrasFromIntent(getActivity().getIntent());
- getActivity().onBackPressed();
}
protected void deleteButtonClick() {
@@ -642,19 +431,7 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
public void onClick(DialogInterface dialog, int which) {
TimerPlugin.stopTimer(notificationManager, taskService, getActivity(), model);
taskDeleter.delete(model);
- shouldSaveState = false;
-
- Activity a = getActivity();
- if (a instanceof TaskEditActivity) {
- getActivity().setResult(RESULT_OK);
- getActivity().onBackPressed();
- } else if (a instanceof TaskListActivity) {
- discardButtonClick();
- TaskListFragment tlf = ((TaskListActivity) a).getTaskListFragment();
- if (tlf != null) {
- tlf.refresh();
- }
- }
+ callback.taskEditFinished();
}
})
.setNegativeButton(android.R.string.cancel, null)
@@ -672,10 +449,12 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
switch (item.getItemId()) {
case R.id.menu_save:
- saveButtonClick();
+ save();
+ callback.taskEditFinished();
return true;
case R.id.menu_discard:
discardButtonClick();
+ callback.taskEditFinished();
return true;
case R.id.menu_record_note:
startRecordingAudio();
@@ -687,8 +466,9 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
if (getTitle().trim().length() == 0) {
discardButtonClick();
} else {
- saveButtonClick();
+ save();
}
+ callback.taskEditFinished();
return true;
}
@@ -699,18 +479,11 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
inflater.inflate(R.menu.task_edit_fragment, menu);
- MenuColorizer.colorMenu(getActivity(), menu, getResources().getColor(android.R.color.white));
- if (preferences.useTabletLayout()) {
- menu.findItem(R.id.menu_save).setVisible(true);
+ for (int i = 0 ; i < menu.size() ; i++) {
+ MenuColorizer.colorMenuItem(menu.getItem(i), getResources().getColor(android.R.color.white));
}
- }
-
- @Override
- public void onPause() {
- super.onPause();
-
- if (shouldSaveState) {
- save(true);
+ if (getResources().getBoolean(R.bool.two_pane_layout)) {
+ menu.findItem(R.id.menu_save).setVisible(true);
}
}
@@ -738,9 +511,8 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
- // stick our task into the outState
- outState.putParcelable(TASK_IN_PROGRESS, model);
- outState.putString(TASK_UUID, uuid);
+ outState.putParcelable(EXTRA_TASK, model);
+ outState.putBoolean(EXTRA_APPLY_MODEL, applyModel);
}
/*
diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java
index faaefeb8d..b69076675 100644
--- a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java
+++ b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java
@@ -8,11 +8,11 @@ package com.todoroo.astrid.activity;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
+import android.content.ContentValues;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
-import android.support.design.widget.Snackbar;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.DrawerLayout;
@@ -23,64 +23,101 @@ import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.view.inputmethod.InputMethodManager;
import com.todoroo.andlib.data.Callback;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.andlib.utility.AndroidUtilities;
+import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.actfm.FilterSettingsActivity;
import com.todoroo.astrid.actfm.TagSettingsActivity;
import com.todoroo.astrid.actfm.TagViewFragment;
-import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.CustomFilter;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem;
+import com.todoroo.astrid.api.FilterWithCustomIntent;
+import com.todoroo.astrid.api.PermaSql;
import com.todoroo.astrid.core.BuiltInFilterExposer;
import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task;
+import com.todoroo.astrid.files.FilesControlSet;
import com.todoroo.astrid.gtasks.GtasksListFragment;
-import com.todoroo.astrid.gtasks.GtasksPreferenceService;
+import com.todoroo.astrid.repeats.RepeatControlSet;
+import com.todoroo.astrid.service.StartupService;
+import com.todoroo.astrid.service.TaskCreator;
+import com.todoroo.astrid.service.TaskService;
+import com.todoroo.astrid.service.UpgradeActivity;
import com.todoroo.astrid.subtasks.SubtasksHelper;
import com.todoroo.astrid.subtasks.SubtasksListFragment;
import com.todoroo.astrid.subtasks.SubtasksTagListFragment;
import com.todoroo.astrid.tags.TagFilterExposer;
-import com.todoroo.astrid.utility.Flags;
+import com.todoroo.astrid.tags.TagsControlSet;
+import com.todoroo.astrid.timers.TimerControlSet;
+import com.todoroo.astrid.ui.EditTitleControlSet;
+import com.todoroo.astrid.ui.HideUntilControlSet;
+import com.todoroo.astrid.ui.ReminderControlSet;
import com.todoroo.astrid.voice.VoiceInputAssistant;
import com.todoroo.astrid.widget.TasksWidget;
import org.tasks.R;
import org.tasks.activities.SortActivity;
-import org.tasks.analytics.Tracker;
+import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.ActivityPreferences;
-import org.tasks.preferences.BasicPreferences;
import org.tasks.receivers.RepeatConfirmationReceiver;
+import org.tasks.ui.CalendarControlSet;
+import org.tasks.ui.DeadlineControlSet;
+import org.tasks.ui.DescriptionControlSet;
import org.tasks.ui.MenuColorizer;
import org.tasks.ui.NavigationDrawerFragment;
+import org.tasks.ui.PriorityControlSet;
+import org.tasks.ui.TaskEditControlFragment;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import javax.inject.Inject;
+import butterknife.Bind;
+import butterknife.ButterKnife;
import timber.log.Timber;
+import static com.todoroo.astrid.activity.TaskEditFragment.newTaskEditFragment;
import static com.todoroo.astrid.voice.VoiceInputAssistant.voiceInputAvailable;
import static org.tasks.ui.NavigationDrawerFragment.OnFilterItemClickedListener;
-public class TaskListActivity extends AstridActivity implements OnFilterItemClickedListener {
+public class TaskListActivity extends InjectingAppCompatActivity implements
+ OnFilterItemClickedListener,
+ TaskListFragment.OnTaskListItemClickedListener,
+ PriorityControlSet.OnPriorityChanged,
+ TimerControlSet.TimerControlSetCallback,
+ RepeatControlSet.RepeatChangedListener,
+ TaskEditFragment.TaskEditFragmentCallbackHandler {
@Inject TagDataDao tagDataDao;
@Inject ActivityPreferences preferences;
- @Inject GtasksPreferenceService gtasksPreferenceService;
@Inject VoiceInputAssistant voiceInputAssistant;
- @Inject Tracker tracker;
+ @Inject StartupService startupService;
+ @Inject SubtasksHelper subtasksHelper;
+ @Inject TaskService taskService;
+ @Inject TaskCreator taskCreator;
+
+ @Bind(R.id.toolbar) Toolbar toolbar;
+ public static final int REQUEST_UPGRADE = 505;
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 final Map controlSetFragments = new HashMap<>();
private NavigationDrawerFragment navigationDrawer;
+ private ArrayList controlOrder;
public static final String TOKEN_SWITCH_TO_FILTER = "newListCreated"; //$NON-NLS-1$
@@ -96,23 +133,24 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ startupService.onStartupApplication(this);
preferences.applyTheme();
setContentView(R.layout.task_list_wrapper);
+ ButterKnife.bind(this);
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
- ActionBar supportActionBar = getSupportActionBar();
- if (supportActionBar != null) {
- supportActionBar.setDisplayHomeAsUpEnabled(true);
- Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_menu_24dp));
- DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
- toolbar.setNavigationIcon(drawable);
- }
+ updateToolbar(R.drawable.ic_menu_24dp, true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- navigationDrawer.openDrawer();
+ TaskEditFragment taskEditFragment = getTaskEditFragment();
+ if (isDoublePaneLayout() || taskEditFragment == null) {
+ hideKeyboard();
+ navigationDrawer.openDrawer();
+ } else {
+ taskEditFragment.onBackPressed();
+ }
}
});
@@ -120,13 +158,20 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
navigationDrawer.setUp(drawerLayout);
- View editFragment = findViewById(R.id.taskedit_fragment_container);
-
- if(editFragment != null) {
- fragmentLayout = LAYOUT_DOUBLE;
- } else {
- fragmentLayout = LAYOUT_SINGLE;
- }
+ registerFragment(EditTitleControlSet.TAG);
+ registerFragment(DeadlineControlSet.TAG);
+ registerFragment(CalendarControlSet.TAG);
+ registerFragment(PriorityControlSet.TAG);
+ registerFragment(DescriptionControlSet.TAG);
+ registerFragment(HideUntilControlSet.TAG);
+ registerFragment(ReminderControlSet.TAG);
+ registerFragment(FilesControlSet.TAG);
+ registerFragment(TimerControlSet.TAG);
+ registerFragment(TagsControlSet.TAG);
+ registerFragment(RepeatControlSet.TAG);
+
+ controlOrder = BeastModePreferences.constructOrderedControlList(preferences, this);
+ controlOrder.add(0, getString(EditTitleControlSet.TAG));
readIntent();
}
@@ -141,7 +186,8 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
}
private void readIntent() {
- Bundle extras = getIntent().getExtras();
+ Intent intent = getIntent();
+ Bundle extras = intent.getExtras();
if (extras != null) {
extras = (Bundle) extras.clone();
}
@@ -150,15 +196,76 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
extras = new Bundle();
}
- Filter savedFilter = getIntent().getParcelableExtra(TaskListFragment.TOKEN_FILTER);
- if (savedFilter == null) {
- savedFilter = getDefaultFilter();
- extras.putAll(configureIntentAndExtrasWithFilter(getIntent(), savedFilter));
+ TaskListFragment taskListFragment;
+ if (intent.hasExtra(TaskListFragment.TOKEN_FILTER)) {
+ Filter filter = intent.getParcelableExtra(TaskListFragment.TOKEN_FILTER);
+ extras.putAll(configureIntentAndExtrasWithFilter(intent, filter));
+ setListsTitle(filter.listingTitle);
+ taskListFragment = newTaskListFragment(filter, extras);
+ } else {
+ taskListFragment = getTaskListFragment();
+ if (taskListFragment == null) {
+ Filter filter = getDefaultFilter();
+ extras.putAll(configureIntentAndExtrasWithFilter(intent, filter));
+ setListsTitle(filter.listingTitle);
+ taskListFragment = newTaskListFragment(filter, extras);
+ }
}
- extras.putParcelable(TaskListFragment.TOKEN_FILTER, savedFilter);
- setupTasklistFragmentWithFilter(savedFilter, extras);
- setListsTitle(savedFilter.listingTitle);
+ TaskEditFragment taskEditFragment = getTaskEditFragment();
+ List taskEditControlFragments = new ArrayList<>();
+ if (taskEditFragment != null) {
+ for (int rowId : TaskEditFragment.rowIds) {
+ TaskEditControlFragment fragment = (TaskEditControlFragment) getFragmentManager().findFragmentById(rowId);
+ if (fragment == null) {
+ break;
+ }
+ taskEditControlFragments.add(fragment);
+ }
+ }
+
+ loadTaskListFragment(true, taskListFragment);
+
+ if (taskEditFragment != null) {
+ loadTaskEditFragment(true, taskEditFragment, taskEditControlFragments);
+ }
+ }
+
+ private void loadTaskListFragment(boolean onCreate, TaskListFragment taskListFragment) {
+ FragmentManager fragmentManager = getFragmentManager();
+ if (onCreate) {
+ fragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
+ } else {
+ fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
+ }
+ fragmentManager.beginTransaction()
+ .replace(isDoublePaneLayout() ? R.id.master_dual : R.id.single_pane, taskListFragment, TaskListFragment.TAG_TASKLIST_FRAGMENT)
+ .addToBackStack(TaskListFragment.TAG_TASKLIST_FRAGMENT)
+ .commit();
+ }
+
+ private void loadTaskEditFragment(boolean onCreate, TaskEditFragment taskEditFragment, List taskEditControlFragments) {
+ if (isSinglePaneLayout()) {
+ updateToolbar(R.drawable.ic_arrow_back_24dp, false);
+ }
+ FragmentManager fragmentManager = getFragmentManager();
+ fragmentManager.beginTransaction()
+ .replace(isDoublePaneLayout() ? R.id.detail_dual : R.id.single_pane, taskEditFragment, TaskEditFragment.TAG_TASKEDIT_FRAGMENT)
+ .addToBackStack(TaskEditFragment.TAG_TASKEDIT_FRAGMENT)
+ .commit();
+
+ if (onCreate) {
+ fragmentManager.executePendingTransactions();
+ }
+
+ FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
+ for (int i = 0 ; i < taskEditControlFragments.size() ; i++) {
+ TaskEditControlFragment taskEditControlFragment = taskEditControlFragments.get(i);
+ String tag = getString(taskEditControlFragment.controlId());
+ fragmentTransaction.replace(TaskEditFragment.rowIds[i], taskEditControlFragment, tag);
+ }
+ fragmentTransaction.addToBackStack(null);
+ fragmentTransaction.commit();
}
public NavigationDrawerFragment getNavigationDrawerFragment() {
@@ -173,7 +280,6 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
registerReceiver(
repeatConfirmationReceiver,
new IntentFilter(AstridApiConstants.BROADCAST_EVENT_TASK_REPEATED));
- getTaskListFragment().setSyncOngoing(gtasksPreferenceService.isOngoing());
}
@Override
@@ -224,19 +330,19 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
query = query.trim();
String title = getString(R.string.FLA_search_filter, query);
Filter savedFilter = new Filter(title,
- new QueryTemplate().where
- (Criterion.or(Task.NOTES.
- like (
- "%" + //$NON-NLS-1$
- query + "%"
- ),
- Task.TITLE.
- like (
- "%" + //$NON-NLS-1$
- query + "%"
- )
- )
- ),null);
+ new QueryTemplate().where
+ (Criterion.or(Task.NOTES.
+ like(
+ "%" + //$NON-NLS-1$
+ query + "%"
+ ),
+ Task.TITLE.
+ like(
+ "%" + //$NON-NLS-1$
+ query + "%"
+ )
+ )
+ ), null);
onFilterItemClicked(savedFilter);
MenuItemCompat.collapseActionView(item);
@@ -256,11 +362,11 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
}
@Override
- public boolean onFilterItemClicked(FilterListItem item) {
+ public void onFilterItemClicked(FilterListItem item) {
TaskEditFragment.removeExtrasFromIntent(getIntent());
TaskEditFragment tef = getTaskEditFragment();
if (tef != null) {
- onBackPressed();
+ getTaskEditFragment().onBackPressed();
}
if ((item instanceof Filter)) {
@@ -273,73 +379,53 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
Filter filter = (Filter)item;
Bundle extras = configureIntentAndExtrasWithFilter(intent, filter);
- if (fragmentLayout == LAYOUT_DOUBLE && getTaskEditFragment() != null) {
- onBackPressed(); // remove the task edit fragment when switching between lists
- }
- setupTasklistFragmentWithFilter(filter, extras);
+ TaskListFragment newFragment = newTaskListFragment(filter, extras);
- // no animation for dualpane-layout
- AndroidUtilities.callOverridePendingTransition(this, 0, 0);
- return true;
+ loadTaskListFragment(false, newFragment);
}
- return false;
}
- public void setupTasklistFragmentWithFilter(Filter filter, Bundle extras) {
+ private TaskListFragment newTaskListFragment(Filter filter, Bundle extras) {
Class> customTaskList = null;
if (subtasksHelper.shouldUseSubtasksFragmentForFilter(filter)) {
customTaskList = SubtasksHelper.subtasksClassForFilter(filter);
}
- TaskListFragment newFragment = TaskListFragment.instantiateWithFilterAndExtras(filter, extras, customTaskList);
+ Class> component = customTaskList;
+ if (filter instanceof FilterWithCustomIntent && component == null) {
+ try {
+ component = Class.forName(((FilterWithCustomIntent) filter).customTaskList.getClassName());
+ } catch (Exception e) {
+ // Invalid
+ Timber.e(e, e.getMessage());
+ }
+ }
+ if (component == null) {
+ component = TaskListFragment.class;
+ }
+ TaskListFragment newFragment;
try {
- FragmentManager manager = getFragmentManager();
- 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() {
- getFragmentManager().executePendingTransactions();
- }
- });
- } catch (Exception e) {
- // Don't worry about it
+ newFragment = (TaskListFragment) component.newInstance();
+ } catch (InstantiationException | IllegalAccessException e) {
Timber.e(e, e.getMessage());
+ newFragment = new TaskListFragment();
}
- }
-
- @Override
- public void setupActivityFragment(TagData tagData) {
- super.setupActivityFragment(tagData);
-
- if (fragmentLayout == LAYOUT_DOUBLE) {
- View container = findViewById(R.id.taskedit_fragment_container);
- if (container != null) {
- container.setVisibility(View.VISIBLE);
- }
- }
+ Bundle args = new Bundle();
+ args.putBundle(TaskListFragment.TOKEN_EXTRAS, extras);
+ newFragment.setArguments(args);
+ return newFragment;
}
@Override
protected void onPostResume() {
super.onPostResume();
- if (!Flags.checkAndClear(Flags.TLA_DISMISSED_FROM_TASK_EDIT)) {
- TaskEditFragment tea = getTaskEditFragment();
- if (tea != null) {
- onBackPressed();
- }
- }
-
if (getIntent().hasExtra(TOKEN_SWITCH_TO_FILTER)) {
Filter newList = getIntent().getParcelableExtra(TOKEN_SWITCH_TO_FILTER);
getIntent().removeExtra(TOKEN_SWITCH_TO_FILTER);
onFilterItemClicked(newList);
-// } else {
-// navigationDrawer.restoreLastSelected();
}
if (getIntent().hasExtra(OPEN_TASK)) {
@@ -349,33 +435,90 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
} else {
TaskListFragment tlf = getTaskListFragment();
if (tlf != null) {
- tlf.quickAddBar.quickAddTask(); //$NON-NLS-1$
+ Task task = tlf.quickAddBar.quickAddTask("");//$NON-NLS-1$
+ onTaskListItemClicked(task.getId());
}
}
- if (fragmentLayout == LAYOUT_SINGLE) {
- getIntent().removeExtra(OPEN_TASK);
- }
+ getIntent().removeExtra(OPEN_TASK);
}
if (getIntent().getBooleanExtra(TOKEN_CREATE_NEW_LIST, false)) {
- newListFromLaunch();
+ Intent thisIntent = getIntent();
+ Intent newTagIntent = new Intent(this, TagSettingsActivity.class);
+ newTagIntent.putExtra(TagSettingsActivity.TOKEN_AUTOPOPULATE_NAME, thisIntent.getStringExtra(TOKEN_CREATE_NEW_LIST_NAME));
+ thisIntent.removeExtra(TOKEN_CREATE_NEW_LIST_NAME);
+ startActivityForResult(newTagIntent, NavigationDrawerFragment.REQUEST_NEW_LIST);
}
}
- private void newListFromLaunch() {
- Intent thisIntent = getIntent();
- Intent newTagIntent = new Intent(this, TagSettingsActivity.class);
- newTagIntent.putExtra(TagSettingsActivity.TOKEN_AUTOPOPULATE_NAME, thisIntent.getStringExtra(TOKEN_CREATE_NEW_LIST_NAME));
- thisIntent.removeExtra(TOKEN_CREATE_NEW_LIST_NAME);
- startActivityForResult(newTagIntent, NavigationDrawerFragment.REQUEST_NEW_LIST);
- }
-
@Override
public void onTaskListItemClicked(long taskId) {
- if (fragmentLayout != LAYOUT_SINGLE) {
- getIntent().putExtra(OPEN_TASK, taskId);
+ TaskEditFragment taskEditFragment = getTaskEditFragment();
+
+ if (taskEditFragment != null) {
+ taskEditFragment.onBackPressed();
+ }
+
+ Task task = loadItem(taskId);
+ if (task == null) {
+ Timber.e(new NullPointerException(), "Failed to load task id %s", taskId);
+ return;
+ }
+ boolean isNewTask = task.getTitle().length() == 0;
+
+ String hideAlwaysTrigger = getString(R.string.TEA_ctrl_hide_section_pref);
+
+ taskEditFragment = newTaskEditFragment(isNewTask, task);
+ List taskEditControlFragments = new ArrayList<>();
+ for (int i = 0 ; i < controlOrder.size() ; i++) {
+ String item = controlOrder.get(i);
+ if (item.equals(hideAlwaysTrigger)) {
+ break;
+ }
+ Integer resId = controlSetFragments.get(item);
+ if (resId == null) {
+ Timber.e("Unknown task edit control %s", item);
+ continue;
+ }
+
+ TaskEditControlFragment fragment = createFragment(resId);
+ fragment.initialize(isNewTask, task);
+ taskEditControlFragments.add(fragment);
+ }
+ loadTaskEditFragment(false, taskEditFragment, taskEditControlFragments);
+ }
+
+ private void registerFragment(int resId) {
+ controlSetFragments.put(getString(resId), resId);
+ }
+
+ private TaskEditControlFragment createFragment(int fragmentId) {
+ switch (fragmentId) {
+ case R.string.TEA_ctrl_title_pref:
+ return new EditTitleControlSet();
+ case R.string.TEA_ctrl_when_pref:
+ return new DeadlineControlSet();
+ case R.string.TEA_ctrl_importance_pref:
+ return new PriorityControlSet();
+ case R.string.TEA_ctrl_notes_pref:
+ return new DescriptionControlSet();
+ case R.string.TEA_ctrl_gcal:
+ return new CalendarControlSet();
+ case R.string.TEA_ctrl_hide_until_pref:
+ return new HideUntilControlSet();
+ case R.string.TEA_ctrl_reminders_pref:
+ return new ReminderControlSet();
+ case R.string.TEA_ctrl_files_pref:
+ return new FilesControlSet();
+ case R.string.TEA_ctrl_timer_pref:
+ return new TimerControlSet();
+ case R.string.TEA_ctrl_lists_pref:
+ return new TagsControlSet();
+ case R.string.TEA_ctrl_repeat_pref:
+ return new RepeatControlSet();
+ default:
+ throw new RuntimeException("Unsupported fragment");
}
- super.onTaskListItemClicked(taskId);
}
public void setListsTitle(String title) {
@@ -393,19 +536,16 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
return;
}
- // manage task edit visibility
- View taskeditFragmentContainer = findViewById(R.id.taskedit_fragment_container);
- if(taskeditFragmentContainer != null && taskeditFragmentContainer.getVisibility() == View.VISIBLE) {
- Flags.set(Flags.TLA_DISMISSED_FROM_TASK_EDIT);
- onPostResume();
+ if (getTaskEditFragment() != null) {
+ getTaskEditFragment().onBackPressed();
+ return;
}
- super.onBackPressed();
- }
- @Override
- public void finish() {
- super.finish();
- AndroidUtilities.callOverridePendingTransition(this, R.anim.slide_right_in, R.anim.slide_right_out);
+ if (isFinishing()) {
+ return;
+ }
+
+ super.onBackPressed();
}
@Override
@@ -413,7 +553,13 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
Callback quickAddTask = new Callback() {
@Override
public void apply(String title) {
- getTaskListFragment().quickAddBar.quickAddTask(title);
+ TaskListFragment taskListFragment = getTaskListFragment();
+ Task task = taskListFragment.quickAddBar.quickAddTask(title);
+ taskCreator.addToCalendar(task);
+ onTaskListItemClicked(task.getId());
+ taskListFragment.loadTaskListContent();
+ taskListFragment.selectCustomId(task.getId());
+ taskListFragment.onTaskCreated(task.getId(), task.getUUID());
}
};
if (voiceInputAssistant.handleActivityResult(requestCode, resultCode, data, quickAddTask)) {
@@ -434,23 +580,6 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
}
navigationDrawer.refresh();
- } else if (requestCode == TaskListFragment.ACTIVITY_EDIT_TASK && resultCode != Activity.RESULT_CANCELED) {
- // Handle switch to assigned filter when it comes from TaskEditActivity finishing
- // For cases when we're in a multi-frame layout, the TaskEditFragment will notify us here directly
- TaskListFragment tlf = getTaskListFragment();
- if (tlf != null) {
- if (data != null) {
- if (data.getBooleanExtra(TaskEditFragment.TOKEN_TAGS_CHANGED, false)) {
- tagsChanged(true);
- }
- }
- tlf.refresh();
- if (data != null) {
- tlf.onTaskCreated(
- data.getLongExtra(TaskEditFragment.TOKEN_ID, 0L),
- data.getStringExtra(TaskEditFragment.TOKEN_UUID));
- }
- }
} else if (requestCode == REQUEST_EDIT_TAG) {
if (resultCode == RESULT_OK) {
String action = data.getAction();
@@ -509,9 +638,17 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
getTaskListFragment().setUpTaskList();
}
}
+ } else if (requestCode == REQUEST_UPGRADE) {
+ if (resultCode == RESULT_OK) {
+ if (data != null && data.getBooleanExtra(UpgradeActivity.EXTRA_RESTART, false)) {
+ Timber.w("Upgrade requires restart");
+ finish();
+ startActivity(getIntent());
+ }
+ }
+ } else {
+ super.onActivityResult(requestCode, resultCode, data);
}
-
- super.onActivityResult(requestCode, resultCode, data);
}
protected void tagsChanged() {
@@ -579,10 +716,130 @@ public class TaskListActivity extends AstridActivity implements OnFilterItemClic
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
TaskEditFragment tef = getTaskEditFragment();
- if (tef != null && tef.onKeyDown(keyCode)) {
+ if (tef != null) {
+ tef.onBackPressed();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
+
+ public TaskListFragment getTaskListFragment() {
+ return (TaskListFragment) getFragmentManager()
+ .findFragmentByTag(TaskListFragment.TAG_TASKLIST_FRAGMENT);
+ }
+
+ public TaskEditFragment getTaskEditFragment() {
+ return (TaskEditFragment) getFragmentManager()
+ .findFragmentByTag(TaskEditFragment.TAG_TASKEDIT_FRAGMENT);
+ }
+
+ protected void updateToolbar(int drawableResId, boolean showTitle) {
+ ActionBar supportActionBar = getSupportActionBar();
+ if (supportActionBar != null) {
+ supportActionBar.setDisplayHomeAsUpEnabled(true);
+ supportActionBar.setDisplayShowTitleEnabled(showTitle);
+ Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(drawableResId));
+ DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
+ supportActionBar.setHomeAsUpIndicator(drawable);
+ }
+ }
+
+ protected Bundle configureIntentAndExtrasWithFilter(Intent intent, Filter filter) {
+ if(filter instanceof FilterWithCustomIntent) {
+ int lastSelectedList = intent.getIntExtra(NavigationDrawerFragment.TOKEN_LAST_SELECTED, 0);
+ intent = ((FilterWithCustomIntent)filter).getCustomIntent();
+ intent.putExtra(NavigationDrawerFragment.TOKEN_LAST_SELECTED, lastSelectedList);
+ } else {
+ intent.putExtra(TaskListFragment.TOKEN_FILTER, filter);
+ }
+
+ setIntent(intent);
+
+ Bundle extras = intent.getExtras();
+ if (extras != null) {
+ extras = (Bundle) extras.clone();
+ }
+ return extras;
+ }
+
+ /**
+ * Loads action item from the given intent
+ */
+ private Task loadItem(long taskId) {
+ Task model = null;
+
+ if (taskId> -1L) {
+ model = taskService.fetchById(taskId, Task.PROPERTIES);
+ }
+
+ // not found by id or was never passed an id
+ if (model == null) {
+ Intent intent = getIntent();
+ String valuesAsString = intent.getStringExtra(TaskEditFragment.TOKEN_VALUES);
+ ContentValues values = null;
+ try {
+ if (valuesAsString != null) {
+ valuesAsString = PermaSql.replacePlaceholders(valuesAsString);
+ values = AndroidUtilities.contentValuesFromSerializedString(valuesAsString);
+ }
+ } catch (Exception e) {
+ // oops, can't serialize
+ Timber.e(e, e.getMessage());
+ }
+ model = taskService.createWithValues(values, null);
+ }
+
+ if (model.getTitle().length() == 0) {
+ // set deletion date until task gets a title
+ model.setDeletionDate(DateUtilities.now());
+ }
+
+ return model;
+ }
+
+ @Override
+ public void onPriorityChange(int priority) {
+ getTaskEditFragment().onPriorityChange(priority);
+ }
+
+ @Override
+ public void repeatChanged(boolean repeat) {
+ getTaskEditFragment().onRepeatChanged(repeat);
+ }
+
+ @Override
+ public Task stopTimer() {
+ return getTaskEditFragment().stopTimer();
+ }
+
+ @Override
+ public Task startTimer() {
+ return getTaskEditFragment().startTimer();
+ }
+
+ public boolean isSinglePaneLayout() {
+ return !isDoublePaneLayout();
+ }
+
+ public boolean isDoublePaneLayout() {
+ return getResources().getBoolean(R.bool.two_pane_layout);
+ }
+
+ @Override
+ public void taskEditFinished() {
+ getFragmentManager().popBackStack(TaskEditFragment.TAG_TASKEDIT_FRAGMENT, FragmentManager.POP_BACK_STACK_INCLUSIVE);
+ if (isSinglePaneLayout()) {
+ updateToolbar(R.drawable.ic_menu_24dp, true);
+ }
+ hideKeyboard();
+ }
+
+ private void hideKeyboard() {
+ View view = getCurrentFocus();
+ if (view != null) {
+ InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
+ inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
+ }
+ }
}
diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java
index 375af39de..2ef5dbcc8 100644
--- a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java
+++ b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java
@@ -6,7 +6,6 @@
package com.todoroo.astrid.activity;
import android.app.Activity;
-import android.app.Fragment;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
@@ -44,7 +43,6 @@ import com.todoroo.astrid.adapter.TaskAdapter.OnCompletedTaskListener;
import com.todoroo.astrid.adapter.TaskAdapter.ViewHolder;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter;
-import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.core.BuiltInFilterExposer;
import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.dao.TaskAttachmentDao;
@@ -77,7 +75,6 @@ import org.tasks.injection.InjectingListFragment;
import org.tasks.injection.Injector;
import org.tasks.notifications.NotificationManager;
import org.tasks.preferences.ActivityPreferences;
-import org.tasks.ui.NavigationDrawerFragment;
import java.util.Timer;
import java.util.TimerTask;
@@ -87,8 +84,6 @@ import javax.inject.Inject;
import timber.log.Timber;
-import static org.tasks.intents.TaskIntents.getNewTaskIntent;
-
/**
* Primary activity for the Bente application. Shows a list of upcoming tasks
* and a user's coaches.
@@ -105,7 +100,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
public static final long AUTOSYNC_INTERVAL = 90000L;
private static final long BACKGROUND_REFRESH_INTERVAL = 120000L;
private static final long WAIT_BEFORE_AUTOSYNC = 2000L;
- public static final int ACTIVITY_EDIT_TASK = 0;
public static final int ACTIVITY_REQUEST_NEW_FILTER = 5;
// --- menu codes
@@ -120,7 +114,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
/** token for passing a {@link Filter} object through extras */
public static final String TOKEN_FILTER = "filter"; //$NON-NLS-1$
- private static final String TOKEN_EXTRAS = "extras"; //$NON-NLS-1$
+ public static final String TOKEN_EXTRAS = "extras"; //$NON-NLS-1$
// --- instance variables
@@ -137,7 +131,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
@Inject GtasksPreferenceService gtasksPreferenceService;
@Inject DialogBuilder dialogBuilder;
- protected Resources resources;
protected TaskAdapter taskAdapter = null;
protected RefreshReceiver refreshReceiver = new RefreshReceiver();
protected final AtomicReference sqlQueryTemplate = new AtomicReference<>();
@@ -153,7 +146,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
// --- fragment handling variables
protected OnTaskListItemClickedListener mListener;
- private boolean mDualFragments = false;
protected SwipeRefreshLayout listView;
protected SwipeRefreshLayout emptyView;
@@ -164,43 +156,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
* ======================================================================
*/
- /**
- * Instantiates and returns an instance of TaskListFragment (or some subclass). Custom types of
- * TaskListFragment can be created, with the following precedence:
- *
- * --If the filter is of type {@link FilterWithCustomIntent}, the task list type it specifies will be used
- * --Otherwise, the specified customComponent will be used
- *
- * See also: instantiateWithFilterAndExtras(Filter, Bundle) which uses TaskListFragment as the default
- * custom component.
- */
- public static TaskListFragment instantiateWithFilterAndExtras(Filter filter, Bundle extras, Class> customComponent) {
- Class> component = customComponent;
- if (filter instanceof FilterWithCustomIntent && component == null) {
- try {
- component = Class.forName(((FilterWithCustomIntent) filter).customTaskList.getClassName());
- } catch (Exception e) {
- // Invalid
- Timber.e(e, e.getMessage());
- }
- }
- if (component == null) {
- component = TaskListFragment.class;
- }
-
- TaskListFragment newFragment;
- try {
- newFragment = (TaskListFragment) component.newInstance();
- } catch (java.lang.InstantiationException | IllegalAccessException e) {
- Timber.e(e, e.getMessage());
- newFragment = new TaskListFragment();
- }
- Bundle args = new Bundle();
- args.putBundle(TOKEN_EXTRAS, extras);
- newFragment.setArguments(args);
- return newFragment;
- }
-
@Override
public void onRefresh() {
if (!syncActionHelper.performSyncAction()) {
@@ -224,14 +179,8 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
- // Check that the container activity has implemented the callback
- // interface
- try {
- mListener = (OnTaskListItemClickedListener) activity;
- } catch (ClassCastException e) {
- throw new ClassCastException(activity.toString()
- + " must implement OnTaskListItemClickedListener"); //$NON-NLS-1$
- }
+
+ mListener = (OnTaskListItemClickedListener) activity;
}
/**
@@ -262,12 +211,8 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
parent.findViewById(R.id.fab).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- if (getResources().getBoolean(R.bool.two_pane_layout)) {
- Task task = quickAddBar.quickAddTask();
- onTaskListItemClicked(task.getId());
- } else {
- ((AstridActivity) getActivity()).startEditActivity(getNewTaskIntent(getActivity(), filter));
- }
+ Task task = quickAddBar.quickAddTask("");
+ onTaskListItemClicked(task.getId());
}
});
View body = getListBody(parent);
@@ -303,19 +248,13 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// We have a menu item to show in action bar.
- resources = getResources();
setHasOptionsMenu(true);
syncActionHelper = new SyncActionHelper(gtasksPreferenceService, syncService, getActivity(), preferences);
setUpUiComponents();
initializeData();
- quickAddBar.initialize(injector, (TaskListActivity) getActivity(), this);
-
- Fragment filterlistFrame = getFragmentManager().findFragmentById(
- NavigationDrawerFragment.FRAGMENT_NAVIGATION_DRAWER);
- mDualFragments = (filterlistFrame != null)
- && filterlistFrame.isInLayout();
+ quickAddBar.initialize(injector, this);
- if (mDualFragments) {
+ if (getResources().getBoolean(R.bool.two_pane_layout)) {
// In dual-pane mode, the list view highlights the selected item.
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
getListView().setItemsCanFocus(false);
@@ -352,9 +291,9 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
protected void initializeData() {
if (extras != null && extras.containsKey(TOKEN_FILTER)) {
filter = extras.getParcelable(TOKEN_FILTER);
- extras.remove(TOKEN_FILTER); // Otherwise writing this filter to parcel gives infinite recursion
+// extras.remove(TOKEN_FILTER); // Otherwise writing this filter to parcel gives infinite recursion
} else {
- filter = BuiltInFilterExposer.getMyTasksFilter(resources);
+ filter = BuiltInFilterExposer.getMyTasksFilter(getResources());
}
filter.setFilterQueryOverride(null);
isInbox = BuiltInFilterExposer.isInbox(context, filter);
@@ -366,7 +305,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
initializeTaskListMetadata();
setUpTaskList();
- ((AstridActivity) getActivity()).setupActivityFragment(getActiveTagData());
}
protected void initializeTaskListMetadata() {
@@ -450,11 +388,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
});
}
- public void transitionForTaskEdit() {
- AndroidUtilities.callOverridePendingTransition(getActivity(),
- R.anim.slide_left_in, R.anim.slide_left_out);
- }
-
private void setUpBackgroundJobs() {
backgroundTimer = new Timer();
@@ -503,7 +436,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
}
protected boolean isCurrentTaskListFragment() {
- AstridActivity activity = (AstridActivity) getActivity();
+ TaskListActivity activity = (TaskListActivity) getActivity();
if (activity != null) {
return activity.getTaskListFragment() == this;
}
@@ -511,11 +444,11 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
}
public final void initiateAutomaticSync() {
- final AstridActivity activity = (AstridActivity) getActivity();
+ final TaskListActivity activity = (TaskListActivity) getActivity();
if (activity == null) {
return;
}
- if (activity.fragmentLayout != AstridActivity.LAYOUT_SINGLE) {
+ if (activity.isDoublePaneLayout()) {
initiateAutomaticSyncImpl();
} else {
// In single fragment case, we're using swipe between lists,
@@ -584,16 +517,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
* broadcast. Subclasses should override this.
*/
protected void refresh() {
- try {
- AstridActivity astridActivity = (AstridActivity) getActivity();
- TaskEditFragment taskEditFragment = astridActivity == null ? null : astridActivity.getTaskEditFragment();
- Task model = taskEditFragment == null ? null : taskEditFragment.model;
- taskDeleter.deleteTasksWithEmptyTitles(model == null ? null : model.getId());
- } catch(Exception e) {
- Timber.e(e, e.getMessage());
- }
loadTaskListContent();
- setSyncOngoing(false);
}
/*
@@ -623,6 +547,8 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
getListView().setSelection(oldListItemSelected);
}
}
+
+ setSyncOngoing(gtasksPreferenceService.isOngoing());
}
protected TaskAdapter createTaskAdapter(TodorooCursor cursor) {
@@ -786,8 +712,8 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
protected void onTaskDelete(Task task) {
Activity a = getActivity();
- if (a instanceof AstridActivity) {
- AstridActivity activity = (AstridActivity) a;
+ if (a instanceof TaskListActivity) {
+ TaskListActivity activity = (TaskListActivity) a;
TaskEditFragment tef = activity.getTaskEditFragment();
if (tef != null) {
if (task.getId() == tef.model.getId()) {
@@ -807,7 +733,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
- if (mDualFragments) {
+ if (getResources().getBoolean(R.bool.two_pane_layout)) {
setSelection(position);
}
}
@@ -865,12 +791,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
protected void duplicateTask(long itemId) {
long cloneId = taskDuplicator.duplicateTask(itemId);
-
- Intent intent = new Intent(getActivity(), TaskEditActivity.class);
- intent.putExtra(TaskEditFragment.TOKEN_ID, cloneId);
- intent.putExtra(TOKEN_FILTER, filter);
- getActivity().startActivityForResult(intent, ACTIVITY_EDIT_TASK);
- transitionForTaskEdit();
+ onTaskListItemClicked(cloneId);
}
public void onTaskListItemClicked(long taskId) {
diff --git a/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.java b/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.java
index befe32ae4..36c5471a0 100644
--- a/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.java
+++ b/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.java
@@ -19,7 +19,7 @@ import android.widget.ListView;
import android.widget.TextView;
import com.todoroo.astrid.actfm.TagSettingsActivity;
-import com.todoroo.astrid.activity.AstridActivity;
+import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter;
@@ -155,8 +155,8 @@ public class FilterAdapter extends ArrayAdapter {
populateItem(viewHolder);
Filter selected = null;
- if (activity instanceof AstridActivity) {
- TaskListFragment tlf = ((AstridActivity) activity).getTaskListFragment();
+ if (activity instanceof TaskListActivity) {
+ TaskListFragment tlf = ((TaskListActivity) activity).getTaskListFragment();
selected = tlf.getFilter();
}
diff --git a/src/main/java/com/todoroo/astrid/api/FilterListItem.java b/src/main/java/com/todoroo/astrid/api/FilterListItem.java
index 57167d738..c1c08f94f 100644
--- a/src/main/java/com/todoroo/astrid/api/FilterListItem.java
+++ b/src/main/java/com/todoroo/astrid/api/FilterListItem.java
@@ -59,4 +59,11 @@ abstract public class FilterListItem implements Parcelable {
source.createStringArray(); // old context menu labels
source.createTypedArray(Intent.CREATOR); // old context menu intents
}
+
+ @Override
+ public String toString() {
+ return "FilterListItem{" +
+ "listingTitle='" + listingTitle + '\'' +
+ '}';
+ }
}
diff --git a/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java b/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java
index 320cddedc..effc6fdf7 100644
--- a/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java
+++ b/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java
@@ -221,7 +221,6 @@ public class CustomFilterActivity extends InjectingAppCompatActivity {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(filterName.getWindowToken(), 0);
super.finish();
- AndroidUtilities.callOverridePendingTransition(this, R.anim.slide_right_in, R.anim.slide_right_out);
}
diff --git a/src/main/java/com/todoroo/astrid/data/Task.java b/src/main/java/com/todoroo/astrid/data/Task.java
index ea3aa7cd4..83d27fc2d 100644
--- a/src/main/java/com/todoroo/astrid/data/Task.java
+++ b/src/main/java/com/todoroo/astrid/data/Task.java
@@ -7,7 +7,6 @@ package com.todoroo.astrid.data;
import android.content.ContentValues;
-import android.content.res.Resources;
import android.net.Uri;
import com.todoroo.andlib.data.Property;
@@ -19,7 +18,6 @@ import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.utility.DateUtilities;
import org.tasks.BuildConfig;
-import org.tasks.R;
import org.tasks.time.DateTime;
import static org.tasks.date.DateTimeUtils.newDateTime;
diff --git a/src/main/java/com/todoroo/astrid/files/FilesControlSet.java b/src/main/java/com/todoroo/astrid/files/FilesControlSet.java
index c1bbe25ef..9c8f87a98 100644
--- a/src/main/java/com/todoroo/astrid/files/FilesControlSet.java
+++ b/src/main/java/com/todoroo/astrid/files/FilesControlSet.java
@@ -52,6 +52,8 @@ import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop;
public class FilesControlSet extends TaskEditControlFragment {
+ public static final int TAG = R.string.TEA_ctrl_files_pref;
+
private static final int REQUEST_ADD_ATTACHMENT = 50;
private static final String EXTRA_UUID = "extra_uuid";
@@ -107,6 +109,11 @@ public class FilesControlSet extends TaskEditControlFragment {
return R.drawable.ic_attachment_24dp;
}
+ @Override
+ public int controlId() {
+ return TAG;
+ }
+
@Override
public void initialize(boolean isNewTask, Task task) {
taskUuid = task.getUuid();
diff --git a/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java b/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java
index 3729ffb83..db1decf99 100644
--- a/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java
+++ b/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java
@@ -53,7 +53,6 @@ public class CalendarAlarmListCreator extends InjectingAppCompatActivity {
private void dismissWithAnimation() {
finish();
- AndroidUtilities.callOverridePendingTransition(CalendarAlarmListCreator.this, 0, android.R.anim.fade_out);
}
@Override
diff --git a/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java b/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java
index 50959e877..79daa2ffd 100644
--- a/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java
+++ b/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java
@@ -72,7 +72,6 @@ public class CalendarReminderActivity extends InjectingAppCompatActivity {
@Override
public void onClick(View v) {
finish();
- AndroidUtilities.callOverridePendingTransition(CalendarReminderActivity.this, 0, android.R.anim.fade_out);
}
};
diff --git a/src/main/java/com/todoroo/astrid/notes/EditNoteActivity.java b/src/main/java/com/todoroo/astrid/notes/EditNoteActivity.java
index e0b3bfb9d..d3992d99e 100644
--- a/src/main/java/com/todoroo/astrid/notes/EditNoteActivity.java
+++ b/src/main/java/com/todoroo/astrid/notes/EditNoteActivity.java
@@ -35,8 +35,8 @@ import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.actfm.ActFmCameraModule;
import com.todoroo.astrid.actfm.ActFmCameraModule.ClearImageCallback;
-import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.activity.TaskEditFragment;
+import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.data.Metadata;
@@ -78,7 +78,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
private Uri pendingCommentPicture = null;
private final Fragment fragment;
- private final AstridActivity activity;
+ private final TaskListActivity activity;
private final int cameraButton;
@@ -105,7 +105,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
this.fragment = fragment;
- this.activity = (AstridActivity) fragment.getActivity();
+ this.activity = (TaskListActivity) fragment.getActivity();
cameraButton = R.drawable.ic_camera_alt_white_24dp;
diff --git a/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java b/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java
index 285106632..9ab179348 100644
--- a/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java
+++ b/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java
@@ -67,6 +67,8 @@ import static org.tasks.date.DateTimeUtils.newDateTime;
*/
public class RepeatControlSet extends TaskEditControlFragment {
+ public static final int TAG = R.string.TEA_ctrl_repeat_pref;
+
public interface RepeatChangedListener {
void repeatChanged(boolean repeat);
}
@@ -274,6 +276,11 @@ public class RepeatControlSet extends TaskEditControlFragment {
return R.drawable.ic_repeat_24dp;
}
+ @Override
+ public int controlId() {
+ return TAG;
+ }
+
@Override
public void initialize(boolean isNewTask, Task task) {
repeatAfterCompletion = task.repeatAfterCompletion();
diff --git a/src/main/java/com/todoroo/astrid/service/StartupService.java b/src/main/java/com/todoroo/astrid/service/StartupService.java
index 9d4b02d1e..a7e298c02 100644
--- a/src/main/java/com/todoroo/astrid/service/StartupService.java
+++ b/src/main/java/com/todoroo/astrid/service/StartupService.java
@@ -14,7 +14,7 @@ import android.database.sqlite.SQLiteException;
import com.todoroo.andlib.data.DatabaseDao.ModelUpdateListener;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.AndroidUtilities;
-import com.todoroo.astrid.activity.AstridActivity;
+import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.backup.TasksXmlImporter;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.DatabaseUpdateListener;
@@ -123,7 +123,7 @@ public class StartupService {
if(lastVersion > 0) {
activity.startActivityForResult(new Intent(activity, UpgradeActivity.class) {{
putExtra(UpgradeActivity.TOKEN_FROM_VERSION, lastVersion);
- }}, AstridActivity.REQUEST_UPGRADE);
+ }}, TaskListActivity.REQUEST_UPGRADE);
}
preferences.setDefaults();
preferences.setCurrentVersion(currentVersion);
diff --git a/src/main/java/com/todoroo/astrid/service/TaskCreator.java b/src/main/java/com/todoroo/astrid/service/TaskCreator.java
index 35d52be2a..e39492313 100644
--- a/src/main/java/com/todoroo/astrid/service/TaskCreator.java
+++ b/src/main/java/com/todoroo/astrid/service/TaskCreator.java
@@ -38,14 +38,14 @@ public class TaskCreator {
title = title.trim();
Task task = taskService.createWithValues(null, title);
- addToCalendar(task, title);
+ addToCalendar(task);
return task;
}
- public void addToCalendar(Task task, String title) {
+ public void addToCalendar(Task task) {
boolean gcalCreateEventEnabled = preferences.isDefaultCalendarSet() && task.hasDueDate(); //$NON-NLS-1$
- if (!TextUtils.isEmpty(title) && gcalCreateEventEnabled && TextUtils.isEmpty(task.getCalendarURI())) {
+ if (!TextUtils.isEmpty(task.getTitle()) && gcalCreateEventEnabled && TextUtils.isEmpty(task.getCalendarURI())) {
Uri calendarUri = gcalHelper.createTaskEvent(task,
context.getContentResolver(), new ContentValues());
task.setCalendarUri(calendarUri.toString());
diff --git a/src/main/java/com/todoroo/astrid/service/TaskService.java b/src/main/java/com/todoroo/astrid/service/TaskService.java
index 9eacba998..9c944f08c 100644
--- a/src/main/java/com/todoroo/astrid/service/TaskService.java
+++ b/src/main/java/com/todoroo/astrid/service/TaskService.java
@@ -31,7 +31,6 @@ import org.tasks.filters.FilterCounter;
import org.tasks.scheduling.RefreshScheduler;
import java.util.ArrayList;
-import java.util.List;
import java.util.Map.Entry;
import javax.inject.Inject;
@@ -202,21 +201,6 @@ public class TaskService {
}
}
- /**
- * Save task, parsing quick-add mark-up:
- *
- * - #tag - add the tag "tag"
- *
- @context - add the tag "@context"
- *
- !4 - set priority to !!!!
- */
- private void quickAdd(Task task, List tags) {
- saveWithoutPublishingFilterUpdate(task);
- for(String tag : tags) {
- createLink(task, tag);
- }
- broadcastFilterListUpdated();
- }
-
private void broadcastFilterListUpdated() {
filterCounter.refreshFilterCounts(new Runnable() {
@Override
@@ -239,17 +223,12 @@ public class TaskService {
* doesn't need to start with a base task model.
*/
public Task createWithValues(ContentValues values, String title) {
- Task task = new Task();
- return createWithValues(task, values, title);
+ return createWithValues(new Task(), values, title);
}
- /**
- * Create task from the given content values, saving it.
- * @param task base task to start with
- */
- public Task createWithValues(Task task, ContentValues values, String title) {
+ Task createWithValues(Task task, ContentValues values, String title) {
if (title != null) {
- task.setTitle(title);
+ task.setTitle(title.trim());
}
ArrayList tags = new ArrayList<>();
@@ -282,7 +261,10 @@ public class TaskService {
task.mergeWithoutReplacement(forTask);
}
- quickAdd(task, tags);
+ saveWithoutPublishingFilterUpdate(task);
+ for(String tag : tags) {
+ createLink(task, tag);
+ }
if (forMetadata != null && forMetadata.size() > 0) {
Metadata metadata = new Metadata();
diff --git a/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java b/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java
index a40091dd9..e6ba667ab 100644
--- a/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java
+++ b/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java
@@ -70,6 +70,8 @@ import static com.google.common.collect.Sets.newHashSet;
*/
public final class TagsControlSet extends TaskEditControlFragment {
+ public static final int TAG = R.string.TEA_ctrl_lists_pref;
+
private static final String EXTRA_TAGS = "extra_tags";
@Inject MetadataDao metadataDao;
@@ -315,6 +317,11 @@ public final class TagsControlSet extends TaskEditControlFragment {
return R.drawable.ic_label_24dp;
}
+ @Override
+ public int controlId() {
+ return TAG;
+ }
+
protected void refreshDisplayView() {
String tagString = buildTagString();
if (!TextUtils.isEmpty(tagString)) {
diff --git a/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java b/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java
index 837021824..7b7904722 100644
--- a/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java
+++ b/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java
@@ -50,6 +50,8 @@ import butterknife.OnClick;
*/
public class TimerControlSet extends TaskEditControlFragment {
+ public static final int TAG = R.string.TEA_ctrl_timer_pref;
+
public interface TimerControlSetCallback {
Task stopTimer();
Task startTimer();
@@ -171,6 +173,11 @@ public class TimerControlSet extends TaskEditControlFragment {
return R.drawable.ic_timer_24dp;
}
+ @Override
+ public int controlId() {
+ return TAG;
+ }
+
@Override
public void initialize(boolean isNewTask, Task task) {
timerStarted = task.getTimerStart();
diff --git a/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java b/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java
index 61c635a41..8dfed6c40 100644
--- a/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java
+++ b/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java
@@ -6,20 +6,16 @@
package com.todoroo.astrid.ui;
import android.app.Activity;
+import android.content.Context;
import android.graphics.Paint;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.TextUtils;
-import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnKeyListener;
import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
-import android.widget.TextView;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.data.Task;
@@ -42,6 +38,8 @@ import butterknife.OnClick;
*/
public class EditTitleControlSet extends TaskEditControlFragment {
+ public static final int TAG = R.string.TEA_ctrl_title_pref;
+
private static final String EXTRA_COMPLETE = "extra_complete";
private static final String EXTRA_TITLE = "extra_title";
private static final String EXTRA_REPEATING = "extra_repeating";
@@ -81,31 +79,6 @@ public class EditTitleControlSet extends TaskEditControlFragment {
editText.setTextKeepState(title);
editText.setHorizontallyScrolling(false);
editText.setMaxLines(Integer.MAX_VALUE);
- editText.setOnKeyListener(new OnKeyListener() {
- @Override
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_ENTER) {
- AndroidUtilities.hideSoftInputForViews(getActivity(), editText);
- return true;
- }
- return false;
- }
- });
- editText.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- editText.setCursorVisible(true);
- }
- });
- editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
- @Override
- public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- if (actionId == EditorInfo.IME_ACTION_DONE) {
- editText.setCursorVisible(false);
- }
- return false;
- }
- });
updateCompleteBox();
return view;
}
@@ -126,15 +99,13 @@ public class EditTitleControlSet extends TaskEditControlFragment {
}
@Override
- public void onStart() {
- super.onStart();
+ public void onResume() {
+ super.onResume();
if (isNewTask) {
editText.requestFocus();
- editText.setCursorVisible(true);
- getActivity().getWindow()
- .setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
- | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+ InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}
}
@@ -176,6 +147,11 @@ public class EditTitleControlSet extends TaskEditControlFragment {
return -1;
}
+ @Override
+ public int controlId() {
+ return TAG;
+ }
+
@Override
public void initialize(boolean isNewTask, Task task) {
this.isNewTask = isNewTask;
@@ -201,6 +177,5 @@ public class EditTitleControlSet extends TaskEditControlFragment {
public void hideKeyboard() {
AndroidUtilities.hideSoftInputForViews(getActivity(), editText);
- editText.setCursorVisible(false);
}
}
diff --git a/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java b/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java
index 08bb4dfb6..ce1f27769 100644
--- a/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java
+++ b/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java
@@ -50,6 +50,8 @@ import static org.tasks.date.DateTimeUtils.newDateTime;
*/
public class HideUntilControlSet extends TaskEditControlFragment implements OnItemSelectedListener {
+ public static final int TAG = R.string.TEA_ctrl_hide_until_pref;
+
private static String EXTRA_CUSTOM = "extra_custom";
private static String EXTRA_SELECTION = "extra_selection";
@@ -128,6 +130,11 @@ public class HideUntilControlSet extends TaskEditControlFragment implements OnIt
return R.drawable.ic_visibility_off_24dp;
}
+ @Override
+ public int controlId() {
+ return TAG;
+ }
+
@Override
public void initialize(boolean isNewTask, Task task) {
long dueDate = task.getDueDate();
diff --git a/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java b/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java
index ec2a83172..14ed94cc9 100644
--- a/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java
+++ b/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java
@@ -5,7 +5,6 @@
*/
package com.todoroo.astrid.ui;
-import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task;
@@ -29,31 +28,21 @@ import timber.log.Timber;
public class QuickAddBar {
@Inject TaskService taskService;
- @Inject TaskCreator taskCreator;
@Inject DialogBuilder dialogBuilder;
- private TaskListActivity activity;
private TaskListFragment fragment;
- public void initialize(Injector injector, TaskListActivity myActivity, TaskListFragment myFragment) {
+ public void initialize(Injector injector, TaskListFragment myFragment) {
injector.inject(this); // TODO: get rid of this
- activity = myActivity;
fragment = myFragment;
}
- // --- quick add task logic
-
- public Task quickAddTask() {
- return quickAddTask("");
- }
-
/**
* Quick-add a new task
*/
public Task quickAddTask(String title) {
TagData tagData = fragment.getActiveTagData();
- if(tagData != null && (!tagData.containsNonNullValue(TagData.NAME) ||
- tagData.getName().length() == 0)) {
+ if(tagData != null && (!tagData.containsNonNullValue(TagData.NAME) || tagData.getName().length() == 0)) {
dialogBuilder.newMessageDialog(R.string.tag_no_title_error)
.setPositiveButton(android.R.string.ok, null)
.show();
@@ -61,25 +50,7 @@ public class QuickAddBar {
}
try {
- if (title != null) {
- title = title.trim();
- }
-
- Task task = new Task();
- if (title != null) {
- task.setTitle(title); // need this for calendar
- }
-
- taskService.createWithValues(task, fragment.getFilter().valuesForNewTasks, title);
-
- taskCreator.addToCalendar(task, title);
-
- fragment.loadTaskListContent();
- fragment.selectCustomId(task.getId());
- activity.onTaskListItemClicked(task.getId());
-
- fragment.onTaskCreated(task.getId(), task.getUUID());
- return task;
+ return taskService.createWithValues(fragment.getFilter().valuesForNewTasks, title);
} catch (Exception e) {
Timber.e(e, e.getMessage());
}
diff --git a/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java b/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java
index 6049b7237..dc25f9b73 100644
--- a/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java
+++ b/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java
@@ -65,6 +65,8 @@ import static org.tasks.date.DateTimeUtils.newDateTime;
*/
public class ReminderControlSet extends TaskEditControlFragment {
+ public static final int TAG = R.string.TEA_ctrl_reminders_pref;
+
private static final int REQUEST_NEW_ALARM = 12152;
private static final int REQUEST_LOCATION_REMINDER = 12153;
@@ -172,6 +174,11 @@ public class ReminderControlSet extends TaskEditControlFragment {
return R.drawable.ic_notifications_24dp;
}
+ @Override
+ public int controlId() {
+ return TAG;
+ }
+
@Override
public void initialize(boolean isNewTask, Task task) {
taskId = task.getId();
diff --git a/src/main/java/com/todoroo/astrid/utility/Flags.java b/src/main/java/com/todoroo/astrid/utility/Flags.java
index a036b3d57..122402183 100644
--- a/src/main/java/com/todoroo/astrid/utility/Flags.java
+++ b/src/main/java/com/todoroo/astrid/utility/Flags.java
@@ -21,11 +21,6 @@ public class Flags {
*/
public static final int TAGS_CHANGED = 1 << 1;
- /**
- * If set, indicates that the edit popover was dismissed by the edit fragment/back button
- */
- public static final int TLA_DISMISSED_FROM_TASK_EDIT = 1 << 5;
-
/**
* If set, indicates that TaskListFragmentPager should not intercept touch events
*/
diff --git a/src/main/java/com/todoroo/astrid/widget/TasksWidget.java b/src/main/java/com/todoroo/astrid/widget/TasksWidget.java
index 45c8b981a..3a80de1fb 100644
--- a/src/main/java/com/todoroo/astrid/widget/TasksWidget.java
+++ b/src/main/java/com/todoroo/astrid/widget/TasksWidget.java
@@ -34,6 +34,7 @@ public class TasksWidget extends InjectingAppWidgetProvider {
public static final String COMPLETE_TASK = "COMPLETE_TASK";
public static final String EDIT_TASK = "EDIT_TASK";
+ public static final String TOKEN_ID = "id"; //$NON-NLS-1$
public static long suppressUpdateFlag = 0; // Timestamp--don't update widgets if this flag is non-zero and now() is within 5 minutes
private static final long SUPPRESS_TIME = DateUtilities.ONE_MINUTE * 5;
@@ -44,13 +45,13 @@ public class TasksWidget extends InjectingAppWidgetProvider {
switch(intent.getAction()) {
case COMPLETE_TASK:
- broadcaster.toggleCompletedState(intent.getLongExtra(TaskEditFragment.TOKEN_ID, 0));
+ broadcaster.toggleCompletedState(intent.getLongExtra(TOKEN_ID, 0));
break;
case EDIT_TASK:
getEditTaskStack(
context,
(Filter) intent.getParcelableExtra(TaskListFragment.TOKEN_FILTER),
- intent.getLongExtra(TaskEditFragment.TOKEN_ID, 0))
+ intent.getLongExtra(TOKEN_ID, 0))
.startActivities();
break;
case BROADCAST_EVENT_REFRESH:
diff --git a/src/main/java/org/tasks/injection/ActivityModule.java b/src/main/java/org/tasks/injection/ActivityModule.java
index 1cab16bb6..7e3934d1a 100644
--- a/src/main/java/org/tasks/injection/ActivityModule.java
+++ b/src/main/java/org/tasks/injection/ActivityModule.java
@@ -8,7 +8,6 @@ import com.todoroo.astrid.activity.BeastModePreferences;
import com.todoroo.astrid.activity.FilterShortcutActivity;
import com.todoroo.astrid.activity.ShareLinkActivity;
import com.todoroo.astrid.activity.ShortcutActivity;
-import com.todoroo.astrid.activity.TaskEditActivity;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.core.CustomFilterActivity;
import com.todoroo.astrid.core.DefaultsPreferences;
@@ -60,7 +59,6 @@ import dagger.Provides;
@Module(addsTo = TasksModule.class,
injects = {
TaskListActivity.class,
- TaskEditActivity.class,
ShareLinkActivity.class,
TagSettingsActivity.class,
FilterSettingsActivity.class,
diff --git a/src/main/java/org/tasks/intents/TaskIntents.java b/src/main/java/org/tasks/intents/TaskIntents.java
index 7f192d194..f1330af27 100644
--- a/src/main/java/org/tasks/intents/TaskIntents.java
+++ b/src/main/java/org/tasks/intents/TaskIntents.java
@@ -6,28 +6,18 @@ import android.os.Bundle;
import android.support.v4.app.TaskStackBuilder;
import com.todoroo.andlib.utility.AndroidUtilities;
-import com.todoroo.astrid.activity.TaskEditActivity;
import com.todoroo.astrid.activity.TaskEditFragment;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterWithCustomIntent;
-import org.tasks.R;
-
public class TaskIntents {
public static Intent getNewTaskIntent(Context context, Filter filter) {
Intent intent;
- boolean twoPaneLayout = context.getResources().getBoolean(R.bool.two_pane_layout);
- if (twoPaneLayout) {
- intent = new Intent(context, TaskListActivity.class);
- intent.putExtra(TaskListActivity.OPEN_TASK, 0L);
- } else {
- intent = new Intent(context, TaskEditActivity.class);
- }
-
- intent.putExtra(TaskEditFragment.OVERRIDE_FINISH_ANIM, false);
+ intent = new Intent(context, TaskListActivity.class);
+ intent.putExtra(TaskListActivity.OPEN_TASK, 0L);
if (filter != null) {
intent.putExtra(TaskListFragment.TOKEN_FILTER, filter);
if (filter.valuesForNewTasks != null) {
@@ -35,11 +25,9 @@ public class TaskIntents {
intent.putExtra(TaskEditFragment.TOKEN_VALUES, values);
intent.setAction("E" + values);
}
- if (twoPaneLayout) {
- if (filter instanceof FilterWithCustomIntent) {
- Bundle customExtras = ((FilterWithCustomIntent) filter).customExtras;
- intent.putExtras(customExtras);
- }
+ if (filter instanceof FilterWithCustomIntent) {
+ Bundle customExtras = ((FilterWithCustomIntent) filter).customExtras;
+ intent.putExtras(customExtras);
}
} else {
intent.setAction("E");
@@ -48,25 +36,16 @@ public class TaskIntents {
}
public static TaskStackBuilder getEditTaskStack(Context context, final Filter filter, final long taskId) {
- TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(context);
- boolean twoPaneLayout = context.getResources().getBoolean(R.bool.two_pane_layout);
- if (twoPaneLayout) {
- taskStackBuilder.addNextIntent(new Intent(context, TaskListActivity.class) {{
- putExtra(TaskListActivity.OPEN_TASK, taskId);
- if (filter != null && filter instanceof FilterWithCustomIntent) {
- Bundle customExtras = ((FilterWithCustomIntent) filter).customExtras;
- putExtras(customExtras);
- }
- }});
- } else {
- taskStackBuilder.addParentStack(TaskEditActivity.class);
- taskStackBuilder.addNextIntent(new Intent(context, TaskEditActivity.class) {{
- putExtra(TaskEditFragment.TOKEN_ID, taskId);
- }});
- if (filter != null) {
- taskStackBuilder.editIntentAt(0).putExtra(TaskListFragment.TOKEN_FILTER, filter);
- }
- }
- return taskStackBuilder;
+ return TaskStackBuilder.create(context)
+ .addNextIntent(new Intent(context, TaskListActivity.class) {{
+ putExtra(TaskListActivity.OPEN_TASK, taskId);
+ if (filter != null) {
+ putExtra(TaskListFragment.TOKEN_FILTER, filter);
+ if (filter instanceof FilterWithCustomIntent) {
+ Bundle customExtras = ((FilterWithCustomIntent) filter).customExtras;
+ putExtras(customExtras);
+ }
+ }
+ }});
}
}
diff --git a/src/main/java/org/tasks/preferences/ActivityPreferences.java b/src/main/java/org/tasks/preferences/ActivityPreferences.java
index c1fd0efcc..b6360c8b0 100644
--- a/src/main/java/org/tasks/preferences/ActivityPreferences.java
+++ b/src/main/java/org/tasks/preferences/ActivityPreferences.java
@@ -1,11 +1,8 @@
package org.tasks.preferences;
import android.app.Activity;
-import android.content.Context;
-import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.PixelFormat;
-import android.util.DisplayMetrics;
import android.view.Window;
import org.tasks.R;
@@ -18,9 +15,6 @@ import static com.todoroo.andlib.utility.AndroidUtilities.preLollipop;
@Singleton
public class ActivityPreferences extends Preferences {
- public static final int MIN_TABLET_WIDTH = 550;
- public static final int MIN_TABLET_HEIGHT = 800;
-
private final Activity activity;
@Inject
@@ -29,10 +23,6 @@ public class ActivityPreferences extends Preferences {
this.activity = activity;
}
- public boolean useTabletLayout() {
- return isTabletSized(context);
- }
-
public void applyThemeAndStatusBarColor() {
applyTheme();
applyStatusBarColor();
@@ -83,30 +73,4 @@ public class ActivityPreferences extends Preferences {
public boolean isDarkTheme() {
return getBoolean(R.string.p_use_dark_theme, false);
}
-
- /**
- * Returns true if the screen is large or xtra large
- */
- public static boolean isTabletSized(Context context) {
- if (context.getPackageManager().hasSystemFeature("com.google.android.tv")) { //$NON-NLS-1$
- return true;
- }
- int size = context.getResources().getConfiguration().screenLayout
- & Configuration.SCREENLAYOUT_SIZE_MASK;
-
- if (size == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
- return true;
- } else if (size == Configuration.SCREENLAYOUT_SIZE_LARGE) {
- DisplayMetrics metrics = context.getResources().getDisplayMetrics();
- float width = metrics.widthPixels / metrics.density;
- float height = metrics.heightPixels / metrics.density;
-
- float effectiveWidth = Math.min(width, height);
- float effectiveHeight = Math.max(width, height);
-
- return (effectiveWidth >= MIN_TABLET_WIDTH && effectiveHeight >= MIN_TABLET_HEIGHT);
- } else {
- return false;
- }
- }
}
diff --git a/src/main/java/org/tasks/ui/CalendarControlSet.java b/src/main/java/org/tasks/ui/CalendarControlSet.java
index 9bedf0e5a..e9e05fa33 100644
--- a/src/main/java/org/tasks/ui/CalendarControlSet.java
+++ b/src/main/java/org/tasks/ui/CalendarControlSet.java
@@ -35,6 +35,8 @@ import static com.google.common.base.Strings.isNullOrEmpty;
public class CalendarControlSet extends TaskEditControlFragment {
+ public static final int TAG = R.string.TEA_ctrl_gcal;
+
private static final int REQUEST_CODE_CALENDAR = 70;
private static final String EXTRA_URI = "extra_uri";
private static final String EXTRA_ID = "extra_id";
@@ -88,6 +90,11 @@ public class CalendarControlSet extends TaskEditControlFragment {
return R.drawable.ic_event_24dp;
}
+ @Override
+ public int controlId() {
+ return TAG;
+ }
+
@Override
public void initialize(boolean isNewTask, Task task) {
this.isNewTask = isNewTask;
diff --git a/src/main/java/org/tasks/ui/DeadlineControlSet.java b/src/main/java/org/tasks/ui/DeadlineControlSet.java
index a076310d1..319530475 100644
--- a/src/main/java/org/tasks/ui/DeadlineControlSet.java
+++ b/src/main/java/org/tasks/ui/DeadlineControlSet.java
@@ -34,19 +34,22 @@ import butterknife.Bind;
import butterknife.OnClick;
import butterknife.OnItemSelected;
+import static com.google.common.collect.Lists.newArrayList;
import static java.util.Arrays.asList;
import static org.tasks.date.DateTimeUtils.newDateTime;
import static org.tasks.preferences.ResourceResolver.getData;
public class DeadlineControlSet extends TaskEditControlFragment {
+ public static final int TAG = R.string.TEA_ctrl_when_pref;
+
private static final int REQUEST_DATE = 504;
private static final int REQUEST_TIME = 505;
private static final String EXTRA_DATE = "extra_date";
private static final String EXTRA_TIME = "extra_time";
- private final List dueDateOptions = new ArrayList<>();
- private final List dueTimeOptions = new ArrayList<>();
+ private List dueDateOptions = new ArrayList<>();
+ private List dueTimeOptions = new ArrayList<>();
private List dueTimeHint = new ArrayList<>();
private int dateShortcutMorning;
private int dateShortcutAfternoon;
@@ -94,20 +97,20 @@ public class DeadlineControlSet extends TaskEditControlFragment {
noTimeString = activity.getString(R.string.TEA_no_time);
todayString = activity.getString(R.string.today);
tomorrowString = activity.getString(R.string.tomorrow);
- dueDateOptions.addAll(asList(
+ dueDateOptions = newArrayList(
"",
todayString,
tomorrowString,
"",
- activity.getString(R.string.pick_a_date)));
- dueTimeOptions.addAll(asList(
+ activity.getString(R.string.pick_a_date));
+ dueTimeOptions = newArrayList(
"",
noTimeString,
morningString,
afternoonString,
eveningString,
nightString,
- activity.getString(R.string.pick_a_time)));
+ activity.getString(R.string.pick_a_time));
}
@Nullable
@@ -247,6 +250,11 @@ public class DeadlineControlSet extends TaskEditControlFragment {
return R.drawable.ic_schedule_24dp;
}
+ @Override
+ public int controlId() {
+ return TAG;
+ }
+
@Override
public void initialize(boolean isNewTask, Task task) {
if (task.hasDueDate()) {
diff --git a/src/main/java/org/tasks/ui/DescriptionControlSet.java b/src/main/java/org/tasks/ui/DescriptionControlSet.java
index a40c48b2d..c83b74ca1 100644
--- a/src/main/java/org/tasks/ui/DescriptionControlSet.java
+++ b/src/main/java/org/tasks/ui/DescriptionControlSet.java
@@ -17,6 +17,7 @@ import butterknife.OnTextChanged;
public class DescriptionControlSet extends TaskEditControlFragment {
+ public static final int TAG = R.string.TEA_ctrl_notes_pref;
private static final String EXTRA_DESCRIPTION = "extra_description";
@Bind(R.id.notes) EditText editText;
@@ -53,6 +54,11 @@ public class DescriptionControlSet extends TaskEditControlFragment {
return R.drawable.ic_event_note_24dp;
}
+ @Override
+ public int controlId() {
+ return TAG;
+ }
+
@OnTextChanged(R.id.notes)
void textChanged(CharSequence text) {
description = text.toString().trim();
diff --git a/src/main/java/org/tasks/ui/NavigationDrawerFragment.java b/src/main/java/org/tasks/ui/NavigationDrawerFragment.java
index 972cd7568..c0a4dd539 100644
--- a/src/main/java/org/tasks/ui/NavigationDrawerFragment.java
+++ b/src/main/java/org/tasks/ui/NavigationDrawerFragment.java
@@ -103,7 +103,6 @@ public class NavigationDrawerFragment extends InjectingFragment {
getActivity().getIntent().putExtra(TaskListActivity.TOKEN_SWITCH_TO_FILTER, newList);
clear();
}
-
} else {
super.onActivityResult(requestCode, resultCode, data);
}
@@ -224,7 +223,7 @@ public class NavigationDrawerFragment extends InjectingFragment {
}
public interface OnFilterItemClickedListener {
- boolean onFilterItemClicked(FilterListItem item);
+ void onFilterItemClicked(FilterListItem item);
}
public void clear() {
diff --git a/src/main/java/org/tasks/ui/PriorityControlSet.java b/src/main/java/org/tasks/ui/PriorityControlSet.java
index 5dc04a37a..804191a38 100644
--- a/src/main/java/org/tasks/ui/PriorityControlSet.java
+++ b/src/main/java/org/tasks/ui/PriorityControlSet.java
@@ -22,6 +22,8 @@ import butterknife.OnClick;
public class PriorityControlSet extends TaskEditControlFragment {
+ public static final int TAG = R.string.TEA_ctrl_importance_pref;
+
public interface OnPriorityChanged {
void onPriorityChange(int priority);
}
@@ -83,6 +85,11 @@ public class PriorityControlSet extends TaskEditControlFragment {
return R.drawable.ic_flag_24dp;
}
+ @Override
+ public int controlId() {
+ return TAG;
+ }
+
@Override
public void initialize(boolean isNewTask, Task task) {
priority = task.getImportance();
diff --git a/src/main/java/org/tasks/ui/TaskEditControlFragment.java b/src/main/java/org/tasks/ui/TaskEditControlFragment.java
index 8bf8bf223..501f50b89 100644
--- a/src/main/java/org/tasks/ui/TaskEditControlFragment.java
+++ b/src/main/java/org/tasks/ui/TaskEditControlFragment.java
@@ -33,6 +33,8 @@ public abstract class TaskEditControlFragment extends InjectingFragment {
protected abstract int getIcon();
+ public abstract int controlId();
+
public abstract void initialize(boolean isNewTask, Task task);
public abstract void apply(Task task);
diff --git a/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/src/main/java/org/tasks/widget/ScrollableViewsFactory.java
index 7904171f6..4061c55b7 100644
--- a/src/main/java/org/tasks/widget/ScrollableViewsFactory.java
+++ b/src/main/java/org/tasks/widget/ScrollableViewsFactory.java
@@ -164,7 +164,7 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac
Intent editIntent = new Intent();
editIntent.setAction(TasksWidget.EDIT_TASK);
editIntent.putExtra(TaskListFragment.TOKEN_FILTER, filter);
- editIntent.putExtra(TaskEditFragment.TOKEN_ID, task.getId());
+ editIntent.putExtra(TasksWidget.TOKEN_ID, task.getId());
editIntent.putExtra(TaskListActivity.OPEN_TASK, task.getId());
row.setOnClickFillInIntent(R.id.text, editIntent);
@@ -173,7 +173,7 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac
} else {
Intent completeIntent = new Intent();
completeIntent.setAction(TasksWidget.COMPLETE_TASK);
- completeIntent.putExtra(TaskEditFragment.TOKEN_ID, task.getId());
+ completeIntent.putExtra(TasksWidget.TOKEN_ID, task.getId());
row.setOnClickFillInIntent(R.id.completeBox, completeIntent);
}
diff --git a/src/main/res/anim/slide_left_in.xml b/src/main/res/anim/slide_left_in.xml
deleted file mode 100644
index 291a0f127..000000000
--- a/src/main/res/anim/slide_left_in.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
diff --git a/src/main/res/anim/slide_left_out.xml b/src/main/res/anim/slide_left_out.xml
deleted file mode 100644
index 2f3a5dfb1..000000000
--- a/src/main/res/anim/slide_left_out.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
diff --git a/src/main/res/anim/slide_right_in.xml b/src/main/res/anim/slide_right_in.xml
deleted file mode 100644
index 749fb14cb..000000000
--- a/src/main/res/anim/slide_right_in.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
diff --git a/src/main/res/anim/slide_right_out.xml b/src/main/res/anim/slide_right_out.xml
deleted file mode 100644
index 84dacfca6..000000000
--- a/src/main/res/anim/slide_right_out.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
diff --git a/src/main/res/layout-w820dp/task_edit_wrapper_activity.xml b/src/main/res/layout-w820dp/task_edit_wrapper_activity.xml
deleted file mode 100644
index 408292118..000000000
--- a/src/main/res/layout-w820dp/task_edit_wrapper_activity.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/main/res/layout-w820dp/task_list_wrapper.xml b/src/main/res/layout-w820dp/task_list_wrapper.xml
index 332c2dc74..625cd0b8c 100644
--- a/src/main/res/layout-w820dp/task_list_wrapper.xml
+++ b/src/main/res/layout-w820dp/task_list_wrapper.xml
@@ -26,7 +26,7 @@
@@ -38,11 +38,10 @@
+ android:layout_weight="40" />
diff --git a/src/main/res/layout/control_set_title.xml b/src/main/res/layout/control_set_title.xml
index cc47ddb92..854ebf15d 100644
--- a/src/main/res/layout/control_set_title.xml
+++ b/src/main/res/layout/control_set_title.xml
@@ -36,13 +36,11 @@
android:layout_height="wrap_content"
android:layout_weight="100"
android:background="?attr/asEditTextBackground"
- android:cursorVisible="false"
- android:freezesText="true"
android:hint="@string/TEA_title_hint"
- android:imeOptions="flagNoExtractUi|actionDone"
+ android:freezesText="true"
+ android:imeOptions="flagNoExtractUi"
android:inputType="textCapSentences"
android:scrollbars="vertical"
- android:text=""
android:textColor="?attr/asTextColor"
android:textColorHint="?attr/asTextColorHint" />
diff --git a/src/main/res/layout/task_edit_activity.xml b/src/main/res/layout/task_edit_fragment.xml
similarity index 59%
rename from src/main/res/layout/task_edit_activity.xml
rename to src/main/res/layout/task_edit_fragment.xml
index f367c2285..0313e839e 100644
--- a/src/main/res/layout/task_edit_activity.xml
+++ b/src/main/res/layout/task_edit_fragment.xml
@@ -24,11 +24,71 @@
android:orientation="vertical"
android:gravity="center_horizontal" >
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/main/res/layout/task_list_wrapper.xml b/src/main/res/layout/task_list_wrapper.xml
index e01754a74..5a5970a08 100644
--- a/src/main/res/layout/task_list_wrapper.xml
+++ b/src/main/res/layout/task_list_wrapper.xml
@@ -14,7 +14,7 @@