package com.distantfuture.videos.donate;
import android.app.Activity;
import android.app.ActivityOptions;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import com.distantfuture.videos.R;
import com.distantfuture.videos.misc.BusEvents;
import de.greenrobot.event.EventBus;
public class DonateActivity extends Activity {
private PurchaseHelper mPurchaseHelper;
private Spinner mSpinner;
private DonateThanksHelper mThanksHelper;
public static void show(Activity activity) {
// add animation, see finish below for the back transition
ActivityOptions opts = ActivityOptions.makeCustomAnimation(activity, R.anim.scale_in, R.anim.scale_out);
Intent intent = new Intent();
intent.setClass(activity, DonateActivity.class);
activity.startActivity(intent, opts.toBundle());
}
@Override
public void finish() {
super.finish();
// animate out
overridePendingTransition(R.anim.scale_out_rev, R.anim.scale_in_rev);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_donate);
getActionBar().setDisplayHomeAsUpEnabled(true);
setupSpinner();
EventBus.getDefault().register(this);
mThanksHelper = new DonateThanksHelper(DonateActivity.this);
Button button = (Button) findViewById(R.id.donate_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String sku = skuForIndex(mSpinner.getSelectedItemPosition());
mPurchaseHelper.onDonateButtonClicked(null, DonateActivity.this, sku);
}
});
mPurchaseHelper = new PurchaseHelper(this);
}
private String skuForIndex(int index) {
switch (index) {
case 0:
return "one_dollar";
case 1:
return "two_dollars";
case 2:
return "three_dollars";
case 3:
return "five_dollars";
case 4:
return "seven_dollars";
case 5:
return "ten_dollars";
}
return "one_dollar";
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
// We're being destroyed. It's important to dispose of the helper here!
@Override
public void onDestroy() {
EventBus.getDefault().unregister(this);
// very important:
if (mPurchaseHelper != null) {
mPurchaseHelper.destroy();
mPurchaseHelper = null;
}
super.onDestroy();
}
private void setMessage(CharSequence message) {
TextView textView = (TextView) findViewById(R.id.status_message);
textView.setVisibility((message != null) ? View.VISIBLE : View.GONE);
textView.setText(message);
}
// eventbus event
public void onEventMainThread(BusEvents.PurchaseEvent event) {
setMessage(event.message);
if (event.alert != null) {
AlertDialog.Builder bld = new AlertDialog.Builder(this);
bld.setMessage(event.alert);
bld.setNeutralButton("OK", null);
bld.create().show();
}
if (event.successfulDonation) {
mThanksHelper.install(DonateActivity.this);
setMessage(getText(R.string.donate_thanks));
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// Pass on the activity result to the helper for handling
if (mPurchaseHelper != null && mPurchaseHelper.handleActivityResult(requestCode, resultCode, data)) {
// handled by helper
} else {
}
}
private void setupSpinner() {
mSpinner = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.donations_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(adapter);
mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
// An item was selected. You can retrieve the selected item using
// parent.getItemAtPosition(pos)
}
public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback
}
});
}
}