Migrate dashclock extension to androidx prefs

pull/935/head
Alex Baker 6 years ago
parent 09d2314411
commit 71d92db25f

@ -477,7 +477,7 @@
android:value="Display a count of active tasks"/>
<meta-data
android:name="settingsActivity"
android:value=".dashclock.DashClockSettings"/>
android:value="org.tasks.dashclock.DashClockSettings"/>
</service>
<service

@ -1,77 +0,0 @@
package org.tasks.dashclock;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.todoroo.astrid.api.Filter;
import javax.inject.Inject;
import org.tasks.LocalBroadcastManager;
import org.tasks.R;
import org.tasks.activities.FilterSelectionActivity;
import org.tasks.billing.Inventory;
import org.tasks.billing.PurchaseActivity;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingPreferenceActivity;
import org.tasks.preferences.DefaultFilterProvider;
public class DashClockSettings extends InjectingPreferenceActivity {
private static final int REQUEST_SELECT_FILTER = 1005;
private static final int REQUEST_SUBSCRIPTION = 1006;
@Inject DefaultFilterProvider defaultFilterProvider;
@Inject LocalBroadcastManager localBroadcastManager;
@Inject Inventory inventory;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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_FILTER, defaultFilterProvider.getDashclockFilter());
intent.putExtra(FilterSelectionActivity.EXTRA_RETURN_FILTER, true);
startActivityForResult(intent, REQUEST_SELECT_FILTER);
return false;
});
refreshPreferences();
if (!inventory.purchasedDashclock()) {
startActivityForResult(new Intent(this, PurchaseActivity.class), REQUEST_SUBSCRIPTION);
}
}
@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);
defaultFilterProvider.setDashclockFilter(filter);
refreshPreferences();
localBroadcastManager.broadcastRefresh();
}
} else if (requestCode == REQUEST_SUBSCRIPTION) {
if (!inventory.purchasedDashclock()) {
finish();
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
private void refreshPreferences() {
Filter filter = defaultFilterProvider.getFilterFromPreference(R.string.p_dashclock_filter);
findPreference(getString(R.string.p_dashclock_filter)).setSummary(filter.listingTitle);
}
}

@ -0,0 +1,14 @@
package org.tasks.dashclock
import org.tasks.R
import org.tasks.injection.ActivityComponent
import org.tasks.preferences.BasePreferences
import org.tasks.preferences.fragments.DashClock
class DashClockSettings : BasePreferences() {
override fun getRootTitle() = R.string.pro_dashclock_extension
override fun getRootPreference() = DashClock()
override fun inject(component: ActivityComponent) = component.inject(this)
}

@ -12,6 +12,7 @@ import com.todoroo.astrid.ui.ReminderControlSet;
import dagger.Subcomponent;
import org.jetbrains.annotations.NotNull;
import org.tasks.fragments.CommentBarFragment;
import org.tasks.preferences.fragments.DashClock;
import org.tasks.preferences.fragments.HelpAndFeedback;
import org.tasks.preferences.fragments.ScrollableWidget;
import org.tasks.ui.CalendarControlSet;
@ -68,4 +69,6 @@ public interface FragmentComponent {
void inject(@NotNull HelpAndFeedback helpAndFeedback);
void inject(@NotNull ScrollableWidget scrollableWidget);
void inject(@NotNull DashClock dashClock);
}

@ -0,0 +1,69 @@
package org.tasks.preferences.fragments
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.Inventory
import org.tasks.billing.PurchaseActivity
import org.tasks.injection.FragmentComponent
import org.tasks.injection.InjectingPreferenceFragment
import org.tasks.preferences.DefaultFilterProvider
import javax.inject.Inject
private const val REQUEST_SELECT_FILTER = 1005
private const val REQUEST_SUBSCRIPTION = 1006
class DashClock : InjectingPreferenceFragment() {
@Inject lateinit var defaultFilterProvider: DefaultFilterProvider
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
@Inject lateinit var inventory: Inventory
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.preferences_dashclock, rootKey)
findPreference(R.string.p_dashclock_filter)
.setOnPreferenceClickListener {
val intent = Intent(context, FilterSelectionActivity::class.java)
intent.putExtra(
FilterSelectionActivity.EXTRA_FILTER, defaultFilterProvider.dashclockFilter)
intent.putExtra(FilterSelectionActivity.EXTRA_RETURN_FILTER, true)
startActivityForResult(intent, REQUEST_SELECT_FILTER)
false
}
refreshPreferences()
if (!inventory.purchasedDashclock()) {
startActivityForResult(Intent(context, PurchaseActivity::class.java), REQUEST_SUBSCRIPTION)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == REQUEST_SELECT_FILTER) {
if (resultCode == Activity.RESULT_OK) {
val filter: Filter = data!!.getParcelableExtra(FilterSelectionActivity.EXTRA_FILTER)!!
defaultFilterProvider.dashclockFilter = filter
refreshPreferences()
localBroadcastManager.broadcastRefresh()
}
} else if (requestCode == REQUEST_SUBSCRIPTION) {
if (!inventory.purchasedDashclock()) {
activity!!.finish()
}
} else {
super.onActivityResult(requestCode, resultCode, data)
}
}
private fun refreshPreferences() {
val filter = defaultFilterProvider.getFilterFromPreference(R.string.p_dashclock_filter)
findPreference(R.string.p_dashclock_filter).summary = filter.listingTitle
}
override fun inject(component: FragmentComponent) = component.inject(this)
}

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<com.todoroo.astrid.ui.MultilinePreference
<Preference
android:key="@string/p_dashclock_filter"
android:title="@string/filter"/>
</PreferenceScreen>
Loading…
Cancel
Save