diff options
5 files changed, 62 insertions, 52 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java index 9a55fe7d6..c0fc07ff6 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java @@ -22,7 +22,6 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.joanzapata.iconify.Iconify; -import com.joanzapata.iconify.widget.IconTextView; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.PreferenceActivity; import de.danoeh.antennapod.fragment.AllEpisodesFragment; @@ -388,7 +387,7 @@ public class NavListAdapter extends RecyclerView.Adapter<NavListAdapter.Holder> static class FeedHolder extends Holder { final ImageView image; final TextView title; - final IconTextView failure; + final ImageView failure; final TextView count; public FeedHolder(@NonNull View itemView) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java index 5f9233ffe..fc64cb2a2 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java @@ -1,5 +1,6 @@ package de.danoeh.antennapod.fragment; +import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; @@ -79,6 +80,9 @@ public class DownloadLogFragment extends BottomSheetDialogFragment adapter = new DownloadLogAdapter(getActivity()); viewBinding.list.setAdapter(adapter); viewBinding.list.setOnItemClickListener(this); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + viewBinding.list.setNestedScrollingEnabled(true); + } EventBus.getDefault().register(this); return viewBinding.getRoot(); } diff --git a/app/src/main/res/layout/nav_listitem.xml b/app/src/main/res/layout/nav_listitem.xml index 607b328e6..37b629abb 100644 --- a/app/src/main/res/layout/nav_listitem.xml +++ b/app/src/main/res/layout/nav_listitem.xml @@ -1,82 +1,81 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="@dimen/listitem_iconwithtext_height" - android:foreground="?attr/selectableItemBackground" > + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="@dimen/listitem_iconwithtext_height" + android:foreground="?attr/selectableItemBackground" + android:orientation="vertical"> <ImageView android:id="@+id/imgvCover" - android:importantForAccessibility="no" android:layout_width="@dimen/thumbnail_length_navlist" android:layout_height="@dimen/thumbnail_length_navlist" - android:layout_alignParentLeft="true" android:layout_alignParentStart="true" + android:layout_alignParentLeft="true" android:layout_centerVertical="true" - android:adjustViewBounds="true" - android:cropToPadding="true" - android:scaleType="centerInside" - android:layout_marginLeft="@dimen/listitem_icon_leftpadding" android:layout_marginStart="@dimen/listitem_icon_leftpadding" + android:layout_marginLeft="@dimen/listitem_icon_leftpadding" android:layout_marginTop="4dp" android:layout_marginBottom="4dp" - tools:src="@drawable/ic_download_black"/> - + android:adjustViewBounds="true" + android:cropToPadding="true" + android:importantForAccessibility="no" + android:scaleType="centerInside" + tools:src="@drawable/ic_download_black" /> <TextView android:id="@+id/txtvTitle" - android:lines="1" - android:ellipsize="end" - android:singleLine="true" - android:layout_centerVertical="true" - android:textColor="?android:attr/textColorPrimary" - android:textSize="@dimen/text_size_navdrawer" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/listitem_iconwithtext_textleftpadding" + android:layout_centerVertical="true" android:layout_marginStart="@dimen/listitem_iconwithtext_textleftpadding" - android:layout_marginRight="48dp" + android:layout_marginLeft="@dimen/listitem_iconwithtext_textleftpadding" android:layout_marginEnd="48dp" - android:layout_toRightOf="@id/imgvCover" + android:layout_marginRight="48dp" android:layout_toEndOf="@id/imgvCover" + android:layout_toRightOf="@id/imgvCover" + android:ellipsize="end" + android:lines="1" + android:singleLine="true" + android:textColor="?android:attr/textColorPrimary" + android:textSize="@dimen/text_size_navdrawer" tools:text="Navigation item title" /> - <com.joanzapata.iconify.widget.IconTextView + <ImageView android:id="@+id/itxtvFailure" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_toLeftOf="@id/txtvCount" - android:layout_toStartOf="@id/txtvCount" - android:layout_marginLeft="@dimen/list_vertical_padding" - android:layout_marginStart="@dimen/list_vertical_padding" - android:layout_marginRight="@dimen/list_vertical_padding" - android:layout_marginEnd="@dimen/list_vertical_padding" android:layout_alignWithParentIfMissing="true" - android:lines="1" - android:text="{fa-exclamation-circle}" - android:textColor="@color/download_failed_red" - android:textSize="@dimen/text_size_navdrawer" android:layout_centerVertical="true" + android:layout_marginStart="@dimen/list_vertical_padding" + android:layout_marginLeft="@dimen/list_vertical_padding" + android:layout_marginEnd="@dimen/list_vertical_padding" + android:layout_marginRight="@dimen/list_vertical_padding" + android:layout_toStartOf="@id/txtvCount" + android:layout_toLeftOf="@id/txtvCount" android:visibility="gone" - tools:text="!" - tools:background="@android:color/holo_green_dark"/> + app:srcCompat="@drawable/ic_error" + app:tint="@color/download_failed_red" + tools:background="@android:color/holo_green_dark" + tools:text="!" /> <TextView android:id="@+id/txtvCount" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_alignParentEnd="true" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:layout_marginStart="4dp" + android:layout_marginLeft="4dp" + android:layout_marginEnd="8dp" + android:layout_marginRight="8dp" android:lines="1" + android:padding="8dp" android:textColor="?android:attr/textColorTertiary" android:textSize="14sp" - android:padding="8dp" - android:layout_marginLeft="4dp" - android:layout_marginStart="4dp" - android:layout_marginRight="8dp" - android:layout_marginEnd="8dp" - android:layout_alignParentRight="true" - android:layout_alignParentEnd="true" - android:layout_centerVertical="true" tools:text="23" /> + </RelativeLayout> diff --git a/core/src/main/res/drawable/ic_error.xml b/core/src/main/res/drawable/ic_error.xml new file mode 100644 index 000000000..402f224b2 --- /dev/null +++ b/core/src/main/res/drawable/ic_error.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="16dp" + android:height="16dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FFFFFF" + android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-2h2v2zM13,13h-2L11,7h2v6z" /> +</vector> diff --git a/net/sync/gpoddernet/src/main/java/de/danoeh/antennapod/net/sync/nextcloud/NextcloudLoginFlow.java b/net/sync/gpoddernet/src/main/java/de/danoeh/antennapod/net/sync/nextcloud/NextcloudLoginFlow.java index 33e7ba490..3ad171f7f 100644 --- a/net/sync/gpoddernet/src/main/java/de/danoeh/antennapod/net/sync/nextcloud/NextcloudLoginFlow.java +++ b/net/sync/gpoddernet/src/main/java/de/danoeh/antennapod/net/sync/nextcloud/NextcloudLoginFlow.java @@ -68,14 +68,13 @@ public class NextcloudLoginFlow { private void poll() { pollDisposable = Observable.fromCallable(() -> doRequest(URI.create(endpoint).toURL(), "token=" + token)) - .delay(1, TimeUnit.SECONDS) - .retry(60 * 10) // 10 minutes + .retryWhen(t -> t.delay(1, TimeUnit.SECONDS)) + .timeout(5, TimeUnit.MINUTES) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(result -> { - callback.onNextcloudAuthenticated(result.getString("server"), - result.getString("loginName"), result.getString("appPassword")); - }, Throwable::printStackTrace); + .subscribe(result -> callback.onNextcloudAuthenticated( + result.getString("server"), result.getString("loginName"), result.getString("appPassword")), + error -> callback.onNextcloudAuthError(error.getLocalizedMessage())); } public void cancel() { |