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

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

@ -5,7 +5,7 @@ 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));
void createCalendar(EteSyncClient client, CaldavAccount account, String name, int color) {
run(() -> client.forAccount(account).makeCollection(name, color));
}
}

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

@ -248,17 +248,32 @@ public class EteSyncClient {
}
}
String makeCollection(String name)
String makeCollection(String name, int color)
throws VersionTooNewException, IntegrityException, HttpException {
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.setDisplayName(name);
collectionInfo.setType(TYPE_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;
collectionInfo.setColor(color == 0 ? null : color);
return collectionInfo;
}
void deleteCollection(CaldavCalendar calendar) throws HttpException {

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