From 435ea347d16ba399faf9c9aeb2a8baf1d515aa75 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 12 Aug 2015 15:41:49 -0500 Subject: [PATCH] Update custom filter activity layout Closes #290 --- src/main/AndroidManifest.xml | 2 +- .../astrid/actfm/FilterSettingsActivity.java | 2 +- .../astrid/core/CustomFilterActivity.java | 137 +++++++++--------- .../astrid/core/CustomFilterAdapter.java | 25 +--- .../com/todoroo/astrid/core/FilterView.java | 80 ---------- .../tasks/filters/FilterCriteriaProvider.java | 28 +--- src/main/res/drawable/default_list_0.png | Bin 1507 -> 0 bytes src/main/res/drawable/default_list_1.png | Bin 1539 -> 0 bytes src/main/res/drawable/default_list_2.png | Bin 1492 -> 0 bytes src/main/res/drawable/default_list_3.png | Bin 1443 -> 0 bytes src/main/res/drawable/gtasks_icon.png | Bin 926 -> 0 bytes src/main/res/drawable/tango_alpha.png | Bin 939 -> 0 bytes src/main/res/drawable/tango_calendar.png | Bin 807 -> 0 bytes src/main/res/drawable/tango_warning.png | Bin 954 -> 0 bytes .../res/layout/custom_filter_activity.xml | 75 +++++----- src/main/res/layout/custom_filter_row.xml | 90 +++++++----- .../res/layout/filter_settings_activity.xml | 52 +++++++ src/main/res/values-ar/strings.xml | 2 - src/main/res/values-bg-rBG/strings.xml | 3 - src/main/res/values-ca/strings.xml | 3 - src/main/res/values-cs/strings.xml | 3 - src/main/res/values-da/strings.xml | 3 - src/main/res/values-de/strings.xml | 3 - src/main/res/values-el/strings.xml | 2 - src/main/res/values-es/strings.xml | 3 - src/main/res/values-fa/strings.xml | 3 - src/main/res/values-fi/strings.xml | 2 - src/main/res/values-fr/strings.xml | 3 - src/main/res/values-hu/strings.xml | 3 - src/main/res/values-it/strings.xml | 3 - src/main/res/values-iw/strings.xml | 3 - src/main/res/values-ja/strings.xml | 3 - src/main/res/values-ko/strings.xml | 3 - src/main/res/values-nb/strings.xml | 3 - src/main/res/values-nl/strings.xml | 3 - src/main/res/values-pl/strings.xml | 3 - src/main/res/values-pt-rBR/strings.xml | 3 - src/main/res/values-pt/strings.xml | 3 - src/main/res/values-ru/strings.xml | 3 - src/main/res/values-sk/strings.xml | 3 - src/main/res/values-sl-rSI/strings.xml | 3 - src/main/res/values-sv/strings.xml | 3 - src/main/res/values-th/strings.xml | 3 - src/main/res/values-tr/strings.xml | 3 - src/main/res/values-uk/strings.xml | 3 - src/main/res/values-zh-rCN/strings.xml | 3 - src/main/res/values-zh-rTW/strings.xml | 3 - src/main/res/values/strings-actfm.xml | 1 + src/main/res/values/strings-filters.xml | 9 -- 49 files changed, 225 insertions(+), 363 deletions(-) delete mode 100644 src/main/java/com/todoroo/astrid/core/FilterView.java delete mode 100644 src/main/res/drawable/default_list_0.png delete mode 100644 src/main/res/drawable/default_list_1.png delete mode 100644 src/main/res/drawable/default_list_2.png delete mode 100644 src/main/res/drawable/default_list_3.png delete mode 100644 src/main/res/drawable/gtasks_icon.png delete mode 100644 src/main/res/drawable/tango_alpha.png delete mode 100644 src/main/res/drawable/tango_calendar.png delete mode 100644 src/main/res/drawable/tango_warning.png create mode 100644 src/main/res/layout/filter_settings_activity.xml diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 32e949608..666ae1711 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -346,7 +346,7 @@ + android:theme="@style/Tasks"/> diff --git a/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java b/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java index ad36dedff..d68a7d88f 100644 --- a/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java +++ b/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java @@ -50,7 +50,7 @@ public class FilterSettingsActivity extends InjectingAppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); preferences.applyThemeAndStatusBarColor(); - setContentView(R.layout.tag_settings_activity); + setContentView(R.layout.filter_settings_activity); ButterKnife.inject(this); filter = getIntent().getParcelableExtra(TOKEN_FILTER); diff --git a/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java b/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java index 308882907..4dec55faf 100644 --- a/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java +++ b/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java @@ -6,19 +6,22 @@ package com.todoroo.astrid.core; import android.content.ContentValues; +import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; -import android.text.Editable; -import android.text.TextWatcher; +import android.support.v7.app.ActionBar; +import android.support.v7.widget.Toolbar; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; +import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnCreateContextMenuListener; -import android.widget.Button; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; import android.widget.ListView; -import android.widget.TextView; import com.todoroo.andlib.data.Property.CountProperty; import com.todoroo.andlib.sql.Query; @@ -49,6 +52,11 @@ import java.util.Map.Entry; import javax.inject.Inject; +import butterknife.ButterKnife; +import butterknife.InjectView; + +import static android.text.TextUtils.isEmpty; + /** * Activity that allows users to build custom filters * @@ -83,7 +91,7 @@ public class CustomFilterActivity extends InjectingAppCompatActivity { /** type of join */ public int type = TYPE_INTERSECT; - /** statistics for {@link FilterView} */ + /** statistics for filter count */ public int start, end, max; public String getTitleFromCriterion() { @@ -121,7 +129,6 @@ public class CustomFilterActivity extends InjectingAppCompatActivity { } private ListView listView; - private TextView filterName; private CustomFilterAdapter adapter; @@ -133,20 +140,30 @@ public class CustomFilterActivity extends InjectingAppCompatActivity { @Inject DialogBuilder dialogBuilder; @Inject FilterCriteriaProvider filterCriteriaProvider; + @InjectView(R.id.tag_name) EditText filterName; + @InjectView(R.id.toolbar) Toolbar toolbar; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - preferences.applyTheme(); + preferences.applyThemeAndStatusBarColor(); setContentView(R.layout.custom_filter_activity); - setTitle(R.string.FLA_new_filter); + ButterKnife.inject(this); + + setSupportActionBar(toolbar); + ActionBar supportActionBar = getSupportActionBar(); + if (supportActionBar != null) { + supportActionBar.setDisplayHomeAsUpEnabled(true); + supportActionBar.setHomeAsUpIndicator(R.drawable.ic_close_white_24dp); + supportActionBar.setTitle(R.string.FLA_new_filter); + } listView = (ListView) findViewById(android.R.id.list); database.openForReading(); - filterName = (TextView)findViewById(R.id.filterName); List startingCriteria = new ArrayList<>(); startingCriteria.add(getStartingUniverse()); adapter = new CustomFilterAdapter(this, dialogBuilder, startingCriteria); @@ -173,35 +190,6 @@ public class CustomFilterActivity extends InjectingAppCompatActivity { } }); - final Button saveAndView = ((Button)findViewById(R.id.saveAndView)); - saveAndView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - saveAndView(); - } - }); - - filterName.addTextChangedListener(new TextWatcher() { - @Override - public void afterTextChanged(Editable s) { - if(s.length() == 0) { - saveAndView.setText(R.string.CFA_button_view); - } else { - saveAndView.setText(R.string.CFA_button_save); - } - } - @Override - public void beforeTextChanged(CharSequence s, int start, int count, - int after) { - // - } - @Override - public void onTextChanged(CharSequence s, int start, int before, - int count) { - // - } - }); - listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { @Override public void onCreateContextMenu(ContextMenu menu, View v, @@ -225,10 +213,10 @@ public class CustomFilterActivity extends InjectingAppCompatActivity { @Override public void finish() { + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(filterName.getWindowToken(), 0); super.finish(); - if (!preferences.useTabletLayout()) { - AndroidUtilities.callOverridePendingTransition(this, R.anim.slide_right_in, R.anim.slide_right_out); - } + AndroidUtilities.callOverridePendingTransition(this, R.anim.slide_right_in, R.anim.slide_right_out); } @@ -247,8 +235,13 @@ public class CustomFilterActivity extends InjectingAppCompatActivity { } void saveAndView() { + String title = filterName.getText().toString().trim(); + + if (isEmpty(title)) { + return; + } + StringBuilder sql = new StringBuilder(" WHERE "); - StringBuilder suggestedTitle = new StringBuilder(); ContentValues values = new ContentValues(); for(int i = 0; i < adapter.getCount(); i++) { CriterionInstance instance = adapter.getItem(i); @@ -257,22 +250,15 @@ public class CustomFilterActivity extends InjectingAppCompatActivity { value = ""; } - String title = instance.getTitleFromCriterion(); - switch(instance.type) { case CriterionInstance.TYPE_ADD: sql.append("OR "); - suggestedTitle.append(getString(R.string.CFA_type_add)).append(' '). - append(title).append(' '); break; case CriterionInstance.TYPE_SUBTRACT: sql.append("AND NOT "); - suggestedTitle.append(getString(R.string.CFA_type_subtract)).append(' '). - append(title).append(' '); break; case CriterionInstance.TYPE_INTERSECT: sql.append("AND "); - suggestedTitle.append(title).append(' '); break; case CriterionInstance.TYPE_UNIVERSE: } @@ -295,19 +281,8 @@ public class CustomFilterActivity extends InjectingAppCompatActivity { } } - String title; - StoreObject storeObject = null; - if(filterName.getText().length() > 0) { - // persist saved filter - title = filterName.getText().toString().trim(); - storeObject = SavedFilter.persist(storeObjectDao, adapter, title, sql.toString(), values); - } else { - // temporary - title = suggestedTitle.toString(); - } - - // view - Filter filter = new CustomFilter(title, sql.toString(), values, storeObject == null ? -1L : storeObject.getId()); + StoreObject storeObject = SavedFilter.persist(storeObjectDao, adapter, title, sql.toString(), values); + Filter filter = new CustomFilter(title, sql.toString(), values, storeObject.getId()); setResult(RESULT_OK, new Intent().putExtra(TagSettingsActivity.TOKEN_NEW_FILTER, filter)); finish(); } @@ -370,15 +345,47 @@ public class CustomFilterActivity extends InjectingAppCompatActivity { adapter.notifyDataSetInvalidated(); } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.tag_settings_activity, menu); + menu.findItem(R.id.delete).setVisible(false); + return super.onCreateOptionsMenu(menu); + } + @Override public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - return true; + switch (item.getItemId()) { + case android.R.id.home: + discard(); + break; + case R.id.menu_save: + saveAndView(); + break; } return super.onOptionsItemSelected(item); } + @Override + public void onBackPressed() { + discard(); + } + + private void discard() { + if (filterName.getText().toString().trim().isEmpty() && adapter.getCount() <= 1) { + finish(); + } else { + dialogBuilder.newMessageDialog(R.string.discard_changes) + .setPositiveButton(R.string.discard, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + finish(); + } + }) + .setNegativeButton(android.R.string.cancel, null) + .show(); + } + } + @Override public boolean onContextItemSelected(android.view.MenuItem item) { if(item.getGroupId() == MENU_GROUP_FILTER) { diff --git a/src/main/java/com/todoroo/astrid/core/CustomFilterAdapter.java b/src/main/java/com/todoroo/astrid/core/CustomFilterAdapter.java index 2be47c442..0d075dd0d 100644 --- a/src/main/java/com/todoroo/astrid/core/CustomFilterAdapter.java +++ b/src/main/java/com/todoroo/astrid/core/CustomFilterAdapter.java @@ -5,7 +5,6 @@ */ package com.todoroo.astrid.core; -import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.support.v7.app.AlertDialog; @@ -45,8 +44,7 @@ public class CustomFilterAdapter extends ArrayAdapter { super(activity, R.id.name, objects); this.activity = activity; this.dialogBuilder = dialogBuilder; - inflater = (LayoutInflater) activity.getSystemService( - Context.LAYOUT_INFLATER_SERVICE); + inflater = activity.getLayoutInflater(); } // --- view event handling @@ -82,10 +80,6 @@ public class CustomFilterAdapter extends ArrayAdapter { int index = getPosition(viewHolder.item); menu.setHeaderTitle(viewHolder.name.getText()); - if(viewHolder.icon.getVisibility() == View.VISIBLE) { - menu.setHeaderIcon(viewHolder.icon.getDrawable()); - } - MenuItem item = menu.add(CustomFilterActivity.MENU_GROUP_CONTEXT_TYPE, CriterionInstance.TYPE_INTERSECT, index, activity.getString(R.string.CFA_context_chain, @@ -161,9 +155,8 @@ public class CustomFilterAdapter extends ArrayAdapter { convertView = inflater.inflate(R.layout.custom_filter_row, parent, false); ViewHolder viewHolder = new ViewHolder(); viewHolder.type = (ImageView) convertView.findViewById(R.id.type); - viewHolder.icon = (ImageView) convertView.findViewById(R.id.icon); viewHolder.name= (TextView) convertView.findViewById(R.id.name); - viewHolder.filterView = (FilterView) convertView.findViewById(R.id.filter); + viewHolder.filterCount = (TextView) convertView.findViewById(R.id.filter); convertView.setTag(viewHolder); } @@ -181,9 +174,8 @@ public class CustomFilterAdapter extends ArrayAdapter { private class ViewHolder { public CriterionInstance item; public ImageView type; - public ImageView icon; public TextView name; - public FilterView filterView; + public TextView filterCount; } private void initializeView(View convertView) { @@ -208,17 +200,8 @@ public class CustomFilterAdapter extends ArrayAdapter { break; } - viewHolder.icon.setVisibility(item.criterion.icon == null ? View.GONE : - View.VISIBLE); - if(item.criterion.icon != null) { - viewHolder.icon.setImageBitmap(item.criterion.icon); - } - viewHolder.name.setText(title); - - viewHolder.filterView.setMax(item.max); - viewHolder.filterView.setStart(item.start); - viewHolder.filterView.setEnd(item.end); + viewHolder.filterCount.setText(Integer.toString(item.end)); } diff --git a/src/main/java/com/todoroo/astrid/core/FilterView.java b/src/main/java/com/todoroo/astrid/core/FilterView.java deleted file mode 100644 index 4c5323ec5..000000000 --- a/src/main/java/com/todoroo/astrid/core/FilterView.java +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Copyright (c) 2012 Todoroo Inc - * - * See the file "LICENSE" for the full license governing this code. - */ -package com.todoroo.astrid.core; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Path; -import android.util.AttributeSet; -import android.view.View; - -/** - * Draws filters - * - * @author Tim Su - * - */ -public class FilterView extends View { - - private int start = 0, end = 0, max = 1; - - private static final int FILTER_COLOR = Color.rgb(0x1f, 0x78, 0xb4); - private static final int BG_COLOR = Color.rgb(0xe9, 0xe9, 0xe9); - private static final int TEXT_COLOR = Color.WHITE; - - // --- boilerplate - - public void setStart(int start) { - this.start = start; - } - - public void setEnd(int end) { - this.end = end; - } - - public void setMax(int max) { - this.max = max; - } - - public FilterView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - } - - public FilterView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public FilterView(Context context) { - super(context); - } - - // --- painting code - - @Override - protected void onDraw(Canvas canvas) { - Paint paint = new Paint(); - paint.setColor(BG_COLOR); - paint.setStyle(Paint.Style.FILL); - canvas.drawRect(0, 0, getWidth(), getHeight(), paint); - - paint.setColor(FILTER_COLOR); - Path path = new Path(); - path.moveTo(getWidth() * (0.5f - 0.5f * start / max), 0); - path.lineTo(getWidth() * (0.5f + 0.5f * start / max), 0); - path.lineTo(getWidth() * (0.5f + 0.5f * end / max), getHeight()); - path.lineTo(getWidth() * (0.5f - 0.5f * end / max), getHeight()); - path.close(); - canvas.drawPath(path, paint); - - paint.setColor(TEXT_COLOR); - paint.setTextAlign(Paint.Align.CENTER); - paint.setTextSize(16); - canvas.drawText(Integer.toString(end), getWidth() / 2, getHeight() / 2 + 8, paint); - } - -} diff --git a/src/main/java/org/tasks/filters/FilterCriteriaProvider.java b/src/main/java/org/tasks/filters/FilterCriteriaProvider.java index 496a977bf..a9250d82f 100644 --- a/src/main/java/org/tasks/filters/FilterCriteriaProvider.java +++ b/src/main/java/org/tasks/filters/FilterCriteriaProvider.java @@ -3,7 +3,6 @@ package org.tasks.filters; import android.content.ContentValues; import android.content.Context; import android.content.res.Resources; -import android.graphics.drawable.BitmapDrawable; import com.todoroo.andlib.data.AbstractModel; import com.todoroo.andlib.sql.Criterion; @@ -17,7 +16,6 @@ import com.todoroo.astrid.api.TextInputCriterion; import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.data.Metadata; -import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gtasks.GtasksList; @@ -44,12 +42,6 @@ public class FilterCriteriaProvider { private static final String IDENTIFIER_GTASKS = "gtaskslist"; //$NON-NLS-1$ private static final String IDENTIFIER_TAG_IS = "tag_is"; //$NON-NLS-1$ private static final String IDENTIFIER_TAG_CONTAINS = "tag_contains"; //$NON-NLS-1$ - private static int[] default_tag_images = new int[] { - R.drawable.default_list_0, - R.drawable.default_list_1, - R.drawable.default_list_2, - R.drawable.default_list_3 - }; private Context context; private TagService tagService; @@ -103,7 +95,7 @@ public class FilterCriteriaProvider { MetadataDao.MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_NAME.eq("?"), Metadata.DELETION_DATE.eq(0))).toString(), values, tagNames, tagNames, - ((BitmapDrawable)r.getDrawable(getDefaultImageIDForTag(RemoteModel.NO_UUID))).getBitmap(), + null, context.getString(R.string.CFC_tag_name)); } @@ -117,7 +109,7 @@ public class FilterCriteriaProvider { MetadataDao.MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_NAME.like("%?%"), Metadata.DELETION_DATE.eq(0))).toString(), context.getString(R.string.CFC_tag_contains_name), "", - ((BitmapDrawable)r.getDrawable(getDefaultImageIDForTag(RemoteModel.NO_UUID))).getBitmap(), + null, context.getString(R.string.CFC_tag_contains_name)); } @@ -144,7 +136,7 @@ public class FilterCriteriaProvider { Task.DUE_DATE.gt(0)), Task.DUE_DATE.lte("?"))).toString(), values, r.getStringArray(R.array.CFC_dueBefore_entries), - entryValues, ((BitmapDrawable)r.getDrawable(R.drawable.tango_calendar)).getBitmap(), + entryValues, null, r.getString(R.string.CFC_dueBefore_name)); } @@ -167,7 +159,7 @@ public class FilterCriteriaProvider { Criterion.and(TaskDao.TaskCriteria.activeAndVisible(), Task.IMPORTANCE.lte("?"))).toString(), values, entries, - entryValues, ((BitmapDrawable)r.getDrawable(R.drawable.tango_warning)).getBitmap(), + entryValues, null, r.getString(R.string.CFC_importance_name)); } @@ -181,7 +173,7 @@ public class FilterCriteriaProvider { Criterion.and(TaskDao.TaskCriteria.activeAndVisible(), Task.TITLE.like("%?%"))).toString(), r.getString(R.string.CFC_title_contains_name), "", - ((BitmapDrawable)r.getDrawable(R.drawable.tango_alpha)).getBitmap(), + null, r.getString(R.string.CFC_title_contains_name)); } @@ -213,15 +205,7 @@ public class FilterCriteriaProvider { values, listNames, listIds, - ((BitmapDrawable)r.getDrawable(R.drawable.gtasks_icon)).getBitmap(), + null, context.getString(R.string.CFC_gtasks_list_name)); } - - private static int getDefaultImageIDForTag(String nameOrUUID) { - if (RemoteModel.NO_UUID.equals(nameOrUUID)) { - int random = (int)(Math.random()*4); - return default_tag_images[random]; - } - return default_tag_images[(Math.abs(nameOrUUID.hashCode()))%4]; - } } diff --git a/src/main/res/drawable/default_list_0.png b/src/main/res/drawable/default_list_0.png deleted file mode 100644 index 22cea07e2075d68b76733444f99ed58958550191..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1507 zcmeAS@N?(olHy`uVBq!ia0vp^jv&mz1|<8wpL7LMk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh**NZ(?$0 z9!LbN!`Ii!Gq1QLF)umQ)5TT^Xog;9W{Q=uk%^<3n~STVqmikhp{t>jv6+*lg{7&P zfs?tDk)<Mv>2~2MaLa!T6y`aR9TL84#CABECEH%ZgC_h&L>}jh^+-`Bk zX&zK>3U0T!;MA)Rbc{YIYLTKECIn1BASOKF0y*%cpPC0u??u3bU8i^dE&~HosHcl# zNX4zUxA*!72TB|-e3T$j@*%!JJ#W(nD~T}njMJ<&os%B8`0ykwQadKlQJ8SVccZS- z42h{F3bl%f%^Ez%TJBAo)}*#n_o-_}zO$Bbv-bH{%~QKyl4$X_p!j@cUXgUt zzjJL}dJAU1V3k@u`QC!SE8XkD{yp<*5EF3>Ilk2U|AS*$9C}-VpEEo?yFmLX$MuWz z92xxH%dnL4b4YMJC~;OaS-j{VM_ucMbb|)1g#v9n?k6-`p0_Edh#U%b6kq`%3*Dym z&5QE$H=dTuzudymaAbM=l*n02&U_MC{m&&Xxpv-X_YL=VXXK_$u&CSi_;W_Dp4yL(A?z4Brv{RsQY{ z)7**IE|wk9TOZBmU6dpOw)w|OE)=Rij3hD+guXI8ON_`|NY{*TTE}){a{KeKT_JR_ z)$eHD{qgSOe7;28jh(l5$?q&T zI5SCjvCM2%VAwreBQQ_0Z$c=CKaabIc1ze{!8FlBs#}r_oYsGC%h|q=q5DPA&)t`l z+Zc}o1aIB`j6LukLxUyz0;#4~QdN<^4o|t|{(6D$7vY~1q+@mdpZ(8ZHuH9Lc0a>y PP_gUj>gTe~DWM4f?2<8; diff --git a/src/main/res/drawable/default_list_1.png b/src/main/res/drawable/default_list_1.png deleted file mode 100644 index ac37d129b257df38f32efd83e7ea86a08acdaadc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1539 zcmaJ>eM}Q)9KKAz>LM26m@uZ-!>Ci}-Ica*2VLz4YQ+-LmJVm!IIagRa35X|I24Rl zA_{2S$kbsLWSBW;5P@tivLQN^p#z$rfvJnSn5kig5*OS8BfIkD{usO5-TS`3{GR9c z_2fO2nXzff;+Vw%04%X=Hru4t5d36e(*MZIo-}ER7Sgf>JDVqz51{T4*Al zvQdPqY-bOZ3IGdMc^uh7wsk8`vb2&2`Y1)3lh6Q=suwweETjZ5m&*4rI%uThG6Z^D zI_N!(6|r(A%I(>_i>K_nG92WtLK1U9`gg%p5tj&PN+3XyE@Hg6sDq|>acLhk!w@*- zA{6SN>7=r)nV^Z~DNv(C5=cagf?Bl_RU?=hiw9K*iomD}Mv@Xx1lJ_t2nx5B-#+g{sNe8(Ffx}_Aw6s)Nny6&?d>F+r3`SJ2N|hjaBzVghfe;fIZ`>?{nevjn zhZ8(30|pt1T((%yK~kpECD7a)E#sYOlhiO+BsdsVBEgbo9j(^?cctk$Z?9mZUgi6r z#9l`kN5MAA%NFybG`PIDU?>hZ@f0Djyn|(nX1kc_W(C&kW;xJg*C+NozeYW4 zlJpbY&IwmK%t@bOB)#*Ju-AXT3xbYP%%+{ zU}>@3nTe~&gX&DmWr}Y{f)W-%yF#Fp>$S%oii4H_VwYef(yRKyEDSpUR#a+ z_$#zVANb25dt>N>V+&S|MRy!M$VJ~9ly&_?K>oz8CdJ;Lvy9*RqGRHc7d>jd0o;yJ zqz=XsRq}exrh}2jCQ#-Jz7ug*(+8Khhu8bGYg+KI>N}u(!^`e1C$@22MW?E=8alt( z+gq%AA%nwO3=Ja@+(h|@fBTvmLs|yv%R-)*6Jnzm{w|O5kp&U8LyDBj4gRL(SCU=H zk;@eR{jIku-n>7#2El&`iJROQbvQ#Gdgh{bPet_?n+wbFf|2g96P1I;CP!3yTkf(D zgFM9WXTMCnvVB;nIo-Z|ku&d|*hSjop|NC^d;(o??&Je-qHa^+N$`o{R2(;KbGE!y5<30tGZWdNA%~~z4_$vOucLnmI{ZUUx9Y3@@ zRhdh!26m@h`@C5{jJzdQ>1}80n}sKStN3CvyoJjXb>-WS+<*3f--h07+a}c_?~^rJ zyp^=k?T=L$Wl_Bm<&{UPn%%XTWT#?$gMBX+uOHp<%-IVVhps!=-a)b>2H5&3a8~|h r`cQiv%=lC5LusNW8!lOya$M~1KHRT7jFzn%4qnTav<&lkV~+11RPs2R diff --git a/src/main/res/drawable/default_list_2.png b/src/main/res/drawable/default_list_2.png deleted file mode 100644 index ef9922c1964dd5dfb3245e0ca36f000bd8943ff0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1492 zcmeAS@N?(olHy`uVBq!ia0vp^jv&mz1|<8wpL7LMk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh**NZ(?$0 z9!LbN!`Ii!Gq1QLF)umQ)5TT^Xog;9W{Q=Iv7v>Txr>3JqmhZBp{t>jv6+*lg{7&P zfs?tDk)<Mv>2~2MaLa!lCy`aR9TL84#CABECEH%ZgC_h&L>}jh^oNjS; z#c3W?ZwgMgIJ@E0s}FRHJ}7FDq8cUyOg|tdJmCU4@T8xb2Tbopz=S<*%F#{+1|~O8 z7srr_TW@dg_l^z}IZ#+A&~EiZzeIfdt{qlW{;`)9oqra!P|PV?s(#^xgIu960yZwq zHZcvG^nFstj~@H12~yt8`=yeTd^?U*RGm}ims9kP-YZw+|G;}1kN$j{qIY{g%xasy z$k)^~x!+L#+cw8p$J7k@zis$teVwT!Igv+dN6uIFytVBgM6}H;8g?^Wd*@csGS!5s zpz6KCh57@F+8F$7TQ0PQnz+qSZmH{KTw$Wfli63`$f0lIenRk2v7-PB2>tM9`7bWK zhdc2DTgBI`ivi6aq!{nDTvyoiU$`e^R_J_T&)>h^$s}rI9LTX@l!@Q1F8TY{A1#5j zBdR=KgDXv+Z(KJ|6eHaeaA)i`(16 zBda-nG%eGamU2{sqe+3Iso*|`iCSgqzqd*+#ROvB%LG-a{|Kl#7192FX0gZIr#DI_ zoORB4e_)@TX>{ft>w=oMGXE#>PWiOf5m6Z>aeC_ut}^23^74A17KLFKt>Qk$O`HL4xn@J_)}8aGe#>V2!2Ei}_bY#l-vlu?bT9|- wH@-R&7iM4KQoM!H>iDD^>}$lc3+tcTzZ1}^)hj!g4=QIpUHx3vIVCg!0K3v4ng9R* diff --git a/src/main/res/drawable/default_list_3.png b/src/main/res/drawable/default_list_3.png deleted file mode 100644 index 294f839a416f0ba1d899de340fe6f640a6019707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 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 N002ovPDHLkV1j)z!vg>S diff --git a/src/main/res/drawable/tango_calendar.png b/src/main/res/drawable/tango_calendar.png deleted file mode 100644 index 60ad82b236e3414dfbadaff7853deacc9d918ed5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 807 zcmV+?1K9kDP)06ug@ zSad^gZEa<4bO1wgWnpw>WFU8GbZ8({Xk{QrNlj1+3MgYKATls8GayP~Yjt8ECu(VJ zZDC_4AX9W@X>Mh5Co}I@0007NNklJ&W^IOo94zGItU^K9yFZk zX4mZxFk*?wlOENZ3~At@pi&U&79L_FLc}_F5xR;Sq;4ghVhKc0VqnzW1=*b)JGAex z&W=A?>4D*y_nG(oyx)1A=beH7WD3Cj)Vv}lYG!44D zyNSo+c%J7kl3rfHxJ+Rz7Q-|R78jO$um~y$gI@G`Xew$Kp9MHeeXWHmPNh=x_xID= z+so+aD4yq`C<@7B62ma)=;-h}==k{fVqhTz>2#V*Cd0_c2rDZqet$17FEc$oePX`c z^xRYcWV2bu#>TL1o1vj0T3cID6orWP%4!ul}Zc_4$|J<4nR*&53cJ1kW41Y<#GVnwvEwu zn|JTuW*UzA`;&%RmX z6G|lbYO=}_DnY8M`Y|B{uIu{not+(u#Ui<1Kd)Ki6L)1QM6Fs`uiL$5uuQc zi$WH))CSxL{R_J8s!$0u-4vuCbuod^p&AR)v?yq(24ZUxGdh{;VkV)9on&ec9Ny*L zcRu%f4~H*WYdXo(V08Mg)*3|z;fstPgXL+%xaW)XcT!_^0CnGhAKxAw4Xo5^;l|CI zH-Mh~>h@J^z*M-euhH)~j3$%Hw(V|T zf8B!kRjoH)NwEc=AIM~M@bP2J`J+@UT6VRHH!}ma z&FYymJV~ed;rjKbx0|Y;{wKw6!S}DlVk)@2OrTuGNG37jaqLowxCn<_*EHahwvyY- zZ1yvyp3R*+spnHE{adxFJS5PD6LcbNnWJ*EcYrtfeJ_ z=g*_UVO-b6^E^~n7r}`My4Kb>5{)VgraNkdFOuIhjQ;%L!-n42z?ql;z;#_**F{7K zo;}O+l@-Ru$IU^JkA0CN`-1Z@lN}l|jQjTqUbui*79xV@d4$7ZLveUbN- zWgQqicn~9#*#WKB>lBMc%H{GlR4GO1)F}vu$@TUsWmzd-nWUqo{7^|7NzE$-gM zotoMKFin%5o*oj3#P;6SdFUZuiGBRT4;G5m0K_@);6X2UZ<6TR!R%{YzwTl cuK!#83wh2#=*+j5WB>pF07*qoM6N<$f-^77nE(I) diff --git a/src/main/res/layout/custom_filter_activity.xml b/src/main/res/layout/custom_filter_activity.xml index ac8e75096..8b9ac2e0e 100644 --- a/src/main/res/layout/custom_filter_activity.xml +++ b/src/main/res/layout/custom_filter_activity.xml @@ -9,32 +9,44 @@ android:layout_height="fill_parent" android:orientation="vertical" android:background="?attr/asContentBackground"> - - - + + + + - - - + android:padding="16dp"> + + + + + + @@ -42,7 +54,6 @@