From 70cae25d71dc59a35d47c6917cc62e6ee94e893e Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 24 Jun 2016 14:50:00 -0500 Subject: [PATCH] Update tag and filter settings * Use back and nav buttons for save and discard * Change tag clash to toast * Add toast for empty names --- .../astrid/actfm/FilterSettingsActivity.java | 32 +++++--- .../astrid/actfm/TagSettingsActivity.java | 53 +++++++------ src/main/res/layout/tag_settings_activity.xml | 75 +++++++------------ src/main/res/menu/tag_settings_activity.xml | 6 -- src/main/res/values/strings.xml | 1 + 5 files changed, 79 insertions(+), 88 deletions(-) diff --git a/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java b/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java index 4c4ef3350..599263e0d 100644 --- a/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java +++ b/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java @@ -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; diff --git a/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java b/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java index 0d7a7f1f7..971782708 100644 --- a/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java +++ b/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java @@ -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; diff --git a/src/main/res/layout/tag_settings_activity.xml b/src/main/res/layout/tag_settings_activity.xml index 8c0ad05ce..3de79aba5 100644 --- a/src/main/res/layout/tag_settings_activity.xml +++ b/src/main/res/layout/tag_settings_activity.xml @@ -7,57 +7,40 @@ - + - + android:padding="16dp"> - - - - - + android:layout_alignParentTop="true" + android:text="@string/name" /> - - - - + + + + diff --git a/src/main/res/menu/tag_settings_activity.xml b/src/main/res/menu/tag_settings_activity.xml index 5d37d3872..674972849 100644 --- a/src/main/res/menu/tag_settings_activity.xml +++ b/src/main/res/menu/tag_settings_activity.xml @@ -2,12 +2,6 @@ - - Improve Tasks Send anonymous usage statistics and crash reports to help improve Tasks. No personal data will be collected. Tag already exists + Name cannot be empty Disable notification light Interrupt Doze mode for notifications Android will significantly delay notifications while device is in Doze mode