Update tag and filter settings

* Use back and nav buttons for save and discard
* Change tag clash to toast
* Add toast for empty names
pull/413/head
Alex Baker 10 years ago
parent ef7da583e0
commit 70cae25d71

@ -15,8 +15,10 @@ import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.Toast;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.CustomFilter;
@ -25,8 +27,8 @@ import com.todoroo.astrid.dao.StoreObjectDao;
import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.preferences.Preferences;
import org.tasks.ui.MenuColorizer;
import javax.inject.Inject;
@ -44,6 +46,7 @@ public class FilterSettingsActivity extends ThemedInjectingAppCompatActivity {
@Inject StoreObjectDao storeObjectDao;
@Inject DialogBuilder dialogBuilder;
@Inject Preferences preferences;
@BindView(R.id.tag_name) EditText filterName;
@BindView(R.id.toolbar) Toolbar toolbar;
@ -61,10 +64,22 @@ public class FilterSettingsActivity extends ThemedInjectingAppCompatActivity {
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayHomeAsUpEnabled(true);
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_close_24dp));
final boolean backButtonSavesTask = preferences.backButtonSavesTask();
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(
backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp));
DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
supportActionBar.setHomeAsUpIndicator(drawable);
supportActionBar.setTitle(filter.listingTitle);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (backButtonSavesTask) {
discard();
} else {
save();
}
}
});
}
filterName.setText(filter.listingTitle);
@ -80,6 +95,7 @@ public class FilterSettingsActivity extends ThemedInjectingAppCompatActivity {
String newName = filterName.getText().toString().trim();
if (isEmpty(newName)) {
Toast.makeText(this, R.string.name_cannot_be_empty, Toast.LENGTH_LONG).show();
return;
}
@ -109,18 +125,16 @@ public class FilterSettingsActivity extends ThemedInjectingAppCompatActivity {
@Override
public void onBackPressed() {
discard();
if (preferences.backButtonSavesTask()) {
save();
} else {
discard();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
discard();
break;
case R.id.menu_save:
save();
break;
case R.id.delete:
deleteTag();
break;

@ -21,7 +21,9 @@ import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.common.base.Strings;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.dao.MetadataDao;
@ -37,6 +39,7 @@ import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.preferences.Preferences;
import org.tasks.ui.MenuColorizer;
import javax.inject.Inject;
@ -60,10 +63,10 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity {
@Inject TagDataDao tagDataDao;
@Inject MetadataDao metadataDao;
@Inject DialogBuilder dialogBuilder;
@Inject Preferences preferences;
@BindView(R.id.tag_name) EditText tagName;
@BindView(R.id.toolbar) Toolbar toolbar;
@BindView(R.id.tag_error) TextView tagError;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -83,29 +86,26 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity {
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayHomeAsUpEnabled(true);
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_close_24dp));
final boolean backButtonSavesTask = preferences.backButtonSavesTask();
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(
backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp));
DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
supportActionBar.setHomeAsUpIndicator(drawable);
supportActionBar.setTitle(isNewTag ? getString(R.string.new_tag) : tagData.getName());
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (backButtonSavesTask) {
discard();
} else {
save();
}
}
});
}
tagName.setText(tagData.getName());
tagName.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
tagError.setVisibility(clashes() ? View.VISIBLE : View.GONE);
}
});
String autopopulateName = getIntent().getStringExtra(TOKEN_AUTOPOPULATE_NAME);
if (!isEmpty(autopopulateName)) {
tagName.setText(autopopulateName);
@ -122,8 +122,7 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity {
return tagName.getText().toString().trim();
}
private boolean clashes() {
String newName = getNewName();
private boolean clashes(String newName) {
TagData existing = tagDataDao.getTagByName(newName, TagData.PROPERTIES);
return existing != null && tagData.getId() != existing.getId();
}
@ -133,10 +132,12 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity {
String newName = getNewName();
if (isEmpty(newName)) {
Toast.makeText(this, R.string.name_cannot_be_empty, Toast.LENGTH_LONG).show();
return;
}
if (clashes()) {
if (clashes(newName)) {
Toast.makeText(this, R.string.tag_already_exists, Toast.LENGTH_LONG).show();
return;
}
@ -178,18 +179,16 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity {
@Override
public void onBackPressed() {
discard();
if (preferences.backButtonSavesTask()) {
save();
} else {
discard();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
discard();
break;
case R.id.menu_save:
save();
break;
case R.id.delete:
deleteTag();
break;

@ -7,57 +7,40 @@
<include layout="@layout/toolbar" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="top">
<ScrollView
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="top">
android:padding="16dp">
<RelativeLayout
android:layout_width="fill_parent"
<TextView
android:id="@+id/tag_label"
style="@style/TextAppearance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp">
<TextView
android:id="@+id/tag_label"
style="@style/TextAppearance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text="@string/name" />
<EditText
android:id="@+id/tag_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tag_label"
android:layout_marginTop="16dp"
android:background="#00000000"
android:hint="@string/enter_tag_name"
android:imeOptions="flagNoExtractUi"
android:inputType="textCapSentences"
android:singleLine="true"
android:textColor="?attr/asTextColorHint"
android:textColorHint="?attr/asTextColorHint"
android:textSize="15sp" />
android:layout_alignParentTop="true"
android:text="@string/name" />
<TextView
android:id="@+id/tag_error"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@id/tag_name"
android:layout_marginTop="16dp"
android:text="@string/tag_already_exists"
android:textColor="@color/overdue"
android:textStyle="italic"
android:visibility="gone" />
</RelativeLayout>
</ScrollView>
</FrameLayout>
<EditText
android:id="@+id/tag_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tag_label"
android:layout_marginTop="16dp"
android:background="#00000000"
android:hint="@string/enter_tag_name"
android:imeOptions="flagNoExtractUi"
android:inputType="textCapSentences"
android:singleLine="true"
android:textColor="?attr/asTextColorHint"
android:textColorHint="?attr/asTextColorHint"
android:textSize="15sp" />
</RelativeLayout>
</ScrollView>
</LinearLayout>

@ -2,12 +2,6 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_save"
android:title="@string/save"
android:icon="@drawable/ic_save_24dp"
app:showAsAction="always"/>
<item
android:id="@+id/delete"
android:title="@string/delete"

@ -843,6 +843,7 @@ File %1$s contained %2$s.\n\n
<string name="send_anonymous_statistics">Improve Tasks</string>
<string name="send_anonymous_statistics_summary">Send anonymous usage statistics and crash reports to help improve Tasks. No personal data will be collected.</string>
<string name="tag_already_exists">Tag already exists</string>
<string name="name_cannot_be_empty">Name cannot be empty</string>
<string name="disable_notification_light">Disable notification light</string>
<string name="doze_notifications">Interrupt Doze mode for notifications</string>
<string name="doze_notifications_off">Android will significantly delay notifications while device is in Doze mode</string>

Loading…
Cancel
Save