diff --git a/src/googleplay/AndroidManifest.xml b/src/googleplay/AndroidManifest.xml index 50cbc0345..db419a8d0 100644 --- a/src/googleplay/AndroidManifest.xml +++ b/src/googleplay/AndroidManifest.xml @@ -27,7 +27,7 @@ + android:theme="@style/TasksDialog" /> diff --git a/src/googleplay/java/org/tasks/activities/DonationActivity.java b/src/googleplay/java/org/tasks/activities/DonationActivity.java index 409806951..85e376180 100644 --- a/src/googleplay/java/org/tasks/activities/DonationActivity.java +++ b/src/googleplay/java/org/tasks/activities/DonationActivity.java @@ -1,10 +1,8 @@ package org.tasks.activities; -import android.app.Activity; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; -import android.support.v7.app.AlertDialog; import android.widget.Toast; import org.slf4j.Logger; @@ -15,13 +13,17 @@ import org.tasks.billing.IabHelper; import org.tasks.billing.IabResult; import org.tasks.billing.Inventory; import org.tasks.billing.Purchase; +import org.tasks.dialogs.DialogBuilder; +import org.tasks.injection.InjectingActivity; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -public class DonationActivity extends Activity implements IabHelper.OnIabSetupFinishedListener, +import javax.inject.Inject; + +public class DonationActivity extends InjectingActivity implements IabHelper.OnIabSetupFinishedListener, IabHelper.QueryInventoryFinishedListener, IabHelper.OnIabPurchaseFinishedListener, IabHelper.OnConsumeFinishedListener, IabHelper.OnConsumeMultiFinishedListener { @@ -33,6 +35,8 @@ public class DonationActivity extends Activity implements IabHelper.OnIabSetupFi private Inventory inventory; private boolean itemSelected; + @Inject DialogBuilder dialogBuilder; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -44,7 +48,7 @@ public class DonationActivity extends Activity implements IabHelper.OnIabSetupFi iabHelper.startSetup(this); final String[] donationValues = getValues(); - AlertDialog.Builder builder = new AlertDialog.Builder(this) + dialogBuilder.newDialog() .setTitle(R.string.select_amount) .setItems(donationValues, new DialogInterface.OnClickListener() { @Override @@ -59,17 +63,16 @@ public class DonationActivity extends Activity implements IabHelper.OnIabSetupFi error(getString(R.string.error)); } } - }); - AlertDialog donationAmount = builder.show(); - donationAmount.setOwnerActivity(this); - donationAmount.setOnDismissListener(new DialogInterface.OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - if (!itemSelected) { - finish(); - } - } - }); + }) + .setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + if (!itemSelected) { + finish(); + } + } + }) + .show(); } private void initiateDonation(int amount) { diff --git a/src/googleplay/java/org/tasks/dialogs/LocationPickerDialog.java b/src/googleplay/java/org/tasks/dialogs/LocationPickerDialog.java index b5839a71f..b0c217c86 100644 --- a/src/googleplay/java/org/tasks/dialogs/LocationPickerDialog.java +++ b/src/googleplay/java/org/tasks/dialogs/LocationPickerDialog.java @@ -31,6 +31,7 @@ import org.tasks.location.Geofence; import org.tasks.location.GoogleApi; import org.tasks.location.OnLocationPickedHandler; import org.tasks.location.PlaceAutocompleteAdapter; +import org.tasks.preferences.ActivityPreferences; import javax.inject.Inject; @@ -43,6 +44,9 @@ public class LocationPickerDialog extends InjectingDialogFragment implements Goo @Inject FragmentActivity fragmentActivity; @Inject GoogleApi googleApi; + @Inject DialogBuilder dialogBuilder; + @Inject ActivityPreferences activityPreferences; + private OnLocationPickedHandler onLocationPickedHandler; private DialogInterface.OnCancelListener onCancelListener; @@ -53,17 +57,18 @@ public class LocationPickerDialog extends InjectingDialogFragment implements Goo @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { + activityPreferences.applyTheme(); + googleApi.connect(this); - Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.Tasks_Dialog); - LayoutInflater themedInflater = getActivity().getLayoutInflater().cloneInContext(contextThemeWrapper); - View view = themedInflater.inflate(R.layout.location_picker_dialog, null); + LayoutInflater layoutInflater = getActivity().getLayoutInflater(); + View view = layoutInflater.inflate(R.layout.location_picker_dialog, null); AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) view.findViewById(R.id.address_entry); autoCompleteTextView.setOnItemClickListener(mAutocompleteClickListener); mAdapter = new PlaceAutocompleteAdapter(googleApi, fragmentActivity, android.R.layout.simple_list_item_1); autoCompleteTextView.setAdapter(mAdapter); - return new AlertDialog.Builder(getActivity()) + return dialogBuilder.newDialog() .setView(view) .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override diff --git a/src/googleplay/res/layout/location_picker_dialog.xml b/src/googleplay/res/layout/location_picker_dialog.xml index 264014f51..719fb4585 100644 --- a/src/googleplay/res/layout/location_picker_dialog.xml +++ b/src/googleplay/res/layout/location_picker_dialog.xml @@ -2,7 +2,7 @@ + android:theme="@style/TasksDialog" /> + android:theme="@style/TasksDialog" /> + android:theme="@style/TasksDialog" /> + android:theme="@style/TasksDialog" /> + android:theme="@style/TasksDialog" /> + android:theme="@style/TasksDialog" /> + android:theme="@style/TasksDialog" /> @@ -352,7 +352,7 @@ + android:theme="@style/TasksDialog"/> @@ -396,7 +396,7 @@ + android:theme="@style/TasksDialog" /> @@ -444,19 +444,19 @@ + android:theme="@style/TasksDialog" /> + android:theme="@style/TasksDialog" /> + android:theme="@style/TasksDialog" /> + android:theme="@style/TasksDialog" /> + android:theme="@style/TasksDialog" /> @@ -476,7 +476,7 @@ + android:theme="@style/TasksDialog"/> diff --git a/src/main/java/com/todoroo/andlib/utility/DialogUtilities.java b/src/main/java/com/todoroo/andlib/utility/DialogUtilities.java index 2d4edb919..840f4f33f 100644 --- a/src/main/java/com/todoroo/andlib/utility/DialogUtilities.java +++ b/src/main/java/com/todoroo/andlib/utility/DialogUtilities.java @@ -9,145 +9,25 @@ package com.todoroo.andlib.utility; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; -import android.content.DialogInterface; -import android.support.v7.app.AlertDialog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; -import org.tasks.preferences.ActivityPreferences; - -import javax.inject.Inject; +@Deprecated public class DialogUtilities { private static final Logger log = LoggerFactory.getLogger(DialogUtilities.class); - private ActivityPreferences activityPreferences; - - @Inject - public DialogUtilities(ActivityPreferences activityPreferences) { - this.activityPreferences = activityPreferences; - } - - /** - * Displays a dialog box with an OK button - */ - public static void okDialog(final Activity activity, final String text, - final DialogInterface.OnClickListener okListener) { - if(activity.isFinishing()) { - return; - } - - tryOnUiThread(activity, new Runnable() { - @Override - public void run() { - new AlertDialog.Builder(activity) - .setTitle(R.string.DLG_information_title) - .setMessage(text) - .setPositiveButton(android.R.string.ok, okListener) - .show().setOwnerActivity(activity); - } - }); - } - - /** - * Displays a dialog box with an OK button - */ - public static void okDialog(final Activity activity, final String title, - final int icon, final CharSequence text) { - if(activity.isFinishing()) { - return; - } - - tryOnUiThread(activity, new Runnable() { - @Override - public void run() { - new AlertDialog.Builder(activity) - .setTitle(title) - .setMessage(text) - .setIcon(icon) - .setPositiveButton(android.R.string.ok, null) - .show().setOwnerActivity(activity); - } - }); - } - - /** - * Displays a dialog box with OK and Cancel buttons - */ - public static void okCancelDialog(final Activity activity, final String text, - final DialogInterface.OnClickListener okListener, - final DialogInterface.OnClickListener cancelListener) { - - okCancelCustomDialog(activity, text, android.R.string.ok, android.R.string.cancel, okListener, cancelListener); - - } - - /** - * Displays a dialog box with custom titled OK and cancel button titles - */ - - public static void okCancelCustomDialog(final Activity activity, final String text, - final int okTitleId, final int cancelTitleId, - final DialogInterface.OnClickListener okListener, - final DialogInterface.OnClickListener cancelListener) { - if(activity.isFinishing()) { - return; - } - - tryOnUiThread(activity, new Runnable() { - final boolean[] selectedOk = new boolean[1]; - @Override - public void run() { - AlertDialog dialog = new AlertDialog.Builder(activity) - .setMessage(text) - .setPositiveButton(okTitleId, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - selectedOk[0] = true; - okListener.onClick(dialog, which); - } - }) - .setNegativeButton(cancelTitleId, cancelListener) - .show(); - dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - if (!selectedOk[0] && cancelListener != null) { - cancelListener.onClick(dialog, Dialog.BUTTON_NEGATIVE); - } - } - }); - dialog.setOwnerActivity(activity); - } - }); - } - - /** Run runnable with progress dialog */ - public static ProgressDialog runWithProgressDialog(final Activity activity, final Runnable runnable) { - final ProgressDialog progressdiag = progressDialog(activity, activity.getString(R.string.DLG_wait)); - new Thread(new Runnable() { - @Override - public void run() { - try { - runnable.run(); - } catch (Exception e) { - log.error(e.getMessage(), e); - DialogUtilities.okDialog(activity, activity.getString(R.string.DLG_error, e.toString()), null); - } finally { - DialogUtilities.dismissDialog(activity, progressdiag); - } - } - }).start(); - - return progressdiag; - } /** * Displays a progress dialog. Must be run on the UI thread */ public static ProgressDialog progressDialog(Activity context, String text) { - ProgressDialog dialog = new ProgressDialog(context); + return progressDialog(context, text, R.style.TasksDialog); + } + + private static ProgressDialog progressDialog(Activity context, String text, int theme) { + ProgressDialog dialog = new ProgressDialog(context, theme); dialog.setIndeterminate(true); dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); dialog.setMessage(text); @@ -176,7 +56,6 @@ public class DialogUtilities { }); } - private static void tryOnUiThread(Activity activity, final Runnable runnable) { activity.runOnUiThread(new Runnable() { @Override diff --git a/src/main/java/com/todoroo/astrid/actfm/ActFmCameraModule.java b/src/main/java/com/todoroo/astrid/actfm/ActFmCameraModule.java index 1659516ab..4da65cd23 100644 --- a/src/main/java/com/todoroo/astrid/actfm/ActFmCameraModule.java +++ b/src/main/java/com/todoroo/astrid/actfm/ActFmCameraModule.java @@ -9,11 +9,9 @@ import android.app.Activity; import android.content.ContentResolver; import android.content.DialogInterface; import android.content.Intent; -import android.content.pm.PackageManager; import android.net.Uri; import android.provider.MediaStore; import android.support.v4.app.Fragment; -import android.support.v7.app.AlertDialog; import android.webkit.MimeTypeMap; import android.widget.ArrayAdapter; import android.widget.Toast; @@ -21,6 +19,7 @@ import android.widget.Toast; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.DeviceInfo; import org.tasks.preferences.Preferences; @@ -30,7 +29,6 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.concurrent.atomic.AtomicReference; import javax.inject.Inject; @@ -47,16 +45,18 @@ public class ActFmCameraModule { private final Fragment fragment; private final Preferences preferences; private DeviceInfo deviceInfo; + private DialogBuilder dialogBuilder; public interface ClearImageCallback { void clearImage(); } @Inject - public ActFmCameraModule(Fragment fragment, Preferences preferences, DeviceInfo deviceInfo) { + public ActFmCameraModule(Fragment fragment, Preferences preferences, DeviceInfo deviceInfo, DialogBuilder dialogBuilder) { this.fragment = fragment; this.preferences = preferences; this.deviceInfo = deviceInfo; + this.dialogBuilder = dialogBuilder; } public void showPictureLauncher(final ClearImageCallback clearImageOption) { @@ -121,7 +121,7 @@ public class ActFmCameraModule { }; // show a menu of available options - new AlertDialog.Builder(fragment.getActivity()) + dialogBuilder.newDialog() .setAdapter(adapter, listener) .show().setOwnerActivity(fragment.getActivity()); } diff --git a/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java b/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java index 25a0b0a33..ad36dedff 100644 --- a/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java +++ b/src/main/java/com/todoroo/astrid/actfm/FilterSettingsActivity.java @@ -10,7 +10,6 @@ import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBar; -import android.support.v7.app.AlertDialog; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; @@ -23,6 +22,7 @@ import com.todoroo.astrid.api.CustomFilter; import com.todoroo.astrid.dao.StoreObjectDao; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.preferences.ActivityPreferences; @@ -41,6 +41,7 @@ public class FilterSettingsActivity extends InjectingAppCompatActivity { @Inject ActivityPreferences preferences; @Inject StoreObjectDao storeObjectDao; + @Inject DialogBuilder dialogBuilder; @InjectView(R.id.tag_name) EditText filterName; @InjectView(R.id.toolbar) Toolbar toolbar; @@ -119,8 +120,7 @@ public class FilterSettingsActivity extends InjectingAppCompatActivity { } private void deleteTag() { - new AlertDialog.Builder(this, R.style.Tasks_Dialog) - .setMessage(getString(R.string.delete_tag_confirmation, filter.listingTitle)) + dialogBuilder.newMessageDialog(R.string.delete_tag_confirmation, filter.listingTitle) .setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -129,11 +129,7 @@ public class FilterSettingsActivity extends InjectingAppCompatActivity { finish(); } }) - .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - } - }) + .setNegativeButton(android.R.string.cancel, null) .show(); } @@ -142,20 +138,14 @@ public class FilterSettingsActivity extends InjectingAppCompatActivity { if (filter.listingTitle.equals(tagName)) { finish(); } else { - new AlertDialog.Builder(this, R.style.Tasks_Dialog) - .setMessage(R.string.discard_changes) + dialogBuilder.newMessageDialog(R.string.discard_changes) .setPositiveButton(R.string.discard, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }) - .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - - } - }) + .setNegativeButton(android.R.string.cancel, null) .show(); } } diff --git a/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java b/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java index 5441befd6..b590c144a 100644 --- a/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java +++ b/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java @@ -10,7 +10,6 @@ import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBar; -import android.support.v7.app.AlertDialog; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; @@ -29,6 +28,7 @@ import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.TaskToTagMetadata; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.preferences.ActivityPreferences; @@ -51,6 +51,7 @@ public class TagSettingsActivity extends InjectingAppCompatActivity { @Inject TagDataDao tagDataDao; @Inject ActivityPreferences preferences; @Inject MetadataDao metadataDao; + @Inject DialogBuilder dialogBuilder; @InjectView(R.id.tag_name) EditText tagName; @InjectView(R.id.toolbar) Toolbar toolbar; @@ -160,8 +161,7 @@ public class TagSettingsActivity extends InjectingAppCompatActivity { } private void deleteTag() { - new AlertDialog.Builder(this, R.style.Tasks_Dialog) - .setMessage(getString(R.string.delete_tag_confirmation, tagData.getName())) + dialogBuilder.newMessageDialog(R.string.delete_tag_confirmation, tagData.getName()) .setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -174,11 +174,7 @@ public class TagSettingsActivity extends InjectingAppCompatActivity { finish(); } }) - .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - } - }) + .setNegativeButton(android.R.string.cancel, null) .show(); } @@ -188,20 +184,14 @@ public class TagSettingsActivity extends InjectingAppCompatActivity { (!isNewTag && tagData.getName().equals(tagName))) { finish(); } else { - new AlertDialog.Builder(this, R.style.Tasks_Dialog) - .setMessage(R.string.discard_changes) + dialogBuilder.newMessageDialog(R.string.discard_changes) .setPositiveButton(R.string.discard, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }) - .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - - } - }) + .setNegativeButton(android.R.string.cancel, null) .show(); } } diff --git a/src/main/java/com/todoroo/astrid/activity/FilterShortcutActivity.java b/src/main/java/com/todoroo/astrid/activity/FilterShortcutActivity.java index 8f47c645d..d05097f60 100644 --- a/src/main/java/com/todoroo/astrid/activity/FilterShortcutActivity.java +++ b/src/main/java/com/todoroo/astrid/activity/FilterShortcutActivity.java @@ -15,18 +15,17 @@ import android.view.View; import android.widget.Button; import android.widget.ListView; -import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.filters.FilterCounter; import org.tasks.filters.FilterProvider; import org.tasks.injection.ForApplication; import org.tasks.injection.InjectingListActivity; import org.tasks.preferences.ActivityPreferences; -import org.tasks.ui.NavigationDrawerFragment; import javax.inject.Inject; @@ -36,6 +35,7 @@ public class FilterShortcutActivity extends InjectingListActivity { @Inject ActivityPreferences preferences; @Inject FilterProvider filterProvider; @Inject @ForApplication Context context; + @Inject DialogBuilder dialogBuilder; private FilterAdapter adapter = null; @@ -59,7 +59,9 @@ public class FilterShortcutActivity extends InjectingListActivity { public void onClick(View v) { Filter filter = (Filter) adapter.getSelection(); if (filter == null) { - DialogUtilities.okDialog(FilterShortcutActivity.this, getString(R.string.FLA_no_filter_selected), null); + dialogBuilder.newMessageDialog(R.string.FLA_no_filter_selected) + .setPositiveButton(android.R.string.ok, null) + .show(); return; } Intent shortcutIntent = ShortcutActivity.createIntent(context, filter); diff --git a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index 39f8fe1c1..e65a64661 100755 --- a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -14,7 +14,6 @@ import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.support.v4.view.ViewPager; -import android.support.v7.app.AlertDialog; import android.text.TextUtils; import android.view.KeyEvent; import android.view.LayoutInflater; @@ -77,9 +76,9 @@ import com.todoroo.astrid.utility.Flags; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; -import org.tasks.activities.DateAndTimePickerActivity; import org.tasks.activities.LocationPickerActivity; import org.tasks.activities.TimePickerActivity; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.InjectingFragment; import org.tasks.location.Geofence; import org.tasks.location.GeofenceService; @@ -177,6 +176,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { @Inject GeofenceService geofenceService; @Inject ResourceResolver resourceResolver; @Inject DeviceInfo deviceInfo; + @Inject DialogBuilder dialogBuilder; // --- UI components @@ -705,8 +705,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { } protected void deleteButtonClick() { - new AlertDialog.Builder(getActivity()) - .setMessage(R.string.DLG_delete_this_task_question) + dialogBuilder.newMessageDialog(R.string.DLG_delete_this_task_question) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -727,7 +726,8 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { } } }) - .setNegativeButton(android.R.string.cancel, null).show(); + .setNegativeButton(android.R.string.cancel, null) + .show(); } private void startAttachFile() { @@ -763,9 +763,10 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { }; // show a menu of available options - new AlertDialog.Builder(getActivity()) - .setAdapter(adapter, listener) - .show().setOwnerActivity(getActivity()); + dialogBuilder.newDialog() + .setAdapter(adapter, listener) + .show() + .setOwnerActivity(getActivity()); } private void startRecordingAudio() { diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index 4ff6f0e45..d34f1cbc3 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -17,7 +17,6 @@ import android.database.sqlite.SQLiteException; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.app.AlertDialog; import android.text.TextUtils; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; @@ -73,6 +72,7 @@ import com.todoroo.astrid.utility.Flags; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.ForActivity; import org.tasks.injection.InjectingListFragment; import org.tasks.injection.Injector; @@ -136,6 +136,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr @Inject TaskAttachmentDao taskAttachmentDao; @Inject Injector injector; @Inject GtasksPreferenceService gtasksPreferenceService; + @Inject DialogBuilder dialogBuilder; protected Resources resources; protected TaskAdapter taskAdapter = null; @@ -762,8 +763,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr /** Show a dialog box and delete the task specified */ private void deleteTask(final Task task) { - new AlertDialog.Builder(getActivity()) - .setMessage(getString(R.string.delete_tag_confirmation, task.getTitle())) + dialogBuilder.newMessageDialog(R.string.delete_tag_confirmation, task.getTitle()) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -772,7 +772,8 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr loadTaskListContent(); } }) - .setNegativeButton(android.R.string.cancel, null).show(); + .setNegativeButton(android.R.string.cancel, null) + .show(); } public void onTaskCreated(Task task) { diff --git a/src/main/java/com/todoroo/astrid/backup/TasksXmlImporter.java b/src/main/java/com/todoroo/astrid/backup/TasksXmlImporter.java index 2cd618f1a..400795fe5 100644 --- a/src/main/java/com/todoroo/astrid/backup/TasksXmlImporter.java +++ b/src/main/java/com/todoroo/astrid/backup/TasksXmlImporter.java @@ -12,7 +12,6 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.res.Resources; import android.os.Handler; -import android.support.v7.app.AlertDialog; import android.text.TextUtils; import android.view.WindowManager.BadTokenException; @@ -35,6 +34,7 @@ import com.todoroo.astrid.tags.TaskToTagMetadata; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; @@ -51,6 +51,7 @@ public class TasksXmlImporter { private final TagDataDao tagDataDao; private final MetadataDao metadataDao; private final TaskService taskService; + private final DialogBuilder dialogBuilder; private Context context; private Handler handler; @@ -72,10 +73,12 @@ public class TasksXmlImporter { } @Inject - public TasksXmlImporter(TagDataDao tagDataDao, MetadataDao metadataDao, TaskService taskService) { + public TasksXmlImporter(TagDataDao tagDataDao, MetadataDao metadataDao, TaskService taskService, + DialogBuilder dialogBuilder) { this.tagDataDao = tagDataDao; this.metadataDao = metadataDao; this.taskService = taskService; + this.dialogBuilder = dialogBuilder; } /** @@ -160,18 +163,16 @@ public class TasksXmlImporter { } private void showSummary() { - final AlertDialog.Builder builder = new AlertDialog.Builder(context); - builder.setTitle(R.string.import_summary_title); Resources r = context.getResources(); - String message = context.getString(R.string.import_summary_message, - input, - r.getQuantityString(R.plurals.Ntasks, taskCount, taskCount), - r.getQuantityString(R.plurals.Ntasks, importCount, importCount), - r.getQuantityString(R.plurals.Ntasks, skipCount, skipCount), - r.getQuantityString(R.plurals.Ntasks, errorCount, errorCount)); - builder.setMessage(message); - builder.setPositiveButton(context.getString(android.R.string.ok), - new DialogInterface.OnClickListener() { + dialogBuilder.newDialog() + .setTitle(R.string.import_summary_title) + .setMessage(context.getString(R.string.import_summary_message, + input, + r.getQuantityString(R.plurals.Ntasks, taskCount, taskCount), + r.getQuantityString(R.plurals.Ntasks, importCount, importCount), + r.getQuantityString(R.plurals.Ntasks, skipCount, skipCount), + r.getQuantityString(R.plurals.Ntasks, errorCount, errorCount))) + .setPositiveButton(context.getString(android.R.string.ok), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { dialog.dismiss(); @@ -179,9 +180,8 @@ public class TasksXmlImporter { handler.post(runAfterImport); } } - }); - - builder.show(); + }) + .show(); } // --- importers diff --git a/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java b/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java index 1945b2e64..8f1b84bdf 100644 --- a/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java +++ b/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java @@ -20,7 +20,6 @@ import android.widget.ImageView; import android.widget.TextView; import com.todoroo.andlib.utility.AndroidUtilities; -import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.StartupService; import com.todoroo.astrid.service.TaskService; @@ -28,6 +27,7 @@ import com.todoroo.astrid.service.TaskService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.InjectingFragmentActivity; import org.tasks.intents.TaskIntents; import org.tasks.preferences.ActivityPreferences; @@ -56,6 +56,7 @@ public class MissedCallActivity extends InjectingFragmentActivity { @Inject TaskService taskService; @Inject ActivityPreferences preferences; @Inject ResourceResolver resourceResolver; + @Inject DialogBuilder dialogBuilder; private final OnClickListener dismissListener = new OnClickListener() { @Override @@ -72,23 +73,21 @@ public class MissedCallActivity extends InjectingFragmentActivity { int ignorePresses = preferences.getInt(PREF_IGNORE_PRESSES, 0); ignorePresses++; if (ignorePresses == IGNORE_PROMPT_COUNT) { - DialogUtilities.okCancelCustomDialog(MissedCallActivity.this, - getString(R.string.MCA_ignore_body), - R.string.MCA_ignore_all, - R.string.MCA_ignore_this, - new DialogInterface.OnClickListener() { + dialogBuilder.newMessageDialog(R.string.MCA_ignore_body) + .setPositiveButton(R.string.MCA_ignore_all, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { preferences.setBoolean(R.string.p_field_missed_calls, false); dismissListener.onClick(v); } - }, - new DialogInterface.OnClickListener() { + }) + .setNegativeButton(R.string.MCA_ignore_this, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dismissListener.onClick(v); } - }); + }) + .show(); } else { dismissListener.onClick(v); } diff --git a/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java b/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java index 380071e35..539633c7c 100644 --- a/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java +++ b/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java @@ -50,6 +50,7 @@ import com.todoroo.astrid.data.Task; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.preferences.ActivityPreferences; @@ -151,6 +152,7 @@ public class CustomFilterActivity extends InjectingAppCompatActivity { @Inject Database database; @Inject StoreObjectDao storeObjectDao; @Inject ActivityPreferences preferences; + @Inject DialogBuilder dialogBuilder; @Override protected void onCreate(Bundle savedInstanceState) { @@ -173,7 +175,7 @@ public class CustomFilterActivity extends InjectingAppCompatActivity { filterName = (TextView)findViewById(R.id.filterName); List startingCriteria = new ArrayList<>(); startingCriteria.add(getStartingUniverse()); - adapter = new CustomFilterAdapter(this, startingCriteria); + adapter = new CustomFilterAdapter(this, dialogBuilder, startingCriteria); listView.setAdapter(adapter); updateList(); diff --git a/src/main/java/com/todoroo/astrid/core/CustomFilterAdapter.java b/src/main/java/com/todoroo/astrid/core/CustomFilterAdapter.java index 2f1aa3360..2be47c442 100644 --- a/src/main/java/com/todoroo/astrid/core/CustomFilterAdapter.java +++ b/src/main/java/com/todoroo/astrid/core/CustomFilterAdapter.java @@ -25,6 +25,7 @@ import com.todoroo.astrid.api.TextInputCriterion; import com.todoroo.astrid.core.CustomFilterActivity.CriterionInstance; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import java.util.List; @@ -37,11 +38,13 @@ import java.util.List; public class CustomFilterAdapter extends ArrayAdapter { private final CustomFilterActivity activity; + private DialogBuilder dialogBuilder; private final LayoutInflater inflater; - public CustomFilterAdapter(CustomFilterActivity activity, List objects) { + public CustomFilterAdapter(CustomFilterActivity activity, DialogBuilder dialogBuilder, List objects) { super(activity, R.id.name, objects); this.activity = activity; + this.dialogBuilder = dialogBuilder; inflater = (LayoutInflater) activity.getSystemService( Context.LAYOUT_INFLATER_SERVICE); } @@ -107,8 +110,8 @@ public class CustomFilterAdapter extends ArrayAdapter { * Show options menu for the given criterioninstance */ public void showOptionsFor(final CriterionInstance item, final Runnable onComplete) { - AlertDialog.Builder dialog = new AlertDialog.Builder(activity). - setTitle(item.criterion.name); + AlertDialog.Builder dialog = dialogBuilder.newDialog() + .setTitle(item.criterion.name); if(item.criterion instanceof MultipleSelectCriterion) { MultipleSelectCriterion multiSelectCriterion = (MultipleSelectCriterion) item.criterion; diff --git a/src/main/java/com/todoroo/astrid/files/FileExplore.java b/src/main/java/com/todoroo/astrid/files/FileExplore.java index 88dd3828f..f555ce184 100644 --- a/src/main/java/com/todoroo/astrid/files/FileExplore.java +++ b/src/main/java/com/todoroo/astrid/files/FileExplore.java @@ -5,7 +5,6 @@ */ package com.todoroo.astrid.files; -import android.app.Activity; import android.app.Dialog; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; @@ -19,53 +18,57 @@ import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.TextView; - -import com.todoroo.andlib.utility.DialogUtilities; +import android.widget.Toast; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; +import org.tasks.injection.InjectingActivity; +import org.tasks.preferences.ActivityPreferences; +import org.tasks.preferences.ResourceResolver; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; +import javax.inject.Inject; + /** * Based on the Android-File-Explore project by Manish Burman * https://github.com/mburman/Android-File-Explore * */ -public class FileExplore extends Activity { +public class FileExplore extends InjectingActivity { private static final Logger log = LoggerFactory.getLogger(FileExplore.class); - // Stores names of traversed directories - ArrayList str = new ArrayList<>(); - - // Check if the first level of the directory structure is the one showing - private Boolean firstLvl = true; + private static final int DIALOG_LOAD_FILE = 1000; public static final String RESULT_FILE_SELECTED = "fileSelected"; //$NON-NLS-1$ - public static final String RESULT_DIR_SELECTED = "dirSelected"; //$NON-NLS-1$ - public static final String EXTRA_DIRECTORIES_SELECTABLE = "directoriesSelectable"; //$NON-NLS-1$ + ArrayList str = new ArrayList<>(); // Stores names of traversed directories + private Boolean firstLvl = true; // Check if the first level of the directory structure is the one showing + + @Inject DialogBuilder dialogBuilder; + @Inject ActivityPreferences activityPreferences; + @Inject ResourceResolver resourceResolver; + private Item[] fileList; private File path; private String chosenFile; - private static final int DIALOG_LOAD_FILE = 1000; private String upString; - private boolean directoryMode; - private ListAdapter adapter; @Override public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + activityPreferences.applyDialogTheme(); + if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { path = new File(Environment.getExternalStorageDirectory().toString()); } else { @@ -86,12 +89,7 @@ public class FileExplore extends Activity { path.mkdirs(); } catch (SecurityException e) { log.error(e.getMessage(), e); - DialogUtilities.okDialog(this, getString(R.string.file_browser_err_permissions), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - finish(); - } - }); + Toast.makeText(this, R.string.file_browser_err_permissions, Toast.LENGTH_LONG).show(); } // Checks whether path exists @@ -110,21 +108,21 @@ public class FileExplore extends Activity { String[] fList = path.list(filter); fileList = new Item[fList.length]; for (int i = 0; i < fList.length; i++) { - fileList[i] = new Item(fList[i], R.drawable.ic_insert_drive_file_black_24dp); + fileList[i] = new Item(fList[i], resourceResolver.getResource(R.attr.ic_file)); // Convert into file path File sel = new File(path, fList[i]); // Set drawables if (sel.isDirectory()) { - fileList[i].icon = R.drawable.ic_folder_black_24dp; + fileList[i].icon = resourceResolver.getResource(R.attr.ic_folder); } } if (!firstLvl) { Item temp[] = new Item[fileList.length + 1]; System.arraycopy(fileList, 0, temp, 1, fileList.length); - temp[0] = new Item(upString, R.drawable.ic_arrow_back_black_24dp); + temp[0] = new Item(upString, resourceResolver.getResource(R.attr.ic_arrow_back)); fileList = temp; } } else { @@ -180,7 +178,7 @@ public class FileExplore extends Activity { @Override protected Dialog onCreateDialog(int id) { Dialog dialog; - AlertDialog.Builder builder = new AlertDialog.Builder(this); + AlertDialog.Builder builder = dialogBuilder.newDialog(); if (fileList == null) { dialog = builder.create(); diff --git a/src/main/java/com/todoroo/astrid/files/FilesControlSet.java b/src/main/java/com/todoroo/astrid/files/FilesControlSet.java index 1e1c810b2..d3256da41 100644 --- a/src/main/java/com/todoroo/astrid/files/FilesControlSet.java +++ b/src/main/java/com/todoroo/astrid/files/FilesControlSet.java @@ -24,7 +24,6 @@ import android.widget.Toast; import com.todoroo.andlib.data.Callback; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; -import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.dao.TaskAttachmentDao; import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.SyncFlags; @@ -35,6 +34,7 @@ import com.todoroo.astrid.ui.PopupControlSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.ActivityPreferences; import java.io.File; @@ -48,10 +48,13 @@ public class FilesControlSet extends PopupControlSet { private final LinearLayout fileDisplayList; private final LayoutInflater inflater; private final TaskAttachmentDao taskAttachmentDao; + private final DialogBuilder dialogBuilder; - public FilesControlSet(ActivityPreferences preferences, TaskAttachmentDao taskAttachmentDao, Activity activity) { + public FilesControlSet(ActivityPreferences preferences, TaskAttachmentDao taskAttachmentDao, + Activity activity) { super(preferences, activity, R.layout.control_set_files_dialog, R.layout.control_set_files, R.string.TEA_control_files); this.taskAttachmentDao = taskAttachmentDao; + this.dialogBuilder = new DialogBuilder(activity, preferences); fileDisplayList = (LinearLayout) getView().findViewById(R.id.files_list); inflater = (LayoutInflater) activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); } @@ -145,27 +148,29 @@ public class FilesControlSet extends PopupControlSet { clearFile.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - DialogUtilities.okCancelDialog(activity, activity.getString(R.string.premium_remove_file_confirm), - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface d, int which) { - if (RemoteModel.isValidUuid(m.getUUID())) { - // TODO: delete - m.setDeletedAt(DateUtilities.now()); - taskAttachmentDao.saveExisting(m); - } else { - taskAttachmentDao.delete(m.getId()); - } - - if (m.containsNonNullValue(TaskAttachment.FILE_PATH)) { - File f = new File(m.getFilePath()); - f.delete(); - } - files.remove(m); - refreshDisplayView(); - finalList.removeView(fileRow); - } - }, null); + dialogBuilder.newMessageDialog(R.string.premium_remove_file_confirm) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if (RemoteModel.isValidUuid(m.getUUID())) { + // TODO: delete + m.setDeletedAt(DateUtilities.now()); + taskAttachmentDao.saveExisting(m); + } else { + taskAttachmentDao.delete(m.getId()); + } + + if (m.containsNonNullValue(TaskAttachment.FILE_PATH)) { + File f = new File(m.getFilePath()); + f.delete(); + } + files.remove(m); + refreshDisplayView(); + finalList.removeView(fileRow); + } + }) + .setNegativeButton(android.R.string.cancel, null) + .show(); } }); } diff --git a/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java b/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java index e2e6ca144..bd89835aa 100644 --- a/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java +++ b/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java @@ -13,7 +13,8 @@ import android.widget.TextView; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; -import com.todoroo.andlib.utility.DialogUtilities; + +import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.BasicPreferences; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListFragment; @@ -52,6 +53,7 @@ public class CalendarReminderActivity extends InjectingActivity { @Inject TagDataDao tagDataDao; @Inject ActivityPreferences preferences; @Inject ResourceResolver resourceResolver; + @Inject DialogBuilder dialogBuilder; private String eventName; private long startTime; @@ -81,23 +83,21 @@ public class CalendarReminderActivity extends InjectingActivity { int ignorePresses = preferences.getInt(PREF_IGNORE_PRESSES, 0); ignorePresses++; if (ignorePresses == IGNORE_PROMPT_COUNT) { - DialogUtilities.okCancelCustomDialog(CalendarReminderActivity.this, - getString(R.string.CRA_ignore_body), - R.string.CRA_ignore_all, - R.string.CRA_ignore_this, - new DialogInterface.OnClickListener() { + dialogBuilder.newMessageDialog(R.string.CRA_ignore_body) + .setPositiveButton(R.string.CRA_ignore_all, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { preferences.setBoolean(R.string.p_calendar_reminders, false); dismissListener.onClick(v); } - }, - new DialogInterface.OnClickListener() { + }) + .setNegativeButton(R.string.CRA_ignore_this, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dismissListener.onClick(v); } - }); + }) + .show(); } else { dismissListener.onClick(v); } @@ -189,30 +189,28 @@ public class CalendarReminderActivity extends InjectingActivity { } private void listExists(final TagData tag) { - DialogUtilities.okCancelCustomDialog(this, - getString(R.string.CRA_list_exists_body, tag.getName()), - R.string.CRA_create_new, - R.string.CRA_use_existing, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - createNewList(tag.getName() + " " - + DateUtilities.getDateStringHideYear(newDate(startTime))); - } - }, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - FilterWithCustomIntent filter = TagFilterExposer.filterFromTagData(CalendarReminderActivity.this, tag); - - Intent listIntent = new Intent(CalendarReminderActivity.this, TaskListActivity.class); - listIntent.putExtra(TaskListFragment.TOKEN_FILTER, filter); - listIntent.putExtras(filter.customExtras); - - startActivity(listIntent); - dismissButton.performClick(); - } - }); + dialogBuilder.newMessageDialog(R.string.CRA_list_exists_body, tag.getName()) + .setPositiveButton(R.string.CRA_create_new, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + createNewList(tag.getName() + " " + + DateUtilities.getDateStringHideYear(newDate(startTime))); + } + }) + .setNegativeButton(R.string.CRA_use_existing, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + FilterWithCustomIntent filter = TagFilterExposer.filterFromTagData(CalendarReminderActivity.this, tag); + + Intent listIntent = new Intent(CalendarReminderActivity.this, TaskListActivity.class); + listIntent.putExtra(TaskListFragment.TOKEN_FILTER, filter); + listIntent.putExtras(filter.customExtras); + + startActivity(listIntent); + dismissButton.performClick(); + } + }) + .show(); } private void createNewList(String name) { diff --git a/src/main/java/com/todoroo/astrid/notes/EditNoteActivity.java b/src/main/java/com/todoroo/astrid/notes/EditNoteActivity.java index 6861ab4f5..5e1c1cee0 100644 --- a/src/main/java/com/todoroo/astrid/notes/EditNoteActivity.java +++ b/src/main/java/com/todoroo/astrid/notes/EditNoteActivity.java @@ -50,6 +50,8 @@ import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.timers.TimerActionControlSet.TimerActionListener; import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.tasks.R; import org.tasks.preferences.Preferences; @@ -65,6 +67,8 @@ import static org.tasks.files.ImageHelper.sampleBitmap; public class EditNoteActivity extends LinearLayout implements TimerActionListener { + private static final Logger log = LoggerFactory.getLogger(EditNoteActivity.class); + private Task task; private ActFmCameraModule actFmCameraModule; @@ -132,7 +136,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene try { fetchTask(t); } catch (SQLiteException e) { - StartupService.handleSQLiteError(fragment.getActivity(), e); + log.error(e.getMessage(), e); } if(task == null) { return; diff --git a/src/main/java/com/todoroo/astrid/service/StartupService.java b/src/main/java/com/todoroo/astrid/service/StartupService.java index 764dcccb3..aeb789537 100644 --- a/src/main/java/com/todoroo/astrid/service/StartupService.java +++ b/src/main/java/com/todoroo/astrid/service/StartupService.java @@ -16,7 +16,6 @@ import android.preference.PreferenceManager; import com.todoroo.andlib.data.DatabaseDao.ModelUpdateListener; import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.utility.AndroidUtilities; -import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.backup.TasksXmlImporter; import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.DatabaseUpdateListener; @@ -37,6 +36,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.Broadcaster; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.Preferences; import java.io.File; @@ -68,6 +68,7 @@ public class StartupService { private final CalendarAlarmScheduler calendarAlarmScheduler; private final TaskDeleter taskDeleter; private Broadcaster broadcaster; + private DialogBuilder dialogBuilder; @Inject public StartupService(UpgradeService upgradeService, TagDataDao tagDataDao, Database database, @@ -75,7 +76,7 @@ public class StartupService { GtasksSyncService gtasksSyncService, MetadataDao metadataDao, Preferences preferences, TasksXmlImporter xmlImporter, CalendarAlarmScheduler calendarAlarmScheduler, TaskDeleter taskDeleter, - Broadcaster broadcaster) { + Broadcaster broadcaster, DialogBuilder dialogBuilder) { this.upgradeService = upgradeService; this.tagDataDao = tagDataDao; this.database = database; @@ -87,6 +88,7 @@ public class StartupService { this.calendarAlarmScheduler = calendarAlarmScheduler; this.taskDeleter = taskDeleter; this.broadcaster = broadcaster; + this.dialogBuilder = dialogBuilder; } /** @@ -111,7 +113,10 @@ public class StartupService { try { database.openForWriting(); } catch (SQLiteException e) { - handleSQLiteError(activity, e); + log.error(e.getMessage(), e); + dialogBuilder.newMessageDialog(R.string.DB_corrupted_body) + .setPositiveButton(android.R.string.ok, null) + .show(); return; } @@ -196,11 +201,6 @@ public class StartupService { }); } - public static void handleSQLiteError(Activity activity, final SQLiteException e) { - log.error(e.getMessage(), e); - DialogUtilities.okDialog(activity, activity.getString(R.string.DB_corrupted_title), 0, activity.getString(R.string.DB_corrupted_body)); - } - /** * If database exists, no tasks but metadata, and a backup file exists, restore it */ diff --git a/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java b/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java index 20c258e4e..b3d62bd45 100644 --- a/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java +++ b/src/main/java/com/todoroo/astrid/ui/QuickAddBar.java @@ -5,7 +5,6 @@ */ package com.todoroo.astrid.ui; -import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.data.TagData; @@ -16,6 +15,7 @@ import com.todoroo.astrid.service.TaskService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.Injector; import javax.inject.Inject; @@ -32,6 +32,7 @@ public class QuickAddBar { @Inject TaskService taskService; @Inject TaskCreator taskCreator; + @Inject DialogBuilder dialogBuilder; private TaskListActivity activity; private TaskListFragment fragment; @@ -55,7 +56,9 @@ public class QuickAddBar { TagData tagData = fragment.getActiveTagData(); if(tagData != null && (!tagData.containsNonNullValue(TagData.NAME) || tagData.getName().length() == 0)) { - DialogUtilities.okDialog(activity, activity.getString(R.string.tag_no_title_error), null); + dialogBuilder.newMessageDialog(R.string.tag_no_title_error) + .setPositiveButton(android.R.string.ok, null) + .show(); return null; } diff --git a/src/main/java/org/tasks/activities/ClearAllDataActivity.java b/src/main/java/org/tasks/activities/ClearAllDataActivity.java index 0292bd1bf..3d4f15500 100644 --- a/src/main/java/org/tasks/activities/ClearAllDataActivity.java +++ b/src/main/java/org/tasks/activities/ClearAllDataActivity.java @@ -7,6 +7,7 @@ import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.dao.Database; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.InjectingActivity; import org.tasks.preferences.Preferences; @@ -16,29 +17,27 @@ public class ClearAllDataActivity extends InjectingActivity { @Inject Database database; @Inject Preferences preferences; + @Inject DialogBuilder dialogBuilder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - DialogUtilities.okCancelDialog( - this, - getResources().getString(R.string.EPr_manage_clear_all_message), - new DialogInterface.OnClickListener() { + dialogBuilder.newMessageDialog(R.string.EPr_manage_clear_all_message) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { deleteDatabase(database.getName()); - preferences.reset(); - System.exit(0); } - }, - new DialogInterface.OnClickListener() { + }) + .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } - }); + }) + .show(); } } diff --git a/src/main/java/org/tasks/activities/ClearGtaskDataActivity.java b/src/main/java/org/tasks/activities/ClearGtaskDataActivity.java index 445c37244..713c88f93 100644 --- a/src/main/java/org/tasks/activities/ClearGtaskDataActivity.java +++ b/src/main/java/org/tasks/activities/ClearGtaskDataActivity.java @@ -7,6 +7,7 @@ import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.gtasks.sync.GtasksSyncV2Provider; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.InjectingActivity; import javax.inject.Inject; @@ -14,25 +15,27 @@ import javax.inject.Inject; public class ClearGtaskDataActivity extends InjectingActivity { @Inject GtasksSyncV2Provider gtasksSyncV2Provider; + @Inject DialogBuilder dialogBuilder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - DialogUtilities.okCancelDialog(ClearGtaskDataActivity.this, - getString(R.string.sync_forget_confirm), new DialogInterface.OnClickListener() { + dialogBuilder.newMessageDialog(R.string.sync_forget_confirm) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { gtasksSyncV2Provider.signOut(); setResult(RESULT_OK); finish(); } - }, new DialogInterface.OnClickListener() { + }) + .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } - } - ); + }) + .show(); } } diff --git a/src/main/java/org/tasks/activities/DeleteAllCalendarEventsActivity.java b/src/main/java/org/tasks/activities/DeleteAllCalendarEventsActivity.java index 23aec491a..7e648c32b 100644 --- a/src/main/java/org/tasks/activities/DeleteAllCalendarEventsActivity.java +++ b/src/main/java/org/tasks/activities/DeleteAllCalendarEventsActivity.java @@ -1,18 +1,18 @@ package org.tasks.activities; -import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.sql.Query; -import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.service.TaskService; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.InjectingActivity; +import org.tasks.ui.ProgressDialogAsyncTask; import javax.inject.Inject; @@ -20,22 +20,19 @@ public class DeleteAllCalendarEventsActivity extends InjectingActivity { @Inject TaskService taskService; @Inject GCalHelper gcalHelper; - - private ProgressDialog pd; + @Inject DialogBuilder dialogBuilder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - DialogUtilities.okCancelDialog( - this, - getResources().getString( - R.string.EPr_manage_delete_all_gcal_message), - new DialogInterface.OnClickListener() { + + dialogBuilder.newMessageDialog(R.string.EPr_manage_delete_all_gcal_message) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - pd = DialogUtilities.runWithProgressDialog(DeleteAllCalendarEventsActivity.this, new Runnable() { + new ProgressDialogAsyncTask(DeleteAllCalendarEventsActivity.this, dialogBuilder) { @Override - public void run() { + protected Integer doInBackground(Void... params) { int deletedEventCount = 0; TodorooCursor cursor = taskService.query(Query.select(Task.ID, Task.CALENDAR_URI).where( Task.CALENDAR_URI.isNotNull())); @@ -55,34 +52,23 @@ public class DeleteAllCalendarEventsActivity extends InjectingActivity { // since the GCalHelper doesnt save it due to performance-reasons Task template = new Task(); template.setCalendarUri(""); //$NON-NLS-1$ - taskService.update( - Task.CALENDAR_URI.isNotNull(), - template); - showResult(R.string.EPr_manage_delete_all_gcal_status, deletedEventCount); + taskService.update(Task.CALENDAR_URI.isNotNull(), template); + return deletedEventCount; + } + + @Override + protected int getResultResource() { + return R.string.EPr_manage_delete_all_gcal_status; } - }); + }.execute(); } - }, new DialogInterface.OnClickListener() { + }) + .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } - }); - } - - @Override - protected void onPause() { - DialogUtilities.dismissDialog(this, pd); - - super.onPause(); - } - - private void showResult(int resourceText, int result) { - DialogUtilities.okDialog(this, getString(resourceText, result), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - finish(); - } - }); + }) + .show(); } } diff --git a/src/main/java/org/tasks/activities/DeleteCompletedActivity.java b/src/main/java/org/tasks/activities/DeleteCompletedActivity.java index cbb5178b6..e62a422d1 100644 --- a/src/main/java/org/tasks/activities/DeleteCompletedActivity.java +++ b/src/main/java/org/tasks/activities/DeleteCompletedActivity.java @@ -1,6 +1,5 @@ package org.tasks.activities; -import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; @@ -8,13 +7,14 @@ import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.DateUtilities; -import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.service.TaskService; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.InjectingActivity; +import org.tasks.ui.ProgressDialogAsyncTask; import javax.inject.Inject; @@ -22,23 +22,19 @@ public class DeleteCompletedActivity extends InjectingActivity { @Inject TaskService taskService; @Inject GCalHelper gcalHelper; - - private ProgressDialog pd; + @Inject DialogBuilder dialogBuilder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - DialogUtilities.okCancelDialog( - this, - getResources().getString( - R.string.EPr_manage_delete_completed_message), - new DialogInterface.OnClickListener() { + dialogBuilder.newMessageDialog(R.string.EPr_manage_delete_completed_message) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - pd = DialogUtilities.runWithProgressDialog(DeleteCompletedActivity.this, new Runnable() { + new ProgressDialogAsyncTask(DeleteCompletedActivity.this, dialogBuilder) { @Override - public void run() { + protected Integer doInBackground(Void... params) { TodorooCursor cursor = taskService.query(Query.select(Task.ID, Task.CALENDAR_URI).where( Criterion.and(Task.COMPLETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull()))); try { @@ -52,38 +48,23 @@ public class DeleteCompletedActivity extends InjectingActivity { cursor.close(); } Task template = new Task(); - template.setDeletionDate( - DateUtilities.now()); - int result = taskService.update( - Task.COMPLETION_DATE.gt(0), template); - showResult( - R.string.EPr_manage_delete_completed_status, - result); + template.setDeletionDate(DateUtilities.now()); + return taskService.update(Task.COMPLETION_DATE.gt(0), template); + } + + @Override + protected int getResultResource() { + return R.string.EPr_manage_delete_completed_status; } - }); + }.execute(); } - }, new DialogInterface.OnClickListener() { + }) + .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } - }); - - } - - @Override - protected void onPause() { - DialogUtilities.dismissDialog(this, pd); - - super.onPause(); - } - - protected void showResult(int resourceText, int result) { - DialogUtilities.okDialog(this, getString(resourceText, result), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - finish(); - } - }); + }) + .show(); } } diff --git a/src/main/java/org/tasks/activities/DeleteCompletedEventsActivity.java b/src/main/java/org/tasks/activities/DeleteCompletedEventsActivity.java index fbd29befb..171a4e449 100644 --- a/src/main/java/org/tasks/activities/DeleteCompletedEventsActivity.java +++ b/src/main/java/org/tasks/activities/DeleteCompletedEventsActivity.java @@ -1,19 +1,19 @@ package org.tasks.activities; -import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Query; -import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.service.TaskService; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.InjectingActivity; +import org.tasks.ui.ProgressDialogAsyncTask; import javax.inject.Inject; @@ -21,23 +21,20 @@ public class DeleteCompletedEventsActivity extends InjectingActivity { @Inject TaskService taskService; @Inject GCalHelper gcalHelper; - - private ProgressDialog pd; + @Inject DialogBuilder dialogBuilder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - DialogUtilities.okCancelDialog( - this, - getResources().getString( - R.string.EPr_manage_delete_completed_gcal_message), - new DialogInterface.OnClickListener() { + dialogBuilder.newMessageDialog(R.string.EPr_manage_delete_completed_gcal_message) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - pd = DialogUtilities.runWithProgressDialog(DeleteCompletedEventsActivity.this, new Runnable() { + new ProgressDialogAsyncTask(DeleteCompletedEventsActivity.this, dialogBuilder) { + @Override - public void run() { + protected Integer doInBackground(Void... params) { int deletedEventCount = 0; TodorooCursor cursor = taskService.query(Query.select(Task.ID, Task.CALENDAR_URI).where( Criterion.and(Task.COMPLETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull()))); @@ -60,31 +57,22 @@ public class DeleteCompletedEventsActivity extends InjectingActivity { taskService.update( Criterion.and(Task.COMPLETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull()), template); - showResult(R.string.EPr_manage_delete_completed_gcal_status, deletedEventCount); + return deletedEventCount; + } + + @Override + protected int getResultResource() { + return R.string.EPr_manage_delete_completed_gcal_status; } - }); + }.execute(); } - }, new DialogInterface.OnClickListener() { + }) + .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } - }); - } - - @Override - protected void onPause() { - DialogUtilities.dismissDialog(this, pd); - - super.onPause(); - } - - private void showResult(int resourceText, int result) { - DialogUtilities.okDialog(this, getString(resourceText, result), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - finish(); - } - }); + }) + .show(); } } diff --git a/src/main/java/org/tasks/activities/FilterSelectionActivity.java b/src/main/java/org/tasks/activities/FilterSelectionActivity.java index 5fa2bb32d..77aa4231f 100644 --- a/src/main/java/org/tasks/activities/FilterSelectionActivity.java +++ b/src/main/java/org/tasks/activities/FilterSelectionActivity.java @@ -3,16 +3,16 @@ package org.tasks.activities; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; -import android.support.v7.app.AlertDialog; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.api.Filter; -import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.filters.FilterCounter; import org.tasks.filters.FilterProvider; import org.tasks.injection.InjectingFragmentActivity; +import org.tasks.preferences.ActivityPreferences; import javax.inject.Inject; @@ -24,15 +24,19 @@ public class FilterSelectionActivity extends InjectingFragmentActivity { @Inject FilterProvider filterProvider; @Inject FilterCounter filterCounter; + @Inject DialogBuilder dialogBuilder; + @Inject ActivityPreferences activityPreferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + activityPreferences.applyDialogTheme(); + final FilterAdapter filterAdapter = new FilterAdapter(filterProvider, filterCounter, this, null, false); filterAdapter.populateList(); - new AlertDialog.Builder(this, R.style.Tasks_Dialog) + dialogBuilder.newDialog() .setSingleChoiceItems(filterAdapter, -1, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { diff --git a/src/main/java/org/tasks/activities/PurgeDeletedActivity.java b/src/main/java/org/tasks/activities/PurgeDeletedActivity.java index 00de38e75..7842f56f5 100644 --- a/src/main/java/org/tasks/activities/PurgeDeletedActivity.java +++ b/src/main/java/org/tasks/activities/PurgeDeletedActivity.java @@ -1,13 +1,11 @@ package org.tasks.activities; -import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Query; -import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gcal.GCalHelper; @@ -15,7 +13,9 @@ import com.todoroo.astrid.service.TaskDeleter; import com.todoroo.astrid.service.TaskService; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.InjectingActivity; +import org.tasks.ui.ProgressDialogAsyncTask; import javax.inject.Inject; @@ -25,23 +25,19 @@ public class PurgeDeletedActivity extends InjectingActivity { @Inject TaskDeleter taskDeleter; @Inject GCalHelper gcalHelper; @Inject MetadataDao metadataDao; - - private ProgressDialog pd; + @Inject DialogBuilder dialogBuilder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - DialogUtilities.okCancelDialog( - this, - getResources().getString( - R.string.EPr_manage_purge_deleted_message), - new DialogInterface.OnClickListener() { + dialogBuilder.newMessageDialog(R.string.EPr_manage_purge_deleted_message) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - pd = DialogUtilities.runWithProgressDialog(PurgeDeletedActivity.this, new Runnable() { + new ProgressDialogAsyncTask(PurgeDeletedActivity.this, dialogBuilder) { @Override - public void run() { + protected Integer doInBackground(Void... params) { TodorooCursor cursor = taskService.query(Query.select(Task.ID, Task.TITLE, Task.CALENDAR_URI).where( Criterion.and(Task.DELETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull()))); try { @@ -56,32 +52,22 @@ public class PurgeDeletedActivity extends InjectingActivity { } int result = taskDeleter.purgeDeletedTasks(); metadataDao.removeDanglingMetadata(); - showResult(R.string.EPr_manage_purge_deleted_status, result); + return result; + } + + @Override + protected int getResultResource() { + return R.string.EPr_manage_purge_deleted_status; } - }); + }.execute(); } - }, new DialogInterface.OnClickListener() { + }) + .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } - }); - - } - - @Override - protected void onPause() { - DialogUtilities.dismissDialog(this, pd); - - super.onPause(); - } - - protected void showResult(int resourceText, int result) { - DialogUtilities.okDialog(this, getString(resourceText, result), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - finish(); - } - }); + }) + .show(); } } diff --git a/src/main/java/org/tasks/activities/SortActivity.java b/src/main/java/org/tasks/activities/SortActivity.java index 792899476..27224255e 100644 --- a/src/main/java/org/tasks/activities/SortActivity.java +++ b/src/main/java/org/tasks/activities/SortActivity.java @@ -13,6 +13,7 @@ import com.todoroo.astrid.core.SortHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.InjectingFragmentActivity; import org.tasks.preferences.Preferences; @@ -28,6 +29,7 @@ public class SortActivity extends InjectingFragmentActivity { public static final String EXTRA_TOGGLE_MANUAL = "extra_toggle_manual"; @Inject Preferences preferences; + @Inject DialogBuilder dialogBuilder; private boolean manualEnabled; private AlertDialog alertDialog; @@ -60,7 +62,7 @@ public class SortActivity extends InjectingFragmentActivity { selectedIndex -= 1; } - alertDialog = new AlertDialog.Builder(this, R.style.Tasks_Dialog) + alertDialog = dialogBuilder.newDialog() .setSingleChoiceItems(adapter, selectedIndex, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { diff --git a/src/main/java/org/tasks/dialogs/DialogBuilder.java b/src/main/java/org/tasks/dialogs/DialogBuilder.java new file mode 100644 index 000000000..55727b496 --- /dev/null +++ b/src/main/java/org/tasks/dialogs/DialogBuilder.java @@ -0,0 +1,41 @@ +package org.tasks.dialogs; + +import android.app.Activity; +import android.app.ProgressDialog; +import android.support.v7.app.AlertDialog; + +import org.tasks.R; +import org.tasks.preferences.ActivityPreferences; + +import javax.inject.Inject; + +public class DialogBuilder { + private Activity activity; + private final ActivityPreferences activityPreferences; + + @Inject + public DialogBuilder(Activity activity, ActivityPreferences activityPreferences) { + this.activity = activity; + this.activityPreferences = activityPreferences; + } + + public AlertDialog.Builder newDialog() { + return new AlertDialog.Builder(activity, activityPreferences.getDialogTheme()); + } + + public AlertDialog.Builder newMessageDialog(String message) { + return newDialog().setMessage(message); + } + + public AlertDialog.Builder newMessageDialog(int message, Object... formatArgs) { + return newMessageDialog(activity.getString(message, formatArgs)); + } + + public ProgressDialog newProgressDialog() { + ProgressDialog dialog = new ProgressDialog(activity, activityPreferences.getDialogTheme()); + dialog.setMessage(activity.getString(R.string.DLG_wait)); + dialog.setCancelable(false); + dialog.setCanceledOnTouchOutside(false); + return dialog; + } +} diff --git a/src/main/java/org/tasks/injection/ActivityModule.java b/src/main/java/org/tasks/injection/ActivityModule.java index e3fbb4df3..8e6e5e4be 100644 --- a/src/main/java/org/tasks/injection/ActivityModule.java +++ b/src/main/java/org/tasks/injection/ActivityModule.java @@ -14,6 +14,7 @@ import com.todoroo.astrid.core.CustomFilterActivity; import com.todoroo.astrid.core.DefaultsPreferences; import com.todoroo.astrid.core.OldTaskPreferences; import com.todoroo.astrid.files.AACRecordingActivity; +import com.todoroo.astrid.files.FileExplore; import com.todoroo.astrid.gcal.CalendarAlarmListCreator; import com.todoroo.astrid.gcal.CalendarReminderActivity; import com.todoroo.astrid.gtasks.GtasksPreferences; @@ -26,6 +27,7 @@ import org.tasks.activities.ClearGtaskDataActivity; import org.tasks.activities.DeleteAllCalendarEventsActivity; import org.tasks.activities.DeleteCompletedActivity; import org.tasks.activities.DeleteCompletedEventsActivity; +import org.tasks.activities.DonationActivity; import org.tasks.activities.ExportTaskActivity; import org.tasks.activities.FilterSelectionActivity; import org.tasks.activities.ImportTaskActivity; @@ -86,7 +88,9 @@ import dagger.Provides; HelpAndFeedbackActivity.class, DateShortcutPreferences.class, SortActivity.class, - FilterSelectionActivity.class + FilterSelectionActivity.class, + FileExplore.class, + DonationActivity.class }) public class ActivityModule { diff --git a/src/main/java/org/tasks/injection/DialogFragmentModule.java b/src/main/java/org/tasks/injection/DialogFragmentModule.java index b24b9f98c..7c555640f 100644 --- a/src/main/java/org/tasks/injection/DialogFragmentModule.java +++ b/src/main/java/org/tasks/injection/DialogFragmentModule.java @@ -1,5 +1,6 @@ package org.tasks.injection; +import android.app.Activity; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; @@ -28,4 +29,9 @@ public class DialogFragmentModule { public FragmentActivity getFragmentActivity() { return dialogFragment.getActivity(); } + + @Provides + public Activity getActivity() { + return dialogFragment.getActivity(); + } } diff --git a/src/main/java/org/tasks/preferences/ActivityPreferences.java b/src/main/java/org/tasks/preferences/ActivityPreferences.java index 9d780787e..3d230615e 100644 --- a/src/main/java/org/tasks/preferences/ActivityPreferences.java +++ b/src/main/java/org/tasks/preferences/ActivityPreferences.java @@ -42,6 +42,10 @@ public class ActivityPreferences extends Preferences { applyTheme(isDarkTheme() ? R.style.TasksDark : R.style.Tasks); } + public void applyDialogTheme() { + applyTheme(isDarkTheme() ? R.style.TasksDialogDark : R.style.TasksDialog); + } + public void applyStatusBarColor() { applyStatusBarColor(isDarkTheme() ? android.R.color.black : R.color.primary_dark); } @@ -68,6 +72,14 @@ public class ActivityPreferences extends Preferences { activity.getWindow().setFormat(PixelFormat.RGBA_8888); } + public int getTheme() { + return isDarkTheme() ? R.style.TasksDark : R.style.Tasks; + } + + public int getDialogTheme() { + return isDarkTheme() ? R.style.TasksDialogDark : R.style.TasksDialog; + } + public int getEditDialogTheme() { return isDarkTheme() ? R.style.TEA_Dialog_Dark : R.style.TEA_Dialog; } diff --git a/src/main/java/org/tasks/reminders/NotificationDialog.java b/src/main/java/org/tasks/reminders/NotificationDialog.java index bec4efb1c..bc296d526 100644 --- a/src/main/java/org/tasks/reminders/NotificationDialog.java +++ b/src/main/java/org/tasks/reminders/NotificationDialog.java @@ -5,15 +5,16 @@ import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.v7.app.AlertDialog; -import android.widget.ArrayAdapter; import org.tasks.Broadcaster; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.InjectingDialogFragment; import org.tasks.intents.TaskIntents; import org.tasks.notifications.NotificationManager; +import java.util.List; + import javax.inject.Inject; import static java.util.Arrays.asList; @@ -22,6 +23,7 @@ public class NotificationDialog extends InjectingDialogFragment { @Inject NotificationManager notificationManager; @Inject Broadcaster broadcaster; + @Inject DialogBuilder dialogBuilder; private long taskId; private String title; @@ -30,14 +32,14 @@ public class NotificationDialog extends InjectingDialogFragment { @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - ArrayAdapter adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, asList( + List items = asList( getString(R.string.TAd_actionEditTask), getString(R.string.rmd_NoA_snooze), - getString(R.string.rmd_NoA_done) - )); - return new AlertDialog.Builder(getActivity(), R.style.Tasks_Dialog) + getString(R.string.rmd_NoA_done)); + + return dialogBuilder.newDialog() .setTitle(title) - .setAdapter(adapter, new DialogInterface.OnClickListener() { + .setItems(items.toArray(new String[items.size()]), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { diff --git a/src/main/java/org/tasks/reminders/SnoozeDialog.java b/src/main/java/org/tasks/reminders/SnoozeDialog.java index be7e6614e..e9b6919d1 100644 --- a/src/main/java/org/tasks/reminders/SnoozeDialog.java +++ b/src/main/java/org/tasks/reminders/SnoozeDialog.java @@ -5,13 +5,12 @@ import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.v7.app.AlertDialog; -import android.widget.ArrayAdapter; import com.todoroo.astrid.reminders.SnoozeCallback; import org.joda.time.DateTime; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.ForApplication; import org.tasks.injection.InjectingDialogFragment; import org.tasks.preferences.Preferences; @@ -28,26 +27,26 @@ public class SnoozeDialog extends InjectingDialogFragment { @Inject Preferences preferences; @Inject @ForApplication Context context; + @Inject DialogBuilder dialogBuilder; private DateTime now = new DateTime(); private SnoozeCallback snoozeCallback; private DialogInterface.OnCancelListener onCancelListener; private List snoozeTimes = new ArrayList<>(); - private ArrayAdapter adapter; + private List items = new ArrayList<>(); private DateTime getDateTimeShortcut(int resId, long def) { return now.withMillisOfDay(preferences.getInt(getString(resId), (int) def)); } private void add(int resId, DateTime dateTime) { - adapter.add(String.format("%s (%s)", getString(resId), getTimeString(context, dateTime.toDate()))); + items.add(String.format("%s (%s)", getString(resId), getTimeString(context, dateTime.toDate()))); snoozeTimes.add(dateTime.getMillis()); } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1); DateTime morning = getDateTimeShortcut(R.string.p_date_shortcut_morning, TimeUnit.HOURS.toMillis(9)); DateTime afternoon = getDateTimeShortcut(R.string.p_date_shortcut_afternoon, TimeUnit.HOURS.toMillis(13)); DateTime evening = getDateTimeShortcut(R.string.p_date_shortcut_evening, TimeUnit.HOURS.toMillis(17)); @@ -55,7 +54,7 @@ public class SnoozeDialog extends InjectingDialogFragment { DateTime tomorrowMorning = morning.plusDays(1); DateTime tomorrowAfternoon = afternoon.plusDays(1); - adapter.add(getString(R.string.date_shortcut_hour)); + items.add(getString(R.string.date_shortcut_hour)); snoozeTimes.add(0L); DateTime hourCutoff = new DateTime().plusMinutes(75); @@ -76,11 +75,11 @@ public class SnoozeDialog extends InjectingDialogFragment { add(R.string.date_shortcut_tomorrow_morning, tomorrowMorning); add(R.string.date_shortcut_tomorrow_afternoon, tomorrowAfternoon); } - adapter.add(getString(R.string.pick_a_date_and_time)); + items.add(getString(R.string.pick_a_date_and_time)); - return new AlertDialog.Builder(getActivity(), R.style.Tasks_Dialog) + return dialogBuilder.newDialog() .setTitle(R.string.rmd_NoA_snooze) - .setAdapter(adapter, new DialogInterface.OnClickListener() { + .setItems(items.toArray(new String[items.size()]), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { diff --git a/src/main/java/org/tasks/ui/ProgressDialogAsyncTask.java b/src/main/java/org/tasks/ui/ProgressDialogAsyncTask.java new file mode 100644 index 000000000..ab578cd6f --- /dev/null +++ b/src/main/java/org/tasks/ui/ProgressDialogAsyncTask.java @@ -0,0 +1,39 @@ +package org.tasks.ui; + +import android.app.Activity; +import android.app.ProgressDialog; +import android.os.AsyncTask; +import android.widget.Toast; + +import org.tasks.dialogs.DialogBuilder; + +public abstract class ProgressDialogAsyncTask extends AsyncTask { + + ProgressDialog progressDialog; + private Activity activity; + private DialogBuilder dialogBuilder; + + public ProgressDialogAsyncTask(Activity activity, DialogBuilder dialogBuilder) { + this.activity = activity; + this.dialogBuilder = dialogBuilder; + } + + @Override + protected void onPreExecute() { + progressDialog = dialogBuilder.newProgressDialog(); + progressDialog.show(); + } + + @Override + protected void onPostExecute(Integer integer) { + if (progressDialog.isShowing()) { + progressDialog.dismiss(); + } + + Toast.makeText(activity, activity.getString(getResultResource(), integer), Toast.LENGTH_LONG).show(); + + activity.finish(); + } + + protected abstract int getResultResource(); +} diff --git a/src/main/res/drawable-hdpi/ic_folder_white_24dp.png b/src/main/res/drawable-hdpi/ic_folder_white_24dp.png new file mode 100644 index 000000000..02ea533a8 Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_folder_white_24dp.png differ diff --git a/src/main/res/drawable-hdpi/ic_insert_drive_file_white_24dp.png b/src/main/res/drawable-hdpi/ic_insert_drive_file_white_24dp.png new file mode 100644 index 000000000..84755e488 Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_insert_drive_file_white_24dp.png differ diff --git a/src/main/res/drawable-xhdpi/ic_folder_white_24dp.png b/src/main/res/drawable-xhdpi/ic_folder_white_24dp.png new file mode 100644 index 000000000..71a5a137c Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_folder_white_24dp.png differ diff --git a/src/main/res/drawable-xhdpi/ic_insert_drive_file_white_24dp.png b/src/main/res/drawable-xhdpi/ic_insert_drive_file_white_24dp.png new file mode 100644 index 000000000..798ebd4e2 Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_insert_drive_file_white_24dp.png differ diff --git a/src/main/res/drawable-xxhdpi/ic_folder_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_folder_white_24dp.png new file mode 100644 index 000000000..b93d5a1e4 Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_folder_white_24dp.png differ diff --git a/src/main/res/drawable-xxhdpi/ic_insert_drive_file_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_insert_drive_file_white_24dp.png new file mode 100644 index 000000000..f3e153b45 Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_insert_drive_file_white_24dp.png differ diff --git a/src/main/res/drawable/ic_folder_white_24dp.png b/src/main/res/drawable/ic_folder_white_24dp.png new file mode 100644 index 000000000..831d723ba Binary files /dev/null and b/src/main/res/drawable/ic_folder_white_24dp.png differ diff --git a/src/main/res/drawable/ic_insert_drive_file_white_24dp.png b/src/main/res/drawable/ic_insert_drive_file_white_24dp.png new file mode 100644 index 000000000..b51ce3ed9 Binary files /dev/null and b/src/main/res/drawable/ic_insert_drive_file_white_24dp.png differ diff --git a/src/main/res/values-ar/strings.xml b/src/main/res/values-ar/strings.xml index 47f436975..4aa31f0fa 100644 --- a/src/main/res/values-ar/strings.xml +++ b/src/main/res/values-ar/strings.xml @@ -107,7 +107,6 @@ هل فعلا تريد حذف جميع الأحداث للمهام ؟ تحميل... اختر المهمه للعرض... - قاعدة بيانات متلفه Uh oh! It looks like you may have a corrupted database. If you see this error regularly, we suggest you clear all data (Settings->Sync and backup->Manage old tasks->Clear all data) and restore @@ -239,7 +238,6 @@ أمس غدا أمس - معلومة إنتظر من فضلك... آخر تحيين:\n%s تحيين في الخلفية diff --git a/src/main/res/values-bg-rBG/strings.xml b/src/main/res/values-bg-rBG/strings.xml index e1823b67c..452753361 100644 --- a/src/main/res/values-bg-rBG/strings.xml +++ b/src/main/res/values-bg-rBG/strings.xml @@ -173,7 +173,6 @@ Изтрити %d събития от календара! Зареждане... Изберете задачи за показване... - Развалена База от данни Ами сега! Изглежда, че базата от данни е развалена. Ако виждате тази грешка редовно, ние ви предлагаме да изчистите всички данни (Настройки->Синхронизиране и резервни копия->Управление на стари задачи->Изчисти всички данни) @@ -372,7 +371,6 @@ Вчера Утре Вчера - Информация Ами сега, изглежда е станала грешка! Ето какво се случи:\n\n%s Моля, изчакайте... Последна синхронизация:\n%s diff --git a/src/main/res/values-ca/strings.xml b/src/main/res/values-ca/strings.xml index f10f5ab54..12c52e63f 100644 --- a/src/main/res/values-ca/strings.xml +++ b/src/main/res/values-ca/strings.xml @@ -201,7 +201,6 @@ Avui Demà Ahir - Informació ¡Ui, sembla que hi ha hagut un problema! Això es el que ha passat:\n\n%s Si us plau, espera... Última sincronització:\n%s diff --git a/src/main/res/values-cs/strings.xml b/src/main/res/values-cs/strings.xml index cce01e58b..8d9dbe3e2 100644 --- a/src/main/res/values-cs/strings.xml +++ b/src/main/res/values-cs/strings.xml @@ -161,7 +161,6 @@ Smazány %d upomínky v kalendáři Nahrávám... Označte úkol pro zobrazení... - Poškozená databáze OJ! Může být poškozená databáze. Zobrazuje-li se tato chyba znovu, vymaž všechny údaje v (Nastavení->Synchronizace a zálohy->Správa starých úkolů->Vymazat vše) a obnov své úkoly ze zálohy (Nastavení->Synchronizace a zálohy->Zálohy->Import úkolů) v úkolech. Výchozí termín dokončení Výchozí důležitost @@ -347,7 +346,6 @@ Včera Zítra Včera - Informace Jejda, vypadá to, že se vyskytla chyba! Tady je co se stalo:\n\n%s Čekejte prosím... Poslední synchronizace:\n%s diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml index d8fcc4072..97e3ce3c8 100644 --- a/src/main/res/values-de/strings.xml +++ b/src/main/res/values-de/strings.xml @@ -169,7 +169,6 @@ %d Kalendereinträge gelöscht! Ladevorgang … Aufgaben zum Anzeigen wählen … - Fehler in der Datenbank Oh-oh! Sieht aus aIs könnte deine Datenbank beschädigt sein. Falls Du diesen Fehler regelmäßig siehst, empfehlen wir, alle Daten zu löschen (Einstellungen->Synchronisation->Alte Aufgaben verwalten->Alle Daten löschen) und deine Aufgaben aus einem Backup in Tasks wiederherzustellen (Einstellungen->Synchronisation->Backups->-Backups verwalten>Aufgaben importieren). Aufgabenstandards Standard Dringlichkeit diff --git a/src/main/res/values-el/strings.xml b/src/main/res/values-el/strings.xml index 5c593486d..f076ad609 100644 --- a/src/main/res/values-el/strings.xml +++ b/src/main/res/values-el/strings.xml @@ -163,7 +163,6 @@ Διαγράφτηκαν %d γεγονότα ημερολογίου! Φόρτωση... Επιλογή εργασιών για προβολή... - Κατεστραμμένη βάση δεδομένων Ωχ! Μοιάζει να έχετε μια κατεστραμμένη βάση δεδομένων. Εάν βλέπετε αυτό το σφάλμα τακτικά, σας προτείνουμε καθαρισμό όλων των δεδομένων (Ρυθμίσεις-> Sync και Backup-> Διαχείριση παλιά tasks-> Διαγραφή όλων των δεδομένων) και να αποκαταστήσει @@ -346,7 +345,6 @@ Χθές Αύριο Χθές - Πληροφορίες Ωπ, προέκυψε σφάλμα!! Νά τι έγινε :\n\n%s Παρακαλώ περιμένετε... Τελευταίος συγχρονισμός:\n%s diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml index 56904b64f..c527b2582 100644 --- a/src/main/res/values-es/strings.xml +++ b/src/main/res/values-es/strings.xml @@ -170,7 +170,6 @@ ¡Borrados %d eventos del calendario! Cargando… Seleccione las tareas que ver... - Base de datos corrupta \"¡Oh-oh! Es posible que tu base de datos esté corrupta. Si ves éste error con frecuencia, te sugerimos que limpies toda la información (Configuración->Sincronización y respaldos->Administrar tareas pasadas->Limpiar toda la información) y recuperar tus tareas de un respaldo (Configuración->Sincronización y respaldos->Respaldos->Importar tareas) en Tasks.\" Configuración por defecto de tareas Fecha límite por defecto @@ -366,7 +365,6 @@ Ayer Mñna Ayer - Información ¡Uy, parece que ocurró un error! Esto es lo que pasó:\n\n%s Por favor, espere... Ultima sincronización:\n%s diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index 634e3055d..30f796990 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -168,7 +168,6 @@ %d événements du calendrier ont été supprimés! Chargement… Sélectionnez les tâches à afficher… - Base de donnée corrompue Oh oh ! On dirait que vous avez une base de données corrompues. Si vous voyez souvent cette erreur, nous vous suggérons d\'effacer toutes vos données (Paramètres->Synchronisation et sauvegarde->Gérer les anciennes tâches->Effacer toutes les données) et restaurer vos tâches d\'une sauvegarde (Paramètres->Synchronisation et sauvegarde->Sauvegarde->Importer des tâches) dans Tasks Valeurs par défaut Échéance par défaut @@ -362,7 +361,6 @@ Hier Demain Hier - Informations Oups, une erreur est survenue ! Voici ce qu\'il s\'est passé :\n\n%s Veuillez patienter... Dernière synchro. :\n%s diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml index 60e2ac847..d58e54fd8 100644 --- a/src/main/res/values-it/strings.xml +++ b/src/main/res/values-it/strings.xml @@ -144,7 +144,6 @@ Eliminato il %d degli eventi del calendario! Caricamento... Seleziona le attività da visualizzare... - Database corrotto Oh, oh! Pare che tu abbia un database danneggiato. Se visualizzi questo errore più volte, ti consigliamo di cancellare tutti i dati (Impostazioni->Sincronizzazione e backup->Gestire tutti i dati->Cancellare tutti i dati) e ripristinare i tuoi task da un backup in Tasks (Impostazioni->Sincronizzazione e backup->Backup->Importa task). Urgenza Predefinita @@ -320,7 +319,6 @@ Se visualizzi questo errore più volte, ti consigliamo di cancellare tutti i dat Ieri Domani Ieri - Informazione Oops, sembra che ci sia stato un errore! E\' successo questo:\n\n%s Attendi... Ultima Sincronizzazione:\n%s diff --git a/src/main/res/values-iw/strings.xml b/src/main/res/values-iw/strings.xml index 067dffc5f..4e0c3eb93 100644 --- a/src/main/res/values-iw/strings.xml +++ b/src/main/res/values-iw/strings.xml @@ -161,7 +161,6 @@ %d אירועי יומן נמחקו טוענת... בחר משימות להצגה... - בסיס נתונים פגום הו לא! נראה כי בסיס הנתונים אינו תקין. אם אתה נתקל השגיאה זאת האופן תדיר, אנו מציעים שתמחק את כל הנתונים (הגדרות->סינכרון וגיבוי->ניהול משימות ישנות->הסרת כל הנתונים) ושחזר את המשימות @@ -348,7 +347,6 @@ אתמול מחר אתמול - פרטים אוּפְּס, נראה שארעה שגיאה! הנה מה שקה:\n\n%s אנא המתן... סנכרון אחרון:\n%s diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml index f1d4f19c2..98f020455 100644 --- a/src/main/res/values-ja/strings.xml +++ b/src/main/res/values-ja/strings.xml @@ -171,7 +171,6 @@ %d カレンダーイベントが削除されました! 読み込んでいます・・・ ウィジェットに表示する項目 - 不正なデータベース データベースが正しくないようです. このエラーが何度も表示される場合, データのクリア (設定->同期およびバックアップ->古いタスクの管理->全てのデータをクリア) し, @@ -371,7 +370,6 @@ 昨日 明日 昨日 - インフォメーション エラーが発生しました! 発生した内容\n\n%s お待ちください 前回の同期:\n%s diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml index e6872e1bb..1eca8a659 100644 --- a/src/main/res/values-ko/strings.xml +++ b/src/main/res/values-ko/strings.xml @@ -171,7 +171,6 @@ %d 달력 이벤트를 삭제했습니다! 로드 중… 열람할 일정 선택... - 손상된 데이터베이스 데이터베이스가 손상된 것 같습니다. 이 에러 메시지가 주기적으로 나타나면, 자료를 모두 지우고 (설정->동기화 & 백업->오래된 일정 관리->모든 자료 삭제) Tasks의 백업에서 당신의 일정을 복구하시기 바랍니다. @@ -366,7 +365,6 @@ Tasks의 백업에서 당신의 일정을 복구하시기 바랍니다. 어제 내일 어제 - 정보 에러가 발생한 것 같습니다! 발생한 에러는 다음과 같습니다:\n\n%s 잠시 기다리세요... 마지막 동기화: \n%s diff --git a/src/main/res/values-nb/strings.xml b/src/main/res/values-nb/strings.xml index df07fa22f..6473de8c3 100644 --- a/src/main/res/values-nb/strings.xml +++ b/src/main/res/values-nb/strings.xml @@ -172,7 +172,6 @@ I dag I morgen I går - Informasjon Oi, det oppstod en feil! Dette skjedde:\n\n%s Vennligst vent... Siste synkronisering:\n%s diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml index 0185451cb..5aea337d6 100644 --- a/src/main/res/values-nl/strings.xml +++ b/src/main/res/values-nl/strings.xml @@ -165,7 +165,6 @@ %d agenda-items verwijderd! Laden… Selecteer weer te geven taken... - Database Corrupt Oh oh! Het lijkt erop dat je een corrupte database hebt. Als je deze error vaker ziet raden we je aan alle data te verwijderen (Instellingen->Beheer Alle Taken->Wis alle data) en je taken uit een backup te herstellen (Instellingen->Backup->Importeer Taken) in Tasks. Standaard prioriteit Standaard prioriteit @@ -353,7 +352,6 @@ Gisteren mrgn gisteren - Informatie Er is een fout opgetreden:\n\n%s Even geduld a.u.b. Vorige:\n%s diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml index c09261ab8..db3374239 100644 --- a/src/main/res/values-pl/strings.xml +++ b/src/main/res/values-pl/strings.xml @@ -164,7 +164,6 @@ Usunięto %d wydarzeń kalendarza! Ładowanie... Wybierz zadania do wyświetlenia - Uszkodzona baza danych O jej! Wygląda na to, że możeć mieć uszkodzoną bazę danych. Jeśli widzisz ten błąd często, sugerujemy wyczyszczenie wszystkich danych (Settings->Sync and backup->Manage old tasks->Clear all data) @@ -356,7 +355,6 @@ i odzyskanie zadań z kopi zapasowej (Settings->Sync and backup->Backup-&g Wczoraj jtr wcz - Informacja Ups! Wygląda na to, że wystąpił jakiś błąd! Oto, co się stało:\n\n%s Proszę czekać... Ostatnia synchronizacja:\n%s diff --git a/src/main/res/values-pt-rBR/strings.xml b/src/main/res/values-pt-rBR/strings.xml index 029b8b8be..e22c89eaf 100644 --- a/src/main/res/values-pt-rBR/strings.xml +++ b/src/main/res/values-pt-rBR/strings.xml @@ -163,7 +163,6 @@ %d eventos de agenda apagados! Carregando... Selecionar tarefas para visualização... - Banco de Dados Corrompido Uh oh! Parece que você possui banco de dados corrompido. Se você vê esse erro regularmente, nós sugerimos que você limpe todos os dados (Configurações-> Sincronização e backup-> Manutenção de tarefas antigas-> Limpar todos os dados) e restaurar suas tarefas através do backup no Tasks (Configurações-> Sincronização e backup-> Backup-> Importar tarefas). Urgência Prioridade padrão @@ -352,7 +351,6 @@ Ontem amanhã ontem - Informações Opa, parece que ocorreu um erro! Aqui está o que aconteceu:\n\n%s Por favor, aguarde... Última sincronização:\n%s diff --git a/src/main/res/values-pt/strings.xml b/src/main/res/values-pt/strings.xml index 43b59bab1..2013dbba4 100644 --- a/src/main/res/values-pt/strings.xml +++ b/src/main/res/values-pt/strings.xml @@ -169,7 +169,6 @@ Eliminados %d eventos de calendário! Carregando... Escolha as tarefas a ver... - Base de dados danificada Parece que a sua base de dados está danificada. Se este erro ocorrer repetidamente sugerimos a eliminação dos dados em Definições->Sincronização e backup->Gerir tarefas antigas->Limpar todos os dados e o restauro @@ -364,7 +363,6 @@ das tarefas através de um backup em Definições->Sincronização e backup-& Ontem Amanhã Ontem - Informação Parece que ocorreu um erro! Isto foi o que aconteceu:\n\n%s Por favor aguarde... Última sincronização:\n%s diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml index ab3c674f1..a82a957d1 100644 --- a/src/main/res/values-ru/strings.xml +++ b/src/main/res/values-ru/strings.xml @@ -168,7 +168,6 @@ Удалено %d календарных событий! Загрузка... Выберите задачи для просмотра… - Поврежденная база данных Упс! Похоже, ваша база данных повреждена. Если вы получаете эту ошибку регулярно, рекомендуется стереть все данные (Параметры->Синхронизация->Управление старыми задачами->Очистить все данные) и восстановить @@ -364,7 +363,6 @@ Вчера Завт Вчера - Информация Ой, похоже произошла ошибка! Подробности ниже:\n\n%s Пожалуйста, подождите… Последняя синхронизация\n%s diff --git a/src/main/res/values-sk/strings.xml b/src/main/res/values-sk/strings.xml index 0a2ef36d3..b0266ecfd 100644 --- a/src/main/res/values-sk/strings.xml +++ b/src/main/res/values-sk/strings.xml @@ -168,7 +168,6 @@ Vymazané %d udalosti kalendára! Načítavanie Vybrať úlohy na zobrazenie - Poškodená databáza Oh nie! Zdá sa, že máš poškodenú databázu. Ak sa ti táto chyba zobrazuje stále, vymaž všetky údaje (Nastavenia->Synchronizáca a zálohy->Spravovať staré úlohy->Vymazať všetky údaje) a obnov svoje údaje zo zálohy (Nastavenia->Synchronizácie a zálohy->Záloha->Importovať úlohy) v Tasks. Predvoľby úloh @@ -362,7 +361,6 @@ Včera Zajtra Včera - Informácia Ups, zdá sa, že sa vyskytla chyba! Tu je čo sa stalo:\n\n%s Prosím čakaj... Posledná synchronizácia:\n%s diff --git a/src/main/res/values-sl-rSI/strings.xml b/src/main/res/values-sl-rSI/strings.xml index d91d727b1..1495521e1 100644 --- a/src/main/res/values-sl-rSI/strings.xml +++ b/src/main/res/values-sl-rSI/strings.xml @@ -167,7 +167,6 @@ Število zbrisanih dogodkov na koledarju: %d Nalagam... Izberi in prikaži opravke... - Okvarjena baza podatkov O, ne! Zdi se, da imate okvarjeno bazo podatkov. Če se ta napaka pogosto pojavlja, vam predlagamo, da zbrišete vse podatke (Nastavitve->Usklajevanje in varnostna kopija-> Upravljanje s preteklimi opravki->Zbriši vse podatke) in obnovite svoje opravke s pomočjo varnostne kopije aplikacije Opravki. (Nastavitve->Usklajevanje in varnostna kopija->Varnostna kopija->Uvozi opravke) Privzeta dospelost Privzeta dospelost @@ -354,7 +353,6 @@ Včeraj Jutr Včer - Informacija Ups, zdi se, da je prišlo do napake! Tole se je zgodilo:\n\n%s Prosimo, počakajte... Najnovejše usklajevanje:\n%s diff --git a/src/main/res/values-sv/strings.xml b/src/main/res/values-sv/strings.xml index e3c016900..d4b208c1e 100644 --- a/src/main/res/values-sv/strings.xml +++ b/src/main/res/values-sv/strings.xml @@ -159,7 +159,6 @@ %d kalenderhändelser raderade! Laddar... Välj uppgifter att se på... - Korrupt databas Oj! Det verkar som din databas är skadad. Om du ser detta felmeddelande ofta, föreslår vi att du tömmer all data (Inställningar->Synkronisering och backup->Hantera gamla uppgifter->Töm all data) diff --git a/src/main/res/values-th/strings.xml b/src/main/res/values-th/strings.xml index 5cd59cbcb..61342ac38 100644 --- a/src/main/res/values-th/strings.xml +++ b/src/main/res/values-th/strings.xml @@ -101,5 +101,4 @@ วันนี้ พรุ่งนี้ เมื่อวาน - ข้อมูล \ No newline at end of file diff --git a/src/main/res/values-tr/strings.xml b/src/main/res/values-tr/strings.xml index 4b626252f..533ea5b22 100644 --- a/src/main/res/values-tr/strings.xml +++ b/src/main/res/values-tr/strings.xml @@ -142,7 +142,6 @@ %d takvim olayı silindi! Yükleniyor... Görüntülenecek görevi seç... - Bozuk Veritabanı Uh oh! It looks like you may have a corrupted database. If you see this error regularly, we suggest you clear all data (Settings->Sync and backup->Manage old tasks->Clear all data) and restore @@ -320,7 +319,6 @@ Dün Yarın Dün - Bilgi Oops, bir sorun meydana geldi! Olan şu:\n\n%s Lütfen bekleyin... Son Senk.\n%s diff --git a/src/main/res/values-uk/strings.xml b/src/main/res/values-uk/strings.xml index a82855925..5921cdccc 100644 --- a/src/main/res/values-uk/strings.xml +++ b/src/main/res/values-uk/strings.xml @@ -167,7 +167,6 @@ Видалено %d календарних подій! Завантаження... Виберіть завдання для перегляду... - Пошкоджена база данних Ой! Схоже, ваша база даних пошкоджена. Якщо ви отримуєте цю помилку регулярно, рекомендується стерти всі дані (Параметри-> @@ -341,7 +340,6 @@ Вчора Завт. Вчор. - Інформація На жаль, схоже, сталася помилка! Ось що вийшло:\n\n%s Будь ласка, зачекайте... Остання синхр.:\n%s diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml index 8eb203800..21ce83add 100644 --- a/src/main/res/values-zh-rCN/strings.xml +++ b/src/main/res/values-zh-rCN/strings.xml @@ -125,7 +125,6 @@ 已经删除了 %d 个日历事件了! 载入中... 选择任务以显示... - 数据库已经受损 啊喔!您有一个毁损的资料库。如果您经常看见这个错误出现,我们建议您清除所有数据(在设置->同步和备份-&gt;管理旧任务->清楚所有数据)并在清单小助理备份中重新存入您的任务(设置->同步和备份->备份->导入任务) 默认截止期 默认隐藏直到 @@ -299,7 +298,6 @@ 昨天 明天 昨天 - 信息 糟糕,发生错误!状况是:\n\n%s 请稍候... 上次同步:\n%s diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml index 2fc36c03b..801c86aee 100644 --- a/src/main/res/values-zh-rTW/strings.xml +++ b/src/main/res/values-zh-rTW/strings.xml @@ -154,7 +154,6 @@ 已經刪除了 %d 個日曆事件了! 載入中... 選擇工作顯示... - 數據庫已經受損 啊喔!您有一個毀損的資料庫。如果您經常看見這個錯誤出現,我們建議您清除所有數據(在設置->同步和備份-&gt;管理舊任務工作->清楚所有數據)並在Tasks備份中重新存入您的任務工作(設置->同步和備份->備份->導入任務工作) 預設嚴重性 預設優先權 @@ -336,7 +335,6 @@ 昨天 明天 昨天 - 資訊 糟糕,發生錯誤!狀況是:\n\n%s 請稍候... 上次同步:\n%s diff --git a/src/main/res/values/attrs.xml b/src/main/res/values/attrs.xml index 5bbe0e294..33f7d34d1 100644 --- a/src/main/res/values/attrs.xml +++ b/src/main/res/values/attrs.xml @@ -55,6 +55,9 @@ + + + diff --git a/src/main/res/values/strings-core.xml b/src/main/res/values/strings-core.xml index 60e7acf3e..bcc6806e1 100644 --- a/src/main/res/values/strings-core.xml +++ b/src/main/res/values/strings-core.xml @@ -392,8 +392,6 @@ - Corrupted Database - Uh oh! It looks like you may have a corrupted database. If you see this error regularly, we suggest you clear all diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 566ab7974..d970bab03 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -31,9 +31,6 @@ - - Information - Oops, looks like an error occurred! Here\'s what happened:\n\n%s diff --git a/src/main/res/values/styles_dark.xml b/src/main/res/values/styles_dark.xml index 1a9794f12..6aa18fe7a 100644 --- a/src/main/res/values/styles_dark.xml +++ b/src/main/res/values/styles_dark.xml @@ -67,4 +67,23 @@ @drawable/ic_close_white_24dp + + \ No newline at end of file diff --git a/src/main/res/values/styles_light.xml b/src/main/res/values/styles_light.xml index ad0d015a0..f76ca3537 100644 --- a/src/main/res/values/styles_light.xml +++ b/src/main/res/values/styles_light.xml @@ -67,7 +67,7 @@ @drawable/ic_close_white_24dp - \ No newline at end of file