diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f59113fc9..2113370d0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -477,7 +477,7 @@ android:value="Display a count of active tasks"/> + android:value="org.tasks.dashclock.DashClockSettings"/> { - 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); - } -} diff --git a/app/src/main/java/org/tasks/dashclock/DashClockSettings.kt b/app/src/main/java/org/tasks/dashclock/DashClockSettings.kt new file mode 100644 index 000000000..55fc4546c --- /dev/null +++ b/app/src/main/java/org/tasks/dashclock/DashClockSettings.kt @@ -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) +} \ No newline at end of file diff --git a/app/src/main/java/org/tasks/injection/FragmentComponent.java b/app/src/main/java/org/tasks/injection/FragmentComponent.java index 3b1832943..0dba62edd 100644 --- a/app/src/main/java/org/tasks/injection/FragmentComponent.java +++ b/app/src/main/java/org/tasks/injection/FragmentComponent.java @@ -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); } diff --git a/app/src/main/java/org/tasks/preferences/fragments/DashClock.kt b/app/src/main/java/org/tasks/preferences/fragments/DashClock.kt new file mode 100644 index 000000000..7835e6ab4 --- /dev/null +++ b/app/src/main/java/org/tasks/preferences/fragments/DashClock.kt @@ -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) +} \ No newline at end of file diff --git a/app/src/main/res/xml/preferences_dashclock.xml b/app/src/main/res/xml/preferences_dashclock.xml index 1616808a6..99b07d783 100644 --- a/app/src/main/res/xml/preferences_dashclock.xml +++ b/app/src/main/res/xml/preferences_dashclock.xml @@ -1,6 +1,6 @@ - \ No newline at end of file