Set default google task list

pull/413/head
Alex Baker 10 years ago
parent 3cc6e7a527
commit 2e3d422509

@ -0,0 +1,8 @@
package org.tasks.injection;
import dagger.Subcomponent;
@Subcomponent(modules = DialogFragmentModule.class)
public interface DialogFragmentComponent extends BaseDialogFragmentComponent {
}

@ -0,0 +1,8 @@
package org.tasks.injection;
import dagger.Subcomponent;
@Subcomponent(modules = DialogFragmentModule.class)
public interface DialogFragmentComponent extends BaseDialogFragmentComponent {
}

@ -5,6 +5,7 @@
*/
package com.todoroo.astrid.gtasks;
import android.app.FragmentManager;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
@ -16,6 +17,7 @@ import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity;
import org.tasks.R;
import org.tasks.activities.ClearGtaskDataActivity;
import org.tasks.activities.GoogleTaskListSelectionDialog;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingPreferenceActivity;
import org.tasks.preferences.ActivityPermissionRequestor;
@ -24,7 +26,9 @@ import org.tasks.scheduling.BackgroundScheduler;
import javax.inject.Inject;
public class GtasksPreferences extends InjectingPreferenceActivity {
public class GtasksPreferences extends InjectingPreferenceActivity implements GoogleTaskListSelectionDialog.GoogleTaskListSelectionHandler {
private static final String FRAG_TAG_GOOGLE_TASK_LIST_SELECTION = "frag_tag_google_task_list_selection";
private static final int REQUEST_LOGIN = 0;
private static final int REQUEST_LOGOUT = 1;
@ -32,6 +36,7 @@ public class GtasksPreferences extends InjectingPreferenceActivity {
@Inject GtasksPreferenceService gtasksPreferenceService;
@Inject BackgroundScheduler backgroundScheduler;
@Inject ActivityPermissionRequestor permissionRequestor;
@Inject GtasksListService gtasksListService;
@Override
public void onCreate(Bundle savedInstanceState) {
@ -67,6 +72,19 @@ public class GtasksPreferences extends InjectingPreferenceActivity {
return true;
}
});
getPref(R.string.p_gtasks_default_list).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
FragmentManager fragmentManager = getFragmentManager();
GoogleTaskListSelectionDialog dialog = (GoogleTaskListSelectionDialog) fragmentManager.findFragmentByTag(FRAG_TAG_GOOGLE_TASK_LIST_SELECTION);
if (dialog == null) {
dialog = new GoogleTaskListSelectionDialog();
dialog.show(fragmentManager, FRAG_TAG_GOOGLE_TASK_LIST_SELECTION);
}
return false;
}
});
updateDefaultGoogleTaskList();
}
private void requestLogin() {
@ -107,4 +125,18 @@ public class GtasksPreferences extends InjectingPreferenceActivity {
public void inject(ActivityComponent component) {
component.inject(this);
}
@Override
public void selectedList(GtasksList list) {
String listId = list.getRemoteId();
gtasksPreferenceService.setDefaultList(listId);
updateDefaultGoogleTaskList();
}
private void updateDefaultGoogleTaskList() {
GtasksList list = gtasksListService.getList(gtasksPreferenceService.getDefaultList());
if (list != null) {
getPref(R.string.p_gtasks_default_list).setSummary(list.getName());
}
}
}

@ -139,6 +139,9 @@ public class GtasksSyncV2Provider {
nextPageToken = remoteLists.getNextPageToken();
} while (nextPageToken != null);
gtasksListService.updateLists(gtaskLists);
if (gtasksListService.getList(gtasksPreferenceService.getDefaultList()) == null) {
gtasksPreferenceService.setDefaultList(null);
}
} catch (IOException e) {
handler.handleException(e);
}

@ -0,0 +1,70 @@
package org.tasks.activities;
import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import com.google.common.base.Function;
import com.todoroo.astrid.gtasks.GtasksList;
import com.todoroo.astrid.gtasks.GtasksListService;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.DialogFragmentComponent;
import org.tasks.injection.InjectingDialogFragment;
import java.util.List;
import javax.inject.Inject;
import static com.google.common.collect.Lists.transform;
public class GoogleTaskListSelectionDialog extends InjectingDialogFragment {
public interface GoogleTaskListSelectionHandler {
void selectedList(GtasksList list);
}
@Inject DialogBuilder dialogBuilder;
@Inject GtasksListService gtasksListService;
private GoogleTaskListSelectionHandler handler;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final List<GtasksList> lists = gtasksListService.getLists();
List<String> listNames = transform(lists, new Function<GtasksList, String>() {
@Override
public String apply(GtasksList gtasksList) {
return gtasksList.getName();
}
});
return dialogBuilder.newDialog()
.setItems(listNames.toArray(new String[listNames.size()]), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.selectedList(lists.get(which));
dialog.dismiss();
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.show();
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
handler = (GoogleTaskListSelectionHandler) activity;
}
@Override
protected void inject(DialogFragmentComponent component) {
component.inject(this);
}
}

@ -0,0 +1,12 @@
package org.tasks.injection;
import org.tasks.activities.GoogleTaskListSelectionDialog;
import dagger.Subcomponent;
@Subcomponent(modules = DialogFragmentModule.class)
public interface DialogFragmentComponent extends BaseDialogFragmentComponent {
void inject(GoogleTaskListSelectionDialog googleTaskListSelectionDialog);
}

@ -7,4 +7,5 @@
<string name="sku_themes">themes</string>
<string name="p_dashclock_filter">dashclock_filter</string>
<string name="tasker_message">If you purchased the stand-alone Tasker plugin please send your Google Play Store transaction ID to support@tasks.org and you will receive a promo code for this in-app purchase. You can find the transaction ID in your Google Play Store order confirmation e-mail or by visiting wallet.google.com</string>
<string name="p_gtasks_default_list">default_gtasks_list</string>
</resources>

@ -95,4 +95,11 @@ public class GtasksList {
public int hashCode() {
return storeObject != null ? storeObject.hashCode() : 0;
}
@Override
public String toString() {
return "GtasksList{" +
"storeObject=" + storeObject +
'}';
}
}

@ -46,7 +46,7 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final List<AndroidCalendar> calendars = calendarProvider.getCalendars();
final List<AndroidCalendar> calendars = calendarProvider. getCalendars();
List<String> calendarNames = transform(calendars, new Function<AndroidCalendar, String>() {
@Override
public String apply(AndroidCalendar androidCalendar) {

@ -1,20 +1,16 @@
package org.tasks.injection;
import org.tasks.dialogs.SortDialog;
import org.tasks.dialogs.ThemePickerDialog;
import org.tasks.widget.WidgetConfigDialog;
import org.tasks.activities.CalendarSelectionDialog;
import org.tasks.dialogs.AccountSelectionDialog;
import org.tasks.dialogs.AddAttachmentDialog;
import org.tasks.dialogs.SortDialog;
import org.tasks.dialogs.ThemePickerDialog;
import org.tasks.reminders.MissedCallDialog;
import org.tasks.reminders.NotificationDialog;
import org.tasks.reminders.SnoozeDialog;
import org.tasks.widget.WidgetConfigDialog;
import dagger.Subcomponent;
@Subcomponent(modules = DialogFragmentModule.class)
public interface DialogFragmentComponent {
public interface BaseDialogFragmentComponent {
void inject(NotificationDialog notificationDialog);
void inject(MissedCallDialog missedCallDialog);

@ -13,6 +13,11 @@
android:key="@string/sync_gtasks"
android:title="@string/enabled" />
<Preference
android:dependency="@string/sync_gtasks"
android:key="@string/p_gtasks_default_list"
android:title="@string/default_list" />
<com.todoroo.astrid.ui.MultilineListPreference
android:defaultValue="0"
android:dependency="@string/sync_gtasks"

Loading…
Cancel
Save