diff --git a/android/res/layout/fragment_sightseeing_subscription.xml b/android/res/layout/fragment_sightseeing_subscription.xml index d86f137cce..5d784598b7 100644 --- a/android/res/layout/fragment_sightseeing_subscription.xml +++ b/android/res/layout/fragment_sightseeing_subscription.xml @@ -127,6 +127,7 @@ android:minHeight="@dimen/height_block_base" app:buttonBackground="?primaryButtonBackground" app:saleBackground="@drawable/sightseeing_subs_sale_bg" + app:progressColor="@color/white_primary" app:showSale="true" app:buttonTextColor="@color/white_primary" app:saleTextColor="@color/white_primary"/> @@ -140,6 +141,7 @@ android:layout_marginEnd="@dimen/margin_base" android:minHeight="@dimen/height_block_base" app:buttonBackground="?ghostButtonBackground" + app:progressColor="@color/base_accent" app:showSale="false" app:buttonTextColor="@color/black_primary" app:saleTextColor="@color/white_primary"/> diff --git a/android/res/layout/subscription_button.xml b/android/res/layout/subscription_button.xml index 34216c828b..1f0d9c4011 100644 --- a/android/res/layout/subscription_button.xml +++ b/android/res/layout/subscription_button.xml @@ -38,6 +38,13 @@ android:letterSpacing="0.04" tools:text="VNG 29000 / MO" tools:targetApi="lollipop" /> + + diff --git a/android/res/values/dimens.xml b/android/res/values/dimens.xml index 29370c56e7..4e16a41995 100644 --- a/android/res/values/dimens.xml +++ b/android/res/values/dimens.xml @@ -38,6 +38,7 @@ 288dp 100dp 2dp + 24dp 320dp 56dp diff --git a/android/src/com/mapswithme/maps/widget/SubscriptionButton.java b/android/src/com/mapswithme/maps/widget/SubscriptionButton.java index 317fe0059a..1a8bfa5e6d 100644 --- a/android/src/com/mapswithme/maps/widget/SubscriptionButton.java +++ b/android/src/com/mapswithme/maps/widget/SubscriptionButton.java @@ -1,14 +1,16 @@ package com.mapswithme.maps.widget; import android.content.Context; +import android.content.res.ColorStateList; import android.content.res.TypedArray; +import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.os.Build; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; -import android.view.ViewGroup; import android.widget.FrameLayout; +import android.widget.ProgressBar; import android.widget.TextView; import androidx.annotation.ColorInt; @@ -17,6 +19,7 @@ import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import com.mapswithme.maps.R; import com.mapswithme.util.UiUtils; +import com.mapswithme.util.Utils; public class SubscriptionButton extends FrameLayout { @@ -28,6 +31,8 @@ public class SubscriptionButton extends FrameLayout private Drawable mSaleBackground; @ColorInt private int mSaleTextColor; + @ColorInt + private int mProgressColor; @SuppressWarnings("NullableProblems") @NonNull private TextView mSaleView; @@ -37,6 +42,12 @@ public class SubscriptionButton extends FrameLayout @SuppressWarnings("NullableProblems") @NonNull private TextView mPriceView; + @SuppressWarnings("NullableProblems") + @NonNull + private ProgressBar mProgressBar; + @SuppressWarnings("NullableProblems") + @NonNull + private View mButtonContainer; private boolean mShowSale; public SubscriptionButton(@NonNull Context context) @@ -72,6 +83,7 @@ public class SubscriptionButton extends FrameLayout { mButtonBackground = a.getDrawable(R.styleable.SubscriptionButton_buttonBackground); mButtonTextColor = a.getColor(R.styleable.SubscriptionButton_buttonTextColor, 0); + mProgressColor = a.getColor(R.styleable.SubscriptionButton_progressColor, 0); mSaleBackground = a.getDrawable(R.styleable.SubscriptionButton_saleBackground); mSaleTextColor = a.getColor(R.styleable.SubscriptionButton_saleTextColor, 0); mShowSale = a.getBoolean(R.styleable.SubscriptionButton_showSale, false); @@ -87,12 +99,14 @@ public class SubscriptionButton extends FrameLayout protected void onFinishInflate() { super.onFinishInflate(); - View buttonContainer = findViewById(R.id.button_container); - buttonContainer.setBackground(mButtonBackground); - mNameView = buttonContainer.findViewById(R.id.name); + mButtonContainer = findViewById(R.id.button_container); + mButtonContainer.setBackground(mButtonBackground); + mNameView = mButtonContainer.findViewById(R.id.name); mNameView.setTextColor(mButtonTextColor); - mPriceView = buttonContainer.findViewById(R.id.price); + mPriceView = mButtonContainer.findViewById(R.id.price); mPriceView.setTextColor(mButtonTextColor); + mProgressBar = mButtonContainer.findViewById(R.id.progress); + setProgressBarColor(); mSaleView = findViewById(R.id.sale); if (mShowSale) { @@ -103,12 +117,20 @@ public class SubscriptionButton extends FrameLayout else { UiUtils.hide(mSaleView); - ViewGroup.MarginLayoutParams params - = (ViewGroup.MarginLayoutParams) buttonContainer.getLayoutParams(); + MarginLayoutParams params + = (MarginLayoutParams) mButtonContainer.getLayoutParams(); params.topMargin = 0; } } + private void setProgressBarColor() + { + if (Utils.isLollipopOrLater()) + mProgressBar.setIndeterminateTintList(ColorStateList.valueOf(mProgressColor)); + else + mProgressBar.getIndeterminateDrawable().setColorFilter(mProgressColor, PorterDuff.Mode.SRC_IN); + } + public void setName(@NonNull String name) { mNameView.setText(name); @@ -123,4 +145,22 @@ public class SubscriptionButton extends FrameLayout { mSaleView.setText(sale); } + + public void showProgress() + { + UiUtils.hide(mNameView, mPriceView); + UiUtils.show(mProgressBar); + } + + public void hideProgress() + { + UiUtils.hide(mProgressBar); + UiUtils.show(mNameView, mPriceView); + } + + @Override + public void setOnClickListener(@Nullable OnClickListener listener) + { + mButtonContainer.setOnClickListener(listener); + } }