diff --git a/app/src/main/java/org/tasks/caldav/BaseCaldavAccountSettingsActivity.java b/app/src/main/java/org/tasks/caldav/BaseCaldavAccountSettingsActivity.java index e0396720e..da233ddab 100644 --- a/app/src/main/java/org/tasks/caldav/BaseCaldavAccountSettingsActivity.java +++ b/app/src/main/java/org/tasks/caldav/BaseCaldavAccountSettingsActivity.java @@ -1,16 +1,19 @@ package org.tasks.caldav; import static android.text.TextUtils.isEmpty; +import static com.todoroo.astrid.data.Task.NO_ID; import static org.tasks.billing.PurchaseDialog.newPurchaseDialog; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.text.util.Linkify; import android.view.MenuItem; import android.view.View; import android.view.inputmethod.InputMethodManager; import androidx.annotation.NonNull; +import androidx.annotation.StringRes; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; import at.bitfire.dav4jvm.exception.HttpException; @@ -19,6 +22,7 @@ import butterknife.OnFocusChange; import butterknife.OnTextChanged; import com.google.android.material.snackbar.BaseTransientBottomBar; import com.google.android.material.snackbar.Snackbar; +import com.google.common.base.Strings; import com.todoroo.astrid.service.TaskDeleter; import java.net.ConnectException; import java.net.IDN; @@ -68,6 +72,16 @@ public abstract class BaseCaldavAccountSettingsActivity extends ThemedInjectingA ? getIntent().getParcelableExtra(EXTRA_CALDAV_DATA) : savedInstanceState.getParcelable(EXTRA_CALDAV_DATA); + if (caldavAccount == null || caldavAccount.getId() == NO_ID) { + binding.nameLayout.setVisibility(View.GONE); + binding.description.setVisibility(View.VISIBLE); + binding.description.setText(getDescription()); + Linkify.addLinks(binding.description, Linkify.WEB_URLS); + } else { + binding.nameLayout.setVisibility(View.VISIBLE); + binding.description.setVisibility(View.GONE); + } + if (savedInstanceState == null) { if (caldavAccount != null) { binding.name.setText(caldavAccount.getName()); @@ -108,6 +122,8 @@ public abstract class BaseCaldavAccountSettingsActivity extends ThemedInjectingA } } + protected abstract @StringRes int getDescription(); + @Override protected void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); @@ -161,7 +177,8 @@ public abstract class BaseCaldavAccountSettingsActivity extends ThemedInjectingA } protected String getNewName() { - return binding.name.getText().toString().trim(); + String name = binding.name.getText().toString().trim(); + return Strings.isNullOrEmpty(name) ? getNewUsername() : name; } protected String getNewURL() { @@ -304,7 +321,7 @@ public abstract class BaseCaldavAccountSettingsActivity extends ThemedInjectingA private boolean hasChanges() { if (caldavAccount == null) { - return !isEmpty(getNewName()) + return !isEmpty(binding.name.getText().toString().trim()) || !isEmpty(getNewPassword()) || !isEmpty(binding.url.getText().toString().trim()) || !isEmpty(getNewUsername()) diff --git a/app/src/main/java/org/tasks/caldav/CaldavAccountSettingsActivity.java b/app/src/main/java/org/tasks/caldav/CaldavAccountSettingsActivity.java index a46fe4ce2..ca0a21a7c 100644 --- a/app/src/main/java/org/tasks/caldav/CaldavAccountSettingsActivity.java +++ b/app/src/main/java/org/tasks/caldav/CaldavAccountSettingsActivity.java @@ -6,6 +6,7 @@ import androidx.appcompat.widget.Toolbar; import androidx.lifecycle.ViewModelProviders; import com.todoroo.astrid.helper.UUIDHelper; import javax.inject.Inject; +import org.tasks.R; import org.tasks.analytics.Tracking.Events; import org.tasks.data.CaldavAccount; import org.tasks.gtasks.PlayServices; @@ -35,6 +36,11 @@ public class CaldavAccountSettingsActivity extends BaseCaldavAccountSettingsActi updateCaldavAccountViewModel.observe(this, this::updateAccount, this::requestFailed); } + @Override + protected int getDescription() { + return R.string.caldav_account_description; + } + private void addAccount(String principal) { hideProgressIndicator(); diff --git a/app/src/main/java/org/tasks/etesync/EncryptionSettingsActivity.java b/app/src/main/java/org/tasks/etesync/EncryptionSettingsActivity.java index 620924ff2..b1339be27 100644 --- a/app/src/main/java/org/tasks/etesync/EncryptionSettingsActivity.java +++ b/app/src/main/java/org/tasks/etesync/EncryptionSettingsActivity.java @@ -65,6 +65,7 @@ public class EncryptionSettingsActivity extends ThemedInjectingAppCompatActivity userInfo = GsonHelper.gson.fromJson(intent.getStringExtra(EXTRA_USER_INFO), UserInfo.class); if (userInfo == null) { + binding.description.setVisibility(View.VISIBLE); binding.repeatEncryptionPasswordLayout.setVisibility(View.VISIBLE); } diff --git a/app/src/main/java/org/tasks/etesync/EteSyncAccountSettingsActivity.java b/app/src/main/java/org/tasks/etesync/EteSyncAccountSettingsActivity.java index 8fc444d75..76fec646d 100644 --- a/app/src/main/java/org/tasks/etesync/EteSyncAccountSettingsActivity.java +++ b/app/src/main/java/org/tasks/etesync/EteSyncAccountSettingsActivity.java @@ -56,6 +56,11 @@ public class EteSyncAccountSettingsActivity extends BaseCaldavAccountSettingsAct updateAccountViewModel.observe(this, this::updateAccount, this::requestFailed); } + @Override + protected int getDescription() { + return R.string.etesync_account_description; + } + private void addAccount(Pair userInfoAndToken) { caldavAccount = new CaldavAccount(); caldavAccount.setAccountType(CaldavAccount.TYPE_ETESYNC); diff --git a/app/src/main/res/layout/activity_caldav_account_settings.xml b/app/src/main/res/layout/activity_caldav_account_settings.xml index d1ee7947f..3b4e11cf1 100644 --- a/app/src/main/res/layout/activity_caldav_account_settings.xml +++ b/app/src/main/res/layout/activity_caldav_account_settings.xml @@ -34,6 +34,11 @@ android:focusableInTouchMode="true" android:orientation="vertical"> + + diff --git a/app/src/main/res/layout/activity_etesync_encryption_settings.xml b/app/src/main/res/layout/activity_etesync_encryption_settings.xml index b11ce40c2..71eda04ea 100644 --- a/app/src/main/res/layout/activity_etesync_encryption_settings.xml +++ b/app/src/main/res/layout/activity_etesync_encryption_settings.xml @@ -33,6 +33,12 @@ android:focusableInTouchMode="true" android:orientation="vertical"> + + Synchronization based on open internet standards Open source, end-to-end encrypted synchronization Show advanced settings + Requires an account with a CalDAV service provider or a self-hosted server. Find a service provider by visiting tasks.org/caldav + Requires an account with etesync.com or a self-hosted server + Choose an encryption password. Do not forget your password, it cannot be recovered!