Add option to hide checkboxes in widget

Closes #103
pull/253/head
Alex Baker 9 years ago
parent 2127fc2449
commit fe3d6ee1ea

@ -359,6 +359,10 @@ public class AndroidUtilities {
return !atLeastIceCreamSandwich(); return !atLeastIceCreamSandwich();
} }
public static boolean preHoneycomb() {
return !atLeastHoneycomb();
}
public static boolean atLeastFroyo() { public static boolean atLeastFroyo() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO; return Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO;
} }

@ -30,6 +30,7 @@ import org.tasks.widget.WidgetHelper;
import javax.inject.Inject; import javax.inject.Inject;
import static com.todoroo.andlib.utility.AndroidUtilities.preHoneycomb;
import static com.todoroo.andlib.utility.AndroidUtilities.preIceCreamSandwich; import static com.todoroo.andlib.utility.AndroidUtilities.preIceCreamSandwich;
public class WidgetConfigActivity extends InjectingListActivity { public class WidgetConfigActivity extends InjectingListActivity {
@ -40,7 +41,8 @@ public class WidgetConfigActivity extends InjectingListActivity {
public static final String PREF_CUSTOM_INTENT = "widget-intent-"; public static final String PREF_CUSTOM_INTENT = "widget-intent-";
public static final String PREF_CUSTOM_EXTRAS = "widget-extras-"; public static final String PREF_CUSTOM_EXTRAS = "widget-extras-";
public static final String PREF_TAG_ID = "widget-tag-id-"; public static final String PREF_TAG_ID = "widget-tag-id-";
public static final String PREF_DUE_DATE = "widget-due-date-"; public static final String PREF_SHOW_DUE_DATE = "widget-show-due-date-";
public static final String PREF_HIDE_CHECKBOXES = "widget-hide-checkboxes-";
public static final String PREF_DARK_THEME = "widget-dark-theme-"; public static final String PREF_DARK_THEME = "widget-dark-theme-";
int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
@ -75,6 +77,10 @@ public class WidgetConfigActivity extends InjectingListActivity {
// Set the view layout resource to use. // Set the view layout resource to use.
setContentView(R.layout.widget_config_activity); setContentView(R.layout.widget_config_activity);
if (preHoneycomb()) {
findViewById(R.id.hideCheckboxes).setVisibility(View.GONE);
}
setTitle(R.string.WCA_title); setTitle(R.string.WCA_title);
// Find the widget id from the intent. // Find the widget id from the intent.
@ -101,9 +107,11 @@ public class WidgetConfigActivity extends InjectingListActivity {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
// Save configuration options // Save configuration options
CheckBox showDueDate = (CheckBox) findViewById(R.id.showDueDate); CheckBox hideDueDate = (CheckBox) findViewById(R.id.hideDueDate);
CheckBox darkTheme = (CheckBox) findViewById(R.id.darkTheme); CheckBox darkTheme = (CheckBox) findViewById(R.id.darkTheme);
saveConfiguration(adapter.getSelection(), showDueDate.isChecked(), darkTheme.isChecked()); CheckBox hideCheckboxes = (CheckBox) findViewById(R.id.hideCheckboxes);
saveConfiguration(adapter.getSelection(), !hideDueDate.isChecked(),
darkTheme.isChecked(), hideCheckboxes.isChecked());
updateWidget(); updateWidget();
@ -136,7 +144,7 @@ public class WidgetConfigActivity extends InjectingListActivity {
adapter.unregisterRecevier(); adapter.unregisterRecevier();
} }
private void saveConfiguration(FilterListItem filterListItem, boolean showDueDate, boolean darkTheme){ private void saveConfiguration(FilterListItem filterListItem, boolean showDueDate, boolean darkTheme, boolean hideCheckboxes){
DisplayMetrics metrics = new DisplayMetrics(); DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics); getWindowManager().getDefaultDisplay().getMetrics(metrics);
@ -156,8 +164,9 @@ public class WidgetConfigActivity extends InjectingListActivity {
preferences.setString(WidgetConfigActivity.PREF_TITLE + mAppWidgetId, title); preferences.setString(WidgetConfigActivity.PREF_TITLE + mAppWidgetId, title);
preferences.setString(WidgetConfigActivity.PREF_SQL + mAppWidgetId, sql); preferences.setString(WidgetConfigActivity.PREF_SQL + mAppWidgetId, sql);
preferences.setString(WidgetConfigActivity.PREF_VALUES + mAppWidgetId, contentValuesString); preferences.setString(WidgetConfigActivity.PREF_VALUES + mAppWidgetId, contentValuesString);
preferences.setBoolean(WidgetConfigActivity.PREF_DUE_DATE + mAppWidgetId, showDueDate); preferences.setBoolean(WidgetConfigActivity.PREF_SHOW_DUE_DATE + mAppWidgetId, showDueDate);
preferences.setBoolean(WidgetConfigActivity.PREF_DARK_THEME + mAppWidgetId, darkTheme); preferences.setBoolean(WidgetConfigActivity.PREF_DARK_THEME + mAppWidgetId, darkTheme);
preferences.setBoolean(WidgetConfigActivity.PREF_HIDE_CHECKBOXES + mAppWidgetId, hideCheckboxes);
if(filterListItem instanceof FilterWithCustomIntent) { if(filterListItem instanceof FilterWithCustomIntent) {
String flattenedName = ((FilterWithCustomIntent)filterListItem).customTaskList.flattenToString(); String flattenedName = ((FilterWithCustomIntent)filterListItem).customTaskList.flattenToString();

@ -120,7 +120,7 @@ public class WidgetUpdateService extends InjectingService {
filter.getSqlQuery(), flags, sort).replaceAll("LIMIT \\d+", "") + " LIMIT " + numberOfTasks; filter.getSqlQuery(), flags, sort).replaceAll("LIMIT \\d+", "") + " LIMIT " + numberOfTasks;
String tagName = preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId); String tagName = preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId);
boolean showDueDates = preferences.getBoolean(WidgetConfigActivity.PREF_DUE_DATE + widgetId, false); boolean showDueDates = preferences.getBoolean(WidgetConfigActivity.PREF_SHOW_DUE_DATE + widgetId, false);
query = subtasksHelper.applySubtasksToWidgetFilter(filter, query, tagName, numberOfTasks); query = subtasksHelper.applySubtasksToWidgetFilter(filter, query, tagName, numberOfTasks);
database.openForReading(); database.openForReading();

@ -8,6 +8,7 @@ import android.content.res.Resources;
import android.graphics.Paint; import android.graphics.Paint;
import android.os.Build; import android.os.Build;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View;
import android.widget.RemoteViews; import android.widget.RemoteViews;
import android.widget.RemoteViewsService; import android.widget.RemoteViewsService;
@ -46,6 +47,7 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac
private final int widgetId; private final int widgetId;
private final boolean dark; private final boolean dark;
private final boolean showDueDates; private final boolean showDueDates;
private final boolean hideCheckboxes;
private final DueDateFormatter dueDateFormatter; private final DueDateFormatter dueDateFormatter;
private TodorooCursor<Task> cursor; private TodorooCursor<Task> cursor;
@ -68,7 +70,8 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac
dueDateFormatter = new DueDateFormatter(context); dueDateFormatter = new DueDateFormatter(context);
dark = preferences.getBoolean(WidgetConfigActivity.PREF_DARK_THEME + widgetId, false); dark = preferences.getBoolean(WidgetConfigActivity.PREF_DARK_THEME + widgetId, false);
showDueDates = preferences.getBoolean(WidgetConfigActivity.PREF_DUE_DATE + widgetId, false); showDueDates = preferences.getBoolean(WidgetConfigActivity.PREF_SHOW_DUE_DATE + widgetId, false);
hideCheckboxes = preferences.getBoolean(WidgetConfigActivity.PREF_HIDE_CHECKBOXES + widgetId, false);
} }
@Override @Override
@ -168,10 +171,14 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac
editIntent.putExtra(TaskListActivity.OPEN_TASK, task.getId()); editIntent.putExtra(TaskListActivity.OPEN_TASK, task.getId());
row.setOnClickFillInIntent(R.id.text, editIntent); row.setOnClickFillInIntent(R.id.text, editIntent);
if (hideCheckboxes) {
row.setViewVisibility(R.id.completeBox, View.GONE);
} else {
Intent completeIntent = new Intent(); Intent completeIntent = new Intent();
completeIntent.setAction(TasksWidget.COMPLETE_TASK); completeIntent.setAction(TasksWidget.COMPLETE_TASK);
completeIntent.putExtra(TaskEditFragment.TOKEN_ID, task.getId()); completeIntent.putExtra(TaskEditFragment.TOKEN_ID, task.getId());
row.setOnClickFillInIntent(R.id.completeBox, completeIntent); row.setOnClickFillInIntent(R.id.completeBox, completeIntent);
}
return row; return row;
} catch (Exception e) { } catch (Exception e) {

@ -10,9 +10,19 @@
<CheckBox <CheckBox
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:checked="true" android:checked="false"
android:id="@+id/showDueDate" android:id="@+id/hideDueDate"
android:text="@string/widget_show_due_date" android:text="@string/widget_hide_due_date"
android:textSize="18sp"
android:paddingTop="10dp"
android:paddingBottom="10dp" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:checked="false"
android:id="@+id/hideCheckboxes"
android:text="@string/widget_hide_checkboxes"
android:textSize="18sp" android:textSize="18sp"
android:paddingTop="10dp" android:paddingTop="10dp"
android:paddingBottom="10dp" /> android:paddingBottom="10dp" />

@ -113,7 +113,8 @@
<!-- Sync error: network connectivity problems. %s-> name of sync service--> <!-- Sync error: network connectivity problems. %s-> name of sync service-->
<string name="sync_error_offline">There was a problem connecting to the network <string name="sync_error_offline">There was a problem connecting to the network
during the last sync with %s. Please try again later.</string> during the last sync with %s. Please try again later.</string>
<string name="widget_show_due_date">Show due date</string> <string name="widget_hide_due_date">Hide due dates</string>
<string name="widget_hide_checkboxes">Hide checkboxes</string>
<string-array name="sync_SPr_interval_entries"> <string-array name="sync_SPr_interval_entries">
<!-- sync_SPr_interval_entries: Synchronization Intervals --> <!-- sync_SPr_interval_entries: Synchronization Intervals -->

Loading…
Cancel
Save