From 599e7b75612241dc5f40947f40e2a3771f6e62f2 Mon Sep 17 00:00:00 2001 From: Andrew Shaw Date: Wed, 22 Feb 2012 00:59:48 -0800 Subject: [PATCH] Theming and UI changes --- api/src/com/todoroo/astrid/data/TagData.java | 3 +- .../astrid/actfm/TagSettingsActivity.java | 56 ++- .../todoroo/astrid/tags/TagFilterExposer.java | 1 + .../com/todoroo/astrid/tags/TagService.java | 12 + astrid/res/drawable/icn_add_contact.png | Bin 0 -> 282 bytes astrid/res/drawable/icn_list_shortcut.png | Bin 0 -> 8678 bytes astrid/res/layout/tag_settings_activity.xml | 330 +++++++++--------- astrid/res/values/strings-tags.xml | 8 +- astrid/res/values/styles.xml | 16 + .../astrid/activity/TaskListActivity.java | 188 +++++----- .../todoroo/astrid/adapter/UpdateAdapter.java | 9 +- .../todoroo/astrid/ui/PeopleContainer.java | 10 + 12 files changed, 367 insertions(+), 266 deletions(-) create mode 100644 astrid/res/drawable/icn_add_contact.png create mode 100644 astrid/res/drawable/icn_list_shortcut.png diff --git a/api/src/com/todoroo/astrid/data/TagData.java b/api/src/com/todoroo/astrid/data/TagData.java index 78ed6ab37..be2e379b5 100644 --- a/api/src/com/todoroo/astrid/data/TagData.java +++ b/api/src/com/todoroo/astrid/data/TagData.java @@ -204,8 +204,7 @@ public final class TagData extends RemoteModel { } public String getPictureHash() { - String s = getValue(TagData.NAME) + "" + getValue(TagData.CREATION_DATE); - return s; + return getId() + "" + getValue(TagData.CREATION_DATE); } } diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java index 6c583064d..9ce64110b 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java @@ -23,6 +23,7 @@ import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; +import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; @@ -33,6 +34,7 @@ import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.ExceptionService; import com.todoroo.andlib.utility.AndroidUtilities; +import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.ActFmCameraModule.CameraResultCallback; @@ -40,7 +42,9 @@ import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; import com.todoroo.astrid.actfm.sync.ActFmSyncService; import com.todoroo.astrid.activity.FilterListFragment; import com.todoroo.astrid.activity.ShortcutActivity; +import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.helper.ImageDiskCache; import com.todoroo.astrid.service.StatisticsConstants; @@ -172,6 +176,20 @@ public class TagSettingsActivity extends FragmentActivity { isSilent = (ToggleButton) findViewById(R.id.tag_silenced); isSilent.setChecked(tagData.getFlag(TagData.FLAGS, TagData.FLAG_SILENT)); + Button leaveListButton = (Button) findViewById(R.id.leave_list); + leaveListButton.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + showDeleteDialog(tagData); + } + }); + if (isNewTag) { + leaveListButton.setVisibility(View.GONE); + } + else if (tagData.getValue(TagData.MEMBER_COUNT) > 0) { + leaveListButton.setText(getString(R.string.tag_leave_button)); + } if(actFmPreferenceService.isLoggedIn()) { findViewById(R.id.tag_silenced_container).setVisibility(View.VISIBLE); } @@ -370,13 +388,13 @@ public class TagSettingsActivity extends FragmentActivity { if (isNewTag) { titleView.setText(getString(R.string.tag_new_list)); } else { - titleView.setText(getString(R.string.tag_settings_title, tagData.getValue(TagData.NAME))); + titleView.setText(getString(R.string.tag_settings_title)); } } else { if (isNewTag) { setTitle(getString(R.string.tag_new_list)); } else { - setTitle(getString(R.string.tag_settings_title, tagData.getValue(TagData.NAME))); + setTitle(getString(R.string.tag_settings_title)); } } String tagImage = tagData.getValue(TagData.PICTURE); @@ -492,6 +510,40 @@ public class TagSettingsActivity extends FragmentActivity { + protected void showDeleteDialog(TagData tagData) { + int string; + if (tagData != null && tagData.getValue(TagData.MEMBER_COUNT) > 0) + string = R.string.DLG_leave_this_shared_tag_question; + else + string = R.string.DLG_delete_this_tag_question; + DialogUtilities.okCancelDialog(this, getString(string, tagData.getValue(TagData.NAME)), new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, int which) { + deleteTag(); + } + }, null ); + } + + protected boolean deleteTag() { + tagDataService.delete(tagData.getId()); + boolean shared = false; + if(tagData != null) { + tagData.setValue(TagData.DELETION_DATE, DateUtilities.now()); + PluginServices.getTagDataService().save(tagData); + shared = tagData.getValue(TagData.MEMBER_COUNT) > 0 && tagData.getValue(TagData.USER_ID) != 0; // Was I a list member and NOT owner? + } + + Intent tagDeleted = new Intent(AstridApiConstants.BROADCAST_EVENT_TAG_DELETED); + tagDeleted.putExtra(TagViewFragment.EXTRA_TAG_NAME, tagData.getValue(TagData.NAME)); + tagDeleted.putExtra(TagFilterExposer.TAG_SQL, TagFilterExposer.SHOW_ACTIVE_TASKS); + + this.finish(); + sendBroadcast(tagDeleted); + + return true; + } + diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java index ab7e913eb..e3e13ba6c 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java @@ -59,6 +59,7 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE private static final String TAG = "tag"; //$NON-NLS-1$ public static final String TAG_SQL = "tagSql"; //$NON-NLS-1$ + public static final String SHOW_ACTIVE_TASKS = "show_main_task_view"; //$NON-NLS-1$ @Autowired TagDataService tagDataService; @Autowired GtasksPreferenceService gtasksPreferenceService; diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java index a332d381a..deed7b19c 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java @@ -138,6 +138,18 @@ public final class TagService { Field.field("mtags." + TAG.name).eqCaseInsensitive(tag)))).where(criterion); } + + /** + * Return SQL selector query for getting tasks with a given tagData + * + * @param tagData + * @return + */ + public static QueryTemplate queryTemplate(Criterion criterion, TagData tagData) { + return new QueryTemplate().join(Join.inner(Metadata.TABLE, + Task.ID.eq(Metadata.TASK))).where(tagEqIgnoreCase(tagData.getValue(TagData.NAME), criterion)); + } + } public static Criterion memberOfTagData(long tagDataRemoteId) { diff --git a/astrid/res/drawable/icn_add_contact.png b/astrid/res/drawable/icn_add_contact.png new file mode 100644 index 0000000000000000000000000000000000000000..cdbb282f2e76173a6b6c549b06b9c53ee748268c GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^5`GB&w6dC{YrThi;eWvl#)XLpikg%kVSiZz0|jXpchJ-?=$(6)zbQ)zO`wG%U$E=Z_9Oi221@H?w@ YeMN72$owfQfo^5+boFyt=akR{0JdRU@Bjb+ literal 0 HcmV?d00001 diff --git a/astrid/res/drawable/icn_list_shortcut.png b/astrid/res/drawable/icn_list_shortcut.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba4786ce0280f6432b8338bb7b641364721773f GIT binary patch literal 8678 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 - - + android:layout_weight="100" > - + android:orientation="vertical" + android:padding="5dip" + android:paddingTop="0dip" > + android:layout_height="wrap_content" + android:gravity="right" + android:orientation="horizontal" + android:visibility="gone" > - + android:layout_marginRight="10dip" + android:background="@android:color/transparent" + android:src="@android:drawable/ic_menu_close_clear_cancel" /> - - - - - - - - - - + android:layout_marginRight="10dip" + android:background="@android:color/transparent" + android:src="@android:drawable/ic_menu_save" /> + - - - - + + + + + + android:layout_alignParentTop="true" + android:layout_marginTop="2dip" + android:layout_toRightOf="@id/picture" + android:text="@string/actfm_TVA_tag_label" /> - - - + android:layout_toRightOf="@id/picture" + android:maxLines="1" + android:padding="10dip" + android:paddingBottom="14dip" /> + + + + + + + + + + + + + - + + + android:orientation="horizontal" > - + - + + - + + + android:orientation="horizontal" + android:padding="5dip" > - - - - - - - - - - - - - - - - + android:layout_alignParentLeft="true" + android:layout_marginTop="10dip" + android:text="@string/FLA_shortcut_dialog_title" /> + + + - - \ No newline at end of file +