Skip to content

Commit

Permalink
fixed widget bugs concerning important items
Browse files Browse the repository at this point in the history
  • Loading branch information
Dominik Jülg committed Oct 23, 2017
1 parent aa3fc85 commit 714ec5b
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ public String getDetails() {
return details;
}

public boolean hasDetails() {
return !details.isEmpty();
}

public boolean isDone() {
return done;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import de.djuelg.neuronizer.domain.repository.TodoListRepository;
import de.djuelg.neuronizer.storage.TodoListRepositoryImpl;

import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import static de.djuelg.neuronizer.presentation.ui.Constants.KEY_TODO_LIST;
import static de.djuelg.neuronizer.presentation.ui.Constants.KEY_UUID;
Expand Down Expand Up @@ -83,65 +82,53 @@ public RemoteViews getLoadingView() {
public RemoteViews getViewAt(int position) {
if (position >= itemList.size()) return null;

RemoteViews remoteViews;
BaseModel listItem = itemList.get(position);
if (listItem instanceof TodoListItem) {
remoteViews = setupItem((TodoListItem) listItem);
} else {
remoteViews = setupHeader((TodoListHeader) listItem);
if (listItem instanceof TodoListHeader) {
return remoteViewsFor((TodoListHeader) listItem);
}
return remoteViewsFor((TodoListItem) listItem);
}

private RemoteViews remoteViewsFor(TodoListHeader item) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_todo_list_header);
remoteViews.setTextViewText(R.id.widget_todo_list_header_title, item.getTitle());
return remoteViews;
}

private RemoteViews setupItem(TodoListItem item) {
private RemoteViews remoteViewsFor(TodoListItem item) {
RemoteViews remoteViews = new RemoteViews(
context.getPackageName(), R.layout.widget_todo_list_item);

displayIfItemIsImportant(remoteViews, item);
displayIfItemHasDetails(remoteViews, item);
displayIfItemIsDone(remoteViews, item);
applyDefaultViewOn(remoteViews);
SpannableString title = new SpannableString(item.getTitle());
if (item.isImportant()) applyImportanceViewOn(remoteViews, title);
if (item.isDone()) applyDoneViewOn(remoteViews, title);
if (item.hasDetails()) applyDetailViewOn(remoteViews);
remoteViews.setTextViewText(R.id.widget_todo_list_item_title, title);

return remoteViews;
}

private void displayIfItemIsDone(RemoteViews remoteViews, TodoListItem item) {
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
SpannableString title = new SpannableString(item.getTitle());

if (item.isDone()) {
remoteViews.setTextColor(R.id.widget_todo_list_item_title, context.getResources().getColor(R.color.light_gray));
title.setSpan(strikethroughSpan, 0, title.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
remoteViews.setImageViewResource(R.id.widget_todo_list_item_details, R.drawable.ic_lightbulb_outline_light_gray_24dp);
}
remoteViews.setTextViewText(R.id.widget_todo_list_item_title, title);
private void applyDefaultViewOn(RemoteViews remoteViews) {
remoteViews.setTextColor(R.id.widget_todo_list_item_title, context.getResources().getColor(R.color.dark_gray));
remoteViews.setImageViewResource(R.id.widget_todo_list_item_details, R.drawable.ic_lightbulb_outline_gray_24dp);
}

private void displayIfItemHasDetails(RemoteViews remoteViews, TodoListItem item) {
if (item.getDetails().isEmpty()) {
remoteViews.setViewVisibility(R.id.widget_todo_list_item_details, GONE);
} else {
remoteViews.setViewVisibility(R.id.widget_todo_list_item_details, VISIBLE);
}
private void applyImportanceViewOn(RemoteViews remoteViews, SpannableString title) {
title.setSpan(new StyleSpan(Typeface.BOLD), 0, title.length(), 0);
remoteViews.setTextColor(R.id.widget_todo_list_item_title, context.getResources().getColor(R.color.colorPrimary));
remoteViews.setImageViewResource(R.id.widget_todo_list_item_details, R.drawable.ic_lightbulb_outline_primary_24dp);
}

private void displayIfItemIsImportant(RemoteViews remoteViews, TodoListItem item) {
SpannableString title = new SpannableString(item.getTitle());
if (item.isImportant()) {
title.setSpan(new StyleSpan(Typeface.BOLD), 0, title.length(), 0);
remoteViews.setTextColor(R.id.widget_todo_list_item_title, context.getResources().getColor(R.color.colorPrimary));
remoteViews.setImageViewResource(R.id.widget_todo_list_item_details, R.drawable.ic_lightbulb_outline_primary_24dp);
} else {
title.setSpan(new StyleSpan(Typeface.NORMAL), 0, title.length(), 0);
remoteViews.setTextColor(R.id.widget_todo_list_item_title, context.getResources().getColor(R.color.dark_gray));
remoteViews.setImageViewResource(R.id.widget_todo_list_item_details, R.drawable.ic_lightbulb_outline_gray_24dp);
}
remoteViews.setTextViewText(R.id.widget_todo_list_item_title, title);
private void applyDoneViewOn(RemoteViews remoteViews, SpannableString title) {
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
title.setSpan(strikethroughSpan, 0, title.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
remoteViews.setTextColor(R.id.widget_todo_list_item_title, context.getResources().getColor(R.color.light_gray));
remoteViews.setImageViewResource(R.id.widget_todo_list_item_details, R.drawable.ic_lightbulb_outline_light_gray_24dp);
}

private RemoteViews setupHeader(TodoListHeader item) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_todo_list_header);
remoteViews.setTextViewText(R.id.widget_todo_list_header_title, item.getTitle());
return remoteViews;
private void applyDetailViewOn(RemoteViews remoteViews) {
remoteViews.setViewVisibility(R.id.widget_todo_list_item_details, VISIBLE);
}

@Override
Expand Down
15 changes: 8 additions & 7 deletions app/src/main/res/layout/widget_todo_list_item.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="@dimen/widget_item_height"
android:orientation="horizontal"
android:background="@android:color/white"
xmlns:android="http:https://schemas.android.com/apk/res/android">
<LinearLayout xmlns:app="http:https://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="@dimen/widget_item_height"
android:orientation="horizontal"
android:background="@android:color/white"
xmlns:android="http:https://schemas.android.com/apk/res/android">

<TextView
android:id="@+id/widget_todo_list_item_title"
Expand All @@ -28,6 +29,6 @@
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="@dimen/standard_normal"
android:layout_marginStart="@dimen/standard_normal"
android:src="@drawable/ic_lightbulb_outline_gray_24dp" />
app:srcCompat="@drawable/ic_lightbulb_outline_gray_24dp" />

</LinearLayout>

0 comments on commit 714ec5b

Please sign in to comment.