Skip to content

Commit 64c7008

Browse files
committed
#9 Add "Add Task" Button. This button appears only when at least one Tasks list selected. The same for "Add new Calendar event" button.
1 parent a6ac00a commit 64c7008

9 files changed

+51
-9
lines changed

app/src/main/java/org/andstatus/todoagenda/EnvironmentChangedReceiver.java

+9-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import org.andstatus.todoagenda.prefs.AllSettings;
1717
import org.andstatus.todoagenda.prefs.InstanceSettings;
1818
import org.andstatus.todoagenda.provider.EventProviderType;
19-
import org.andstatus.todoagenda.util.CalendarIntentUtil;
2019
import org.andstatus.todoagenda.util.DateUtil;
2120
import org.andstatus.todoagenda.util.PermissionsUtil;
2221
import org.andstatus.todoagenda.util.StringUtil;
@@ -142,9 +141,17 @@ public void onReceive(Context context, Intent intent) {
142141
gotoToday(context, widgetId);
143142
break;
144143
case RemoteViewsFactory.ACTION_ADD_CALENDAR_EVENT:
145-
Intent addCalendarEvent = CalendarIntentUtil.newAddCalendarEventIntent(settings.clock().getZone());
144+
Intent addCalendarEvent = settings.getFirstSource(true).source.providerType
145+
.getEventProvider(context, widgetId)
146+
.getAddEventIntent();
146147
startActivity(context, addCalendarEvent, action, widgetId, "Add calendar event");
147148
break;
149+
case RemoteViewsFactory.ACTION_ADD_TASK:
150+
Intent addTask = settings.getFirstSource(false).source.providerType
151+
.getEventProvider(context, widgetId)
152+
.getAddEventIntent();
153+
startActivity(context, addTask, action, widgetId,"Add task");
154+
break;
148155
case RemoteViewsFactory.ACTION_CONFIGURE:
149156
Intent configure = MainActivity.intentToConfigure(context, widgetId);
150157
startActivity(context, configure, action, widgetId, "Open widget Settings");

app/src/main/java/org/andstatus/todoagenda/RemoteViewsFactory.java

+19-2
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77
import android.net.Uri;
88
import android.util.Log;
99
import android.view.ContextThemeWrapper;
10+
import android.view.View;
1011
import android.widget.RemoteViews;
1112
import android.widget.RemoteViewsService;
1213

1314
import androidx.annotation.NonNull;
1415

1516
import org.andstatus.todoagenda.prefs.AllSettings;
1617
import org.andstatus.todoagenda.prefs.InstanceSettings;
18+
import org.andstatus.todoagenda.prefs.OrderedEventSource;
1719
import org.andstatus.todoagenda.prefs.TextShadingPref;
1820
import org.andstatus.todoagenda.provider.EventProviderType;
1921
import org.andstatus.todoagenda.util.InstanceId;
@@ -58,7 +60,7 @@ public class RemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory
5860
static final String ACTION_OPEN_CALENDAR = PACKAGE + ".action.OPEN_CALENDAR";
5961
static final String ACTION_GOTO_TODAY = PACKAGE + ".action.GOTO_TODAY";
6062
static final String ACTION_ADD_CALENDAR_EVENT = PACKAGE + ".action.ADD_CALENDAR_EVENT";
61-
static final String ACTION_ADD_TASK = PACKAGE + ".action.GOTO_TODAY";
63+
static final String ACTION_ADD_TASK = PACKAGE + ".action.ADD_TASK";
6264
static final String ACTION_VIEW_ENTRY = PACKAGE + ".action.VIEW_ENTRY";
6365
static final String ACTION_REFRESH = PACKAGE + ".action.REFRESH";
6466
public static final String ACTION_CONFIGURE = PACKAGE + ".action.CONFIGURE";
@@ -343,6 +345,7 @@ private static void configureWidgetHeader(InstanceSettings settings, RemoteViews
343345
setActionIcons(settings, rv);
344346
configureGotoToday(settings, rv);
345347
configureAddCalendarEvent(settings, rv);
348+
configureAddTask(settings, rv);
346349
configureRefresh(settings, rv);
347350
configureOverflowMenu(settings, rv);
348351
}
@@ -379,7 +382,21 @@ private static void setActionIcons(InstanceSettings settings, RemoteViews rv) {
379382
}
380383

381384
private static void configureAddCalendarEvent(InstanceSettings settings, RemoteViews rv) {
382-
rv.setOnClickPendingIntent(R.id.add_event, getActionPendingIntent(settings, ACTION_ADD_CALENDAR_EVENT));
385+
if (settings.getFirstSource(true) == OrderedEventSource.EMPTY) {
386+
rv.setViewVisibility(R.id.add_event, View.GONE);
387+
} else {
388+
rv.setViewVisibility(R.id.add_event, View.VISIBLE);
389+
rv.setOnClickPendingIntent(R.id.add_event, getActionPendingIntent(settings, ACTION_ADD_CALENDAR_EVENT));
390+
}
391+
}
392+
393+
private static void configureAddTask(InstanceSettings settings, RemoteViews rv) {
394+
if (settings.getFirstSource(false) == OrderedEventSource.EMPTY) {
395+
rv.setViewVisibility(R.id.add_task, View.GONE);
396+
} else {
397+
rv.setViewVisibility(R.id.add_task, View.VISIBLE);
398+
rv.setOnClickPendingIntent(R.id.add_task, getActionPendingIntent(settings, ACTION_ADD_TASK));
399+
}
383400
}
384401

385402
private static void configureRefresh(InstanceSettings settings, RemoteViews rv) {

app/src/main/java/org/andstatus/todoagenda/calendar/CalendarEventProvider.java

+5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.andstatus.todoagenda.prefs.OrderedEventSource;
1717
import org.andstatus.todoagenda.provider.EventProvider;
1818
import org.andstatus.todoagenda.provider.EventProviderType;
19+
import org.andstatus.todoagenda.util.CalendarIntentUtil;
1920
import org.andstatus.todoagenda.util.IntentUtil;
2021
import org.andstatus.todoagenda.util.MyClock;
2122
import org.joda.time.DateTime;
@@ -240,4 +241,8 @@ public Intent newViewEventIntent(CalendarEvent event) {
240241
return intent;
241242
}
242243

244+
@Override
245+
public Intent getAddEventIntent() {
246+
return CalendarIntentUtil.newAddCalendarEventIntent(getSettings().clock().getZone());
247+
}
243248
}

app/src/main/java/org/andstatus/todoagenda/prefs/InstanceSettings.java

+9
Original file line numberDiff line numberDiff line change
@@ -774,6 +774,15 @@ public OrderedEventSource getActiveEventSource(EventProviderType type, int sourc
774774
return OrderedEventSource.EMPTY;
775775
}
776776

777+
public OrderedEventSource getFirstSource(boolean isCalendar) {
778+
for(OrderedEventSource orderedSource: getActiveEventSources()) {
779+
if (orderedSource.source.providerType.isCalendar == isCalendar) {
780+
return orderedSource;
781+
}
782+
}
783+
return OrderedEventSource.EMPTY;
784+
}
785+
777786
public InstanceSettings asForWidget(Context context, int targetWidgetId) {
778787
String newName = AllSettings.uniqueInstanceName(context, targetWidgetId, widgetInstanceName);
779788
return new InstanceSettings(context, targetWidgetId, newName).setFromJson(toJson());

app/src/main/java/org/andstatus/todoagenda/provider/EventProvider.java

+6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package org.andstatus.todoagenda.provider;
22

33
import android.content.Context;
4+
import android.content.Intent;
45
import android.database.Cursor;
56

67
import androidx.annotation.NonNull;
78

9+
import org.andstatus.todoagenda.MainActivity;
810
import org.andstatus.todoagenda.prefs.EventSource;
911
import org.andstatus.todoagenda.prefs.FilterMode;
1012
import org.andstatus.todoagenda.prefs.InstanceSettings;
@@ -82,4 +84,8 @@ public Try<List<EventSource>> fetchAvailableSources() {
8284
protected FilterMode getFilterMode() {
8385
return getSettings().getFilterMode();
8486
}
87+
88+
public Intent getAddEventIntent() {
89+
return MainActivity.intentToConfigure(context, widgetId);
90+
}
8591
}

app/src/main/java/org/andstatus/todoagenda/task/AbstractTaskProvider.java

-2
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,4 @@ protected boolean matchedFilter(TaskEvent task) {
5959
}
6060

6161
public abstract Intent newViewEventIntent(TaskEvent event);
62-
63-
public abstract Intent getAddTaskIntent();
6462
}

app/src/main/java/org/andstatus/todoagenda/task/astrid/AstridCloneTasksProvider.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ final public Intent newViewEventIntent(TaskEvent event) {
180180
}
181181

182182
@Override
183-
public Intent getAddTaskIntent() {
183+
public Intent getAddEventIntent() {
184184
return ADD_TASK_INTENT;
185185
}
186186
}

app/src/main/java/org/andstatus/todoagenda/task/dmfs/DmfsOpenTasksProvider.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public Intent newViewEventIntent(TaskEvent event) {
157157
}
158158

159159
@Override
160-
public Intent getAddTaskIntent() {
160+
public Intent getAddEventIntent() {
161161
return ADD_TASK_INTENT;
162162
}
163163
}

app/src/main/java/org/andstatus/todoagenda/task/samsung/SamsungTasksProvider.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ private int getColor(Cursor cursor, int colorIdx, int accountId) {
150150
}
151151

152152
@Override
153-
public Intent getAddTaskIntent() {
153+
public Intent getAddEventIntent() {
154154
return ADD_TASK_INTENT;
155155
}
156156
}

0 commit comments

Comments
 (0)