From 85e503c04336d4f5cf0fecb68babe75e737db4b5 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Mon, 12 Mar 2012 17:37:26 -0700 Subject: [PATCH] All new widget design to match app theme and style --- astrid/res/drawable-land/widget_frame.9.png | Bin 6035 -> 0 bytes astrid/res/drawable/widget_frame.9.png | Bin 5554 -> 0 bytes astrid/res/layout-land/widget_initialized.xml | 142 ++++------------ .../layout-xlarge-land/widget_initialized.xml | 141 ++++------------ astrid/res/layout/widget_initialized.xml | 155 ++++-------------- astrid/res/layout/widget_loading.xml | 76 ++++++--- astrid/res/layout/widget_row.xml | 14 ++ astrid/res/layout/widget_separator.xml | 8 + astrid/res/values/colors.xml | 8 + astrid/res/values/styles.xml | 4 +- .../astrid/activity/TaskListFragment.java | 3 + .../todoroo/astrid/widget/TasksWidget.java | 97 +++++++---- 12 files changed, 255 insertions(+), 393 deletions(-) delete mode 100644 astrid/res/drawable-land/widget_frame.9.png delete mode 100644 astrid/res/drawable/widget_frame.9.png create mode 100644 astrid/res/layout/widget_row.xml create mode 100644 astrid/res/layout/widget_separator.xml diff --git a/astrid/res/drawable-land/widget_frame.9.png b/astrid/res/drawable-land/widget_frame.9.png deleted file mode 100644 index 4b5885165ed55ef4a53d1fe59f691707e485fccf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6035 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 axC(GPB+M?~3fH{cDgdmZqh70O6ZIc+lg1+e diff --git a/astrid/res/drawable/widget_frame.9.png b/astrid/res/drawable/widget_frame.9.png deleted file mode 100644 index 6637f942c54ac4fe4a6785b69fdf7be5c371583c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5554 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

l zam@HC933KaEGBT^Fex#mA|aAwPcY*{fw=tT_Y!B zFtg$}g{+e`5D~|eSQk?Vmi3vhHs%n~`|emWBl{spyQIyd^HaTrgs&&awB>0|;(Q?_ zTAa9vO>x<-RKh1?U974dq%Ga8N)Bhth{n<=U1Ha8&vAZvm`3^)^SBX3rcs$K@9XK1Sb$KE@4viyvB2>@1=5n1@V6JCT{c@D}3~ z(8@HwJicveaCC+EBDr$ygGXzgNI!S9+_dkjJ9>Q|dKEU6Fm}I3uyQq)by-~VH0+PS z+}h(zmPK*RO9i_Ez6V(~T>8XkSR`6(aQ))KTL8-Dt)>x^gKbf_r?z0_ce2~CSLw@8 zz*K|%;mb%wI*YRa1cL<3&?%V5DuCUODL>U|MKwv75Pa1|ryZg-)%e7zNRufB`=?TB z77+uT?kBD%zt23D>&2i?Pl{7*&#_g;eZ$uGI*YzOPPwaQ3S)n`n>0xdJ@^*8c^Bjny*4lm<@_I>J^Cyyy(QX45l4L;KdIUF8Ri||=tEPU9?im(6y)jEWo zGwUEGCu?RW{U@%NtpT60e5RRtqK|T2zn{qU#fA~dwaYya%794z zWJ_LbQ%!AzeG3Y_Mvd)B#$GR;&t`kKNKY3q`)zQsnXmFcT5WPz;*30D46pfk2wkdk z$}b3Q_-N8$B9mk3Wh5q@^P(IU#Jd*J+NTGmt|$vFd}dc zLYCbE3ZMW086GJaKvn^ua3637$nfsK-Rl2?_Q3l;8HC}Ch0Kkkcj&(w(#?ZBk+%q_)%V#zD*7c4P)tH@~=r!S6i~1Wy zbHXvgG!~27MzOkE*T=T|KcE4K`Wx5!rZRBR8&$1|76_&@GoT54`vF^d&Nj4x*@>>+ znX`Wo7{ds@{Wivbv9ouXuexwfy4=tNHlHqCm@gG2>2SkmlF@^t$#4(snLAHZADomr zJUUUG!QF*AfbiE>zM$*c04a4v>*D|CQRU!(b1mvChImzyKKoP6L s@;v}x5oU@`C6m1WM!)nr6L1gU^^F7aZbGQ`KfgJZ6*Uw}-&zFy2X#l7cK`qY diff --git a/astrid/res/layout-land/widget_initialized.xml b/astrid/res/layout-land/widget_initialized.xml index 42d533799..46cdbcfcb 100644 --- a/astrid/res/layout-land/widget_initialized.xml +++ b/astrid/res/layout-land/widget_initialized.xml @@ -5,134 +5,52 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" - android:background="@drawable/widget_frame"> + android:background="@android:color/transparent"> - + android:padding="3dp" + android:background="@color/widget_header_light"> + android:maxLines="2" + android:layout_weight="1" + android:gravity="left|center_vertical" + android:ellipsize="end" /> + android:layout_width="33dip" + android:layout_height="39dip" + android:layout_gravity="right|center_vertical" + android:background="@android:color/transparent" + android:src="@drawable/plus_button_dark_blue" + android:scaleType="fitCenter"/> + + - - - - - - - - - - - - - - - - - - - - - diff --git a/astrid/res/layout-xlarge-land/widget_initialized.xml b/astrid/res/layout-xlarge-land/widget_initialized.xml index ca7715e26..9c7f2cc67 100644 --- a/astrid/res/layout-xlarge-land/widget_initialized.xml +++ b/astrid/res/layout-xlarge-land/widget_initialized.xml @@ -5,132 +5,51 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" - android:background="@drawable/widget_frame"> + android:background="@android:color/transparent"> - + android:padding="3dp" + android:background="@color/widget_header_light"> + android:maxLines="2" + android:layout_weight="1" + android:gravity="left|center_vertical" + android:ellipsize="end" /> + android:layout_width="33dip" + android:layout_height="39dip" + android:layout_gravity="right|center_vertical" + android:background="@android:color/transparent" + android:src="@drawable/plus_button_dark_blue" + android:scaleType="fitCenter"/> + + - - - - - - - - - - - - - - - - - - - - diff --git a/astrid/res/layout/widget_initialized.xml b/astrid/res/layout/widget_initialized.xml index 0a8f8c2ff..318d8876a 100644 --- a/astrid/res/layout/widget_initialized.xml +++ b/astrid/res/layout/widget_initialized.xml @@ -5,136 +5,51 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" - android:background="@drawable/widget_frame"> + android:background="@android:color/transparent"> + android:padding="3dp" + android:background="@color/widget_header_light"> + android:maxLines="2" + android:layout_weight="1" + android:gravity="left|center_vertical" + android:ellipsize="end" /> + android:id="@+id/widget_button" + android:layout_width="33dip" + android:layout_height="39dip" + android:layout_gravity="right|center_vertical" + android:background="@android:color/transparent" + android:src="@drawable/plus_button_dark_blue" + android:scaleType="fitCenter"/> - - - - - - - - - - - - - - - - - - - - - - + + - - + diff --git a/astrid/res/layout/widget_loading.xml b/astrid/res/layout/widget_loading.xml index 2c930b744..d2182cead 100644 --- a/astrid/res/layout/widget_loading.xml +++ b/astrid/res/layout/widget_loading.xml @@ -1,29 +1,65 @@ - + android:background="@android:color/transparent"> + + + + + + + + + + - - - + + + + diff --git a/astrid/res/layout/widget_row.xml b/astrid/res/layout/widget_row.xml new file mode 100644 index 000000000..602623a82 --- /dev/null +++ b/astrid/res/layout/widget_row.xml @@ -0,0 +1,14 @@ + + + + \ No newline at end of file diff --git a/astrid/res/layout/widget_separator.xml b/astrid/res/layout/widget_separator.xml new file mode 100644 index 000000000..1702d0bab --- /dev/null +++ b/astrid/res/layout/widget_separator.xml @@ -0,0 +1,8 @@ + + + \ No newline at end of file diff --git a/astrid/res/values/colors.xml b/astrid/res/values/colors.xml index 341e18b5d..29d486624 100644 --- a/astrid/res/values/colors.xml +++ b/astrid/res/values/colors.xml @@ -32,6 +32,14 @@ #292929 #000000 #262626 + + #535353 + #ffffff + #dde0e0e0 + #dd000000 + #ddffffff + #dd000000 + diff --git a/astrid/res/values/styles.xml b/astrid/res/values/styles.xml index 53f5dabd4..2cdf5d88f 100644 --- a/astrid/res/values/styles.xml +++ b/astrid/res/values/styles.xml @@ -395,8 +395,8 @@ diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java index 4ce42846f..58be1895d 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java @@ -703,6 +703,9 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, R.anim.slide_right_in, R.anim.slide_right_out); } getActivity().startActivity(getActivity().getIntent()); + ContextManager.getContext().startService( + new Intent(ContextManager.getContext(), + TasksWidget.WidgetUpdateService.class)); } else if (resultCode == SyncProviderPreferences.RESULT_CODE_SYNCHRONIZE) { Preferences.setLong(SyncActionHelper.PREF_LAST_AUTO_SYNC, 0); // Forces autosync to occur after login } diff --git a/astrid/src/com/todoroo/astrid/widget/TasksWidget.java b/astrid/src/com/todoroo/astrid/widget/TasksWidget.java index c88365f3c..90dc387dd 100644 --- a/astrid/src/com/todoroo/astrid/widget/TasksWidget.java +++ b/astrid/src/com/todoroo/astrid/widget/TasksWidget.java @@ -8,7 +8,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.graphics.Color; +import android.content.res.Resources; import android.os.Bundle; import android.os.IBinder; import android.util.DisplayMetrics; @@ -39,6 +39,7 @@ import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.TaskService; +import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.Constants; @@ -48,11 +49,6 @@ public class TasksWidget extends AppWidgetProvider { AstridDependencyInjector.initialize(); } - public final static int[] TEXT_IDS = { R.id.task_1, R.id.task_2, - R.id.task_3, R.id.task_4, R.id.task_5 }; - public final static int[] SEPARATOR_IDS = { R.id.separator_1, - R.id.separator_2, R.id.separator_3, R.id.separator_4 }; - @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { @@ -152,18 +148,16 @@ public class TasksWidget extends AppWidgetProvider { views = new RemoteViews(context.getPackageName(), R.layout.widget_initialized); - int[] textIDs = TEXT_IDS; - int[] separatorIDs = SEPARATOR_IDS; - int numberOfTasks = 5; + applyThemeToWidget(views); - for(int i = 0; i < textIDs.length; i++) - views.setTextViewText(textIDs[i], ""); + int numberOfTasks = getNumberOfTasks(); TodorooCursor cursor = null; Filter filter = null; try { filter = getFilter(widgetId); views.setTextViewText(R.id.widget_title, filter.title); + views.removeAllViews(R.id.taskbody); SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(this); int flags = publicPrefs.getInt(SortHelper.PREF_SORT_FLAGS, 0); @@ -174,12 +168,14 @@ public class TasksWidget extends AppWidgetProvider { database.openForReading(); cursor = taskService.fetchFiltered(query, null, Task.ID, Task.TITLE, Task.DUE_DATE, Task.COMPLETION_DATE); Task task = new Task(); - for (int i = 0; i < cursor.getCount() && i < numberOfTasks; i++) { + int i = 0; + for (i = 0; i < cursor.getCount() && i < numberOfTasks; i++) { cursor.moveToPosition(i); task.readFromCursor(cursor); String textContent = ""; - int textColor = Color.WHITE; + int textColor = context.getResources() + .getColor(isDarkTheme() ? R.color.widget_text_color_dark : R.color.widget_text_color_light); textContent = task.getValue(Task.TITLE); @@ -188,16 +184,22 @@ public class TasksWidget extends AppWidgetProvider { else if(task.hasDueDate() && task.getValue(Task.DUE_DATE) < DateUtilities.now()) textColor = context.getResources().getColor(R.color.task_list_overdue); - if(i > 0) - views.setViewVisibility(separatorIDs[i-1], View.VISIBLE); - views.setTextViewText(textIDs[i], textContent); - views.setTextColor(textIDs[i], textColor); - } + RemoteViews row = new RemoteViews(Constants.PACKAGE, R.layout.widget_row); + + row.setTextViewText(R.id.text, textContent); + row.setTextColor(R.id.text, textColor); + + views.addView(R.id.taskbody, row); - for(int i = cursor.getCount() - 1; i < separatorIDs.length; i++) { - if(i >= 0) - views.setViewVisibility(separatorIDs[i], View.INVISIBLE); + RemoteViews separator = new RemoteViews(Constants.PACKAGE, R.layout.widget_separator); + views.addView(R.id.taskbody, separator); } + for (; i < numberOfTasks; i++) { + RemoteViews row = new RemoteViews(Constants.PACKAGE, R.layout.widget_row); + row.setViewVisibility(R.id.text, View.INVISIBLE); + views.addView(R.id.taskbody, row); + } + } catch (Exception e) { // can happen if database is not ready Log.e("WIDGET-UPDATE", "Error updating widget", e); @@ -206,8 +208,6 @@ public class TasksWidget extends AppWidgetProvider { cursor.close(); } - updateForScreenSize(views); - Intent listIntent = new Intent(context, TaskListActivity.class); String customIntent = Preferences.getStringValue(WidgetConfigActivity.PREF_CUSTOM_INTENT + widgetId); @@ -255,17 +255,58 @@ public class TasksWidget extends AppWidgetProvider { return views; } - private void updateForScreenSize(RemoteViews views) { + private boolean isDarkTheme() { + int theme = ThemeService.getTheme(); + return (theme == R.style.Theme || theme == R.style.Theme_Transparent); + } + + @SuppressWarnings("nls") + private void applyThemeToWidget(RemoteViews views) { + int theme = ThemeService.getTheme(); + Resources r = getResources(); + int headerColor; + int titleColor; + int bodyColor; + int buttonDrawable; + int separatorColor; + if (isDarkTheme()) { + headerColor = r.getColor(R.color.widget_header_dark); + titleColor = r.getColor(R.color.widget_text_color_dark); + bodyColor = r.getColor(R.color.widget_body_dark); + buttonDrawable = R.drawable.plus_button_blue; + separatorColor = r.getColor(R.color.blue_theme_color); + } else if (theme == R.style.Theme_White) { + headerColor = r.getColor(R.color.widget_header_light); + titleColor = r.getColor(R.color.widget_text_color_light); + bodyColor = r.getColor(R.color.widget_body_light); + buttonDrawable = R.drawable.plus_button_red; + separatorColor = r.getColor(R.color.red_theme_color); + } else { + headerColor = r.getColor(R.color.widget_header_light); + titleColor = r.getColor(R.color.widget_text_color_light); + bodyColor = r.getColor(R.color.widget_body_light); + buttonDrawable = R.drawable.plus_button_dark_blue; + separatorColor = r.getColor(R.color.dark_blue_theme_color); + } + + views.setInt(R.id.widget_header, "setBackgroundColor", headerColor); + views.setTextColor(R.id.widget_title, titleColor); + views.setInt(R.id.taskbody, "setBackgroundColor", bodyColor); + views.setInt(R.id.widget_button, "setImageResource", buttonDrawable); + views.setInt(R.id.widget_header_separator, "setBackgroundColor", separatorColor); + } + + private int getNumberOfTasks() { Display display = ((WindowManager) this.getSystemService( Context.WINDOW_SERVICE)).getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); - if(metrics.density <= 0.75) { - views.setViewVisibility(SEPARATOR_IDS[3], View.INVISIBLE); - views.setViewVisibility(TEXT_IDS[4], View.INVISIBLE); - } + if(metrics.density <= 0.75) + return 4; + else + return 5; } private Filter getFilter(int widgetId) {