mirror of https://github.com/tasks/tasks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.9 KiB
Java
113 lines
3.9 KiB
Java
package org.tasks.dashclock;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Intent;
|
|
import android.os.Bundle;
|
|
|
|
import com.todoroo.astrid.api.Filter;
|
|
|
|
import org.tasks.LocalBroadcastManager;
|
|
import org.tasks.R;
|
|
import org.tasks.activities.FilterSelectionActivity;
|
|
import org.tasks.billing.PurchaseHelper;
|
|
import org.tasks.billing.PurchaseHelperCallback;
|
|
import org.tasks.dialogs.DialogBuilder;
|
|
import org.tasks.injection.ActivityComponent;
|
|
import org.tasks.injection.InjectingPreferenceActivity;
|
|
import org.tasks.preferences.DefaultFilterProvider;
|
|
import org.tasks.preferences.Preferences;
|
|
|
|
import javax.inject.Inject;
|
|
|
|
public class DashClockSettings extends InjectingPreferenceActivity implements PurchaseHelperCallback {
|
|
|
|
private static final String EXTRA_PURCHASE_INITIATED = "extra_purchase_initiated";
|
|
private static final int REQUEST_SELECT_FILTER = 1005;
|
|
private static final int REQUEST_PURCHASE = 1006;
|
|
|
|
@Inject Preferences preferences;
|
|
@Inject DefaultFilterProvider defaultFilterProvider;
|
|
@Inject LocalBroadcastManager localBroadcastManager;
|
|
@Inject PurchaseHelper purchaseHelper;
|
|
@Inject DialogBuilder dialogBuilder;
|
|
|
|
private boolean purchaseInitiated;
|
|
|
|
@Override
|
|
public void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
|
|
if (savedInstanceState != null) {
|
|
purchaseInitiated = savedInstanceState.getBoolean(EXTRA_PURCHASE_INITIATED);
|
|
}
|
|
|
|
addPreferencesFromResource(R.xml.preferences_dashclock);
|
|
|
|
findPreference(getString(R.string.p_dashclock_filter)).setOnPreferenceClickListener(preference -> {
|
|
Intent intent = new Intent(DashClockSettings.this, FilterSelectionActivity.class);
|
|
intent.putExtra(FilterSelectionActivity.EXTRA_RETURN_FILTER, true);
|
|
startActivityForResult(intent, REQUEST_SELECT_FILTER);
|
|
return false;
|
|
});
|
|
|
|
refreshPreferences();
|
|
|
|
if (!preferences.hasPurchase(R.string.p_purchased_dashclock) && !purchaseInitiated) {
|
|
purchaseHelper.purchase(dialogBuilder, this, getString(R.string.sku_dashclock), getString(R.string.p_purchased_dashclock), REQUEST_PURCHASE, this);
|
|
purchaseInitiated = true;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void onDestroy() {
|
|
super.onDestroy();
|
|
|
|
if (!isChangingConfigurations()) {
|
|
purchaseHelper.disposeIabHelper();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void inject(ActivityComponent component) {
|
|
component.inject(this);
|
|
}
|
|
|
|
@Override
|
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
if (requestCode == REQUEST_SELECT_FILTER) {
|
|
if (resultCode == Activity.RESULT_OK) {
|
|
Filter filter = data.getParcelableExtra(FilterSelectionActivity.EXTRA_FILTER);
|
|
String filterPreference = defaultFilterProvider.getFilterPreferenceValue(filter);
|
|
preferences.setString(R.string.p_dashclock_filter, filterPreference);
|
|
refreshPreferences();
|
|
localBroadcastManager.broadcastRefresh();
|
|
}
|
|
} else if (requestCode == REQUEST_PURCHASE) {
|
|
purchaseHelper.handleActivityResult(this, requestCode, resultCode, data);
|
|
} else {
|
|
super.onActivityResult(requestCode, resultCode, data);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void onSaveInstanceState(Bundle outState) {
|
|
super.onSaveInstanceState(outState);
|
|
|
|
outState.putBoolean(EXTRA_PURCHASE_INITIATED, purchaseInitiated);
|
|
}
|
|
|
|
@Override
|
|
public void purchaseCompleted(boolean success, String sku) {
|
|
if (success) {
|
|
localBroadcastManager.broadcastRefresh();
|
|
} else {
|
|
finish();
|
|
}
|
|
}
|
|
|
|
private void refreshPreferences() {
|
|
Filter filter = defaultFilterProvider.getFilterFromPreference(R.string.p_dashclock_filter);
|
|
findPreference(getString(R.string.p_dashclock_filter)).setSummary(filter.listingTitle);
|
|
}
|
|
}
|