Rename EteSync lists, sync EteSync colors

pull/935/head
Alex Baker 6 years ago
parent a90c9002ea
commit 13d5df230b

@ -69,7 +69,6 @@ public abstract class BaseCaldavCalendarSettingsActivity extends BaseListSetting
caldavAccount = intent.getParcelableExtra(EXTRA_CALDAV_ACCOUNT); caldavAccount = intent.getParcelableExtra(EXTRA_CALDAV_ACCOUNT);
} else { } else {
caldavAccount = caldavDao.getAccountByUuid(caldavCalendar.getAccount()); caldavAccount = caldavDao.getAccountByUuid(caldavCalendar.getAccount());
nameLayout.setVisibility(View.GONE);
} }
caldavAccount = caldavAccount =
caldavCalendar == null caldavCalendar == null
@ -123,15 +122,21 @@ public abstract class BaseCaldavCalendarSettingsActivity extends BaseListSetting
if (caldavCalendar == null) { if (caldavCalendar == null) {
showProgressIndicator(); showProgressIndicator();
createCalendar(caldavAccount, name); createCalendar(caldavAccount, name, selectedColor);
} else if (hasChanges()) { } else if (nameChanged() || colorChanged()) {
showProgressIndicator();
updateNameAndColor(caldavAccount, caldavCalendar, name, selectedColor);
} else if (iconChanged()) {
updateAccount(); updateAccount();
} else { } else {
finish(); finish();
} }
} }
protected abstract void createCalendar(CaldavAccount caldavAccount, String name); protected abstract void createCalendar(CaldavAccount caldavAccount, String name, int color);
protected abstract void updateNameAndColor(
CaldavAccount account, CaldavCalendar calendar, String name, int color);
protected abstract void deleteCalendar( protected abstract void deleteCalendar(
CaldavAccount caldavAccount, CaldavCalendar caldavCalendar); CaldavAccount caldavAccount, CaldavCalendar caldavCalendar);
@ -192,7 +197,7 @@ public abstract class BaseCaldavCalendarSettingsActivity extends BaseListSetting
finish(); finish();
} }
private void updateAccount() { protected void updateAccount() {
caldavCalendar.setName(getNewName()); caldavCalendar.setName(getNewName());
caldavCalendar.setColor(selectedColor); caldavCalendar.setColor(selectedColor);
caldavCalendar.setIcon(selectedIcon); caldavCalendar.setIcon(selectedIcon);
@ -206,12 +211,21 @@ public abstract class BaseCaldavCalendarSettingsActivity extends BaseListSetting
@Override @Override
protected boolean hasChanges() { protected boolean hasChanges() {
if (caldavCalendar == null) { return caldavCalendar == null
return !isEmpty(getNewName()) || selectedColor != -1 || selectedIcon != -1; ? !isEmpty(getNewName()) || selectedColor != 0 || selectedIcon != -1
: nameChanged() || iconChanged() || colorChanged();
}
private boolean nameChanged() {
return !caldavCalendar.getName().equals(getNewName());
}
private boolean colorChanged() {
return selectedColor != caldavCalendar.getColor();
} }
return !caldavCalendar.getName().equals(getNewName())
|| selectedIcon != caldavCalendar.getIcon() private boolean iconChanged() {
|| selectedColor != caldavCalendar.getColor(); return selectedIcon != caldavCalendar.getIcon();
} }
private String getNewName() { private String getNewName() {

@ -1,6 +1,7 @@
package org.tasks.caldav; package org.tasks.caldav;
import android.os.Bundle; import android.os.Bundle;
import android.view.View;
import androidx.lifecycle.ViewModelProviders; import androidx.lifecycle.ViewModelProviders;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
@ -24,6 +25,10 @@ public class CaldavCalendarSettingsActivity extends BaseCaldavCalendarSettingsAc
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (!isNew()) {
nameLayout.setVisibility(View.GONE);
}
createCalendarViewModel = ViewModelProviders.of(this).get(CreateCalendarViewModel.class); createCalendarViewModel = ViewModelProviders.of(this).get(CreateCalendarViewModel.class);
deleteCalendarViewModel = ViewModelProviders.of(this).get(DeleteCalendarViewModel.class); deleteCalendarViewModel = ViewModelProviders.of(this).get(DeleteCalendarViewModel.class);
@ -37,10 +42,16 @@ public class CaldavCalendarSettingsActivity extends BaseCaldavCalendarSettingsAc
} }
@Override @Override
protected void createCalendar(CaldavAccount caldavAccount, String name) { protected void createCalendar(CaldavAccount caldavAccount, String name, int color) {
createCalendarViewModel.createCalendar(client, caldavAccount, name); createCalendarViewModel.createCalendar(client, caldavAccount, name);
} }
@Override
protected void updateNameAndColor(
CaldavAccount account, CaldavCalendar calendar, String name, int color) {
updateAccount();
}
@Override @Override
protected void deleteCalendar(CaldavAccount caldavAccount, CaldavCalendar caldavCalendar) { protected void deleteCalendar(CaldavAccount caldavAccount, CaldavCalendar caldavCalendar) {
deleteCalendarViewModel.deleteCalendar(client, caldavAccount, caldavCalendar); deleteCalendarViewModel.deleteCalendar(client, caldavAccount, caldavCalendar);

@ -5,7 +5,7 @@ import org.tasks.ui.CompletableViewModel;
@SuppressWarnings("WeakerAccess") @SuppressWarnings("WeakerAccess")
public class CreateCalendarViewModel extends CompletableViewModel<String> { public class CreateCalendarViewModel extends CompletableViewModel<String> {
void createCalendar(EteSyncClient client, CaldavAccount account, String name) { void createCalendar(EteSyncClient client, CaldavAccount account, String name, int color) {
run(() -> client.forAccount(account).makeCollection(name)); run(() -> client.forAccount(account).makeCollection(name, color));
} }
} }

@ -13,6 +13,7 @@ public class EteSyncCalendarSettingsActivity extends BaseCaldavCalendarSettingsA
@Inject EteSyncClient client; @Inject EteSyncClient client;
private CreateCalendarViewModel createCalendarViewModel; private CreateCalendarViewModel createCalendarViewModel;
private DeleteCalendarViewModel deleteCalendarViewModel; private DeleteCalendarViewModel deleteCalendarViewModel;
private UpdateCalendarViewModel updateCalendarViewModel;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -20,14 +21,22 @@ public class EteSyncCalendarSettingsActivity extends BaseCaldavCalendarSettingsA
createCalendarViewModel = ViewModelProviders.of(this).get(CreateCalendarViewModel.class); createCalendarViewModel = ViewModelProviders.of(this).get(CreateCalendarViewModel.class);
deleteCalendarViewModel = ViewModelProviders.of(this).get(DeleteCalendarViewModel.class); deleteCalendarViewModel = ViewModelProviders.of(this).get(DeleteCalendarViewModel.class);
updateCalendarViewModel = ViewModelProviders.of(this).get(UpdateCalendarViewModel.class);
createCalendarViewModel.observe(this, this::createSuccessful, this::requestFailed); createCalendarViewModel.observe(this, this::createSuccessful, this::requestFailed);
deleteCalendarViewModel.observe(this, this::onDeleted, this::requestFailed); deleteCalendarViewModel.observe(this, this::onDeleted, this::requestFailed);
updateCalendarViewModel.observe(this, uid -> updateAccount(), this::requestFailed);
} }
@Override @Override
protected void createCalendar(CaldavAccount caldavAccount, String name) { protected void createCalendar(CaldavAccount caldavAccount, String name, int color) {
createCalendarViewModel.createCalendar(client, caldavAccount, name); createCalendarViewModel.createCalendar(client, caldavAccount, name, color);
}
@Override
protected void updateNameAndColor(CaldavAccount account, CaldavCalendar calendar, String name,
int color) {
updateCalendarViewModel.updateCalendar(client, account, calendar, name, color);
} }
@Override @Override

@ -248,17 +248,32 @@ public class EteSyncClient {
} }
} }
String makeCollection(String name) String makeCollection(String name, int color)
throws VersionTooNewException, IntegrityException, HttpException { throws VersionTooNewException, IntegrityException, HttpException {
String uid = Journal.genUid(); String uid = Journal.genUid();
CollectionInfo collectionInfo = createCollectionInfo(uid, name, color);
CryptoManager crypto = new CryptoManager(collectionInfo.getVersion(), encryptionPassword, uid);
journalManager.create(new Journal(crypto, collectionInfo.toJson(), uid));
return uid;
}
String updateCollection(CaldavCalendar calendar, String name, int color)
throws VersionTooNewException, IntegrityException, HttpException {
String uid = calendar.getUrl();
CollectionInfo collectionInfo = createCollectionInfo(uid, name, color);
CryptoManager crypto = new CryptoManager(collectionInfo.getVersion(), encryptionPassword, uid);
journalManager.update(new Journal(crypto, collectionInfo.toJson(), uid));
return uid;
}
private CollectionInfo createCollectionInfo(String uid, String name, int color) {
CollectionInfo collectionInfo = new CollectionInfo(); CollectionInfo collectionInfo = new CollectionInfo();
collectionInfo.setDisplayName(name); collectionInfo.setDisplayName(name);
collectionInfo.setType(TYPE_TASKS); collectionInfo.setType(TYPE_TASKS);
collectionInfo.setUid(uid); collectionInfo.setUid(uid);
collectionInfo.setSelected(true); collectionInfo.setSelected(true);
CryptoManager crypto = new CryptoManager(collectionInfo.getVersion(), encryptionPassword, uid); collectionInfo.setColor(color == 0 ? null : color);
journalManager.create(new Journal(crypto, collectionInfo.toJson(), uid)); return collectionInfo;
return uid;
} }
void deleteCollection(CaldavCalendar calendar) throws HttpException { void deleteCollection(CaldavCalendar calendar) throws HttpException {

@ -143,16 +143,21 @@ public class EteSynchronizer {
String uid = collection.getUid(); String uid = collection.getUid();
CaldavCalendar calendar = caldavDao.getCalendarByUrl(account.getUuid(), uid); CaldavCalendar calendar = caldavDao.getCalendarByUrl(account.getUuid(), uid);
Integer colorInt = collection.getColor();
int color = colorInt == null ? 0 : colorInt;
if (calendar == null) { if (calendar == null) {
calendar = new CaldavCalendar(); calendar = new CaldavCalendar();
calendar.setName(collection.getDisplayName()); calendar.setName(collection.getDisplayName());
calendar.setAccount(account.getUuid()); calendar.setAccount(account.getUuid());
calendar.setUrl(collection.getUid()); calendar.setUrl(collection.getUid());
calendar.setUuid(UUIDHelper.newUUID()); calendar.setUuid(UUIDHelper.newUUID());
calendar.setColor(color);
caldavDao.insert(calendar); caldavDao.insert(calendar);
} else { } else {
if (!calendar.getName().equals(collection.getDisplayName())) { if (!calendar.getName().equals(collection.getDisplayName())
|| calendar.getColor() != color) {
calendar.setName(collection.getDisplayName()); calendar.setName(collection.getDisplayName());
calendar.setColor(color);
caldavDao.update(calendar); caldavDao.update(calendar);
localBroadcastManager.broadcastRefreshList(); localBroadcastManager.broadcastRefreshList();
} }

@ -0,0 +1,17 @@
package org.tasks.etesync;
import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavCalendar;
import org.tasks.ui.CompletableViewModel;
@SuppressWarnings("WeakerAccess")
public class UpdateCalendarViewModel extends CompletableViewModel<String> {
void updateCalendar(
EteSyncClient client,
CaldavAccount account,
CaldavCalendar calendar,
String name,
int color) {
run(() -> client.forAccount(account).updateCollection(calendar, name, color));
}
}
Loading…
Cancel
Save