diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java b/app/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java index 1b5e99a30..5d63a998c 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java @@ -18,6 +18,7 @@ import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.FrameLayout; +import com.todoroo.astrid.api.CaldavFilter; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.GtasksFilter; @@ -38,6 +39,9 @@ import org.tasks.R; import org.tasks.activities.TagSettingsActivity; import org.tasks.analytics.Tracker; import org.tasks.analytics.Tracking; +import org.tasks.caldav.CaldavListFragment; +import org.tasks.data.CaldavAccount; +import org.tasks.data.CaldavDao; import org.tasks.data.GoogleTaskList; import org.tasks.data.TagData; import org.tasks.data.TagDataDao; @@ -97,6 +101,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements @Inject Tracker tracker; @Inject TaskCreator taskCreator; @Inject TaskDao taskDao; + @Inject CaldavDao caldavDao; @Inject LocalBroadcastManager localBroadcastManager; @BindView(R.id.drawer_layout) DrawerLayout drawerLayout; @@ -330,6 +335,12 @@ public class TaskListActivity extends InjectingAppCompatActivity implements ? GtasksSubtaskListFragment.newGtasksSubtaskListFragment(gtasksFilter, list) : GtasksListFragment.newGtasksListFragment(gtasksFilter, list); } + } else if (filter instanceof CaldavFilter) { + CaldavFilter caldavFilter = (CaldavFilter) filter; + CaldavAccount account = caldavDao.getByUuid(caldavFilter.getUuid()); + if (account != null) { + return CaldavListFragment.newCaldavListFragment(caldavFilter, account); + } } else if (filter != null) { return subtasksHelper.shouldUseSubtasksFragmentForFilter(filter) ? SubtasksListFragment.newSubtasksListFragment(filter) diff --git a/app/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.java b/app/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.java index 8e0bb6130..6187b6575 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.java +++ b/app/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.java @@ -315,6 +315,8 @@ public class FilterAdapter extends ArrayAdapter { } } + addSubMenu(R.string.CalDAV, filterProvider.getCalDAVFilters(), false); + if (navigationDrawer) { add(new NavigationDrawerSeparator()); diff --git a/app/src/main/java/org/tasks/caldav/CaldavListFragment.java b/app/src/main/java/org/tasks/caldav/CaldavListFragment.java new file mode 100644 index 000000000..fd0ced12d --- /dev/null +++ b/app/src/main/java/org/tasks/caldav/CaldavListFragment.java @@ -0,0 +1,56 @@ +package org.tasks.caldav; + +import android.os.Bundle; +import android.support.v7.widget.Toolbar; + +import com.todoroo.astrid.activity.TaskListFragment; +import com.todoroo.astrid.api.CaldavFilter; + +import org.tasks.R; +import org.tasks.data.CaldavAccount; +import org.tasks.injection.FragmentComponent; + +public class CaldavListFragment extends TaskListFragment { + + public static TaskListFragment newCaldavListFragment(CaldavFilter filter, CaldavAccount account) { + CaldavListFragment fragment = new CaldavListFragment(); + fragment.filter = filter; + fragment.account = account; + return fragment; + } + + private static final String EXTRA_CALDAV_ACCOUNT = "extra_caldav_account"; + + protected CaldavAccount account; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (savedInstanceState != null) { + this.account = savedInstanceState.getParcelable(EXTRA_CALDAV_ACCOUNT); + } + } + + @Override + protected void inflateMenu(Toolbar toolbar) { + super.inflateMenu(toolbar); + toolbar.inflateMenu(R.menu.menu_caldav_list_fragment); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putParcelable(EXTRA_CALDAV_ACCOUNT, account); + } + + @Override + protected boolean hasDraggableOption() { + return false; + } + + @Override + public void inject(FragmentComponent component) { + component.inject(this); + } +} diff --git a/app/src/main/java/org/tasks/injection/FragmentComponent.java b/app/src/main/java/org/tasks/injection/FragmentComponent.java index f45243af4..c11cca762 100644 --- a/app/src/main/java/org/tasks/injection/FragmentComponent.java +++ b/app/src/main/java/org/tasks/injection/FragmentComponent.java @@ -13,6 +13,7 @@ import com.todoroo.astrid.ui.EditTitleControlSet; import com.todoroo.astrid.ui.HideUntilControlSet; import com.todoroo.astrid.ui.ReminderControlSet; +import org.tasks.caldav.CaldavListFragment; import org.tasks.fragments.CommentBarFragment; import org.tasks.tasklist.GtasksListFragment; import org.tasks.tasklist.TagListFragment; @@ -69,4 +70,6 @@ public interface FragmentComponent { void inject(RemoteListFragment remoteListFragment); void inject(GtasksListFragment gtasksListFragment); + + void inject(CaldavListFragment caldavListFragment); } diff --git a/app/src/main/res/menu/menu_caldav_list_fragment.xml b/app/src/main/res/menu/menu_caldav_list_fragment.xml new file mode 100644 index 000000000..f55a8844c --- /dev/null +++ b/app/src/main/res/menu/menu_caldav_list_fragment.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fc2f344f6..927f846db 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -831,6 +831,8 @@ File %1$s contained %2$s.\n\n Start of week Use locale default Use native date and time pickers + CalDAV + Account settings Manage notifications Manage battery optimizations Battery optimizations may delay notifications