Add 'more info' button to subscription card

pull/685/merge
Alex Baker 8 years ago
parent 57a8fe6839
commit 4fea8c1741

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

@ -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<RowViewHolder> implements RowDataProvider {
public class SkusAdapter extends RecyclerView.Adapter<RowViewHolder> 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<RowViewHolder> 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<RowViewHolder> 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<RowViewHolder> 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);
}

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

@ -32,10 +32,10 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:layout_marginTop="@dimen/keyline_first"
android:layout_marginBottom="@dimen/keyline_first">
android:layout_marginBottom="@dimen/keyline_first"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/title"
@ -43,10 +43,10 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingLeft="@dimen/keyline_first"
android:paddingStart="@dimen/keyline_first"
android:paddingRight="@dimen/keyline_first"
android:paddingEnd="@dimen/keyline_first"
android:paddingLeft="@dimen/keyline_first"
android:paddingRight="@dimen/keyline_first"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/text_primary"
@ -57,12 +57,12 @@
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="0dp"
android:layout_gravity="start"
android:paddingStart="0dp"
android:paddingRight="@dimen/keyline_first"
android:paddingEnd="@dimen/keyline_first"
android:paddingLeft="0dp"
android:paddingRight="@dimen/keyline_first"
android:textAlignment="viewStart"
android:layout_gravity="start"
android:textColor="@color/text_secondary"
android:textSize="@dimen/sku_details_row_text_size"/>
</LinearLayout>
@ -76,6 +76,16 @@
android:textColor="@color/text_secondary"
android:textSize="@dimen/sku_details_row_text_size"/>
<Button
android:id="@+id/aux_button"
style="@style/ButtonStyle"
android:layout_marginTop="@dimen/card_view_margin"
android:layout_marginBottom="@dimen/card_view_margin"
android:layout_marginStart="@dimen/card_view_margin"
android:layout_marginEnd="@dimen/card_view_margin"
android:text="@string/button_more_info"
android:contentDescription="@string/button_more_info"/>
<Button
android:id="@+id/buy_button"
style="@style/ButtonStyle"

@ -886,6 +886,7 @@ File %1$s contained %2$s.\n\n
<string name="refresh_purchases">Refresh purchases</string>
<string name="button_subscribed">Subscribed</string>
<string name="button_subscribe">Subscribe</string>
<string name="button_more_info">More info</string>
<string name="owned">Owned</string>
<string name="error_billing_unavailable">Billing unavailable. Make sure your Google Play app
is setup correctly</string>

Loading…
Cancel
Save