diff --git a/app/src/amazon/res/values/arrays.xml b/app/src/amazon/res/values/arrays.xml
deleted file mode 100644
index 269a9b40a..000000000
--- a/app/src/amazon/res/values/arrays.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
- - @string/themes
- - @string/pro_caldav_sync
- - @string/pro_multiple_google_task_accounts
- - @string/pro_tasker_plugins
- - @string/pro_dashclock_extension
-
-
\ No newline at end of file
diff --git a/app/src/generic/res/values/arrays.xml b/app/src/generic/res/values/arrays.xml
deleted file mode 100644
index 5ce713747..000000000
--- a/app/src/generic/res/values/arrays.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/app/src/googleplay/java/org/tasks/billing/BillingClientImpl.java b/app/src/googleplay/java/org/tasks/billing/BillingClientImpl.java
index 8f5941c6f..a00e8b73d 100644
--- a/app/src/googleplay/java/org/tasks/billing/BillingClientImpl.java
+++ b/app/src/googleplay/java/org/tasks/billing/BillingClientImpl.java
@@ -149,11 +149,12 @@ public class BillingClientImpl implements BillingClient, PurchasesUpdatedListene
@Override
public void onPurchasesUpdated(
@BillingResponse int resultCode, List purchases) {
- if (resultCode == BillingResponse.OK) {
+ boolean success = resultCode == BillingResponse.OK;
+ if (success) {
add(purchases);
}
if (onPurchasesUpdated != null) {
- onPurchasesUpdated.onPurchasesUpdated();
+ onPurchasesUpdated.onPurchasesUpdated(success);
}
String skus =
purchases == null
diff --git a/app/src/googleplay/res/values/arrays.xml b/app/src/googleplay/res/values/arrays.xml
deleted file mode 100644
index 92d80dfb2..000000000
--- a/app/src/googleplay/res/values/arrays.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
- - @string/themes
- - @string/pro_caldav_sync
- - @string/pro_etesync
- - @string/pro_multiple_google_task_accounts
- - @string/pro_google_places_search
- - @string/pro_tasker_plugins
- - @string/pro_dashclock_extension
-
-
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index aa8e91c1d..3a8e5ee6a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -464,7 +464,7 @@
+ android:theme="@style/Tasks" />
finish());
- }
-
- @Override
- public void inject(ActivityComponent component) {
- component.inject(this);
- }
-}
diff --git a/app/src/main/java/org/tasks/billing/PurchaseActivity.kt b/app/src/main/java/org/tasks/billing/PurchaseActivity.kt
new file mode 100644
index 000000000..1f684acef
--- /dev/null
+++ b/app/src/main/java/org/tasks/billing/PurchaseActivity.kt
@@ -0,0 +1,215 @@
+package org.tasks.billing
+
+import android.annotation.SuppressLint
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Bundle
+import android.view.MenuItem
+import android.view.View
+import androidx.appcompat.widget.Toolbar
+import butterknife.ButterKnife
+import butterknife.OnClick
+import com.google.android.material.button.MaterialButtonToggleGroup
+import com.google.common.collect.ContiguousSet
+import com.google.common.collect.DiscreteDomain
+import com.google.common.collect.Lists
+import com.google.common.collect.Range
+import org.tasks.LocalBroadcastManager
+import org.tasks.R
+import org.tasks.databinding.ActivityPurchaseBinding
+import org.tasks.dialogs.DialogBuilder
+import org.tasks.dialogs.IconLayoutManager
+import org.tasks.injection.ActivityComponent
+import org.tasks.injection.ThemedInjectingAppCompatActivity
+import org.tasks.locale.Locale
+import org.tasks.themes.Theme
+import timber.log.Timber
+import java.lang.String
+import javax.inject.Inject
+
+private const val EXTRA_MONTHLY = "extra_monthly"
+private const val EXTRA_PRICE = "extra_price"
+
+class PurchaseActivity : ThemedInjectingAppCompatActivity(), OnPurchasesUpdated, Toolbar.OnMenuItemClickListener {
+
+ @Inject lateinit var inventory: Inventory
+ @Inject lateinit var dialogBuilder: DialogBuilder
+ @Inject lateinit var billingClient: BillingClient
+ @Inject lateinit var localBroadcastManager: LocalBroadcastManager
+ @Inject lateinit var locale: Locale
+ @Inject lateinit var theme: Theme
+
+ private lateinit var binding: ActivityPurchaseBinding
+ private lateinit var adapter: PurchaseAdapter
+
+ private var currentSubscription: Purchase? = null
+
+ private val purchaseReceiver: BroadcastReceiver = object : BroadcastReceiver() {
+ override fun onReceive(context: Context, intent: Intent) {
+ setup()
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityPurchaseBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+ ButterKnife.bind(this)
+
+ adapter = PurchaseAdapter(this, theme, locale, ::onPriceChanged)
+
+ if (savedInstanceState != null) {
+ binding.buttons.check(
+ if (savedInstanceState.getBoolean(EXTRA_MONTHLY)) R.id.button_monthly else R.id.button_annually)
+ adapter.selected = savedInstanceState.getInt(EXTRA_PRICE)
+
+ }
+
+ binding.buttons.addOnButtonCheckedListener { group: MaterialButtonToggleGroup?, id: Int, checked: Boolean -> this.onButtonChecked(group!!, id, checked) }
+
+ val toolbar = binding.toolbar.toolbar
+ toolbar.setNavigationIcon(R.drawable.ic_outline_arrow_back_24px)
+ toolbar.setNavigationContentDescription(R.string.back)
+ toolbar.setNavigationOnClickListener { finish() }
+ toolbar.setTitle(R.string.upgrade_to_pro)
+ toolbar.inflateMenu(R.menu.menu_purchase_activity)
+ toolbar.setOnMenuItemClickListener(this)
+
+ themeColor.apply(toolbar)
+
+ setWaitScreen(true)
+ }
+
+ @SuppressLint("DefaultLocale")
+ @OnClick(R.id.subscribe)
+ fun subscribe() {
+ if (currentSubscriptionSelected() && currentSubscription?.isCanceled == true) {
+ billingClient.initiatePurchaseFlow(
+ this, currentSubscription!!.sku, SkuDetails.TYPE_SUBS, null)
+ } else {
+ billingClient.initiatePurchaseFlow(this, String.format("%s_%02d", if (isMonthly()) "monthly" else "annual", adapter.selected),
+ SkuDetails.TYPE_SUBS,
+ currentSubscription?.sku)
+ }
+ billingClient.addPurchaseCallback(this)
+ }
+
+ private fun onButtonChecked(group: MaterialButtonToggleGroup, id: Int, checked: Boolean) {
+ if (id == R.id.button_monthly) {
+ if (!checked && group.checkedButtonId != R.id.button_annually) {
+ group.check(R.id.button_monthly)
+ }
+ } else {
+ if (!checked && group.checkedButtonId != R.id.button_monthly) {
+ group.check(R.id.button_annually)
+ }
+ }
+ updateSubscribeButton()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ outState.putBoolean(EXTRA_MONTHLY, isMonthly())
+ outState.putInt(EXTRA_PRICE, adapter.selected)
+ }
+
+ private fun isMonthly() = binding.buttons.checkedButtonId == R.id.button_monthly
+
+ private fun setWaitScreen(isWaitScreen: Boolean) {
+ Timber.d("setWaitScreen(%s)", isWaitScreen)
+ binding.recyclerView.visibility = if (isWaitScreen) View.GONE else View.VISIBLE
+ binding.buttons.visibility = if (isWaitScreen) View.GONE else View.VISIBLE
+ binding.subscribe.visibility = if (isWaitScreen) View.GONE else View.VISIBLE
+ binding.screenWait.visibility = if (isWaitScreen) View.VISIBLE else View.GONE
+ }
+
+ override fun onStart() {
+ super.onStart()
+ localBroadcastManager.registerPurchaseReceiver(purchaseReceiver)
+ billingClient.queryPurchases()
+ }
+
+ override fun onStop() {
+ super.onStop()
+ localBroadcastManager.unregisterReceiver(purchaseReceiver)
+ }
+
+ override fun inject(component: ActivityComponent) {
+ component.inject(this)
+ }
+
+ private fun setup() {
+ currentSubscription = inventory.subscription
+ if (adapter.selected == 0) {
+ adapter.selected = currentSubscription?.subscriptionPrice ?: 3
+ if (currentSubscription != null) {
+ binding.buttons.check(if (currentSubscription?.isMonthly == true) R.id.button_monthly else R.id.button_annually)
+ }
+ }
+ binding.unsubscribe.visibility = if (currentSubscription == null || currentSubscription?.isCanceled == true) View.GONE else View.VISIBLE
+ updateSubscribeButton()
+ setWaitScreen(false)
+ adapter.submitList(
+ Lists.newArrayList(ContiguousSet.create(Range.closed(1, 10), DiscreteDomain.integers())))
+ binding.recyclerView.layoutManager = IconLayoutManager(this)
+ binding.recyclerView.adapter = adapter
+ }
+
+ private fun updateSubscribeButton() {
+ binding.subscribe.isEnabled = true
+ if (currentSubscription == null) {
+ binding.subscribe.setText(R.string.button_subscribe)
+ } else if (currentSubscriptionSelected()) {
+ if (currentSubscription!!.isCanceled) {
+ binding.subscribe.setText(R.string.button_restore_subscription)
+ } else {
+ binding.subscribe.setText(R.string.button_current_subscription)
+ binding.subscribe.isEnabled = false
+ }
+ } else {
+ binding.subscribe.setText(if (isUpgrade()) R.string.button_upgrade else R.string.button_downgrade)
+ }
+ }
+
+ private fun currentSubscriptionSelected() =
+ currentSubscription != null
+ && isMonthly() == currentSubscription!!.isMonthly
+ && adapter.selected == currentSubscription!!.subscriptionPrice
+
+ private fun isUpgrade() = if (isMonthly() == currentSubscription!!.isMonthly) {
+ currentSubscription!!.subscriptionPrice < adapter.selected
+ } else {
+ isMonthly()
+ }
+
+ private fun onPriceChanged(price: Int) {
+ adapter.selected = price
+ updateSubscribeButton()
+ }
+
+ @OnClick(R.id.unsubscribe)
+ fun manageSubscription() {
+ startActivity(
+ Intent(
+ Intent.ACTION_VIEW,
+ Uri.parse(getString(R.string.manage_subscription_url, currentSubscription!!.sku))))
+ }
+
+ override fun onPurchasesUpdated(success: Boolean) {
+ if (success) {
+ finish()
+ }
+ }
+
+ override fun onMenuItemClick(item: MenuItem?): Boolean {
+ return if (item?.itemId == R.id.menu_more_info) {
+ startActivity(
+ Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.subscription_help_url))))
+ true
+ } else {
+ false
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/tasks/billing/PurchaseDialog.java b/app/src/main/java/org/tasks/billing/PurchaseDialog.java
deleted file mode 100644
index 25d930ffe..000000000
--- a/app/src/main/java/org/tasks/billing/PurchaseDialog.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.tasks.billing;
-
-import static com.google.common.collect.Lists.transform;
-import static java.util.Arrays.asList;
-import static org.tasks.billing.NameYourPriceDialog.newNameYourPriceDialog;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnDismissListener;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.TextView;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import com.google.common.base.Joiner;
-import javax.inject.Inject;
-import org.tasks.R;
-import org.tasks.dialogs.DialogBuilder;
-import org.tasks.injection.DialogFragmentComponent;
-import org.tasks.injection.ForActivity;
-import org.tasks.injection.InjectingDialogFragment;
-import org.tasks.themes.Theme;
-
-public class PurchaseDialog extends InjectingDialogFragment {
-
- private static final String FRAG_TAG_PRICE = "frag_tag_price";
-
- @Inject DialogBuilder dialogBuilder;
- @Inject Theme theme;
- @Inject @ForActivity Context context;
- private OnDismissListener listener;
-
- public static PurchaseDialog newPurchaseDialog() {
- return new PurchaseDialog();
- }
-
- @NonNull
- @Override
- public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
- View view = theme.getLayoutInflater(context).inflate(R.layout.dialog_purchase, null);
- TextView textView = view.findViewById(R.id.feature_list);
- String[] rows = context.getResources().getStringArray(R.array.pro_description);
- textView.setText(Joiner.on('\n').join(transform(asList(rows), item -> "\u2022 " + item)));
- return dialogBuilder
- .newDialog(R.string.pro_support_development)
- .setView(view)
- .setPositiveButton(
- R.string.name_your_price,
- (dialog, which) -> {
- newNameYourPriceDialog()
- .setOnDismissListener(listener)
- .show(getFragmentManager(), FRAG_TAG_PRICE);
- listener = null;
- dialog.dismiss();
- })
- .show();
- }
-
- void setOnDismissListener(OnDismissListener listener) {
- this.listener = listener;
- }
-
- @Override
- public void onDismiss(@NonNull DialogInterface dialog) {
- super.onDismiss(dialog);
-
- if (listener != null) {
- listener.onDismiss(dialog);
- }
- }
-
- @Override
- protected void inject(DialogFragmentComponent component) {
- component.inject(this);
- }
-}
diff --git a/app/src/main/java/org/tasks/caldav/BaseCaldavAccountSettingsActivity.java b/app/src/main/java/org/tasks/caldav/BaseCaldavAccountSettingsActivity.java
index 55224f062..467a8eb57 100644
--- a/app/src/main/java/org/tasks/caldav/BaseCaldavAccountSettingsActivity.java
+++ b/app/src/main/java/org/tasks/caldav/BaseCaldavAccountSettingsActivity.java
@@ -2,7 +2,6 @@ package org.tasks.caldav;
import static android.text.TextUtils.isEmpty;
import static com.todoroo.astrid.data.Task.NO_ID;
-import static org.tasks.billing.PurchaseDialog.newPurchaseDialog;
import android.content.Context;
import android.content.Intent;
@@ -31,6 +30,7 @@ import java.net.URISyntaxException;
import javax.inject.Inject;
import org.tasks.R;
import org.tasks.billing.Inventory;
+import org.tasks.billing.PurchaseActivity;
import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavDao;
import org.tasks.databinding.ActivityCaldavAccountSettingsBinding;
@@ -113,7 +113,7 @@ public abstract class BaseCaldavAccountSettingsActivity extends ThemedInjectingA
.setDuration(BaseTransientBottomBar.LENGTH_INDEFINITE)
.setAction(
R.string.button_subscribe,
- v -> newPurchaseDialog().show(getSupportFragmentManager(), null))
+ v -> startActivity(new Intent(this, PurchaseActivity.class)))
.show();
}
}
diff --git a/app/src/main/java/org/tasks/dialogs/ColorPalettePicker.kt b/app/src/main/java/org/tasks/dialogs/ColorPalettePicker.kt
index 16adde05a..26acdf647 100644
--- a/app/src/main/java/org/tasks/dialogs/ColorPalettePicker.kt
+++ b/app/src/main/java/org/tasks/dialogs/ColorPalettePicker.kt
@@ -16,7 +16,7 @@ import butterknife.ButterKnife
import org.tasks.Callback
import org.tasks.R
import org.tasks.billing.Inventory
-import org.tasks.billing.PurchaseDialog
+import org.tasks.billing.PurchaseActivity
import org.tasks.dialogs.ColorPickerAdapter.Palette
import org.tasks.dialogs.ColorWheelPicker.Companion.newColorWheel
import org.tasks.injection.DialogFragmentComponent
@@ -28,7 +28,6 @@ import javax.inject.Inject
class ColorPalettePicker : InjectingDialogFragment() {
companion object {
- private const val FRAG_TAG_PURCHASE = "frag_tag_purchase"
private const val FRAG_TAG_COLOR_PICKER = "frag_tag_color_picker"
private const val EXTRA_PALETTE = "extra_palette"
const val EXTRA_SELECTED = ColorWheelPicker.EXTRA_SELECTED
@@ -117,7 +116,7 @@ class ColorPalettePicker : InjectingDialogFragment() {
builder.setNegativeButton(android.R.string.cancel, null)
} else {
builder.setPositiveButton(R.string.button_subscribe) { _: DialogInterface?, _: Int ->
- PurchaseDialog.newPurchaseDialog().show(parentFragmentManager, FRAG_TAG_PURCHASE)
+ context?.startActivity(Intent(context!!, PurchaseActivity::class.java))
}
}
return builder.show()
diff --git a/app/src/main/java/org/tasks/dialogs/IconPickerDialog.java b/app/src/main/java/org/tasks/dialogs/IconPickerDialog.java
index 2619eaa12..2e6dea310 100644
--- a/app/src/main/java/org/tasks/dialogs/IconPickerDialog.java
+++ b/app/src/main/java/org/tasks/dialogs/IconPickerDialog.java
@@ -1,11 +1,10 @@
package org.tasks.dialogs;
-import static org.tasks.billing.PurchaseDialog.newPurchaseDialog;
-
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
+import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@@ -17,6 +16,7 @@ import butterknife.ButterKnife;
import javax.inject.Inject;
import org.tasks.R;
import org.tasks.billing.Inventory;
+import org.tasks.billing.PurchaseActivity;
import org.tasks.injection.DialogFragmentComponent;
import org.tasks.injection.ForActivity;
import org.tasks.injection.InjectingDialogFragment;
@@ -24,7 +24,6 @@ import org.tasks.themes.CustomIcons;
public class IconPickerDialog extends InjectingDialogFragment {
- private static final String FRAG_TAG_PURCHASE = "frag_tag_purchase";
private static final String EXTRA_CURRENT = "extra_current";
@BindView(R.id.icons)
@@ -66,7 +65,7 @@ public class IconPickerDialog extends InjectingDialogFragment {
if (!inventory.hasPro()) {
builder.setPositiveButton(
R.string.button_subscribe,
- (dialog, which) -> newPurchaseDialog().show(getFragmentManager(), FRAG_TAG_PURCHASE));
+ (dialog, which) -> context.startActivity(new Intent(context, PurchaseActivity.class)));
}
return builder.show();
}
diff --git a/app/src/main/java/org/tasks/injection/DialogFragmentComponent.java b/app/src/main/java/org/tasks/injection/DialogFragmentComponent.java
index e5ac3e93b..8fdae1828 100644
--- a/app/src/main/java/org/tasks/injection/DialogFragmentComponent.java
+++ b/app/src/main/java/org/tasks/injection/DialogFragmentComponent.java
@@ -1,13 +1,11 @@
package org.tasks.injection;
import dagger.Subcomponent;
-import org.tasks.calendars.CalendarPicker;
import org.tasks.activities.RemoteListPicker;
-import org.tasks.billing.NameYourPriceDialog;
-import org.tasks.billing.PurchaseDialog;
+import org.tasks.calendars.CalendarPicker;
import org.tasks.dialogs.AddAttachmentDialog;
-import org.tasks.dialogs.ColorWheelPicker;
import org.tasks.dialogs.ColorPalettePicker;
+import org.tasks.dialogs.ColorWheelPicker;
import org.tasks.dialogs.ExportTasksDialog;
import org.tasks.dialogs.GeofenceDialog;
import org.tasks.dialogs.IconPickerDialog;
@@ -49,10 +47,6 @@ public interface DialogFragmentComponent {
void inject(IconPickerDialog iconPickerDialog);
- void inject(PurchaseDialog purchaseDialog);
-
- void inject(NameYourPriceDialog nameYourPriceDialog);
-
void inject(ExportTasksDialog exportTasksDialog);
void inject(ImportTasksDialog importTasksDialog);
diff --git a/app/src/main/java/org/tasks/locale/ui/activity/TaskerCreateTaskActivity.java b/app/src/main/java/org/tasks/locale/ui/activity/TaskerCreateTaskActivity.java
index 7d9a93c5e..c1de10d3e 100755
--- a/app/src/main/java/org/tasks/locale/ui/activity/TaskerCreateTaskActivity.java
+++ b/app/src/main/java/org/tasks/locale/ui/activity/TaskerCreateTaskActivity.java
@@ -1,7 +1,5 @@
package org.tasks.locale.ui.activity;
-import static org.tasks.billing.PurchaseDialog.newPurchaseDialog;
-
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@@ -13,6 +11,7 @@ import net.dinglisch.android.tasker.TaskerPlugin;
import org.tasks.LocalBroadcastManager;
import org.tasks.R;
import org.tasks.billing.Inventory;
+import org.tasks.billing.PurchaseActivity;
import org.tasks.databinding.ActivityTaskerCreateBinding;
import org.tasks.injection.ActivityComponent;
import org.tasks.locale.bundle.TaskCreationBundle;
@@ -21,8 +20,6 @@ import org.tasks.preferences.Preferences;
public final class TaskerCreateTaskActivity extends AbstractFragmentPluginAppCompatActivity
implements Toolbar.OnMenuItemClickListener {
- private static final String FRAG_TAG_PURCHASE = "frag_tag_purchase";
-
@Inject Preferences preferences;
@Inject Inventory inventory;
@Inject LocalBroadcastManager localBroadcastManager;
@@ -71,7 +68,7 @@ public final class TaskerCreateTaskActivity extends AbstractFragmentPluginAppCom
}
private void showPurchaseDialog() {
- newPurchaseDialog().show(getSupportFragmentManager(), FRAG_TAG_PURCHASE);
+ startActivity(new Intent(this, PurchaseActivity.class));
}
@Override
diff --git a/app/src/main/java/org/tasks/ui/NavigationDrawerFragment.java b/app/src/main/java/org/tasks/ui/NavigationDrawerFragment.java
index b8cb5a5a6..8f18c90eb 100644
--- a/app/src/main/java/org/tasks/ui/NavigationDrawerFragment.java
+++ b/app/src/main/java/org/tasks/ui/NavigationDrawerFragment.java
@@ -6,7 +6,6 @@ import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop;
import static com.todoroo.andlib.utility.AndroidUtilities.preLollipop;
import static org.tasks.LocalBroadcastManager.REFRESH;
import static org.tasks.LocalBroadcastManager.REFRESH_LIST;
-import static org.tasks.billing.PurchaseDialog.newPurchaseDialog;
import android.app.Activity;
import android.content.BroadcastReceiver;
@@ -41,6 +40,7 @@ import java.util.Map;
import javax.inject.Inject;
import org.tasks.LocalBroadcastManager;
import org.tasks.R;
+import org.tasks.billing.PurchaseActivity;
import org.tasks.filters.FilterProvider;
import org.tasks.filters.NavigationDrawerAction;
import org.tasks.injection.FragmentComponent;
@@ -54,7 +54,6 @@ public class NavigationDrawerFragment extends InjectingFragment {
public static final int REQUEST_SETTINGS = 10101;
public static final int REQUEST_PURCHASE = 10102;
public static final int REQUEST_DONATE = 10103;
- private static final String FRAG_TAG_PURCHASE_DIALOG = "frag_tag_purchase_dialog";
private final RefreshReceiver refreshReceiver = new RefreshReceiver();
@Inject LocalBroadcastManager localBroadcastManager;
@@ -118,7 +117,7 @@ public class NavigationDrawerFragment extends InjectingFragment {
} else if (item instanceof NavigationDrawerAction) {
NavigationDrawerAction action = (NavigationDrawerAction) item;
if (action.requestCode == REQUEST_PURCHASE) {
- newPurchaseDialog().show(getFragmentManager(), FRAG_TAG_PURCHASE_DIALOG);
+ startActivity(new Intent(getContext(), PurchaseActivity.class));
} else if (action.requestCode == REQUEST_DONATE) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://tasks.org/donate")));
} else {
diff --git a/app/src/main/res/color/button_accent_stroke.xml b/app/src/main/res/color/button_accent_stroke.xml
index ef283a50a..8ae70677c 100644
--- a/app/src/main/res/color/button_accent_stroke.xml
+++ b/app/src/main/res/color/button_accent_stroke.xml
@@ -1,5 +1,5 @@
-
-
+
+
diff --git a/app/src/main/res/color/button_selected_accent_stroke.xml b/app/src/main/res/color/button_selected_accent_stroke.xml
new file mode 100644
index 000000000..ef283a50a
--- /dev/null
+++ b/app/src/main/res/color/button_selected_accent_stroke.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_purchase.xml b/app/src/main/res/layout/activity_purchase.xml
new file mode 100644
index 000000000..44000a2a0
--- /dev/null
+++ b/app/src/main/res/layout/activity_purchase.xml
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/dialog_name_your_price.xml b/app/src/main/res/layout/dialog_name_your_price.xml
deleted file mode 100644
index d7a8ff030..000000000
--- a/app/src/main/res/layout/dialog_name_your_price.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_purchase.xml b/app/src/main/res/layout/dialog_purchase.xml
deleted file mode 100644
index 5b4ead0d5..000000000
--- a/app/src/main/res/layout/dialog_purchase.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_purchase_activity.xml b/app/src/main/res/menu/menu_purchase_activity.xml
new file mode 100644
index 000000000..3b4d83d66
--- /dev/null
+++ b/app/src/main/res/menu/menu_purchase_activity.xml
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-bg-rBG/strings.xml b/app/src/main/res/values-bg-rBG/strings.xml
index 2ee850a52..59d581ec9 100644
--- a/app/src/main/res/values-bg-rBG/strings.xml
+++ b/app/src/main/res/values-bg-rBG/strings.xml
@@ -452,11 +452,6 @@
е настроено правилно
Таксуването не е налице. Моля, проверете устройството си.
Относно
- Допълнителни теми
- CalDAV синхранизация
- Множество Google Tasks акаунти
- Търсене в Google Места
- Tasker добавки
Dashclock разширение
Изисква pro абонамент
Излизане
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index 15a48b2b8..2a3bd0e19 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -465,14 +465,12 @@
O aplikaci
Aplikace Tasks je svobodný software s otevřeným zdrojovým kódem licencovaný pod GNU General Public License v3.0
Ikona
- Aplikace Tasks potřebuje Vaši podporu!
Zvýšit, snížit nebo zrušit Váš odběr
Aktuální odběr
Obnovit odběr
Snížit odběr
Zvýšit odběr
Zrušit odběr
- Aplikace Tasks je svobodný software s otevřeným zdrojovým kódem, který neobsahuje žádné reklamy ani neprodává Vaše osobní informace
Pro odkaz nebyla nalezena žádná aplikace
Zadejte heslo pro šifrování
Heslo pro šifrování
@@ -480,13 +478,6 @@
Zopakujte heslo pro šifrování
Špatné heslo pro šifrování
Nápověda a zpětná vazba
- Více motivů a ikon
- Synchronizace pomocí CalDAV
- Odběrem podpoříte vývoj aplikace a odemknete si další funkce
- Synchronizace pomocí EteSync
- Několik Google účtů
- Vyhledávání v Google Places
- Tasker pluginy
Dashclock rozšíření
Vyžaduje PRO odběr
Odhlásit se
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 2543769cb..5b516ef03 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -443,11 +443,6 @@
Abrechnung nicht verfügbar. Bitte überprüfe dein Gerät.
Über
Tasks ist freie, quelloffene Software, die unter der GNU General Public License v3.0 lizenziert ist
- Zusätzliche Themen und Symbole
- CalDAV-Synchronisierung
- Mehrere Google-Tasks-Konten
- Google-Ortssuche
- Tasker Plugins
Dashclock-Erweiterung
Pro-Freischaltung benötigt
Abmelden
@@ -492,15 +487,12 @@
Version %s
Fehler: %s
Symbol
- Tasks braucht deine Unterstützung!
Abonnement hoch-/herabstufen oder kündigen
Aktuelles Abonnement
Abonnement wiederherstellen
Abonnement herabstufen
Abonnement hochstufen
Abonnement kündigen
- Tasks ist freie, quelloffene Software, die weder Werbung enthält, noch deine persönlichen Daten verkauft
- Abonniere jetzt, um die Entwicklung zu unterstützen und zusätzliche Funktionen freizuschalten
Nenne deinen Preis
monatlich
jährlich
@@ -524,7 +516,6 @@
Verschlüsselungspasswort erforderlich
Verschlüsselungs-Passwort
Anzeigename
- EteSync-Synchronisierung
Diese Funktion erfordert ein Abonnement
Passwörter stimmen nicht überein
Verschlüsselungs-Passwort bestätigen
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 92b430d84..2a6cd2422 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -451,11 +451,6 @@
Pago no disponible. Comprueba su dispositivo.
Sobre
Tasks es software libre de código abierto, licenciado bajo la GNU General Public License v3.0
- Temas e iconos adicionales
- Sincronización de CalDAV
- Múltiples cuentas de Google Task
- Buscar en Google Places
- Plugins de Tasker
Extensión Dashclock
Requiere suscripción profesional
Cerrar sesión
@@ -497,15 +492,12 @@
Error : %s
", "
Icono
- ¡Tasks necesitan su apoyo!
Actualizar, rebajar o cancelar su suscripción
Suscripción actual
Restaurar la suscripción
Suscripción de degradación
Suscripción de actualización
Cancelar la suscripción
- Tasks es un software libre de código abierto que no muestra publicidad ni vende su información personal
- Suscríbase ahora para apoyar el desarrollo y desbloquear funciones adicionales
Escoger tu precio
Mensualmente
Anualmente
@@ -532,7 +524,6 @@
Contraseña de encriptado requerida
Contraseña de encriptado
Mostrar el nombre
- Sincronización de EteSync
Esta característica requiere una suscripción
Seleccione una plataforma
Servicio básico que se sincroniza con tu cuenta de Google
diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml
index d370570ba..8b110739c 100644
--- a/app/src/main/res/values-et/strings.xml
+++ b/app/src/main/res/values-et/strings.xml
@@ -272,10 +272,6 @@
Telli
Lisainfo
Info
- Lisateemad
- CalDAV sünkroonimine
- Mitu Google Taski kontot
- Taskeri pluginad
Dashclock laiendused
Nõuavad PRO versiooni
Logi välja
diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml
index 095333048..17c5f429d 100644
--- a/app/src/main/res/values-eu/strings.xml
+++ b/app/src/main/res/values-eu/strings.xml
@@ -459,11 +459,6 @@
Fakturazioa ez dago eskuragarri. Egiaztatu zure gailua.
Honi buruz
Tasks aplikazioa software librea eta kode irekikoa da, GNU General Public License v3.0 lizentziapean
- Gai eta ikono gehigarriak
- CalDAV sinkronizazioa
- Hainbat Google Task kontu
- Google Places bilaketa
- Tasker gehigarriak
Dashclock luzapena
Pro harpidetza eskatzen du
Amaitu saioa
@@ -498,15 +493,12 @@
Baliogabeko babes-kopia fitxategia
Zeregin berriak goialdean
Ikonoa
- Tasks zure laguntza behar du!
Handiagotu, txikiagotu edo ezeztatu zure harpidetza
Uneko harpidetza
Berrezarri harpidetza
Txikiagotu harpidetza
Handiagotu harpidetza
Ezeztatu harpidetza
- Tasks aplikazioa software librea eta kode irekikoa da, ez dizkizu iragarkiak ikusarazten eta ez ditu zure datu pertsonalak saltzen
- Harpidetu garapena babesteko eta ezaugarri gehigarriak eskuratzeko
Jarri zuk prezioa
Hilero
Urtero
@@ -534,7 +526,6 @@
Zifratze pasahitza behar da
Zifratze pasahitza
Erakutsi izena
- EteSync sinkronizazioa
Ezaugarri honek harpidetza eskatzen du
Hautatu plataforma
Zure Google kontuarekin sinkronizatzen den oinarrizko zerbitzua
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index b18ca9767..7cd16f630 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -411,5 +411,4 @@
Luo tehtävä
Ilmoituslista
Apua
- Lisäteemat
\ No newline at end of file
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 40f238c55..5a9c90d93 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -434,11 +434,6 @@ est configuré correctement
Achat indisponible. Veuillez vérifier votre appareil.
À propos
Tasks est un logiciel libre et open-source, licencié selon le GNU General Public License v3.0
- Thèmes et icônes additionnels
- Synchronisation de CalDAV
- Plusieurs comptes Google Task
- Recherche avec Google Places
- Plugins pour Tasker
Extension Dashclock
Abonnement professionnel requis
Se déconnecter
@@ -492,7 +487,6 @@ est configuré correctement
", "
Version %s
Icône
- Tâches à besoin de votre soutien !
Augmentez, diminuez ou annulez votre abonnement
Abonnement actuel
Restaurer l\'abonnement
@@ -503,8 +497,6 @@ est configuré correctement
Chaque mois
Chaque année
Erreur : %s
- Tasks est un logiciel libre open-source qui n\'affiche pas de publicités et ne vend pas vos informations personnelles
- Abonnez-vous dès maintenant pour soutenir le développement et débloquer des fonctionnalités supplémentaires
Mon tri
Permet au serveur de programmer des tâches récurrentes
Afficher temporairement les tâches une fois terminées
@@ -528,7 +520,6 @@ est configuré correctement
Mot de passe de chiffrement requis
Mot de passe de chiffrement
Afficher le nom
- Synchronisation de EteSync
Cette fonctionnalité nécessite un abonnement
Sélectionnez une plate-forme
Service de base qui se synchronise avec votre compte Google
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index 75a6e7b5d..e77f7d868 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -290,5 +290,4 @@
%s borradas
¿Borrar tareas seleccionadas?
¿Copiar tareas seleccionadas?
- Temas adicionales
\ No newline at end of file
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 26d4ecc09..c77f456df 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -452,11 +452,6 @@
Számlázási rendszer nem elérhető. Ellenőrizze az eszközét.
Névjegy
A Tasks nyílt forráskódú program, a GNU Általános Nyilvános Licenc v3.0 alapján licenszelve
- További témák és ikonok
- CalDAV szinkronizáció
- Több Google Task fiók
- Google Helyek keresés
- Tasker plugin-ok
Dashclock kiterjesztés
Pro előfizetést igényel
Kijelentkezés
@@ -494,15 +489,12 @@
%s m
", "
Ikon
- Támogasd a Tasks-ot!
Előfizetés upgrade-je, downgrade-je vagy lemondása
Jelenlegi előfizetés
Előfizetés visszaállítása
Előfizetés downgrade-je
Előfizetés upgrade-je
Előfizetés lemondása
- A Tasks egy olyan nyílt forráskódú program, amely nem jelenít meg hirdetéseket és nem adja el személyes adataidat
- Fizess elő most, ezzel támogatod a fejlesztést, és új funkciókat oldhatsz fel
Nevezd meg az árat
Havi
Éves
@@ -530,7 +522,6 @@
A titkosításhoz jelszó szükséges
Jelszó titkosításhoz
Megjelenített név
- EteSync szinkronizáció
Ez a funkció csak előfizetéssel vehető igénybe
Platform választása
Alapvető szolgáltatás, ami a Google accounttal szinkronizál
diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml
index efbe25b4a..bc903eaa9 100644
--- a/app/src/main/res/values-id/strings.xml
+++ b/app/src/main/res/values-id/strings.xml
@@ -374,7 +374,6 @@
Koneksi gagal
Hanya pada koneksi tak terbatas
Tingkatkan ke pro
- Tasks membutuhkan dukungan anda!
Kelola langganan
Tingkatkan, turunkan, atau batalkan langganan anda
Segarkan pembelian
@@ -387,13 +386,6 @@
Info lainnya
Tentang
Tasks adalah perangkat lunak bebas bersumber terbuka, dilindungi Lisensi Publik Umum GNU v3.0
- Tasks adalah perangkat lunak bebas bersumber terbuka yang tidak menampilkan iklan atau menjual informasi personal anda
- Langganan sekarang untuk mendukung pengembangan dan mengaktifkan fitur tambahan lainnya
- Ikon dan tema tambahan
- Sinkronisasi CalDAV
- Beberapa akun Google Tasks
- Pencarian Google Places
- Plugin Tasker
Ekstensi Dashclock
Membutuhkan langganan versi pro
Keluar
@@ -430,7 +422,6 @@
Menampilkan subtugas akan mengurangi performa aplikasi
Masukkan nama tag
Buat \"%s\"
- Sinkronisasi EteSync
Fitur ini membutuhkan anda berlangganan versi pro
Pilih platform
Layanan standar yang disinkronkan dengan akun Google anda
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 38058248e..dc4b3b67d 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -449,11 +449,6 @@ Google Play app sia impostata correttamente
Modalità addebito non disponibile. Verifica il tuo dispositivo
A riguardo
Tasks è un software gratuito e open-source, rilasciato secondo la GNU General Public License v3.0
- Ulteriori temi
- Sincronizzazione CalDAV
- Account attività Google multipli
- Cerca Google Places
- Plugin Tasker
Estensione Dashclock
Richiede versione pro
Esci
diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml
index ea0fb703b..3da40c9b4 100644
--- a/app/src/main/res/values-iw/strings.xml
+++ b/app/src/main/res/values-iw/strings.xml
@@ -489,11 +489,6 @@
חיוב לא זמין. בדוק את מכשירך.
אודות
Tasks הוא חופשי ובקוד פתוח, מוגש בתנאי הרישיון הציבורי הכללי של GNU בגרסה 3.0
- ערכות נושא וסמלים נוספים
- סנכרון CalDAV
- ריבוי חשבונות Google Task
- חיפוש ב\"Google לעסק שלי\"
- תוסף Tasker
הרחבת Dashclock
לא דורש הרשמה
התנתקות מהחשבון
@@ -529,14 +524,12 @@
משימות חדשות בראש הרשימה
", "
סמל
- Tasks צריך את התמיכה שלך!
שדרוג, שנמוך או ביטול המינוי
מינוי נוכחי
שחזור מינוי
שנמוך מינוי
שדרוג מינוי
ביטול מינוי
- יש להירשם כעת כדי לתמוך בפיתוח ולפתוח תכונתו נוספות
מה המחיר שלך
חודשי
שנתי
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 59ea065b0..c0e534eb6 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -450,11 +450,6 @@
支払がりようできません。お使いの端末を確認してください
アプリについて
Tasks は、GNU General Public License v3.0 でライセンスされる、自由オープンソースソフトウェアです
- 追加のテーマとアイコン
- CalDAV 同期
- 複数の Google ToDo リストカウント
- Google 場所検索
- Tasker プラグイン
Dashclock 拡張
プロ版のサブスクリプションが必要です
ログアウト
@@ -492,15 +487,12 @@
URL
", "
アイコン
- Tasksはあなたのサポートが必要です!
サブスクリプションのアップグレード、ダウングレード、またはキャンセル
現在のサブスクリプション
サブスクリプションの復元
サブスクリプションのダウングレード
サブスクリプションのアップグレード
サブスクリプションのキャンセル
- Tasksは、広告を表示したり、あなたの個人情報を販売しない、自由オープンソースソフトウェアです
- 今すぐサブスクリプションを購入して、開発をサポートし、追加機能のロックを解除しましょう
価格の名前
毎月
毎年
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index c3cd2bce4..c9530f3a0 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -451,10 +451,6 @@
결제가 불가합니다. 기기를 확인하십시오.
정보
Tasks는 GNU 일반공중사용권 3.0 (GPLv3)에 따라 사용이 허가된 리브레 오픈소스 소프트웨어입니다
- 추가적인 테마와 아이콘
- CalDAV 동기화
- 여러개의 구글 할일목록 계정 연결
- Tasker 플러그인
Dashclock 확장프로그램
프로 서비스 구독이 필요합니다
로그아웃
@@ -477,7 +473,6 @@
오류: %s
", "
구독 관리
- 구글 플레이스 검색
웹사이트 방문
위치 선택
현위치 선택
@@ -495,15 +490,12 @@
부적합한 백업 파일
새 할일을 가장 위로
아이콘
- Tasks는 여러분의 도움이 필요합니다!
업그레이드, 다운그레이드, 구독 취소
현재 구독
구독 복원
구독 다운그레이드
구독 업그레이드
구독 취소
- Tasks는 광고를 게시하거나 개인정보를 판매하지 않는 리브레 오픈소스 소프트웨어입니다
- 개발을 후원하고 부가 기능을 사용할 수 있도록 지금 구독하기
구독 금액 정하기
매월
매년
@@ -528,7 +520,6 @@
\"%s\" 생성
암호화 비밀번호 필수
암호화 비밀번호
- EteSync 동기화
이 기능을 사용하려면 구독해야 합니다
플랫폼 선택
기본 서비스는 구글 계정과 동기화합니다
diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml
index 533a78dac..63303991c 100644
--- a/app/src/main/res/values-lt/strings.xml
+++ b/app/src/main/res/values-lt/strings.xml
@@ -449,11 +449,6 @@ sukonfigūruota tinkamai.
Sąskaita negalima. Patikrinkite savo įrenginį.
Apie
Tasks yra nemokama ir atviro kodo programinė įranga, licencijuota pagal GNU General Public License v3.0 licenciją.
- Papildomos temos
- CalDAV sinchronizacija
- Kelios Google Task paskyros
- Paieška Google Places
- Tasker įskiepiai
Dashclock plėtinys
Reikalinga \"pro\" prenumerata
Atsijungti
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index ad26a8c55..2187882a4 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -459,11 +459,6 @@
Fakturering utilgjengelig. Sjekk din enhet.
Om
Tasks er fri programvare, lisensiert med GNU General Public-lisens v3.0
- Ytterligere drakter og ikoner
- CalDAV-synkronisering
- Flerfoldige Google Task-kontoer
- Google Places-søk
- Tasker-programtillegg
Dashclock-utvidelse
Krever pro-abonnement
Logg ut
@@ -498,15 +493,12 @@
Ugyldig sikkerhetskopifil
Nye oppgaver øverst
Ikon
- Tasks trenger din støtte.
Oppgrader, nedgrader eller avbryt ditt abonnement
Nåværende abonnement
Gjenopprett abonnement
Nedgrader abonnement
Oppgrader abonnement
Avbryt abonnement
- Tasks er fri programvare som ikke viser reklame eller selger din personvernsinfo
- Abonner nå for å støtte utviklingen og låse opp ytterligere funksjoner
Betal det du vil
Månedlig
Årlig
@@ -534,7 +526,6 @@
Krypteringspassord kreves
Krypteringspassord
Visningsnavn
- EteSynk-synkronisering
Denne funksjonen krever abonnement
Velg en plattform
Enkel tjeneste som synkroniserer med din Google-konto
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 26079882c..1531d4cf7 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -441,10 +441,6 @@
Betaling onmogelijk. Controleer je apparaat.
Over
Tasks is vrije open-source software, gelicensieerd onder de GNU General Public License v3.0
- Extra thema\'s en icons
- CalDAV synchroniseren
- Meerdere Google Task accounts
- Google Plaatsen zoeken
Dashclock extentie
Pro aanmelding vereist
Uitloggen
@@ -485,16 +481,12 @@
Filters
Filter
Accent
- Tasker plugins
- Tasks heeft je ondersteuning nodig!
Aanmelden, afmelden of annuleer je aanmelding
Huidige abonnement
Abonnement herstellen
Terugdraaien abonnement
Abonnement upgraden
Abonnement annuleren
- Tasks is vrije open-source software zonder advertenties of het doorverkopen van Je persoonlijke gegevens
- Meld je nu aan om de verdere ontwikkeling te ondersteunen en krijg extra functionaliteiten
Bepaal je prijs
Maandelijks
Jaarlijks
@@ -527,7 +519,6 @@
Coderingswachtwoord vereist
Coderingswachtwoord
Weergavenaam
- EteSync synchronisatie
Deze functionaliteit vereist een abonnement
Selecteer een platform
Basisservice die synchroniseert met uw Google-account
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 1c6a3e40b..e13051173 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -462,10 +462,6 @@
Płatność niedostępna. Sprawdź swoje urządzenie.
O
Tasks jest aplikacją darmową/libre z otwartym kodem źródłowym, na licencji GNU General Public License v3.0
- Dodatkowe motywy i ikony
- Synchronizacja CalDAV
- Wiele kont Google Task
- Wyszukiwanie w Google Places
Wymaga subskrypcji pro
Wyloguj
Wyloguj z %s? Wszystkie dane z tego konta zostaną usunięte z urządzenia
@@ -501,21 +497,17 @@
Błąd: %s
", "
Nie znaleziono zestawu domowego
- Wtyczki do Tasker
Rozszerzenie do Dashclock
Pokaż listy
Nieprawidłowy plik kopii zapasowej
Nowe zadania na górze
Ikona
- Tasks potrzebuje Twojego wsparcia!
Podwyższyć, obniżyć poziom albo anulować subskrypcję
Aktualna subskrypcja
Przywróć subskrypcję
Obniżyć poziom subskrypcji
Podwyższyć poziom subskrypcji
Anuluj subskrypcję
- Tasks to aplikacja darmową/libre z otwartym kodem źródłowym, która nie wyświetla reklam ani nie sprzedaje Twojch danych osobowych
- Subskrybuj teraz, aby wspierać rozwój aplikacji i odblokować dodatkowe funkcje
Nazwij swoją cenę
Miesięczne
Rocznie
@@ -543,7 +535,6 @@
Wymagane hasło szyfrowania
Hasło szyfrowania
Imię
- Synchronizacja EteSync
Ta funkcja wymaga subskrypcji
Wybierz platformę
Podstawowy serwis, synchronizujący dane z Twoim kontem Google
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 502512865..789c925c8 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -450,10 +450,6 @@ aplicativo Google Play está configurado corretamente
Faturamento indisponível. Por favor cheque seu dispositivo
Sobre
Tasks é um software livre e de código aberto licenciado sob a Licença Pública Geral GNU v3.0
- Temas adicionais
- Sincronização CalDAV
- Múltiplas contas do Google Tarefas
- Plugins do Tasker
Extensão Dashclock
Requer subscrição Pro
Sair
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index e20f46b87..079d1ed43 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -400,7 +400,6 @@
terceiro
quarto
último
- Temas adicionais
Cópias de segurança
Ligar
Abrir
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index ee8665509..8befd8f42 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -470,10 +470,6 @@
Оплата невозможна. Проверьте ваше устройство.
О программе
Tasks является свободным программным обеспечением с открытым исходным кодом, лицензированным под GNU General Public License v3.0
- Дополнительные темы и иконки
- Синхронизация CalDAV
- Несколько учётных записей Google Task
- Плагины для Tasker
Расширение для Dashclock
Требуется версия Про
Отключиться
@@ -503,7 +499,6 @@
Выберите новое местоположение
Неверный файл резервной копии
Иконка
- Tasks нуждается в вашей поддержке!
Текущая подписка
Восстановить подписку
Отменить подписку
@@ -511,14 +506,11 @@
URL
Ошибка: %s
", "
- Поиск в Google Places
Показать списки
Генерация уведомлений
Повысить, понизить уровень подписки или отменить ее
Понизить уровень подписки
Повысить уровень подписки
- Tasks - это свободное программное обеспечение с открытым исходным кодом, которое не показывает рекламу и не продает вашу личную информацию
- Подпишитесь сейчас, чтобы поддержать разработку и разблокировать дополнительные функции
Ручная сортировка
Временно показывать задачи после завершения
Задачи будут временно видны в списке после завершения
@@ -549,7 +541,6 @@
Требуется пароль шифрования
Пароль шифрования
Имя
- Синхронизация EteSync
Эта функция требует подписки
Выберите платформу
Простой сервис, который синхронизируется с Вашим аккаунтом Google
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index ac5a0fb1c..dfa3e0ad1 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -449,11 +449,6 @@ Google Play je správne nastavená
Platba nedostupná. Skontrolujte svoje zariadenie.
O
Úlohy je bezplatný softvér s otvoreným kódom pod GNU Public Licence v3.0
- Ďaľšie témy
- CaIDAV synchronizácia
- Viac účtov Google Task
- Miesta Google vyhľadanie
- Zásuvný modul Tasker
Rozšírenie Dashclock
Vyžaduje platenú verziu pro
Odhlásiť sa
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 27c84ef1e..b912d025a 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -279,7 +279,6 @@
Inga kalendrar hittades
Inställningar för widget
Rensa bort slutförda uppgifter?
- Ytterligare teman och ikoner
Ring
Öppna
förfallodatum
@@ -453,10 +452,6 @@
Faktureringen är inte tillgänglig. Kontrollera din enhet.
Om
Tasks är Libre Open-Source programvara, licensierad under GNU General Public License v 3.0
- CalDAV-synkronisering
- Flera Google-Tasks-konton
- Google platssökning
- Taskertillägg
DashClock extension
Kräver Pro-prenumeration
Logga ut
@@ -491,15 +486,12 @@
Ogiltig säkerhetskopia
Nya uppgifter överst
Ikon
- Tasks behöver ditt stöd!
Uppgradera, nedgradera eller Avbryt prenumerationen
Hantera prenumerationer
Återställ prenumeration
Nedgradera prenumeration
Uppgradera prenumerationen
Avbryt prenumeration
- Tasks är Libre programvara med öppen källkod som inte visar annonser eller säljer dina personuppgifter
- Prenumerera nu för att stödja utveckling och låsa upp ytterligare funktioner
Namnge ditt pris
Månadsvis
Årligen
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index e6cedd7d4..845f5c769 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -454,11 +454,6 @@
Faturalama kullanılabilir değil. Lütfen aygıtınızı denetleyin.
Hakkında
Tasks özgür açık kaynaklı yazılımdır, GNU Genel Kamu Lisansı sürüm 3.0 altında lisanslanmıştır
- Ek gövdeler ve simgeler
- CalDAV eşzamanlama
- Çoklu Google Görev hesabı
- Google Yerler araması
- Tasker eklentileri
Dashclock eklentisi
Pro aboneliği gerektirir
Oturumu kapat
@@ -497,15 +492,12 @@
Hata: %s
", "
Simge
- Tasks, desteğinize gereksiniyor!
Aboneliğinizi yükseltin, alçaltın veya iptal edin
Geçerli abonelik
Aboneliği geri getir
Aboneliği alçalt
Aboneliği yükselt
Aboneliği iptal et
- Tasks, kişisel bilginizi satmayan ve reklam göstermeyen özgür açık kaynaklı yazılımdır
- Gelişimi desteklemek ve ek özelliklerin kilidini kaldırmak için şimdi abone olun
Fiyat belirleyin
Aylık
Yıllık
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 5bbb153e7..c13ded38a 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -452,11 +452,6 @@
Оплата недоступна. Перевірте ваш пристрій
Про Tasks
Tasks є програмою з відкритим кодом з ліцензією GNU General Public License v3.0
- Додаткові схеми
- Синхронізація CalDAV
- Декілька облікових записів Google Tasks
- Пошук в Google Місця
- Tasker плагіни
Розширення Dashclock
Потребує преміум підписки
Вийти
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index cda091ebe..b49d4e8ca 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -434,10 +434,6 @@
帐单不可用。请检查你的设备。
关于
Tasks是遵循GNU通用公共许可证v3.0许可证的开源软件
- 其他主题和图标
- CalDAV同步
- 多Google Taks帐户
- Tasker 插件
Dashclock扩展
需要订阅专业版
登出
@@ -463,7 +459,6 @@
半径
%s 米
管理订阅
- Google Place搜索
抵达时提醒
离开时提醒
访问网站
@@ -486,15 +481,12 @@
无效的备份文件
新任务显示在顶部
图标
- Tasks需要您的支持!
升级,降级或取消您的订阅
当前订阅
恢复订阅
降级订阅
升级订阅
取消订阅
- Tasks是不显示广告或销售您个人信息的自由开源软件
- 现在订阅支持开发并解锁额外功能
您愿意支付多少费用
每月
每年
@@ -523,7 +515,6 @@
需要加密密码
加密密码
显示名称
- EteSync 同步
该功能需要订阅
选择平台
与您的谷歌账户同步的基本服务
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 59149916c..fe9865921 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -218,7 +218,6 @@
每月
每年
每 %s 重複
- 其他主題
輸入過濾名稱
您要放棄更改嗎?
繼續編輯
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ca3d28ebe..009dbcc1a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -471,7 +471,6 @@ File %1$s contained %2$s.\n\n
Connection failed
Only on unmetered connections
Upgrade to pro
- Tasks needs your support!
Manage subscription
Upgrade, downgrade, or cancel your subscription
Refresh purchases
@@ -487,14 +486,6 @@ File %1$s contained %2$s.\n\n
Billing unavailable. Please check your device.
About
Tasks is libre open-source software, licensed under the GNU General Public License v3.0
- Tasks is libre open-source software that does not display advertisements or sell your personal information
- Subscribe now to support development and unlock additional features
- Additional themes and icons
- CalDAV synchronization
- EteSync synchronization
- Multiple Google Task accounts
- Google Places search
- Tasker plugins
Dashclock extension
Requires pro subscription
This feature requires a subscription
@@ -563,4 +554,9 @@ File %1$s contained %2$s.\n\n
Ringtone, vibrations, and more
Invalid username or password
Color wheel
+ Hi! My name is Alex. I am the independent developer behind Tasks
+ I have spent thousands of hours working on Tasks, and I publish all of the source code online for free. In order to support my work some features require a subscription
+ Choose any subscription price below to start your free trial. You may cancel at any time
+ Your support means a lot to me, thank you!
+ Back
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 75a32c73d..2ea0ffdf7 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -171,7 +171,7 @@
- @color/button_accent_text
- @color/button_accent_background
- @color/button_accent_ripple
- - @color/button_accent_stroke
+ - @color/button_selected_accent_stroke