From 4fea8c17413cc0d1caea32ebfbf0cbdf1d25ef85 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 16 Apr 2018 17:49:11 -0500 Subject: [PATCH] Add 'more info' button to subscription card --- .../org/tasks/billing/PurchaseActivity.java | 7 +++- .../java/org/tasks/billing/SkusAdapter.java | 36 ++++++++++++++----- .../org/tasks/billing/row/RowViewHolder.java | 15 +++++--- app/src/main/res/layout/sku_details_row.xml | 26 +++++++++----- app/src/main/res/values/strings.xml | 1 + 5 files changed, 64 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/org/tasks/billing/PurchaseActivity.java b/app/src/main/java/org/tasks/billing/PurchaseActivity.java index 2c9d2b1e6..c503b4ae9 100644 --- a/app/src/main/java/org/tasks/billing/PurchaseActivity.java +++ b/app/src/main/java/org/tasks/billing/PurchaseActivity.java @@ -208,6 +208,11 @@ public class PurchaseActivity extends ThemedInjectingAppCompatActivity component.inject(this); } + @Override + public void clickAux(SkuRowData skuRowData) { + startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://tasks.org/subscribe"))); + } + @Override public void click(SkuRowData skuRowData) { String sku = skuRowData.getSku(); @@ -233,7 +238,7 @@ public class PurchaseActivity extends ThemedInjectingAppCompatActivity public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.menu_help: - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://tasks.org/donate"))); + startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://tasks.org/subscribe"))); return true; case R.id.menu_refresh_purchases: billingClient.queryPurchases(); diff --git a/app/src/main/java/org/tasks/billing/SkusAdapter.java b/app/src/main/java/org/tasks/billing/SkusAdapter.java index 9565030cd..b6399ccc2 100644 --- a/app/src/main/java/org/tasks/billing/SkusAdapter.java +++ b/app/src/main/java/org/tasks/billing/SkusAdapter.java @@ -35,9 +35,11 @@ import org.tasks.BuildConfig; import org.tasks.R; import org.tasks.billing.row.RowDataProvider; import org.tasks.billing.row.RowViewHolder; +import org.tasks.billing.row.RowViewHolder.ButtonClick; import org.tasks.billing.row.SkuRowData; -public class SkusAdapter extends RecyclerView.Adapter implements RowDataProvider { +public class SkusAdapter extends RecyclerView.Adapter implements RowDataProvider, + ButtonClick { public static final int TYPE_HEADER = 0; public static final int TYPE_NORMAL = 1; @@ -75,7 +77,7 @@ public class SkusAdapter extends RecyclerView.Adapter implements } else { View item = LayoutInflater.from(parent.getContext()).inflate(R.layout.sku_details_row, parent, false); - return new RowViewHolder(item, row -> onClickHandler.click(getData(row))); + return new RowViewHolder(item, this); } } @@ -91,18 +93,24 @@ public class SkusAdapter extends RecyclerView.Adapter implements String[] rows = context.getResources().getStringArray(R.array.pro_description); holder.description.setText( Joiner.on('\n').join(transform(asList(rows), item -> "\u2022 " + item))); - holder.button.setVisibility(View.VISIBLE); + holder.subscribeButton.setVisibility(View.VISIBLE); holder.price.setVisibility(View.VISIBLE); holder.price.setText(data.getPrice()); - holder.button.setText( - inventory.purchased(sku) ? R.string.button_subscribed : R.string.button_subscribe); + if (inventory.purchased(sku)) { + holder.subscribeButton.setText(R.string.button_subscribed); + holder.auxiliaryButton.setVisibility(View.GONE); + } else { + holder.subscribeButton.setText(R.string.button_subscribe); + holder.auxiliaryButton.setVisibility(View.VISIBLE); + } } else { holder.description.setText(data.getDescription()); - holder.button.setVisibility(View.GONE); + holder.subscribeButton.setVisibility(View.GONE); holder.price.setVisibility(View.GONE); + holder.auxiliaryButton.setVisibility(View.GONE); if (BuildConfig.DEBUG) { - holder.button.setVisibility(View.VISIBLE); - holder.button.setText( + holder.subscribeButton.setVisibility(View.VISIBLE); + holder.subscribeButton.setText( inventory.purchased(sku) ? R.string.debug_consume : R.string.debug_buy); } } @@ -120,7 +128,19 @@ public class SkusAdapter extends RecyclerView.Adapter implements return data.isEmpty() ? null : data.get(position); } + @Override + public void onAuxiliaryClick(int row) { + onClickHandler.clickAux(getData(row)); + } + + @Override + public void onClick(int row) { + onClickHandler.click(getData(row)); + } + public interface OnClickHandler { + void clickAux(SkuRowData skuRowData); + void click(SkuRowData skuRowData); } diff --git a/app/src/main/java/org/tasks/billing/row/RowViewHolder.java b/app/src/main/java/org/tasks/billing/row/RowViewHolder.java index 74f5d1d70..f3a4344a9 100644 --- a/app/src/main/java/org/tasks/billing/row/RowViewHolder.java +++ b/app/src/main/java/org/tasks/billing/row/RowViewHolder.java @@ -10,9 +10,12 @@ public final class RowViewHolder extends RecyclerView.ViewHolder { public final TextView title; public final TextView description; public final TextView price; - public final Button button; + public final Button subscribeButton; + public final Button auxiliaryButton; public interface ButtonClick { + void onAuxiliaryClick(int row); + void onClick(int row); } @@ -21,9 +24,13 @@ public final class RowViewHolder extends RecyclerView.ViewHolder { title = itemView.findViewById(R.id.title); price = itemView.findViewById(R.id.price); description = itemView.findViewById(R.id.description); - button = itemView.findViewById(R.id.buy_button); - if (button != null) { - button.setOnClickListener(view -> onClick.onClick(getAdapterPosition())); + subscribeButton = itemView.findViewById(R.id.buy_button); + auxiliaryButton = itemView.findViewById(R.id.aux_button); + if (auxiliaryButton != null) { + auxiliaryButton.setOnClickListener(view -> onClick.onAuxiliaryClick(getAdapterPosition())); + } + if (subscribeButton != null) { + subscribeButton.setOnClickListener(view -> onClick.onClick(getAdapterPosition())); } } } diff --git a/app/src/main/res/layout/sku_details_row.xml b/app/src/main/res/layout/sku_details_row.xml index 5511a3ca2..29c93f7e6 100644 --- a/app/src/main/res/layout/sku_details_row.xml +++ b/app/src/main/res/layout/sku_details_row.xml @@ -32,10 +32,10 @@ + android:layout_marginBottom="@dimen/keyline_first" + android:gravity="center" + android:orientation="horizontal"> @@ -76,6 +76,16 @@ android:textColor="@color/text_secondary" android:textSize="@dimen/sku_details_row_text_size"/> +