mirror of https://github.com/tasks/tasks
Move title edit to collapsing toolbar layout
parent
1d01c5d7b4
commit
ac39ccb966
@ -1,192 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2012 Todoroo Inc
|
||||
*
|
||||
* See the file "LICENSE" for the full license governing this code.
|
||||
*/
|
||||
|
||||
package com.todoroo.astrid.ui;
|
||||
|
||||
import static com.todoroo.andlib.utility.DateUtilities.now;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Paint;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.EditText;
|
||||
import androidx.annotation.Nullable;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import butterknife.OnTextChanged;
|
||||
import com.google.common.base.Strings;
|
||||
import com.todoroo.astrid.data.Task;
|
||||
import com.todoroo.astrid.service.TaskCompleter;
|
||||
import javax.inject.Inject;
|
||||
import org.tasks.R;
|
||||
import org.tasks.dialogs.Linkify;
|
||||
import org.tasks.injection.ForApplication;
|
||||
import org.tasks.injection.FragmentComponent;
|
||||
import org.tasks.preferences.Preferences;
|
||||
import org.tasks.ui.CheckBoxProvider;
|
||||
import org.tasks.ui.TaskEditControlFragment;
|
||||
|
||||
/**
|
||||
* Control set for mapping a Property to an EditText
|
||||
*
|
||||
* @author Tim Su <tim@todoroo.com>
|
||||
*/
|
||||
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";
|
||||
private static final String EXTRA_PRIORITY = "extra_priority";
|
||||
|
||||
@Inject @ForApplication Context context;
|
||||
@Inject TaskCompleter taskCompleter;
|
||||
@Inject Linkify linkify;
|
||||
@Inject CheckBoxProvider checkBoxProvider;
|
||||
@Inject Preferences preferences;
|
||||
|
||||
@BindView(R.id.title)
|
||||
EditText editText;
|
||||
|
||||
@BindView(R.id.completeBox)
|
||||
CheckableImageView completeBox;
|
||||
|
||||
private boolean showKeyboard;
|
||||
private boolean isComplete;
|
||||
private boolean isRepeating;
|
||||
private int importanceValue;
|
||||
private String title;
|
||||
|
||||
@Override
|
||||
protected void inject(FragmentComponent component) {
|
||||
component.inject(this);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(
|
||||
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(getLayout(), null);
|
||||
ButterKnife.bind(this, view);
|
||||
if (savedInstanceState == null) {
|
||||
isComplete = task.isCompleted();
|
||||
title = task.getTitle();
|
||||
isRepeating = !TextUtils.isEmpty(task.getRecurrence());
|
||||
importanceValue = task.getPriority();
|
||||
showKeyboard = task.isNew() && Strings.isNullOrEmpty(title);
|
||||
} else {
|
||||
isComplete = savedInstanceState.getBoolean(EXTRA_COMPLETE);
|
||||
title = savedInstanceState.getString(EXTRA_TITLE);
|
||||
isRepeating = savedInstanceState.getBoolean(EXTRA_REPEATING);
|
||||
importanceValue = savedInstanceState.getInt(EXTRA_PRIORITY);
|
||||
}
|
||||
completeBox.setChecked(isComplete);
|
||||
editText.setTextKeepState(title);
|
||||
editText.setHorizontallyScrolling(false);
|
||||
editText.setLines(1);
|
||||
editText.setMaxLines(Integer.MAX_VALUE);
|
||||
|
||||
if (preferences.getBoolean(R.string.p_linkify_task_edit, false)) {
|
||||
linkify.linkify(editText);
|
||||
}
|
||||
|
||||
updateCompleteBox();
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
|
||||
outState.putBoolean(EXTRA_COMPLETE, isComplete);
|
||||
outState.putString(EXTRA_TITLE, title);
|
||||
outState.putBoolean(EXTRA_REPEATING, isRepeating);
|
||||
outState.putInt(EXTRA_PRIORITY, importanceValue);
|
||||
}
|
||||
|
||||
@OnClick(R.id.completeBox)
|
||||
void toggleComplete(View view) {
|
||||
updateCompleteBox();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
||||
if (showKeyboard) {
|
||||
editText.requestFocus();
|
||||
InputMethodManager imm =
|
||||
(InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
|
||||
}
|
||||
}
|
||||
|
||||
@OnTextChanged(R.id.title)
|
||||
void onTextChanged(CharSequence text) {
|
||||
this.title = text.toString().trim();
|
||||
}
|
||||
|
||||
public void setPriority(int priority) {
|
||||
importanceValue = priority;
|
||||
updateCompleteBox();
|
||||
}
|
||||
|
||||
public void repeatChanged(boolean repeat) {
|
||||
isRepeating = repeat;
|
||||
updateCompleteBox();
|
||||
}
|
||||
|
||||
private void updateCompleteBox() {
|
||||
isComplete = completeBox.isChecked();
|
||||
|
||||
completeBox.setImageDrawable(
|
||||
checkBoxProvider.getCheckBox(isComplete, isRepeating, importanceValue));
|
||||
|
||||
if (isComplete) {
|
||||
editText.setPaintFlags(editText.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
|
||||
} else {
|
||||
editText.setPaintFlags(editText.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayout() {
|
||||
return R.layout.control_set_title;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getIcon() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int controlId() {
|
||||
return TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasChanges(Task original) {
|
||||
return !title.equals(original.getTitle())
|
||||
|| isComplete != original.isCompleted()
|
||||
|| (original.isNew() && !Strings.isNullOrEmpty(title));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(Task task) {
|
||||
task.setTitle(Strings.isNullOrEmpty(title) ? getString(R.string.no_title) : title);
|
||||
if (task.isNew()) {
|
||||
task.setCompletionDate(isComplete ? now() : 0);
|
||||
} else if (isComplete != task.isCompleted()) {
|
||||
taskCompleter.setComplete(task, isComplete);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
<vector android:autoMirrored="true" android:height="24dp"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
|
||||
</vector>
|
@ -0,0 +1,5 @@
|
||||
<vector android:autoMirrored="true" android:height="24dp"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M12.5,8c-2.65,0 -5.05,0.99 -6.9,2.6L2,7v9h9l-3.62,-3.62c1.39,-1.16 3.16,-1.88 5.12,-1.88 3.54,0 6.55,2.31 7.6,5.5l2.37,-0.78C21.08,11.03 17.15,8 12.5,8z"/>
|
||||
</vector>
|
@ -1,59 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
** Copyright (c) 2012 Todoroo Inc
|
||||
**
|
||||
** See the file "LICENSE" for the full license governing this code.
|
||||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:descendantFocusability="beforeDescendants"
|
||||
android:focusableInTouchMode="true"
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="0dp"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingTop="@dimen/task_edit_drawable_padding_top_bottom"
|
||||
android:paddingEnd="@dimen/keyline_first"
|
||||
android:paddingRight="@dimen/keyline_first"
|
||||
android:paddingBottom="@dimen/task_edit_drawable_padding_top_bottom">
|
||||
|
||||
<com.todoroo.astrid.ui.CheckableImageView
|
||||
android:id="@+id/completeBox"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_gravity="top"
|
||||
android:paddingStart="@dimen/keyline_first"
|
||||
android:paddingEnd="@dimen/keyline_second"
|
||||
android:paddingLeft="@dimen/keyline_first"
|
||||
android:paddingRight="@dimen/keyline_second"
|
||||
android:scaleType="center"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/title"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toEndOf="@id/completeBox"
|
||||
android:layout_toRightOf="@id/completeBox"
|
||||
android:background="@null"
|
||||
android:freezesText="true"
|
||||
android:gravity="start"
|
||||
android:hint="@string/TEA_title_hint"
|
||||
android:imeOptions="flagNoExtractUi"
|
||||
android:inputType="textCapSentences|textAutoCorrect"
|
||||
android:nextFocusLeft="@id/title"
|
||||
android:nextFocusUp="@id/title"
|
||||
android:scrollbars="vertical"
|
||||
android:textAlignment="viewStart"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View style="@style/horizontal_divider"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
Loading…
Reference in New Issue