diff options
5 files changed, 90 insertions, 156 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/synchronization/GpodderAuthenticationFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/synchronization/GpodderAuthenticationFragment.java index 358985cea..e3e069868 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/synchronization/GpodderAuthenticationFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/synchronization/GpodderAuthenticationFragment.java @@ -2,7 +2,6 @@ package de.danoeh.antennapod.fragment.preferences.synchronization; import android.app.Dialog; import android.content.Context; -import android.graphics.Paint; import android.os.Build; import android.os.Bundle; import android.view.View; @@ -12,31 +11,20 @@ import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ProgressBar; -import android.widget.RadioGroup; import android.widget.TextView; import android.widget.ViewFlipper; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.DialogFragment; - import com.google.android.material.button.MaterialButton; -import com.google.android.material.textfield.TextInputLayout; - -import java.util.List; -import java.util.Locale; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - import de.danoeh.antennapod.R; -import de.danoeh.antennapod.core.sync.SynchronizationCredentials; import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; import de.danoeh.antennapod.core.sync.SyncService; +import de.danoeh.antennapod.core.sync.SynchronizationCredentials; import de.danoeh.antennapod.core.sync.SynchronizationProviderViewData; import de.danoeh.antennapod.core.sync.SynchronizationSettings; import de.danoeh.antennapod.core.util.FileNameGenerator; -import de.danoeh.antennapod.core.util.IntentUtils; import de.danoeh.antennapod.net.sync.gpoddernet.GpodnetService; import de.danoeh.antennapod.net.sync.gpoddernet.model.GpodnetDevice; import io.reactivex.Completable; @@ -44,6 +32,11 @@ import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; +import java.util.List; +import java.util.Locale; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * Guides the user through the authentication process. */ @@ -70,7 +63,7 @@ public class GpodderAuthenticationFragment extends DialogFragment { @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { AlertDialog.Builder dialog = new AlertDialog.Builder(getContext()); - dialog.setTitle(GpodnetService.DEFAULT_BASE_HOST); + dialog.setTitle(R.string.gpodnetauth_login_butLabel); dialog.setNegativeButton(R.string.cancel_label, null); dialog.setCancelable(false); this.setCancelable(false); @@ -85,23 +78,13 @@ public class GpodderAuthenticationFragment extends DialogFragment { private void setupHostView(View view) { final Button selectHost = view.findViewById(R.id.chooseHostButton); - final RadioGroup serverRadioGroup = view.findViewById(R.id.serverRadioGroup); final EditText serverUrlText = view.findViewById(R.id.serverUrlText); - - if (!GpodnetService.DEFAULT_BASE_HOST.equals(SynchronizationCredentials.getHosturl())) { - serverUrlText.setText(SynchronizationCredentials.getHosturl()); - } - final TextInputLayout serverUrlTextInput = view.findViewById(R.id.serverUrlTextInput); - serverRadioGroup.setOnCheckedChangeListener((group, checkedId) -> { - serverUrlTextInput.setVisibility(checkedId == R.id.customServerRadio ? View.VISIBLE : View.GONE); - }); selectHost.setOnClickListener(v -> { - SynchronizationCredentials.clear(getContext()); - if (serverRadioGroup.getCheckedRadioButtonId() == R.id.customServerRadio) { - SynchronizationCredentials.setHosturl(serverUrlText.getText().toString()); - } else { - SynchronizationCredentials.setHosturl(GpodnetService.DEFAULT_BASE_HOST); + if (serverUrlText.getText().length() == 0) { + return; } + SynchronizationCredentials.clear(getContext()); + SynchronizationCredentials.setHosturl(serverUrlText.getText().toString()); service = new GpodnetService(AntennapodHttpClient.getHttpClient(), SynchronizationCredentials.getHosturl(), SynchronizationCredentials.getDeviceID(), SynchronizationCredentials.getUsername(), SynchronizationCredentials.getPassword()); @@ -116,12 +99,8 @@ public class GpodderAuthenticationFragment extends DialogFragment { final Button login = view.findViewById(R.id.butLogin); final TextView txtvError = view.findViewById(R.id.credentialsError); final ProgressBar progressBar = view.findViewById(R.id.progBarLogin); - final TextView createAccount = view.findViewById(R.id.createAccountButton); final TextView createAccountWarning = view.findViewById(R.id.createAccountWarning); - createAccount.setPaintFlags(createAccount.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); - createAccount.setOnClickListener(v -> IntentUtils.openInBrowser(getContext(), "https://gpodder.net/register/")); - if (SynchronizationCredentials.getHosturl().startsWith("http://")) { createAccountWarning.setVisibility(View.VISIBLE); } diff --git a/app/src/main/res/layout/gpodnetauth_credentials.xml b/app/src/main/res/layout/gpodnetauth_credentials.xml index 8cf6941c9..91224744b 100644 --- a/app/src/main/res/layout/gpodnetauth_credentials.xml +++ b/app/src/main/res/layout/gpodnetauth_credentials.xml @@ -1,107 +1,84 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical"> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:layout_marginBottom="8dp"> - - <ImageView - android:layout_width="64dp" - android:layout_height="64dp" - app:srcCompat="@drawable/gpodder_icon"/> - - <TextView - android:id="@+id/createAccountButton" - android:layout_width="0dp" - android:textAlignment="textEnd" - android:layout_height="wrap_content" - android:background="?attr/selectableItemBackground" - android:textColor="?colorAccent" - android:layout_weight="1" - android:layout_gravity="center_vertical|end" - android:text="@string/create_account"/> - </LinearLayout> + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> <TextView - android:id="@+id/createAccountWarning" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="@string/gpodnetauth_encryption_warning" - android:textColor="#F44336" - android:textStyle="bold" - android:visibility="invisible" /> + android:id="@+id/createAccountWarning" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/gpodnetauth_encryption_warning" + android:textColor="#F44336" + android:textStyle="bold" + android:visibility="invisible" /> <com.google.android.material.textfield.TextInputLayout - style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" - android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"> <com.google.android.material.textfield.TextInputEditText - android:id="@+id/etxtUsername" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/username_label" - android:lines="1" - android:imeOptions="actionNext|flagNoFullscreen"/> + android:id="@+id/etxtUsername" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/username_label" + android:lines="1" + android:imeOptions="actionNext|flagNoFullscreen" /> </com.google.android.material.textfield.TextInputLayout> <com.google.android.material.textfield.TextInputLayout - style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" - android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"> <com.google.android.material.textfield.TextInputEditText - android:id="@+id/etxtPassword" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/password_label" - android:inputType="textPassword" - android:lines="1" - android:imeOptions="actionNext|flagNoFullscreen" - android:imeActionLabel="@string/gpodnetauth_login_butLabel"/> + android:id="@+id/etxtPassword" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/password_label" + android:inputType="textPassword" + android:lines="1" + android:imeOptions="actionNext|flagNoFullscreen" + android:imeActionLabel="@string/gpodnetauth_login_butLabel" /> </com.google.android.material.textfield.TextInputLayout> <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:gravity="end|center_vertical"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="end|center_vertical"> <TextView - android:id="@+id/credentialsError" - android:layout_width="0dp" - android:layout_weight="1" - android:layout_height="wrap_content" - android:textColor="@color/download_failed_red" - android:textSize="@dimen/text_size_small" - android:maxLines="2" - android:ellipsize="end" - android:gravity="center" - tools:text="Error message" - tools:background="@android:color/holo_green_dark"/> + android:id="@+id/credentialsError" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/download_failed_red" + android:textSize="@dimen/text_size_small" + android:maxLines="2" + android:ellipsize="end" + android:gravity="center" + tools:text="Error message" + tools:background="@android:color/holo_green_dark" /> <ProgressBar - android:id="@+id/progBarLogin" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:visibility="gone" - android:layout_gravity="right"/> + android:id="@+id/progBarLogin" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:visibility="gone" + android:layout_gravity="right" /> <Button - android:id="@+id/butLogin" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/gpodnetauth_login_butLabel"/> + android:id="@+id/butLogin" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/gpodnetauth_login_butLabel" /> + </LinearLayout> </LinearLayout> diff --git a/app/src/main/res/layout/gpodnetauth_host.xml b/app/src/main/res/layout/gpodnetauth_host.xml index 52c5fdb5d..bcee9b880 100644 --- a/app/src/main/res/layout/gpodnetauth_host.xml +++ b/app/src/main/res/layout/gpodnetauth_host.xml @@ -1,50 +1,31 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical"> - - <RadioGroup - android:id="@+id/serverRadioGroup" - android:layout_width="match_parent" - android:layout_height="match_parent"> - <RadioButton - android:id="@+id/officialServerRadio" - android:text="@string/gpodnetauth_server_official" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:checked="true"/> - <RadioButton - android:id="@+id/customServerRadio" - android:text="@string/gpodnetauth_server_custom" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - </RadioGroup> + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> <com.google.android.material.textfield.TextInputLayout - android:id="@+id/serverUrlTextInput" - style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" - android:visibility="gone" - android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"> <com.google.android.material.textfield.TextInputEditText - android:id="@+id/serverUrlText" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/gpodnetauth_host" - android:inputType="textNoSuggestions" - android:lines="1" - android:imeOptions="actionNext|flagNoFullscreen" /> + android:id="@+id/serverUrlText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/gpodnetauth_host" + android:inputType="textNoSuggestions" + android:lines="1" + android:imeOptions="actionNext|flagNoFullscreen" /> </com.google.android.material.textfield.TextInputLayout> <Button - android:id="@+id/chooseHostButton" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="right|end" - android:text="@string/gpodnetauth_select_server"/> + android:id="@+id/chooseHostButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="right|end" + android:text="@string/gpodnetauth_select_server" /> -</LinearLayout>
\ No newline at end of file +</LinearLayout> diff --git a/net/sync/gpoddernet/src/main/java/de/danoeh/antennapod/net/sync/gpoddernet/GpodnetService.java b/net/sync/gpoddernet/src/main/java/de/danoeh/antennapod/net/sync/gpoddernet/GpodnetService.java index 37fb5f76f..7873ae4fe 100644 --- a/net/sync/gpoddernet/src/main/java/de/danoeh/antennapod/net/sync/gpoddernet/GpodnetService.java +++ b/net/sync/gpoddernet/src/main/java/de/danoeh/antennapod/net/sync/gpoddernet/GpodnetService.java @@ -46,7 +46,7 @@ import okhttp3.ResponseBody; */ public class GpodnetService implements ISyncService { public static final String TAG = "GpodnetService"; - public static final String DEFAULT_BASE_HOST = "gpodder.net"; + private static final String DEFAULT_BASE_HOST = "gpodder.net"; private static final int UPLOAD_BULK_SIZE = 30; private static final MediaType TEXT = MediaType.parse("plain/text; charset=utf-8"); private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); diff --git a/ui/i18n/src/main/res/values/strings.xml b/ui/i18n/src/main/res/values/strings.xml index 34813dde5..b1062d3c2 100644 --- a/ui/i18n/src/main/res/values/strings.xml +++ b/ui/i18n/src/main/res/values/strings.xml @@ -625,12 +625,9 @@ <!-- gpodder.net --> <string name="gpodnetauth_login_butLabel">Login</string> <string name="gpodnetauth_encryption_warning">Password and data are not encrypted!</string> - <string name="create_account">Create account</string> <string name="username_label">Username</string> <string name="password_label">Password</string> - <string name="gpodnet_description">Gpodder.net is an open-source podcast synchronization service that is independent of the AntennaPod project.</string> - <string name="gpodnetauth_server_official">Official gpodder.net server</string> - <string name="gpodnetauth_server_custom">Custom server</string> + <string name="gpodnet_description">Gpodder.net is an open-source podcast synchronization service that you can install on your own server. Gpodder.net is independent of the AntennaPod project.</string> <string name="gpodnetauth_host">Hostname</string> <string name="gpodnetauth_select_server">Select server</string> <string name="gpodnetauth_device_name">Device name</string> |