Add EteSyncCalendarSettingsActivity

pull/898/head
Alex Baker 4 years ago
parent b83c2fa8b4
commit 965a8a0b19

@ -559,6 +559,10 @@
<activity android:name=".tags.TagPickerActivity" />
<activity
android:name=".etesync.EteSyncCalendarSettingsActivity"
android:theme="@style/Tasks" />
<!-- launcher icons -->
<activity-alias

@ -84,10 +84,15 @@ import org.tasks.activities.RemoteListSupportPicker;
import org.tasks.activities.TagSettingsActivity;
import org.tasks.analytics.Tracker;
import org.tasks.analytics.Tracking;
import org.tasks.caldav.BaseCaldavCalendarSettingsActivity;
import org.tasks.caldav.CaldavCalendarSettingsActivity;
import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavCalendar;
import org.tasks.data.CaldavDao;
import org.tasks.data.TagDataDao;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.dialogs.SortDialog;
import org.tasks.etesync.EteSyncCalendarSettingsActivity;
import org.tasks.injection.ForActivity;
import org.tasks.injection.FragmentComponent;
import org.tasks.injection.InjectingFragment;
@ -149,6 +154,7 @@ public final class TaskListFragment extends InjectingFragment
@Inject TaskDao taskDao;
@Inject TaskDuplicator taskDuplicator;
@Inject TagDataDao tagDataDao;
@Inject CaldavDao caldavDao;
@BindView(R.id.swipe_layout)
SwipeRefreshLayout swipeRefreshLayout;
@ -422,8 +428,15 @@ public final class TaskListFragment extends InjectingFragment
startActivityForResult(filterSettings, REQUEST_FILTER_SETTINGS);
return true;
case R.id.menu_caldav_list_fragment:
Intent caldavSettings = new Intent(getActivity(), CaldavCalendarSettingsActivity.class);
caldavSettings.putExtra(EXTRA_CALDAV_CALENDAR, ((CaldavFilter) filter).getCalendar());
CaldavCalendar calendar = ((CaldavFilter) filter).getCalendar();
CaldavAccount account = caldavDao.getAccountByUuid(calendar.getAccount());
Intent caldavSettings =
new Intent(
getActivity(),
account.isCaldavAccount()
? CaldavCalendarSettingsActivity.class
: EteSyncCalendarSettingsActivity.class);
caldavSettings.putExtra(EXTRA_CALDAV_CALENDAR, calendar);
startActivityForResult(caldavSettings, REQUEST_CALDAV_SETTINGS);
return true;
case R.id.menu_gtasks_list_settings:

@ -0,0 +1,11 @@
package org.tasks.etesync;
import org.tasks.data.CaldavAccount;
import org.tasks.ui.CompletableViewModel;
@SuppressWarnings("WeakerAccess")
public class CreateCalendarViewModel extends CompletableViewModel<String> {
void createCalendar(EteSyncClient client, CaldavAccount account, String name) {
run(() -> client.forAccount(account).makeCollection(name));
}
}

@ -0,0 +1,12 @@
package org.tasks.etesync;
import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavCalendar;
import org.tasks.ui.ActionViewModel;
@SuppressWarnings("WeakerAccess")
public class DeleteCalendarViewModel extends ActionViewModel {
void deleteCalendar(EteSyncClient client, CaldavAccount account, CaldavCalendar calendar) {
run(() -> client.forAccount(account).deleteCollection(calendar));
}
}

@ -0,0 +1,42 @@
package org.tasks.etesync;
import android.os.Bundle;
import androidx.lifecycle.ViewModelProviders;
import javax.inject.Inject;
import org.tasks.caldav.BaseCaldavCalendarSettingsActivity;
import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavCalendar;
import org.tasks.injection.ActivityComponent;
public class EteSyncCalendarSettingsActivity extends BaseCaldavCalendarSettingsActivity {
@Inject EteSyncClient client;
private CreateCalendarViewModel createCalendarViewModel;
private DeleteCalendarViewModel deleteCalendarViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
createCalendarViewModel = ViewModelProviders.of(this).get(CreateCalendarViewModel.class);
deleteCalendarViewModel = ViewModelProviders.of(this).get(DeleteCalendarViewModel.class);
createCalendarViewModel.observe(this, this::createSuccessful, this::requestFailed);
deleteCalendarViewModel.observe(this, this::onDeleted, this::requestFailed);
}
@Override
protected void createCalendar(CaldavAccount caldavAccount, String name) {
createCalendarViewModel.createCalendar(client, caldavAccount, name);
}
@Override
protected void deleteCalendar(CaldavAccount caldavAccount, CaldavCalendar caldavCalendar) {
deleteCalendarViewModel.deleteCalendar(client, caldavAccount, caldavCalendar);
}
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
}

@ -226,4 +226,21 @@ public class EteSyncClient {
Timber.e(e);
}
}
String makeCollection(String name)
throws VersionTooNewException, IntegrityException, HttpException {
String uid = Journal.genUid();
CollectionInfo collectionInfo = new CollectionInfo();
collectionInfo.setDisplayName(name);
collectionInfo.setType("TASKS");
collectionInfo.setUid(uid);
collectionInfo.setSelected(true);
CryptoManager crypto = new CryptoManager(collectionInfo.getVersion(), encryptionPassword, uid);
journalManager.create(new Journal(crypto, collectionInfo.toJson(), uid));
return uid;
}
void deleteCollection(CaldavCalendar calendar) throws HttpException {
journalManager.delete(Journal.fakeWithUid(calendar.getUrl()));
}
}

@ -35,6 +35,7 @@ import org.tasks.caldav.CaldavCalendarSettingsActivity;
import org.tasks.caldav.CaldavFilterExposer;
import org.tasks.data.CaldavAccount;
import org.tasks.data.GoogleTaskAccount;
import org.tasks.etesync.EteSyncCalendarSettingsActivity;
import org.tasks.injection.ForApplication;
import org.tasks.preferences.BasicPreferences;
import org.tasks.ui.NavigationDrawerFragment;
@ -159,7 +160,11 @@ public class FilterProvider {
new NavigationDrawerAction(
context.getString(R.string.new_list),
R.drawable.ic_outline_add_24px,
new Intent(context, CaldavCalendarSettingsActivity.class)
new Intent(
context,
account.isCaldavAccount()
? CaldavCalendarSettingsActivity.class
: EteSyncCalendarSettingsActivity.class)
.putExtra(EXTRA_CALDAV_ACCOUNT, account),
NavigationDrawerFragment.REQUEST_NEW_CALDAV_COLLECTION));
}

@ -20,6 +20,7 @@ import org.tasks.activities.FilterSelectionActivity;
import org.tasks.activities.FilterSettingsActivity;
import org.tasks.activities.GoogleTaskListSettingsActivity;
import org.tasks.etesync.EteSyncAccountSettingsActivity;
import org.tasks.etesync.EteSyncCalendarSettingsActivity;
import org.tasks.tags.TagPickerActivity;
import org.tasks.activities.TagSettingsActivity;
import org.tasks.activities.TimePickerActivity;
@ -152,4 +153,6 @@ public interface ActivityComponent {
void inject(TagPickerActivity tagPickerActivity);
void inject(TagPickerViewModel viewModel);
void inject(EteSyncCalendarSettingsActivity eteSyncCalendarSettingsActivity);
}

Loading…
Cancel
Save