Add description to caldav/etesync account setup

pull/898/head
Alex Baker 4 years ago
parent 0b508ec45a
commit 824d216177

@ -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())

@ -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();

@ -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);
}

@ -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<UserInfo, String> userInfoAndToken) {
caldavAccount = new CaldavAccount();
caldavAccount.setAccountType(CaldavAccount.TYPE_ETESYNC);

@ -34,6 +34,11 @@
android:focusableInTouchMode="true"
android:orientation="vertical">
<TextView
android:id="@+id/description"
style="@style/TagSettingsRow"
android:visibility="gone"/>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/name_layout"
style="@style/TagSettingsRow">

@ -33,6 +33,12 @@
android:focusableInTouchMode="true"
android:orientation="vertical">
<TextView
android:id="@+id/description"
style="@style/TagSettingsRow"
android:text="@string/etesync_encryption_description"
android:visibility="gone"/>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/encryption_password_layout"
style="@style/TagSettingsRow"

@ -574,4 +574,7 @@ File %1$s contained %2$s.\n\n
<string name="caldav_selection_description">Synchronization based on open internet standards</string>
<string name="etesync_selection_description">Open source, end-to-end encrypted synchronization</string>
<string name="show_advanced_settings">Show advanced settings</string>
<string name="caldav_account_description">Requires an account with a CalDAV service provider or a self-hosted server. Find a service provider by visiting tasks.org/caldav</string>
<string name="etesync_account_description">Requires an account with etesync.com or a self-hosted server</string>
<string name="etesync_encryption_description">Choose an encryption password. Do not forget your password, it cannot be recovered!</string>
</resources>

Loading…
Cancel
Save