Light and dark dialog themes

pull/321/head
Alex Baker 11 years ago
parent 8bfcfe835b
commit 59af680aec

@ -27,7 +27,7 @@
<activity <activity
android:name=".activities.DonationActivity" android:name=".activities.DonationActivity"
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<service android:name=".location.GeofenceTransitionsIntentService"/> <service android:name=".location.GeofenceTransitionsIntentService"/>

@ -1,10 +1,8 @@
package org.tasks.activities; package org.tasks.activities;
import android.app.Activity;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.widget.Toast; import android.widget.Toast;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -15,13 +13,17 @@ import org.tasks.billing.IabHelper;
import org.tasks.billing.IabResult; import org.tasks.billing.IabResult;
import org.tasks.billing.Inventory; import org.tasks.billing.Inventory;
import org.tasks.billing.Purchase; import org.tasks.billing.Purchase;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingActivity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; 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.QueryInventoryFinishedListener, IabHelper.OnIabPurchaseFinishedListener,
IabHelper.OnConsumeFinishedListener, IabHelper.OnConsumeMultiFinishedListener { IabHelper.OnConsumeFinishedListener, IabHelper.OnConsumeMultiFinishedListener {
@ -33,6 +35,8 @@ public class DonationActivity extends Activity implements IabHelper.OnIabSetupFi
private Inventory inventory; private Inventory inventory;
private boolean itemSelected; private boolean itemSelected;
@Inject DialogBuilder dialogBuilder;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -44,7 +48,7 @@ public class DonationActivity extends Activity implements IabHelper.OnIabSetupFi
iabHelper.startSetup(this); iabHelper.startSetup(this);
final String[] donationValues = getValues(); final String[] donationValues = getValues();
AlertDialog.Builder builder = new AlertDialog.Builder(this) dialogBuilder.newDialog()
.setTitle(R.string.select_amount) .setTitle(R.string.select_amount)
.setItems(donationValues, new DialogInterface.OnClickListener() { .setItems(donationValues, new DialogInterface.OnClickListener() {
@Override @Override
@ -59,17 +63,16 @@ public class DonationActivity extends Activity implements IabHelper.OnIabSetupFi
error(getString(R.string.error)); error(getString(R.string.error));
} }
} }
}); })
AlertDialog donationAmount = builder.show(); .setOnDismissListener(new DialogInterface.OnDismissListener() {
donationAmount.setOwnerActivity(this); @Override
donationAmount.setOnDismissListener(new DialogInterface.OnDismissListener() { public void onDismiss(DialogInterface dialog) {
@Override if (!itemSelected) {
public void onDismiss(DialogInterface dialog) { finish();
if (!itemSelected) { }
finish(); }
} })
} .show();
});
} }
private void initiateDonation(int amount) { private void initiateDonation(int amount) {

@ -31,6 +31,7 @@ import org.tasks.location.Geofence;
import org.tasks.location.GoogleApi; import org.tasks.location.GoogleApi;
import org.tasks.location.OnLocationPickedHandler; import org.tasks.location.OnLocationPickedHandler;
import org.tasks.location.PlaceAutocompleteAdapter; import org.tasks.location.PlaceAutocompleteAdapter;
import org.tasks.preferences.ActivityPreferences;
import javax.inject.Inject; import javax.inject.Inject;
@ -43,6 +44,9 @@ public class LocationPickerDialog extends InjectingDialogFragment implements Goo
@Inject FragmentActivity fragmentActivity; @Inject FragmentActivity fragmentActivity;
@Inject GoogleApi googleApi; @Inject GoogleApi googleApi;
@Inject DialogBuilder dialogBuilder;
@Inject ActivityPreferences activityPreferences;
private OnLocationPickedHandler onLocationPickedHandler; private OnLocationPickedHandler onLocationPickedHandler;
private DialogInterface.OnCancelListener onCancelListener; private DialogInterface.OnCancelListener onCancelListener;
@ -53,17 +57,18 @@ public class LocationPickerDialog extends InjectingDialogFragment implements Goo
@NonNull @NonNull
@Override @Override
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
activityPreferences.applyTheme();
googleApi.connect(this); googleApi.connect(this);
Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.Tasks_Dialog); LayoutInflater layoutInflater = getActivity().getLayoutInflater();
LayoutInflater themedInflater = getActivity().getLayoutInflater().cloneInContext(contextThemeWrapper); View view = layoutInflater.inflate(R.layout.location_picker_dialog, null);
View view = themedInflater.inflate(R.layout.location_picker_dialog, null);
AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) view.findViewById(R.id.address_entry); AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) view.findViewById(R.id.address_entry);
autoCompleteTextView.setOnItemClickListener(mAutocompleteClickListener); autoCompleteTextView.setOnItemClickListener(mAutocompleteClickListener);
mAdapter = new PlaceAutocompleteAdapter(googleApi, fragmentActivity, android.R.layout.simple_list_item_1); mAdapter = new PlaceAutocompleteAdapter(googleApi, fragmentActivity, android.R.layout.simple_list_item_1);
autoCompleteTextView.setAdapter(mAdapter); autoCompleteTextView.setAdapter(mAdapter);
return new AlertDialog.Builder(getActivity()) return dialogBuilder.newDialog()
.setView(view) .setView(view)
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override @Override

@ -2,7 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingLeft="@dimen/horizontal_page_margin" android:paddingLeft="@dimen/horizontal_page_margin"
android:paddingRight="@dimen/horizontal_page_margin" android:paddingRight="@dimen/horizontal_page_margin"
@ -10,7 +10,7 @@
android:paddingBottom="@dimen/vertical_page_margin"> android:paddingBottom="@dimen/vertical_page_margin">
<AutoCompleteTextView <AutoCompleteTextView
android:layout_width="match_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="top" android:gravity="top"
android:layout_gravity="top" android:layout_gravity="top"

@ -105,25 +105,25 @@
<activity <activity
android:name=".activities.TimePickerActivity" android:name=".activities.TimePickerActivity"
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<activity <activity
android:name=".activities.DateAndTimePickerActivity" android:name=".activities.DateAndTimePickerActivity"
android:theme="@style/Tasks.Dialog" android:theme="@style/TasksDialog"
android:taskAffinity="" /> android:taskAffinity="" />
<activity <activity
android:name=".activities.LocationPickerActivity" android:name=".activities.LocationPickerActivity"
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<activity <activity
android:name=".activities.SortActivity" android:name=".activities.SortActivity"
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<activity <activity
android:name=".activities.FilterSelectionActivity" android:name=".activities.FilterSelectionActivity"
android:exported="true" android:exported="true"
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<!-- Activity that displays task list --> <!-- Activity that displays task list -->
<activity <activity
@ -325,21 +325,21 @@
android:excludeFromRecents="true" android:excludeFromRecents="true"
android:launchMode="singleTask" android:launchMode="singleTask"
android:taskAffinity="" android:taskAffinity=""
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<activity <activity
android:name=".reminders.SnoozeActivity" android:name=".reminders.SnoozeActivity"
android:excludeFromRecents="true" android:excludeFromRecents="true"
android:launchMode="singleTask" android:launchMode="singleTask"
android:taskAffinity="" android:taskAffinity=""
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<activity <activity
android:name=".reminders.NotificationActivity" android:name=".reminders.NotificationActivity"
android:excludeFromRecents="true" android:excludeFromRecents="true"
android:launchMode="singleTask" android:launchMode="singleTask"
android:taskAffinity="" android:taskAffinity=""
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<!-- tags --> <!-- tags -->
<receiver android:name="com.todoroo.astrid.tags.TagCustomFilterCriteriaExposer"> <receiver android:name="com.todoroo.astrid.tags.TagCustomFilterCriteriaExposer">
@ -352,7 +352,7 @@
<!-- custom filters --> <!-- custom filters -->
<activity <activity
android:name="com.todoroo.astrid.core.CustomFilterActivity" android:name="com.todoroo.astrid.core.CustomFilterActivity"
android:theme="@style/Tasks.Dialog"/> android:theme="@style/TasksDialog"/>
<!-- alarms --> <!-- alarms -->
<receiver android:name="com.todoroo.astrid.alarms.AlarmTaskRepeatListener"> <receiver android:name="com.todoroo.astrid.alarms.AlarmTaskRepeatListener">
@ -396,7 +396,7 @@
<activity <activity
android:name=".activities.ClearGtaskDataActivity" android:name=".activities.ClearGtaskDataActivity"
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<!-- repeats --> <!-- repeats -->
@ -444,19 +444,19 @@
<activity <activity
android:name=".activities.ClearAllDataActivity" android:name=".activities.ClearAllDataActivity"
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<activity <activity
android:name=".activities.PurgeDeletedActivity" android:name=".activities.PurgeDeletedActivity"
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<activity <activity
android:name=".activities.DeleteCompletedActivity" android:name=".activities.DeleteCompletedActivity"
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<activity <activity
android:name=".activities.DeleteCompletedEventsActivity" android:name=".activities.DeleteCompletedEventsActivity"
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<activity <activity
android:name=".activities.DeleteAllCalendarEventsActivity" android:name=".activities.DeleteAllCalendarEventsActivity"
android:theme="@style/Tasks.Dialog" /> android:theme="@style/TasksDialog" />
<!-- backup --> <!-- backup -->
@ -476,7 +476,7 @@
<activity <activity
android:name="com.todoroo.astrid.files.FileExplore" android:name="com.todoroo.astrid.files.FileExplore"
android:theme="@style/Tasks.Dialog"/> android:theme="@style/TasksDialog"/>
<receiver android:name="com.todoroo.astrid.timers.TimerTaskCompleteListener"> <receiver android:name="com.todoroo.astrid.timers.TimerTaskCompleteListener">
<intent-filter> <intent-filter>

@ -9,145 +9,25 @@ package com.todoroo.andlib.utility;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.preferences.ActivityPreferences;
import javax.inject.Inject;
@Deprecated
public class DialogUtilities { public class DialogUtilities {
private static final Logger log = LoggerFactory.getLogger(DialogUtilities.class); 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 * Displays a progress dialog. Must be run on the UI thread
*/ */
public static ProgressDialog progressDialog(Activity context, String text) { 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.setIndeterminate(true);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setMessage(text); dialog.setMessage(text);
@ -176,7 +56,6 @@ public class DialogUtilities {
}); });
} }
private static void tryOnUiThread(Activity activity, final Runnable runnable) { private static void tryOnUiThread(Activity activity, final Runnable runnable) {
activity.runOnUiThread(new Runnable() { activity.runOnUiThread(new Runnable() {
@Override @Override

@ -9,11 +9,9 @@ import android.app.Activity;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri; import android.net.Uri;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.webkit.MimeTypeMap; import android.webkit.MimeTypeMap;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.Toast; import android.widget.Toast;
@ -21,6 +19,7 @@ import android.widget.Toast;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.preferences.DeviceInfo; import org.tasks.preferences.DeviceInfo;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
@ -30,7 +29,6 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import javax.inject.Inject; import javax.inject.Inject;
@ -47,16 +45,18 @@ public class ActFmCameraModule {
private final Fragment fragment; private final Fragment fragment;
private final Preferences preferences; private final Preferences preferences;
private DeviceInfo deviceInfo; private DeviceInfo deviceInfo;
private DialogBuilder dialogBuilder;
public interface ClearImageCallback { public interface ClearImageCallback {
void clearImage(); void clearImage();
} }
@Inject @Inject
public ActFmCameraModule(Fragment fragment, Preferences preferences, DeviceInfo deviceInfo) { public ActFmCameraModule(Fragment fragment, Preferences preferences, DeviceInfo deviceInfo, DialogBuilder dialogBuilder) {
this.fragment = fragment; this.fragment = fragment;
this.preferences = preferences; this.preferences = preferences;
this.deviceInfo = deviceInfo; this.deviceInfo = deviceInfo;
this.dialogBuilder = dialogBuilder;
} }
public void showPictureLauncher(final ClearImageCallback clearImageOption) { public void showPictureLauncher(final ClearImageCallback clearImageOption) {
@ -121,7 +121,7 @@ public class ActFmCameraModule {
}; };
// show a menu of available options // show a menu of available options
new AlertDialog.Builder(fragment.getActivity()) dialogBuilder.newDialog()
.setAdapter(adapter, listener) .setAdapter(adapter, listener)
.show().setOwnerActivity(fragment.getActivity()); .show().setOwnerActivity(fragment.getActivity());
} }

@ -10,7 +10,6 @@ import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@ -23,6 +22,7 @@ import com.todoroo.astrid.api.CustomFilter;
import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.dao.StoreObjectDao;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.ActivityPreferences; import org.tasks.preferences.ActivityPreferences;
@ -41,6 +41,7 @@ public class FilterSettingsActivity extends InjectingAppCompatActivity {
@Inject ActivityPreferences preferences; @Inject ActivityPreferences preferences;
@Inject StoreObjectDao storeObjectDao; @Inject StoreObjectDao storeObjectDao;
@Inject DialogBuilder dialogBuilder;
@InjectView(R.id.tag_name) EditText filterName; @InjectView(R.id.tag_name) EditText filterName;
@InjectView(R.id.toolbar) Toolbar toolbar; @InjectView(R.id.toolbar) Toolbar toolbar;
@ -119,8 +120,7 @@ public class FilterSettingsActivity extends InjectingAppCompatActivity {
} }
private void deleteTag() { private void deleteTag() {
new AlertDialog.Builder(this, R.style.Tasks_Dialog) dialogBuilder.newMessageDialog(R.string.delete_tag_confirmation, filter.listingTitle)
.setMessage(getString(R.string.delete_tag_confirmation, filter.listingTitle))
.setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
@ -129,11 +129,7 @@ public class FilterSettingsActivity extends InjectingAppCompatActivity {
finish(); finish();
} }
}) })
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { .setNegativeButton(android.R.string.cancel, null)
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.show(); .show();
} }
@ -142,20 +138,14 @@ public class FilterSettingsActivity extends InjectingAppCompatActivity {
if (filter.listingTitle.equals(tagName)) { if (filter.listingTitle.equals(tagName)) {
finish(); finish();
} else { } else {
new AlertDialog.Builder(this, R.style.Tasks_Dialog) dialogBuilder.newMessageDialog(R.string.discard_changes)
.setMessage(R.string.discard_changes)
.setPositiveButton(R.string.discard, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.discard, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
finish(); finish();
} }
}) })
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { .setNegativeButton(android.R.string.cancel, null)
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.show(); .show();
} }
} }

@ -10,7 +10,6 @@ import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@ -29,6 +28,7 @@ import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.tags.TaskToTagMetadata;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.ActivityPreferences; import org.tasks.preferences.ActivityPreferences;
@ -51,6 +51,7 @@ public class TagSettingsActivity extends InjectingAppCompatActivity {
@Inject TagDataDao tagDataDao; @Inject TagDataDao tagDataDao;
@Inject ActivityPreferences preferences; @Inject ActivityPreferences preferences;
@Inject MetadataDao metadataDao; @Inject MetadataDao metadataDao;
@Inject DialogBuilder dialogBuilder;
@InjectView(R.id.tag_name) EditText tagName; @InjectView(R.id.tag_name) EditText tagName;
@InjectView(R.id.toolbar) Toolbar toolbar; @InjectView(R.id.toolbar) Toolbar toolbar;
@ -160,8 +161,7 @@ public class TagSettingsActivity extends InjectingAppCompatActivity {
} }
private void deleteTag() { private void deleteTag() {
new AlertDialog.Builder(this, R.style.Tasks_Dialog) dialogBuilder.newMessageDialog(R.string.delete_tag_confirmation, tagData.getName())
.setMessage(getString(R.string.delete_tag_confirmation, tagData.getName()))
.setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
@ -174,11 +174,7 @@ public class TagSettingsActivity extends InjectingAppCompatActivity {
finish(); finish();
} }
}) })
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { .setNegativeButton(android.R.string.cancel, null)
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.show(); .show();
} }
@ -188,20 +184,14 @@ public class TagSettingsActivity extends InjectingAppCompatActivity {
(!isNewTag && tagData.getName().equals(tagName))) { (!isNewTag && tagData.getName().equals(tagName))) {
finish(); finish();
} else { } else {
new AlertDialog.Builder(this, R.style.Tasks_Dialog) dialogBuilder.newMessageDialog(R.string.discard_changes)
.setMessage(R.string.discard_changes)
.setPositiveButton(R.string.discard, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.discard, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
finish(); finish();
} }
}) })
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { .setNegativeButton(android.R.string.cancel, null)
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.show(); .show();
} }
} }

@ -15,18 +15,17 @@ import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.ListView; import android.widget.ListView;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.FilterListItem;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.filters.FilterCounter; import org.tasks.filters.FilterCounter;
import org.tasks.filters.FilterProvider; import org.tasks.filters.FilterProvider;
import org.tasks.injection.ForApplication; import org.tasks.injection.ForApplication;
import org.tasks.injection.InjectingListActivity; import org.tasks.injection.InjectingListActivity;
import org.tasks.preferences.ActivityPreferences; import org.tasks.preferences.ActivityPreferences;
import org.tasks.ui.NavigationDrawerFragment;
import javax.inject.Inject; import javax.inject.Inject;
@ -36,6 +35,7 @@ public class FilterShortcutActivity extends InjectingListActivity {
@Inject ActivityPreferences preferences; @Inject ActivityPreferences preferences;
@Inject FilterProvider filterProvider; @Inject FilterProvider filterProvider;
@Inject @ForApplication Context context; @Inject @ForApplication Context context;
@Inject DialogBuilder dialogBuilder;
private FilterAdapter adapter = null; private FilterAdapter adapter = null;
@ -59,7 +59,9 @@ public class FilterShortcutActivity extends InjectingListActivity {
public void onClick(View v) { public void onClick(View v) {
Filter filter = (Filter) adapter.getSelection(); Filter filter = (Filter) adapter.getSelection();
if (filter == null) { 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; return;
} }
Intent shortcutIntent = ShortcutActivity.createIntent(context, filter); Intent shortcutIntent = ShortcutActivity.createIntent(context, filter);

@ -14,7 +14,6 @@ import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import android.support.v7.app.AlertDialog;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -77,9 +76,9 @@ import com.todoroo.astrid.utility.Flags;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.activities.DateAndTimePickerActivity;
import org.tasks.activities.LocationPickerActivity; import org.tasks.activities.LocationPickerActivity;
import org.tasks.activities.TimePickerActivity; import org.tasks.activities.TimePickerActivity;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingFragment; import org.tasks.injection.InjectingFragment;
import org.tasks.location.Geofence; import org.tasks.location.Geofence;
import org.tasks.location.GeofenceService; import org.tasks.location.GeofenceService;
@ -177,6 +176,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
@Inject GeofenceService geofenceService; @Inject GeofenceService geofenceService;
@Inject ResourceResolver resourceResolver; @Inject ResourceResolver resourceResolver;
@Inject DeviceInfo deviceInfo; @Inject DeviceInfo deviceInfo;
@Inject DialogBuilder dialogBuilder;
// --- UI components // --- UI components
@ -705,8 +705,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
} }
protected void deleteButtonClick() { protected void deleteButtonClick() {
new AlertDialog.Builder(getActivity()) dialogBuilder.newMessageDialog(R.string.DLG_delete_this_task_question)
.setMessage(R.string.DLG_delete_this_task_question)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { 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() { private void startAttachFile() {
@ -763,9 +763,10 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
}; };
// show a menu of available options // show a menu of available options
new AlertDialog.Builder(getActivity()) dialogBuilder.newDialog()
.setAdapter(adapter, listener) .setAdapter(adapter, listener)
.show().setOwnerActivity(getActivity()); .show()
.setOwnerActivity(getActivity());
} }
private void startRecordingAudio() { private void startRecordingAudio() {

@ -17,7 +17,6 @@ import android.database.sqlite.SQLiteException;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AlertDialog;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo; import android.view.ContextMenu.ContextMenuInfo;
@ -73,6 +72,7 @@ import com.todoroo.astrid.utility.Flags;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ForActivity; import org.tasks.injection.ForActivity;
import org.tasks.injection.InjectingListFragment; import org.tasks.injection.InjectingListFragment;
import org.tasks.injection.Injector; import org.tasks.injection.Injector;
@ -136,6 +136,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
@Inject TaskAttachmentDao taskAttachmentDao; @Inject TaskAttachmentDao taskAttachmentDao;
@Inject Injector injector; @Inject Injector injector;
@Inject GtasksPreferenceService gtasksPreferenceService; @Inject GtasksPreferenceService gtasksPreferenceService;
@Inject DialogBuilder dialogBuilder;
protected Resources resources; protected Resources resources;
protected TaskAdapter taskAdapter = null; protected TaskAdapter taskAdapter = null;
@ -762,8 +763,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
/** Show a dialog box and delete the task specified */ /** Show a dialog box and delete the task specified */
private void deleteTask(final Task task) { private void deleteTask(final Task task) {
new AlertDialog.Builder(getActivity()) dialogBuilder.newMessageDialog(R.string.delete_tag_confirmation, task.getTitle())
.setMessage(getString(R.string.delete_tag_confirmation, task.getTitle()))
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
@ -772,7 +772,8 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
loadTaskListContent(); loadTaskListContent();
} }
}) })
.setNegativeButton(android.R.string.cancel, null).show(); .setNegativeButton(android.R.string.cancel, null)
.show();
} }
public void onTaskCreated(Task task) { public void onTaskCreated(Task task) {

@ -12,7 +12,6 @@ import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Handler; import android.os.Handler;
import android.support.v7.app.AlertDialog;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.WindowManager.BadTokenException; import android.view.WindowManager.BadTokenException;
@ -35,6 +34,7 @@ import com.todoroo.astrid.tags.TaskToTagMetadata;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory; import org.xmlpull.v1.XmlPullParserFactory;
@ -51,6 +51,7 @@ public class TasksXmlImporter {
private final TagDataDao tagDataDao; private final TagDataDao tagDataDao;
private final MetadataDao metadataDao; private final MetadataDao metadataDao;
private final TaskService taskService; private final TaskService taskService;
private final DialogBuilder dialogBuilder;
private Context context; private Context context;
private Handler handler; private Handler handler;
@ -72,10 +73,12 @@ public class TasksXmlImporter {
} }
@Inject @Inject
public TasksXmlImporter(TagDataDao tagDataDao, MetadataDao metadataDao, TaskService taskService) { public TasksXmlImporter(TagDataDao tagDataDao, MetadataDao metadataDao, TaskService taskService,
DialogBuilder dialogBuilder) {
this.tagDataDao = tagDataDao; this.tagDataDao = tagDataDao;
this.metadataDao = metadataDao; this.metadataDao = metadataDao;
this.taskService = taskService; this.taskService = taskService;
this.dialogBuilder = dialogBuilder;
} }
/** /**
@ -160,18 +163,16 @@ public class TasksXmlImporter {
} }
private void showSummary() { private void showSummary() {
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(R.string.import_summary_title);
Resources r = context.getResources(); Resources r = context.getResources();
String message = context.getString(R.string.import_summary_message, dialogBuilder.newDialog()
input, .setTitle(R.string.import_summary_title)
r.getQuantityString(R.plurals.Ntasks, taskCount, taskCount), .setMessage(context.getString(R.string.import_summary_message,
r.getQuantityString(R.plurals.Ntasks, importCount, importCount), input,
r.getQuantityString(R.plurals.Ntasks, skipCount, skipCount), r.getQuantityString(R.plurals.Ntasks, taskCount, taskCount),
r.getQuantityString(R.plurals.Ntasks, errorCount, errorCount)); r.getQuantityString(R.plurals.Ntasks, importCount, importCount),
builder.setMessage(message); r.getQuantityString(R.plurals.Ntasks, skipCount, skipCount),
builder.setPositiveButton(context.getString(android.R.string.ok), r.getQuantityString(R.plurals.Ntasks, errorCount, errorCount)))
new DialogInterface.OnClickListener() { .setPositiveButton(context.getString(android.R.string.ok), new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int id) { public void onClick(DialogInterface dialog, int id) {
dialog.dismiss(); dialog.dismiss();
@ -179,9 +180,8 @@ public class TasksXmlImporter {
handler.post(runAfterImport); handler.post(runAfterImport);
} }
} }
}); })
.show();
builder.show();
} }
// --- importers // --- importers

@ -20,7 +20,6 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.StartupService; import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
@ -28,6 +27,7 @@ import com.todoroo.astrid.service.TaskService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingFragmentActivity; import org.tasks.injection.InjectingFragmentActivity;
import org.tasks.intents.TaskIntents; import org.tasks.intents.TaskIntents;
import org.tasks.preferences.ActivityPreferences; import org.tasks.preferences.ActivityPreferences;
@ -56,6 +56,7 @@ public class MissedCallActivity extends InjectingFragmentActivity {
@Inject TaskService taskService; @Inject TaskService taskService;
@Inject ActivityPreferences preferences; @Inject ActivityPreferences preferences;
@Inject ResourceResolver resourceResolver; @Inject ResourceResolver resourceResolver;
@Inject DialogBuilder dialogBuilder;
private final OnClickListener dismissListener = new OnClickListener() { private final OnClickListener dismissListener = new OnClickListener() {
@Override @Override
@ -72,23 +73,21 @@ public class MissedCallActivity extends InjectingFragmentActivity {
int ignorePresses = preferences.getInt(PREF_IGNORE_PRESSES, 0); int ignorePresses = preferences.getInt(PREF_IGNORE_PRESSES, 0);
ignorePresses++; ignorePresses++;
if (ignorePresses == IGNORE_PROMPT_COUNT) { if (ignorePresses == IGNORE_PROMPT_COUNT) {
DialogUtilities.okCancelCustomDialog(MissedCallActivity.this, dialogBuilder.newMessageDialog(R.string.MCA_ignore_body)
getString(R.string.MCA_ignore_body), .setPositiveButton(R.string.MCA_ignore_all, new DialogInterface.OnClickListener() {
R.string.MCA_ignore_all,
R.string.MCA_ignore_this,
new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
preferences.setBoolean(R.string.p_field_missed_calls, false); preferences.setBoolean(R.string.p_field_missed_calls, false);
dismissListener.onClick(v); dismissListener.onClick(v);
} }
}, })
new DialogInterface.OnClickListener() { .setNegativeButton(R.string.MCA_ignore_this, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
dismissListener.onClick(v); dismissListener.onClick(v);
} }
}); })
.show();
} else { } else {
dismissListener.onClick(v); dismissListener.onClick(v);
} }

@ -50,6 +50,7 @@ import com.todoroo.astrid.data.Task;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.ActivityPreferences; import org.tasks.preferences.ActivityPreferences;
@ -151,6 +152,7 @@ public class CustomFilterActivity extends InjectingAppCompatActivity {
@Inject Database database; @Inject Database database;
@Inject StoreObjectDao storeObjectDao; @Inject StoreObjectDao storeObjectDao;
@Inject ActivityPreferences preferences; @Inject ActivityPreferences preferences;
@Inject DialogBuilder dialogBuilder;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -173,7 +175,7 @@ public class CustomFilterActivity extends InjectingAppCompatActivity {
filterName = (TextView)findViewById(R.id.filterName); filterName = (TextView)findViewById(R.id.filterName);
List<CriterionInstance> startingCriteria = new ArrayList<>(); List<CriterionInstance> startingCriteria = new ArrayList<>();
startingCriteria.add(getStartingUniverse()); startingCriteria.add(getStartingUniverse());
adapter = new CustomFilterAdapter(this, startingCriteria); adapter = new CustomFilterAdapter(this, dialogBuilder, startingCriteria);
listView.setAdapter(adapter); listView.setAdapter(adapter);
updateList(); updateList();

@ -25,6 +25,7 @@ import com.todoroo.astrid.api.TextInputCriterion;
import com.todoroo.astrid.core.CustomFilterActivity.CriterionInstance; import com.todoroo.astrid.core.CustomFilterActivity.CriterionInstance;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import java.util.List; import java.util.List;
@ -37,11 +38,13 @@ import java.util.List;
public class CustomFilterAdapter extends ArrayAdapter<CriterionInstance> { public class CustomFilterAdapter extends ArrayAdapter<CriterionInstance> {
private final CustomFilterActivity activity; private final CustomFilterActivity activity;
private DialogBuilder dialogBuilder;
private final LayoutInflater inflater; private final LayoutInflater inflater;
public CustomFilterAdapter(CustomFilterActivity activity, List<CriterionInstance> objects) { public CustomFilterAdapter(CustomFilterActivity activity, DialogBuilder dialogBuilder, List<CriterionInstance> objects) {
super(activity, R.id.name, objects); super(activity, R.id.name, objects);
this.activity = activity; this.activity = activity;
this.dialogBuilder = dialogBuilder;
inflater = (LayoutInflater) activity.getSystemService( inflater = (LayoutInflater) activity.getSystemService(
Context.LAYOUT_INFLATER_SERVICE); Context.LAYOUT_INFLATER_SERVICE);
} }
@ -107,8 +110,8 @@ public class CustomFilterAdapter extends ArrayAdapter<CriterionInstance> {
* Show options menu for the given criterioninstance * Show options menu for the given criterioninstance
*/ */
public void showOptionsFor(final CriterionInstance item, final Runnable onComplete) { public void showOptionsFor(final CriterionInstance item, final Runnable onComplete) {
AlertDialog.Builder dialog = new AlertDialog.Builder(activity). AlertDialog.Builder dialog = dialogBuilder.newDialog()
setTitle(item.criterion.name); .setTitle(item.criterion.name);
if(item.criterion instanceof MultipleSelectCriterion) { if(item.criterion instanceof MultipleSelectCriterion) {
MultipleSelectCriterion multiSelectCriterion = (MultipleSelectCriterion) item.criterion; MultipleSelectCriterion multiSelectCriterion = (MultipleSelectCriterion) item.criterion;

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.files; package com.todoroo.astrid.files;
import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener; import android.content.DialogInterface.OnCancelListener;
@ -19,53 +18,57 @@ import android.view.ViewGroup;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.ListAdapter; import android.widget.ListAdapter;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.todoroo.andlib.utility.DialogUtilities;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.R; 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.File;
import java.io.FilenameFilter; import java.io.FilenameFilter;
import java.util.ArrayList; import java.util.ArrayList;
import javax.inject.Inject;
/** /**
* Based on the Android-File-Explore project by Manish Burman * Based on the Android-File-Explore project by Manish Burman
* https://github.com/mburman/Android-File-Explore * 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); private static final Logger log = LoggerFactory.getLogger(FileExplore.class);
// Stores names of traversed directories private static final int DIALOG_LOAD_FILE = 1000;
ArrayList<String> str = new ArrayList<>();
// Check if the first level of the directory structure is the one showing
private Boolean firstLvl = true;
public static final String RESULT_FILE_SELECTED = "fileSelected"; //$NON-NLS-1$ 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 RESULT_DIR_SELECTED = "dirSelected"; //$NON-NLS-1$
public static final String EXTRA_DIRECTORIES_SELECTABLE = "directoriesSelectable"; //$NON-NLS-1$ public static final String EXTRA_DIRECTORIES_SELECTABLE = "directoriesSelectable"; //$NON-NLS-1$
ArrayList<String> 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 Item[] fileList;
private File path; private File path;
private String chosenFile; private String chosenFile;
private static final int DIALOG_LOAD_FILE = 1000;
private String upString; private String upString;
private boolean directoryMode; private boolean directoryMode;
private ListAdapter adapter; private ListAdapter adapter;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
activityPreferences.applyDialogTheme();
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
path = new File(Environment.getExternalStorageDirectory().toString()); path = new File(Environment.getExternalStorageDirectory().toString());
} else { } else {
@ -86,12 +89,7 @@ public class FileExplore extends Activity {
path.mkdirs(); path.mkdirs();
} catch (SecurityException e) { } catch (SecurityException e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
DialogUtilities.okDialog(this, getString(R.string.file_browser_err_permissions), new DialogInterface.OnClickListener() { Toast.makeText(this, R.string.file_browser_err_permissions, Toast.LENGTH_LONG).show();
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
} }
// Checks whether path exists // Checks whether path exists
@ -110,21 +108,21 @@ public class FileExplore extends Activity {
String[] fList = path.list(filter); String[] fList = path.list(filter);
fileList = new Item[fList.length]; fileList = new Item[fList.length];
for (int i = 0; i < fList.length; i++) { 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 // Convert into file path
File sel = new File(path, fList[i]); File sel = new File(path, fList[i]);
// Set drawables // Set drawables
if (sel.isDirectory()) { if (sel.isDirectory()) {
fileList[i].icon = R.drawable.ic_folder_black_24dp; fileList[i].icon = resourceResolver.getResource(R.attr.ic_folder);
} }
} }
if (!firstLvl) { if (!firstLvl) {
Item temp[] = new Item[fileList.length + 1]; Item temp[] = new Item[fileList.length + 1];
System.arraycopy(fileList, 0, temp, 1, fileList.length); 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; fileList = temp;
} }
} else { } else {
@ -180,7 +178,7 @@ public class FileExplore extends Activity {
@Override @Override
protected Dialog onCreateDialog(int id) { protected Dialog onCreateDialog(int id) {
Dialog dialog; Dialog dialog;
AlertDialog.Builder builder = new AlertDialog.Builder(this); AlertDialog.Builder builder = dialogBuilder.newDialog();
if (fileList == null) { if (fileList == null) {
dialog = builder.create(); dialog = builder.create();

@ -24,7 +24,6 @@ import android.widget.Toast;
import com.todoroo.andlib.data.Callback; import com.todoroo.andlib.data.Callback;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.dao.TaskAttachmentDao; import com.todoroo.astrid.dao.TaskAttachmentDao;
import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.SyncFlags;
@ -35,6 +34,7 @@ import com.todoroo.astrid.ui.PopupControlSet;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.preferences.ActivityPreferences; import org.tasks.preferences.ActivityPreferences;
import java.io.File; import java.io.File;
@ -48,10 +48,13 @@ public class FilesControlSet extends PopupControlSet {
private final LinearLayout fileDisplayList; private final LinearLayout fileDisplayList;
private final LayoutInflater inflater; private final LayoutInflater inflater;
private final TaskAttachmentDao taskAttachmentDao; 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); super(preferences, activity, R.layout.control_set_files_dialog, R.layout.control_set_files, R.string.TEA_control_files);
this.taskAttachmentDao = taskAttachmentDao; this.taskAttachmentDao = taskAttachmentDao;
this.dialogBuilder = new DialogBuilder(activity, preferences);
fileDisplayList = (LinearLayout) getView().findViewById(R.id.files_list); fileDisplayList = (LinearLayout) getView().findViewById(R.id.files_list);
inflater = (LayoutInflater) activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); inflater = (LayoutInflater) activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
} }
@ -145,27 +148,29 @@ public class FilesControlSet extends PopupControlSet {
clearFile.setOnClickListener(new OnClickListener() { clearFile.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
DialogUtilities.okCancelDialog(activity, activity.getString(R.string.premium_remove_file_confirm), dialogBuilder.newMessageDialog(R.string.premium_remove_file_confirm)
new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface d, int which) { public void onClick(DialogInterface dialog, int which) {
if (RemoteModel.isValidUuid(m.getUUID())) { if (RemoteModel.isValidUuid(m.getUUID())) {
// TODO: delete // TODO: delete
m.setDeletedAt(DateUtilities.now()); m.setDeletedAt(DateUtilities.now());
taskAttachmentDao.saveExisting(m); taskAttachmentDao.saveExisting(m);
} else { } else {
taskAttachmentDao.delete(m.getId()); taskAttachmentDao.delete(m.getId());
} }
if (m.containsNonNullValue(TaskAttachment.FILE_PATH)) { if (m.containsNonNullValue(TaskAttachment.FILE_PATH)) {
File f = new File(m.getFilePath()); File f = new File(m.getFilePath());
f.delete(); f.delete();
} }
files.remove(m); files.remove(m);
refreshDisplayView(); refreshDisplayView();
finalList.removeView(fileRow); finalList.removeView(fileRow);
} }
}, null); })
.setNegativeButton(android.R.string.cancel, null)
.show();
} }
}); });
} }

@ -13,7 +13,8 @@ import android.widget.TextView;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.preferences.BasicPreferences; import org.tasks.preferences.BasicPreferences;
import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment;
@ -52,6 +53,7 @@ public class CalendarReminderActivity extends InjectingActivity {
@Inject TagDataDao tagDataDao; @Inject TagDataDao tagDataDao;
@Inject ActivityPreferences preferences; @Inject ActivityPreferences preferences;
@Inject ResourceResolver resourceResolver; @Inject ResourceResolver resourceResolver;
@Inject DialogBuilder dialogBuilder;
private String eventName; private String eventName;
private long startTime; private long startTime;
@ -81,23 +83,21 @@ public class CalendarReminderActivity extends InjectingActivity {
int ignorePresses = preferences.getInt(PREF_IGNORE_PRESSES, 0); int ignorePresses = preferences.getInt(PREF_IGNORE_PRESSES, 0);
ignorePresses++; ignorePresses++;
if (ignorePresses == IGNORE_PROMPT_COUNT) { if (ignorePresses == IGNORE_PROMPT_COUNT) {
DialogUtilities.okCancelCustomDialog(CalendarReminderActivity.this, dialogBuilder.newMessageDialog(R.string.CRA_ignore_body)
getString(R.string.CRA_ignore_body), .setPositiveButton(R.string.CRA_ignore_all, new DialogInterface.OnClickListener() {
R.string.CRA_ignore_all,
R.string.CRA_ignore_this,
new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
preferences.setBoolean(R.string.p_calendar_reminders, false); preferences.setBoolean(R.string.p_calendar_reminders, false);
dismissListener.onClick(v); dismissListener.onClick(v);
} }
}, })
new DialogInterface.OnClickListener() { .setNegativeButton(R.string.CRA_ignore_this, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
dismissListener.onClick(v); dismissListener.onClick(v);
} }
}); })
.show();
} else { } else {
dismissListener.onClick(v); dismissListener.onClick(v);
} }
@ -189,30 +189,28 @@ public class CalendarReminderActivity extends InjectingActivity {
} }
private void listExists(final TagData tag) { private void listExists(final TagData tag) {
DialogUtilities.okCancelCustomDialog(this, dialogBuilder.newMessageDialog(R.string.CRA_list_exists_body, tag.getName())
getString(R.string.CRA_list_exists_body, tag.getName()), .setPositiveButton(R.string.CRA_create_new, new DialogInterface.OnClickListener() {
R.string.CRA_create_new, @Override
R.string.CRA_use_existing, public void onClick(DialogInterface dialog, int which) {
new DialogInterface.OnClickListener() { createNewList(tag.getName() + " "
@Override + DateUtilities.getDateStringHideYear(newDate(startTime)));
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) {
new DialogInterface.OnClickListener() { FilterWithCustomIntent filter = TagFilterExposer.filterFromTagData(CalendarReminderActivity.this, tag);
@Override
public void onClick(DialogInterface dialog, int which) { Intent listIntent = new Intent(CalendarReminderActivity.this, TaskListActivity.class);
FilterWithCustomIntent filter = TagFilterExposer.filterFromTagData(CalendarReminderActivity.this, tag); listIntent.putExtra(TaskListFragment.TOKEN_FILTER, filter);
listIntent.putExtras(filter.customExtras);
Intent listIntent = new Intent(CalendarReminderActivity.this, TaskListActivity.class);
listIntent.putExtra(TaskListFragment.TOKEN_FILTER, filter); startActivity(listIntent);
listIntent.putExtras(filter.customExtras); dismissButton.performClick();
}
startActivity(listIntent); })
dismissButton.performClick(); .show();
}
});
} }
private void createNewList(String name) { private void createNewList(String name) {

@ -50,6 +50,8 @@ import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.timers.TimerActionControlSet.TimerActionListener; import com.todoroo.astrid.timers.TimerActionControlSet.TimerActionListener;
import org.json.JSONObject; import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
@ -65,6 +67,8 @@ import static org.tasks.files.ImageHelper.sampleBitmap;
public class EditNoteActivity extends LinearLayout implements TimerActionListener { public class EditNoteActivity extends LinearLayout implements TimerActionListener {
private static final Logger log = LoggerFactory.getLogger(EditNoteActivity.class);
private Task task; private Task task;
private ActFmCameraModule actFmCameraModule; private ActFmCameraModule actFmCameraModule;
@ -132,7 +136,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
try { try {
fetchTask(t); fetchTask(t);
} catch (SQLiteException e) { } catch (SQLiteException e) {
StartupService.handleSQLiteError(fragment.getActivity(), e); log.error(e.getMessage(), e);
} }
if(task == null) { if(task == null) {
return; return;

@ -16,7 +16,6 @@ import android.preference.PreferenceManager;
import com.todoroo.andlib.data.DatabaseDao.ModelUpdateListener; import com.todoroo.andlib.data.DatabaseDao.ModelUpdateListener;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.backup.TasksXmlImporter; import com.todoroo.astrid.backup.TasksXmlImporter;
import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.DatabaseUpdateListener; import com.todoroo.astrid.dao.DatabaseUpdateListener;
@ -37,6 +36,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.Broadcaster; import org.tasks.Broadcaster;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import java.io.File; import java.io.File;
@ -68,6 +68,7 @@ public class StartupService {
private final CalendarAlarmScheduler calendarAlarmScheduler; private final CalendarAlarmScheduler calendarAlarmScheduler;
private final TaskDeleter taskDeleter; private final TaskDeleter taskDeleter;
private Broadcaster broadcaster; private Broadcaster broadcaster;
private DialogBuilder dialogBuilder;
@Inject @Inject
public StartupService(UpgradeService upgradeService, TagDataDao tagDataDao, Database database, public StartupService(UpgradeService upgradeService, TagDataDao tagDataDao, Database database,
@ -75,7 +76,7 @@ public class StartupService {
GtasksSyncService gtasksSyncService, MetadataDao metadataDao, GtasksSyncService gtasksSyncService, MetadataDao metadataDao,
Preferences preferences, TasksXmlImporter xmlImporter, Preferences preferences, TasksXmlImporter xmlImporter,
CalendarAlarmScheduler calendarAlarmScheduler, TaskDeleter taskDeleter, CalendarAlarmScheduler calendarAlarmScheduler, TaskDeleter taskDeleter,
Broadcaster broadcaster) { Broadcaster broadcaster, DialogBuilder dialogBuilder) {
this.upgradeService = upgradeService; this.upgradeService = upgradeService;
this.tagDataDao = tagDataDao; this.tagDataDao = tagDataDao;
this.database = database; this.database = database;
@ -87,6 +88,7 @@ public class StartupService {
this.calendarAlarmScheduler = calendarAlarmScheduler; this.calendarAlarmScheduler = calendarAlarmScheduler;
this.taskDeleter = taskDeleter; this.taskDeleter = taskDeleter;
this.broadcaster = broadcaster; this.broadcaster = broadcaster;
this.dialogBuilder = dialogBuilder;
} }
/** /**
@ -111,7 +113,10 @@ public class StartupService {
try { try {
database.openForWriting(); database.openForWriting();
} catch (SQLiteException e) { } 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; 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 * If database exists, no tasks but metadata, and a backup file exists, restore it
*/ */

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.ui; package com.todoroo.astrid.ui;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
@ -16,6 +15,7 @@ import com.todoroo.astrid.service.TaskService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.Injector; import org.tasks.injection.Injector;
import javax.inject.Inject; import javax.inject.Inject;
@ -32,6 +32,7 @@ public class QuickAddBar {
@Inject TaskService taskService; @Inject TaskService taskService;
@Inject TaskCreator taskCreator; @Inject TaskCreator taskCreator;
@Inject DialogBuilder dialogBuilder;
private TaskListActivity activity; private TaskListActivity activity;
private TaskListFragment fragment; private TaskListFragment fragment;
@ -55,7 +56,9 @@ public class QuickAddBar {
TagData tagData = fragment.getActiveTagData(); TagData tagData = fragment.getActiveTagData();
if(tagData != null && (!tagData.containsNonNullValue(TagData.NAME) || if(tagData != null && (!tagData.containsNonNullValue(TagData.NAME) ||
tagData.getName().length() == 0)) { 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; return null;
} }

@ -7,6 +7,7 @@ import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.Database;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingActivity; import org.tasks.injection.InjectingActivity;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
@ -16,29 +17,27 @@ public class ClearAllDataActivity extends InjectingActivity {
@Inject Database database; @Inject Database database;
@Inject Preferences preferences; @Inject Preferences preferences;
@Inject DialogBuilder dialogBuilder;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
DialogUtilities.okCancelDialog( dialogBuilder.newMessageDialog(R.string.EPr_manage_clear_all_message)
this, .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
getResources().getString(R.string.EPr_manage_clear_all_message),
new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
deleteDatabase(database.getName()); deleteDatabase(database.getName());
preferences.reset(); preferences.reset();
System.exit(0); System.exit(0);
} }
}, })
new DialogInterface.OnClickListener() { .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
finish(); finish();
} }
}); })
.show();
} }
} }

@ -7,6 +7,7 @@ import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.gtasks.sync.GtasksSyncV2Provider; import com.todoroo.astrid.gtasks.sync.GtasksSyncV2Provider;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingActivity; import org.tasks.injection.InjectingActivity;
import javax.inject.Inject; import javax.inject.Inject;
@ -14,25 +15,27 @@ import javax.inject.Inject;
public class ClearGtaskDataActivity extends InjectingActivity { public class ClearGtaskDataActivity extends InjectingActivity {
@Inject GtasksSyncV2Provider gtasksSyncV2Provider; @Inject GtasksSyncV2Provider gtasksSyncV2Provider;
@Inject DialogBuilder dialogBuilder;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
DialogUtilities.okCancelDialog(ClearGtaskDataActivity.this, dialogBuilder.newMessageDialog(R.string.sync_forget_confirm)
getString(R.string.sync_forget_confirm), new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
gtasksSyncV2Provider.signOut(); gtasksSyncV2Provider.signOut();
setResult(RESULT_OK); setResult(RESULT_OK);
finish(); finish();
} }
}, new DialogInterface.OnClickListener() { })
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
finish(); finish();
} }
} })
); .show();
} }
} }

@ -1,18 +1,18 @@
package org.tasks.activities; package org.tasks.activities;
import android.app.ProgressDialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingActivity; import org.tasks.injection.InjectingActivity;
import org.tasks.ui.ProgressDialogAsyncTask;
import javax.inject.Inject; import javax.inject.Inject;
@ -20,22 +20,19 @@ public class DeleteAllCalendarEventsActivity extends InjectingActivity {
@Inject TaskService taskService; @Inject TaskService taskService;
@Inject GCalHelper gcalHelper; @Inject GCalHelper gcalHelper;
@Inject DialogBuilder dialogBuilder;
private ProgressDialog pd;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
DialogUtilities.okCancelDialog(
this, dialogBuilder.newMessageDialog(R.string.EPr_manage_delete_all_gcal_message)
getResources().getString( .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
R.string.EPr_manage_delete_all_gcal_message),
new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
pd = DialogUtilities.runWithProgressDialog(DeleteAllCalendarEventsActivity.this, new Runnable() { new ProgressDialogAsyncTask(DeleteAllCalendarEventsActivity.this, dialogBuilder) {
@Override @Override
public void run() { protected Integer doInBackground(Void... params) {
int deletedEventCount = 0; int deletedEventCount = 0;
TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.CALENDAR_URI).where( TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.CALENDAR_URI).where(
Task.CALENDAR_URI.isNotNull())); Task.CALENDAR_URI.isNotNull()));
@ -55,34 +52,23 @@ public class DeleteAllCalendarEventsActivity extends InjectingActivity {
// since the GCalHelper doesnt save it due to performance-reasons // since the GCalHelper doesnt save it due to performance-reasons
Task template = new Task(); Task template = new Task();
template.setCalendarUri(""); //$NON-NLS-1$ template.setCalendarUri(""); //$NON-NLS-1$
taskService.update( taskService.update(Task.CALENDAR_URI.isNotNull(), template);
Task.CALENDAR_URI.isNotNull(), return deletedEventCount;
template); }
showResult(R.string.EPr_manage_delete_all_gcal_status, 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 @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
finish(); finish();
} }
}); })
} .show();
@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();
}
});
} }
} }

@ -1,6 +1,5 @@
package org.tasks.activities; package org.tasks.activities;
import android.app.ProgressDialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; 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.Criterion;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingActivity; import org.tasks.injection.InjectingActivity;
import org.tasks.ui.ProgressDialogAsyncTask;
import javax.inject.Inject; import javax.inject.Inject;
@ -22,23 +22,19 @@ public class DeleteCompletedActivity extends InjectingActivity {
@Inject TaskService taskService; @Inject TaskService taskService;
@Inject GCalHelper gcalHelper; @Inject GCalHelper gcalHelper;
@Inject DialogBuilder dialogBuilder;
private ProgressDialog pd;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
DialogUtilities.okCancelDialog( dialogBuilder.newMessageDialog(R.string.EPr_manage_delete_completed_message)
this, .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
getResources().getString(
R.string.EPr_manage_delete_completed_message),
new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
pd = DialogUtilities.runWithProgressDialog(DeleteCompletedActivity.this, new Runnable() { new ProgressDialogAsyncTask(DeleteCompletedActivity.this, dialogBuilder) {
@Override @Override
public void run() { protected Integer doInBackground(Void... params) {
TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.CALENDAR_URI).where( TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.CALENDAR_URI).where(
Criterion.and(Task.COMPLETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull()))); Criterion.and(Task.COMPLETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull())));
try { try {
@ -52,38 +48,23 @@ public class DeleteCompletedActivity extends InjectingActivity {
cursor.close(); cursor.close();
} }
Task template = new Task(); Task template = new Task();
template.setDeletionDate( template.setDeletionDate(DateUtilities.now());
DateUtilities.now()); return taskService.update(Task.COMPLETION_DATE.gt(0), template);
int result = taskService.update( }
Task.COMPLETION_DATE.gt(0), template);
showResult( @Override
R.string.EPr_manage_delete_completed_status, protected int getResultResource() {
result); return R.string.EPr_manage_delete_completed_status;
} }
}); }.execute();
} }
}, new DialogInterface.OnClickListener() { })
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
finish(); finish();
} }
}); })
.show();
}
@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();
}
});
} }
} }

@ -1,19 +1,19 @@
package org.tasks.activities; package org.tasks.activities;
import android.app.ProgressDialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingActivity; import org.tasks.injection.InjectingActivity;
import org.tasks.ui.ProgressDialogAsyncTask;
import javax.inject.Inject; import javax.inject.Inject;
@ -21,23 +21,20 @@ public class DeleteCompletedEventsActivity extends InjectingActivity {
@Inject TaskService taskService; @Inject TaskService taskService;
@Inject GCalHelper gcalHelper; @Inject GCalHelper gcalHelper;
@Inject DialogBuilder dialogBuilder;
private ProgressDialog pd;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
DialogUtilities.okCancelDialog( dialogBuilder.newMessageDialog(R.string.EPr_manage_delete_completed_gcal_message)
this, .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
getResources().getString(
R.string.EPr_manage_delete_completed_gcal_message),
new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
pd = DialogUtilities.runWithProgressDialog(DeleteCompletedEventsActivity.this, new Runnable() { new ProgressDialogAsyncTask(DeleteCompletedEventsActivity.this, dialogBuilder) {
@Override @Override
public void run() { protected Integer doInBackground(Void... params) {
int deletedEventCount = 0; int deletedEventCount = 0;
TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.CALENDAR_URI).where( TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.CALENDAR_URI).where(
Criterion.and(Task.COMPLETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull()))); Criterion.and(Task.COMPLETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull())));
@ -60,31 +57,22 @@ public class DeleteCompletedEventsActivity extends InjectingActivity {
taskService.update( taskService.update(
Criterion.and(Task.COMPLETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull()), Criterion.and(Task.COMPLETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull()),
template); 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 @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
finish(); finish();
} }
}); })
} .show();
@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();
}
});
} }
} }

@ -3,16 +3,16 @@ package org.tasks.activities;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import org.tasks.R; import org.tasks.dialogs.DialogBuilder;
import org.tasks.filters.FilterCounter; import org.tasks.filters.FilterCounter;
import org.tasks.filters.FilterProvider; import org.tasks.filters.FilterProvider;
import org.tasks.injection.InjectingFragmentActivity; import org.tasks.injection.InjectingFragmentActivity;
import org.tasks.preferences.ActivityPreferences;
import javax.inject.Inject; import javax.inject.Inject;
@ -24,15 +24,19 @@ public class FilterSelectionActivity extends InjectingFragmentActivity {
@Inject FilterProvider filterProvider; @Inject FilterProvider filterProvider;
@Inject FilterCounter filterCounter; @Inject FilterCounter filterCounter;
@Inject DialogBuilder dialogBuilder;
@Inject ActivityPreferences activityPreferences;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
activityPreferences.applyDialogTheme();
final FilterAdapter filterAdapter = new FilterAdapter(filterProvider, filterCounter, this, null, false); final FilterAdapter filterAdapter = new FilterAdapter(filterProvider, filterCounter, this, null, false);
filterAdapter.populateList(); filterAdapter.populateList();
new AlertDialog.Builder(this, R.style.Tasks_Dialog) dialogBuilder.newDialog()
.setSingleChoiceItems(filterAdapter, -1, new DialogInterface.OnClickListener() { .setSingleChoiceItems(filterAdapter, -1, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {

@ -1,13 +1,11 @@
package org.tasks.activities; package org.tasks.activities;
import android.app.ProgressDialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.gcal.GCalHelper;
@ -15,7 +13,9 @@ import com.todoroo.astrid.service.TaskDeleter;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingActivity; import org.tasks.injection.InjectingActivity;
import org.tasks.ui.ProgressDialogAsyncTask;
import javax.inject.Inject; import javax.inject.Inject;
@ -25,23 +25,19 @@ public class PurgeDeletedActivity extends InjectingActivity {
@Inject TaskDeleter taskDeleter; @Inject TaskDeleter taskDeleter;
@Inject GCalHelper gcalHelper; @Inject GCalHelper gcalHelper;
@Inject MetadataDao metadataDao; @Inject MetadataDao metadataDao;
@Inject DialogBuilder dialogBuilder;
private ProgressDialog pd;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
DialogUtilities.okCancelDialog( dialogBuilder.newMessageDialog(R.string.EPr_manage_purge_deleted_message)
this, .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
getResources().getString(
R.string.EPr_manage_purge_deleted_message),
new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
pd = DialogUtilities.runWithProgressDialog(PurgeDeletedActivity.this, new Runnable() { new ProgressDialogAsyncTask(PurgeDeletedActivity.this, dialogBuilder) {
@Override @Override
public void run() { protected Integer doInBackground(Void... params) {
TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.TITLE, Task.CALENDAR_URI).where( TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.TITLE, Task.CALENDAR_URI).where(
Criterion.and(Task.DELETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull()))); Criterion.and(Task.DELETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull())));
try { try {
@ -56,32 +52,22 @@ public class PurgeDeletedActivity extends InjectingActivity {
} }
int result = taskDeleter.purgeDeletedTasks(); int result = taskDeleter.purgeDeletedTasks();
metadataDao.removeDanglingMetadata(); 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 @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
finish(); finish();
} }
}); })
.show();
}
@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();
}
});
} }
} }

@ -13,6 +13,7 @@ import com.todoroo.astrid.core.SortHelper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingFragmentActivity; import org.tasks.injection.InjectingFragmentActivity;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
@ -28,6 +29,7 @@ public class SortActivity extends InjectingFragmentActivity {
public static final String EXTRA_TOGGLE_MANUAL = "extra_toggle_manual"; public static final String EXTRA_TOGGLE_MANUAL = "extra_toggle_manual";
@Inject Preferences preferences; @Inject Preferences preferences;
@Inject DialogBuilder dialogBuilder;
private boolean manualEnabled; private boolean manualEnabled;
private AlertDialog alertDialog; private AlertDialog alertDialog;
@ -60,7 +62,7 @@ public class SortActivity extends InjectingFragmentActivity {
selectedIndex -= 1; selectedIndex -= 1;
} }
alertDialog = new AlertDialog.Builder(this, R.style.Tasks_Dialog) alertDialog = dialogBuilder.newDialog()
.setSingleChoiceItems(adapter, selectedIndex, new DialogInterface.OnClickListener() { .setSingleChoiceItems(adapter, selectedIndex, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {

@ -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;
}
}

@ -14,6 +14,7 @@ import com.todoroo.astrid.core.CustomFilterActivity;
import com.todoroo.astrid.core.DefaultsPreferences; import com.todoroo.astrid.core.DefaultsPreferences;
import com.todoroo.astrid.core.OldTaskPreferences; import com.todoroo.astrid.core.OldTaskPreferences;
import com.todoroo.astrid.files.AACRecordingActivity; import com.todoroo.astrid.files.AACRecordingActivity;
import com.todoroo.astrid.files.FileExplore;
import com.todoroo.astrid.gcal.CalendarAlarmListCreator; import com.todoroo.astrid.gcal.CalendarAlarmListCreator;
import com.todoroo.astrid.gcal.CalendarReminderActivity; import com.todoroo.astrid.gcal.CalendarReminderActivity;
import com.todoroo.astrid.gtasks.GtasksPreferences; import com.todoroo.astrid.gtasks.GtasksPreferences;
@ -26,6 +27,7 @@ import org.tasks.activities.ClearGtaskDataActivity;
import org.tasks.activities.DeleteAllCalendarEventsActivity; import org.tasks.activities.DeleteAllCalendarEventsActivity;
import org.tasks.activities.DeleteCompletedActivity; import org.tasks.activities.DeleteCompletedActivity;
import org.tasks.activities.DeleteCompletedEventsActivity; import org.tasks.activities.DeleteCompletedEventsActivity;
import org.tasks.activities.DonationActivity;
import org.tasks.activities.ExportTaskActivity; import org.tasks.activities.ExportTaskActivity;
import org.tasks.activities.FilterSelectionActivity; import org.tasks.activities.FilterSelectionActivity;
import org.tasks.activities.ImportTaskActivity; import org.tasks.activities.ImportTaskActivity;
@ -86,7 +88,9 @@ import dagger.Provides;
HelpAndFeedbackActivity.class, HelpAndFeedbackActivity.class,
DateShortcutPreferences.class, DateShortcutPreferences.class,
SortActivity.class, SortActivity.class,
FilterSelectionActivity.class FilterSelectionActivity.class,
FileExplore.class,
DonationActivity.class
}) })
public class ActivityModule { public class ActivityModule {

@ -1,5 +1,6 @@
package org.tasks.injection; package org.tasks.injection;
import android.app.Activity;
import android.support.v4.app.DialogFragment; import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentActivity;
@ -28,4 +29,9 @@ public class DialogFragmentModule {
public FragmentActivity getFragmentActivity() { public FragmentActivity getFragmentActivity() {
return dialogFragment.getActivity(); return dialogFragment.getActivity();
} }
@Provides
public Activity getActivity() {
return dialogFragment.getActivity();
}
} }

@ -42,6 +42,10 @@ public class ActivityPreferences extends Preferences {
applyTheme(isDarkTheme() ? R.style.TasksDark : R.style.Tasks); applyTheme(isDarkTheme() ? R.style.TasksDark : R.style.Tasks);
} }
public void applyDialogTheme() {
applyTheme(isDarkTheme() ? R.style.TasksDialogDark : R.style.TasksDialog);
}
public void applyStatusBarColor() { public void applyStatusBarColor() {
applyStatusBarColor(isDarkTheme() ? android.R.color.black : R.color.primary_dark); 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); 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() { public int getEditDialogTheme() {
return isDarkTheme() ? R.style.TEA_Dialog_Dark : R.style.TEA_Dialog; return isDarkTheme() ? R.style.TEA_Dialog_Dark : R.style.TEA_Dialog;
} }

@ -5,15 +5,16 @@ import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
import android.widget.ArrayAdapter;
import org.tasks.Broadcaster; import org.tasks.Broadcaster;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingDialogFragment; import org.tasks.injection.InjectingDialogFragment;
import org.tasks.intents.TaskIntents; import org.tasks.intents.TaskIntents;
import org.tasks.notifications.NotificationManager; import org.tasks.notifications.NotificationManager;
import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import static java.util.Arrays.asList; import static java.util.Arrays.asList;
@ -22,6 +23,7 @@ public class NotificationDialog extends InjectingDialogFragment {
@Inject NotificationManager notificationManager; @Inject NotificationManager notificationManager;
@Inject Broadcaster broadcaster; @Inject Broadcaster broadcaster;
@Inject DialogBuilder dialogBuilder;
private long taskId; private long taskId;
private String title; private String title;
@ -30,14 +32,14 @@ public class NotificationDialog extends InjectingDialogFragment {
@NonNull @NonNull
@Override @Override
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, asList( List<String> items = asList(
getString(R.string.TAd_actionEditTask), getString(R.string.TAd_actionEditTask),
getString(R.string.rmd_NoA_snooze), getString(R.string.rmd_NoA_snooze),
getString(R.string.rmd_NoA_done) getString(R.string.rmd_NoA_done));
));
return new AlertDialog.Builder(getActivity(), R.style.Tasks_Dialog) return dialogBuilder.newDialog()
.setTitle(title) .setTitle(title)
.setAdapter(adapter, new DialogInterface.OnClickListener() { .setItems(items.toArray(new String[items.size()]), new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
switch (which) { switch (which) {

@ -5,13 +5,12 @@ import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
import android.widget.ArrayAdapter;
import com.todoroo.astrid.reminders.SnoozeCallback; import com.todoroo.astrid.reminders.SnoozeCallback;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ForApplication; import org.tasks.injection.ForApplication;
import org.tasks.injection.InjectingDialogFragment; import org.tasks.injection.InjectingDialogFragment;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
@ -28,26 +27,26 @@ public class SnoozeDialog extends InjectingDialogFragment {
@Inject Preferences preferences; @Inject Preferences preferences;
@Inject @ForApplication Context context; @Inject @ForApplication Context context;
@Inject DialogBuilder dialogBuilder;
private DateTime now = new DateTime(); private DateTime now = new DateTime();
private SnoozeCallback snoozeCallback; private SnoozeCallback snoozeCallback;
private DialogInterface.OnCancelListener onCancelListener; private DialogInterface.OnCancelListener onCancelListener;
private List<Long> snoozeTimes = new ArrayList<>(); private List<Long> snoozeTimes = new ArrayList<>();
private ArrayAdapter<String> adapter; private List<String> items = new ArrayList<>();
private DateTime getDateTimeShortcut(int resId, long def) { private DateTime getDateTimeShortcut(int resId, long def) {
return now.withMillisOfDay(preferences.getInt(getString(resId), (int) def)); return now.withMillisOfDay(preferences.getInt(getString(resId), (int) def));
} }
private void add(int resId, DateTime dateTime) { 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()); snoozeTimes.add(dateTime.getMillis());
} }
@NonNull @NonNull
@Override @Override
public Dialog onCreateDialog(Bundle savedInstanceState) { 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 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 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)); 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 tomorrowMorning = morning.plusDays(1);
DateTime tomorrowAfternoon = afternoon.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); snoozeTimes.add(0L);
DateTime hourCutoff = new DateTime().plusMinutes(75); 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_morning, tomorrowMorning);
add(R.string.date_shortcut_tomorrow_afternoon, tomorrowAfternoon); 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) .setTitle(R.string.rmd_NoA_snooze)
.setAdapter(adapter, new DialogInterface.OnClickListener() { .setItems(items.toArray(new String[items.size()]), new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
switch (which) { switch (which) {

@ -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<Void, Void, Integer> {
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();
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 B

@ -107,7 +107,6 @@
<string name="EPr_manage_delete_all_gcal_message">هل فعلا تريد حذف جميع الأحداث للمهام ؟</string> <string name="EPr_manage_delete_all_gcal_message">هل فعلا تريد حذف جميع الأحداث للمهام ؟</string>
<string name="TWi_loading">تحميل...</string> <string name="TWi_loading">تحميل...</string>
<string name="WCA_title">اختر المهمه للعرض...</string> <string name="WCA_title">اختر المهمه للعرض...</string>
<string name="DB_corrupted_title">قاعدة بيانات متلفه</string>
<string name="DB_corrupted_body">Uh oh! It looks like you may have a corrupted database. <string name="DB_corrupted_body">Uh oh! It looks like you may have a corrupted database.
If you see this error regularly, we suggest you clear all If you see this error regularly, we suggest you clear all
data (Settings-&gt;Sync and backup-&gt;Manage old tasks-&gt;Clear all data) and restore data (Settings-&gt;Sync and backup-&gt;Manage old tasks-&gt;Clear all data) and restore
@ -239,7 +238,6 @@
<string name="yesterday">أمس</string> <string name="yesterday">أمس</string>
<string name="tmrw">غدا</string> <string name="tmrw">غدا</string>
<string name="yest">أمس</string> <string name="yest">أمس</string>
<string name="DLG_information_title">معلومة</string>
<string name="DLG_wait">إنتظر من فضلك...</string> <string name="DLG_wait">إنتظر من فضلك...</string>
<string name="sync_status_success">آخر تحيين:\n%s</string> <string name="sync_status_success">آخر تحيين:\n%s</string>
<string name="sync_SPr_interval_title">تحيين في الخلفية</string> <string name="sync_SPr_interval_title">تحيين في الخلفية</string>

@ -173,7 +173,6 @@
<string name="EPr_manage_delete_all_gcal_status">Изтрити %d събития от календара!</string> <string name="EPr_manage_delete_all_gcal_status">Изтрити %d събития от календара!</string>
<string name="TWi_loading">Зареждане...</string> <string name="TWi_loading">Зареждане...</string>
<string name="WCA_title">Изберете задачи за показване...</string> <string name="WCA_title">Изберете задачи за показване...</string>
<string name="DB_corrupted_title">Развалена База от данни</string>
<string name="DB_corrupted_body">Ами сега! Изглежда, че базата от данни е развалена. <string name="DB_corrupted_body">Ами сега! Изглежда, че базата от данни е развалена.
Ако виждате тази грешка редовно, ние ви предлагаме да изчистите всички Ако виждате тази грешка редовно, ние ви предлагаме да изчистите всички
данни (Настройки-&gt;Синхронизиране и резервни копия-&gt;Управление на стари задачи-&gt;Изчисти всички данни) данни (Настройки-&gt;Синхронизиране и резервни копия-&gt;Управление на стари задачи-&gt;Изчисти всички данни)
@ -372,7 +371,6 @@
<string name="yesterday">Вчера</string> <string name="yesterday">Вчера</string>
<string name="tmrw">Утре</string> <string name="tmrw">Утре</string>
<string name="yest">Вчера</string> <string name="yest">Вчера</string>
<string name="DLG_information_title">Информация</string>
<string name="DLG_error">Ами сега, изглежда е станала грешка! Ето какво се случи:\n\n%s</string> <string name="DLG_error">Ами сега, изглежда е станала грешка! Ето какво се случи:\n\n%s</string>
<string name="DLG_wait">Моля, изчакайте...</string> <string name="DLG_wait">Моля, изчакайте...</string>
<string name="sync_status_success">Последна синхронизация:\n%s</string> <string name="sync_status_success">Последна синхронизация:\n%s</string>

@ -201,7 +201,6 @@
<string name="today">Avui</string> <string name="today">Avui</string>
<string name="tomorrow">Demà</string> <string name="tomorrow">Demà</string>
<string name="yesterday">Ahir</string> <string name="yesterday">Ahir</string>
<string name="DLG_information_title">Informació</string>
<string name="DLG_error">¡Ui, sembla que hi ha hagut un problema! Això es el que ha passat:\n\n%s</string> <string name="DLG_error">¡Ui, sembla que hi ha hagut un problema! Això es el que ha passat:\n\n%s</string>
<string name="DLG_wait">Si us plau, espera...</string> <string name="DLG_wait">Si us plau, espera...</string>
<string name="sync_status_success">Última sincronització:\n%s</string> <string name="sync_status_success">Última sincronització:\n%s</string>

@ -161,7 +161,6 @@
<string name="EPr_manage_delete_all_gcal_status">Smazány %d upomínky v kalendáři</string> <string name="EPr_manage_delete_all_gcal_status">Smazány %d upomínky v kalendáři</string>
<string name="TWi_loading">Nahrávám...</string> <string name="TWi_loading">Nahrávám...</string>
<string name="WCA_title">Označte úkol pro zobrazení...</string> <string name="WCA_title">Označte úkol pro zobrazení...</string>
<string name="DB_corrupted_title">Poškozená databáze</string>
<string name="DB_corrupted_body">OJ! Může být poškozená databáze. Zobrazuje-li se tato chyba znovu, vymaž všechny údaje v (Nastavení-&gt;Synchronizace a zálohy-&gt;Správa starých úkolů-&gt;Vymazat vše) a obnov své úkoly ze zálohy (Nastavení-&gt;Synchronizace a zálohy-&gt;Zálohy-&gt;Import úkolů) v úkolech.</string> <string name="DB_corrupted_body">OJ! Může být poškozená databáze. Zobrazuje-li se tato chyba znovu, vymaž všechny údaje v (Nastavení-&gt;Synchronizace a zálohy-&gt;Správa starých úkolů-&gt;Vymazat vše) a obnov své úkoly ze zálohy (Nastavení-&gt;Synchronizace a zálohy-&gt;Zálohy-&gt;Import úkolů) v úkolech.</string>
<string name="EPr_default_urgency_title">Výchozí termín dokončení</string> <string name="EPr_default_urgency_title">Výchozí termín dokončení</string>
<string name="EPr_default_importance_title">Výchozí důležitost</string> <string name="EPr_default_importance_title">Výchozí důležitost</string>
@ -347,7 +346,6 @@
<string name="yesterday">Včera</string> <string name="yesterday">Včera</string>
<string name="tmrw">Zítra</string> <string name="tmrw">Zítra</string>
<string name="yest">Včera</string> <string name="yest">Včera</string>
<string name="DLG_information_title">Informace</string>
<string name="DLG_error">Jejda, vypadá to, že se vyskytla chyba! Tady je co se stalo:\n\n%s</string> <string name="DLG_error">Jejda, vypadá to, že se vyskytla chyba! Tady je co se stalo:\n\n%s</string>
<string name="DLG_wait">Čekejte prosím...</string> <string name="DLG_wait">Čekejte prosím...</string>
<string name="sync_status_success">Poslední synchronizace:\n%s</string> <string name="sync_status_success">Poslední synchronizace:\n%s</string>

@ -169,7 +169,6 @@
<string name="EPr_manage_delete_all_gcal_status">%d Kalendereinträge gelöscht!</string> <string name="EPr_manage_delete_all_gcal_status">%d Kalendereinträge gelöscht!</string>
<string name="TWi_loading">Ladevorgang …</string> <string name="TWi_loading">Ladevorgang …</string>
<string name="WCA_title">Aufgaben zum Anzeigen wählen …</string> <string name="WCA_title">Aufgaben zum Anzeigen wählen …</string>
<string name="DB_corrupted_title">Fehler in der Datenbank</string>
<string name="DB_corrupted_body">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-&gt;Synchronisation-&gt;Alte Aufgaben verwalten-&gt;Alle Daten löschen) und deine Aufgaben aus einem Backup in Tasks wiederherzustellen (Einstellungen-&gt;Synchronisation-&gt;Backups-&gt;-Backups verwalten&gt;Aufgaben importieren).</string> <string name="DB_corrupted_body">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-&gt;Synchronisation-&gt;Alte Aufgaben verwalten-&gt;Alle Daten löschen) und deine Aufgaben aus einem Backup in Tasks wiederherzustellen (Einstellungen-&gt;Synchronisation-&gt;Backups-&gt;-Backups verwalten&gt;Aufgaben importieren).</string>
<string name="task_defaults">Aufgabenstandards</string> <string name="task_defaults">Aufgabenstandards</string>
<string name="EPr_default_urgency_title">Standard Dringlichkeit</string> <string name="EPr_default_urgency_title">Standard Dringlichkeit</string>

@ -163,7 +163,6 @@
<string name="EPr_manage_delete_all_gcal_status">Διαγράφτηκαν %d γεγονότα ημερολογίου!</string> <string name="EPr_manage_delete_all_gcal_status">Διαγράφτηκαν %d γεγονότα ημερολογίου!</string>
<string name="TWi_loading">Φόρτωση...</string> <string name="TWi_loading">Φόρτωση...</string>
<string name="WCA_title">Επιλογή εργασιών για προβολή...</string> <string name="WCA_title">Επιλογή εργασιών για προβολή...</string>
<string name="DB_corrupted_title">Κατεστραμμένη βάση δεδομένων</string>
<string name="DB_corrupted_body">Ωχ! Μοιάζει να έχετε μια κατεστραμμένη βάση δεδομένων. <string name="DB_corrupted_body">Ωχ! Μοιάζει να έχετε μια κατεστραμμένη βάση δεδομένων.
Εάν βλέπετε αυτό το σφάλμα τακτικά, σας προτείνουμε καθαρισμό όλων των Εάν βλέπετε αυτό το σφάλμα τακτικά, σας προτείνουμε καθαρισμό όλων των
δεδομένων (Ρυθμίσεις-&gt; Sync και Backup-&gt; Διαχείριση παλιά tasks-&gt; Διαγραφή όλων των δεδομένων) και να αποκαταστήσει δεδομένων (Ρυθμίσεις-&gt; Sync και Backup-&gt; Διαχείριση παλιά tasks-&gt; Διαγραφή όλων των δεδομένων) και να αποκαταστήσει
@ -346,7 +345,6 @@
<string name="yesterday">Χθές</string> <string name="yesterday">Χθές</string>
<string name="tmrw">Αύριο</string> <string name="tmrw">Αύριο</string>
<string name="yest">Χθές</string> <string name="yest">Χθές</string>
<string name="DLG_information_title">Πληροφορίες</string>
<string name="DLG_error">Ωπ, προέκυψε σφάλμα!! Νά τι έγινε :\n\n%s</string> <string name="DLG_error">Ωπ, προέκυψε σφάλμα!! Νά τι έγινε :\n\n%s</string>
<string name="DLG_wait">Παρακαλώ περιμένετε...</string> <string name="DLG_wait">Παρακαλώ περιμένετε...</string>
<string name="sync_status_success">Τελευταίος συγχρονισμός:\n%s</string> <string name="sync_status_success">Τελευταίος συγχρονισμός:\n%s</string>

@ -170,7 +170,6 @@
<string name="EPr_manage_delete_all_gcal_status">¡Borrados %d eventos del calendario!</string> <string name="EPr_manage_delete_all_gcal_status">¡Borrados %d eventos del calendario!</string>
<string name="TWi_loading">Cargando…</string> <string name="TWi_loading">Cargando…</string>
<string name="WCA_title">Seleccione las tareas que ver...</string> <string name="WCA_title">Seleccione las tareas que ver...</string>
<string name="DB_corrupted_title">Base de datos corrupta</string>
<string name="DB_corrupted_body">\"¡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-&gt;Sincronización y respaldos-&gt;Administrar tareas pasadas-&gt;Limpiar toda la información) y recuperar tus tareas de un respaldo (Configuración-&gt;Sincronización y respaldos-&gt;Respaldos-&gt;Importar tareas) en Tasks.\"</string> <string name="DB_corrupted_body">\"¡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-&gt;Sincronización y respaldos-&gt;Administrar tareas pasadas-&gt;Limpiar toda la información) y recuperar tus tareas de un respaldo (Configuración-&gt;Sincronización y respaldos-&gt;Respaldos-&gt;Importar tareas) en Tasks.\"</string>
<string name="task_defaults">Configuración por defecto de tareas</string> <string name="task_defaults">Configuración por defecto de tareas</string>
<string name="EPr_default_urgency_title">Fecha límite por defecto</string> <string name="EPr_default_urgency_title">Fecha límite por defecto</string>
@ -366,7 +365,6 @@
<string name="yesterday">Ayer</string> <string name="yesterday">Ayer</string>
<string name="tmrw">Mñna</string> <string name="tmrw">Mñna</string>
<string name="yest">Ayer</string> <string name="yest">Ayer</string>
<string name="DLG_information_title">Información</string>
<string name="DLG_error">¡Uy, parece que ocurró un error! Esto es lo que pasó:\n\n%s</string> <string name="DLG_error">¡Uy, parece que ocurró un error! Esto es lo que pasó:\n\n%s</string>
<string name="DLG_wait">Por favor, espere...</string> <string name="DLG_wait">Por favor, espere...</string>
<string name="sync_status_success">Ultima sincronización:\n%s</string> <string name="sync_status_success">Ultima sincronización:\n%s</string>

@ -168,7 +168,6 @@
<string name="EPr_manage_delete_all_gcal_status">%d événements du calendrier ont été supprimés!</string> <string name="EPr_manage_delete_all_gcal_status">%d événements du calendrier ont été supprimés!</string>
<string name="TWi_loading">Chargement…</string> <string name="TWi_loading">Chargement…</string>
<string name="WCA_title">Sélectionnez les tâches à afficher…</string> <string name="WCA_title">Sélectionnez les tâches à afficher…</string>
<string name="DB_corrupted_title">Base de donnée corrompue</string>
<string name="DB_corrupted_body">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-&gt;Synchronisation et sauvegarde-&gt;Gérer les anciennes tâches-&gt;Effacer toutes les données) et restaurer vos tâches d\'une sauvegarde (Paramètres-&gt;Synchronisation et sauvegarde-&gt;Sauvegarde-&gt;Importer des tâches) dans Tasks</string> <string name="DB_corrupted_body">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-&gt;Synchronisation et sauvegarde-&gt;Gérer les anciennes tâches-&gt;Effacer toutes les données) et restaurer vos tâches d\'une sauvegarde (Paramètres-&gt;Synchronisation et sauvegarde-&gt;Sauvegarde-&gt;Importer des tâches) dans Tasks</string>
<string name="task_defaults">Valeurs par défaut</string> <string name="task_defaults">Valeurs par défaut</string>
<string name="EPr_default_urgency_title">Échéance par défaut</string> <string name="EPr_default_urgency_title">Échéance par défaut</string>
@ -362,7 +361,6 @@
<string name="yesterday">Hier</string> <string name="yesterday">Hier</string>
<string name="tmrw">Demain</string> <string name="tmrw">Demain</string>
<string name="yest">Hier</string> <string name="yest">Hier</string>
<string name="DLG_information_title">Informations</string>
<string name="DLG_error">Oups, une erreur est survenue ! Voici ce qu\'il s\'est passé :\n\n%s</string> <string name="DLG_error">Oups, une erreur est survenue ! Voici ce qu\'il s\'est passé :\n\n%s</string>
<string name="DLG_wait">Veuillez patienter...</string> <string name="DLG_wait">Veuillez patienter...</string>
<string name="sync_status_success">Dernière synchro. :\n%s</string> <string name="sync_status_success">Dernière synchro. :\n%s</string>

@ -144,7 +144,6 @@
<string name="EPr_manage_delete_all_gcal_status">Eliminato il %d degli eventi del calendario!</string> <string name="EPr_manage_delete_all_gcal_status">Eliminato il %d degli eventi del calendario!</string>
<string name="TWi_loading">Caricamento...</string> <string name="TWi_loading">Caricamento...</string>
<string name="WCA_title">Seleziona le attività da visualizzare...</string> <string name="WCA_title">Seleziona le attività da visualizzare...</string>
<string name="DB_corrupted_title">Database corrotto</string>
<string name="DB_corrupted_body">Oh, oh! Pare che tu abbia un database danneggiato. <string name="DB_corrupted_body">Oh, oh! Pare che tu abbia un database danneggiato.
Se visualizzi questo errore più volte, ti consigliamo di cancellare tutti i dati (Impostazioni-&gt;Sincronizzazione e backup-&gt;Gestire tutti i dati-&gt;Cancellare tutti i dati) e ripristinare i tuoi task da un backup in Tasks (Impostazioni-&gt;Sincronizzazione e backup-&gt;Backup-&gt;Importa task).</string> Se visualizzi questo errore più volte, ti consigliamo di cancellare tutti i dati (Impostazioni-&gt;Sincronizzazione e backup-&gt;Gestire tutti i dati-&gt;Cancellare tutti i dati) e ripristinare i tuoi task da un backup in Tasks (Impostazioni-&gt;Sincronizzazione e backup-&gt;Backup-&gt;Importa task).</string>
<string name="EPr_default_urgency_title">Urgenza Predefinita</string> <string name="EPr_default_urgency_title">Urgenza Predefinita</string>
@ -320,7 +319,6 @@ Se visualizzi questo errore più volte, ti consigliamo di cancellare tutti i dat
<string name="yesterday">Ieri</string> <string name="yesterday">Ieri</string>
<string name="tmrw">Domani</string> <string name="tmrw">Domani</string>
<string name="yest">Ieri</string> <string name="yest">Ieri</string>
<string name="DLG_information_title">Informazione</string>
<string name="DLG_error">Oops, sembra che ci sia stato un errore! E\' successo questo:\n\n%s</string> <string name="DLG_error">Oops, sembra che ci sia stato un errore! E\' successo questo:\n\n%s</string>
<string name="DLG_wait">Attendi...</string> <string name="DLG_wait">Attendi...</string>
<string name="sync_status_success">Ultima Sincronizzazione:\n%s</string> <string name="sync_status_success">Ultima Sincronizzazione:\n%s</string>

@ -161,7 +161,6 @@
<string name="EPr_manage_delete_all_gcal_status">%d אירועי יומן נמחקו</string> <string name="EPr_manage_delete_all_gcal_status">%d אירועי יומן נמחקו</string>
<string name="TWi_loading">טוענת...</string> <string name="TWi_loading">טוענת...</string>
<string name="WCA_title">בחר משימות להצגה...</string> <string name="WCA_title">בחר משימות להצגה...</string>
<string name="DB_corrupted_title">בסיס נתונים פגום</string>
<string name="DB_corrupted_body">הו לא! נראה כי בסיס הנתונים אינו תקין. <string name="DB_corrupted_body">הו לא! נראה כי בסיס הנתונים אינו תקין.
אם אתה נתקל השגיאה זאת האופן תדיר, אנו מציעים שתמחק את כל הנתונים אם אתה נתקל השגיאה זאת האופן תדיר, אנו מציעים שתמחק את כל הנתונים
(הגדרות-&gt;סינכרון וגיבוי-&gt;ניהול משימות ישנות-&gt;הסרת כל הנתונים) ושחזר את המשימות (הגדרות-&gt;סינכרון וגיבוי-&gt;ניהול משימות ישנות-&gt;הסרת כל הנתונים) ושחזר את המשימות
@ -348,7 +347,6 @@
<string name="yesterday">אתמול</string> <string name="yesterday">אתמול</string>
<string name="tmrw">מחר</string> <string name="tmrw">מחר</string>
<string name="yest">אתמול</string> <string name="yest">אתמול</string>
<string name="DLG_information_title">פרטים</string>
<string name="DLG_error">אוּפְּס, נראה שארעה שגיאה! הנה מה שקה:\n\n%s</string> <string name="DLG_error">אוּפְּס, נראה שארעה שגיאה! הנה מה שקה:\n\n%s</string>
<string name="DLG_wait">אנא המתן...</string> <string name="DLG_wait">אנא המתן...</string>
<string name="sync_status_success">סנכרון אחרון:\n%s</string> <string name="sync_status_success">סנכרון אחרון:\n%s</string>

@ -171,7 +171,6 @@
<string name="EPr_manage_delete_all_gcal_status">%d カレンダーイベントが削除されました!</string> <string name="EPr_manage_delete_all_gcal_status">%d カレンダーイベントが削除されました!</string>
<string name="TWi_loading">読み込んでいます・・・</string> <string name="TWi_loading">読み込んでいます・・・</string>
<string name="WCA_title">ウィジェットに表示する項目</string> <string name="WCA_title">ウィジェットに表示する項目</string>
<string name="DB_corrupted_title">不正なデータベース</string>
<string name="DB_corrupted_body">データベースが正しくないようです. <string name="DB_corrupted_body">データベースが正しくないようです.
このエラーが何度も表示される場合, データのクリア このエラーが何度も表示される場合, データのクリア
(設定-&gt;同期およびバックアップ-&gt;古いタスクの管理-&gt;全てのデータをクリア) し, (設定-&gt;同期およびバックアップ-&gt;古いタスクの管理-&gt;全てのデータをクリア) し,
@ -371,7 +370,6 @@
<string name="yesterday">昨日</string> <string name="yesterday">昨日</string>
<string name="tmrw">明日</string> <string name="tmrw">明日</string>
<string name="yest">昨日</string> <string name="yest">昨日</string>
<string name="DLG_information_title">インフォメーション</string>
<string name="DLG_error">エラーが発生しました! 発生した内容\n\n%s</string> <string name="DLG_error">エラーが発生しました! 発生した内容\n\n%s</string>
<string name="DLG_wait">お待ちください</string> <string name="DLG_wait">お待ちください</string>
<string name="sync_status_success">前回の同期:\n%s</string> <string name="sync_status_success">前回の同期:\n%s</string>

@ -171,7 +171,6 @@
<string name="EPr_manage_delete_all_gcal_status">%d 달력 이벤트를 삭제했습니다!</string> <string name="EPr_manage_delete_all_gcal_status">%d 달력 이벤트를 삭제했습니다!</string>
<string name="TWi_loading">로드 중…</string> <string name="TWi_loading">로드 중…</string>
<string name="WCA_title">열람할 일정 선택...</string> <string name="WCA_title">열람할 일정 선택...</string>
<string name="DB_corrupted_title">손상된 데이터베이스</string>
<string name="DB_corrupted_body">데이터베이스가 손상된 것 같습니다. 이 에러 메시지가 주기적으로 나타나면, <string name="DB_corrupted_body">데이터베이스가 손상된 것 같습니다. 이 에러 메시지가 주기적으로 나타나면,
자료를 모두 지우고 (설정-&gt;동기화 &amp; 백업-&gt;오래된 일정 관리-&gt;모든 자료 삭제) 자료를 모두 지우고 (설정-&gt;동기화 &amp; 백업-&gt;오래된 일정 관리-&gt;모든 자료 삭제)
Tasks의 백업에서 당신의 일정을 복구하시기 바랍니다. Tasks의 백업에서 당신의 일정을 복구하시기 바랍니다.
@ -366,7 +365,6 @@ Tasks의 백업에서 당신의 일정을 복구하시기 바랍니다.
<string name="yesterday">어제</string> <string name="yesterday">어제</string>
<string name="tmrw">내일</string> <string name="tmrw">내일</string>
<string name="yest">어제</string> <string name="yest">어제</string>
<string name="DLG_information_title">정보</string>
<string name="DLG_error">에러가 발생한 것 같습니다! 발생한 에러는 다음과 같습니다:\n\n%s</string> <string name="DLG_error">에러가 발생한 것 같습니다! 발생한 에러는 다음과 같습니다:\n\n%s</string>
<string name="DLG_wait">잠시 기다리세요...</string> <string name="DLG_wait">잠시 기다리세요...</string>
<string name="sync_status_success">마지막 동기화: \n%s</string> <string name="sync_status_success">마지막 동기화: \n%s</string>

@ -172,7 +172,6 @@
<string name="today">I dag</string> <string name="today">I dag</string>
<string name="tomorrow">I morgen</string> <string name="tomorrow">I morgen</string>
<string name="yesterday">I går</string> <string name="yesterday">I går</string>
<string name="DLG_information_title">Informasjon</string>
<string name="DLG_error">Oi, det oppstod en feil! Dette skjedde:\n\n%s</string> <string name="DLG_error">Oi, det oppstod en feil! Dette skjedde:\n\n%s</string>
<string name="DLG_wait">Vennligst vent...</string> <string name="DLG_wait">Vennligst vent...</string>
<string name="sync_status_success">Siste synkronisering:\n%s</string> <string name="sync_status_success">Siste synkronisering:\n%s</string>

@ -165,7 +165,6 @@
<string name="EPr_manage_delete_all_gcal_status">%d agenda-items verwijderd!</string> <string name="EPr_manage_delete_all_gcal_status">%d agenda-items verwijderd!</string>
<string name="TWi_loading">Laden…</string> <string name="TWi_loading">Laden…</string>
<string name="WCA_title">Selecteer weer te geven taken...</string> <string name="WCA_title">Selecteer weer te geven taken...</string>
<string name="DB_corrupted_title">Database Corrupt</string>
<string name="DB_corrupted_body">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-&gt;Beheer Alle Taken-&gt;Wis alle data) en je taken uit een backup te herstellen (Instellingen-&gt;Backup-&gt;Importeer Taken) in Tasks.</string> <string name="DB_corrupted_body">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-&gt;Beheer Alle Taken-&gt;Wis alle data) en je taken uit een backup te herstellen (Instellingen-&gt;Backup-&gt;Importeer Taken) in Tasks.</string>
<string name="EPr_default_urgency_title">Standaard prioriteit</string> <string name="EPr_default_urgency_title">Standaard prioriteit</string>
<string name="EPr_default_importance_title">Standaard prioriteit</string> <string name="EPr_default_importance_title">Standaard prioriteit</string>
@ -353,7 +352,6 @@
<string name="yesterday">Gisteren</string> <string name="yesterday">Gisteren</string>
<string name="tmrw">mrgn</string> <string name="tmrw">mrgn</string>
<string name="yest">gisteren</string> <string name="yest">gisteren</string>
<string name="DLG_information_title">Informatie</string>
<string name="DLG_error">Er is een fout opgetreden:\n\n%s</string> <string name="DLG_error">Er is een fout opgetreden:\n\n%s</string>
<string name="DLG_wait">Even geduld a.u.b.</string> <string name="DLG_wait">Even geduld a.u.b.</string>
<string name="sync_status_success">Vorige:\n%s</string> <string name="sync_status_success">Vorige:\n%s</string>

@ -164,7 +164,6 @@
<string name="EPr_manage_delete_all_gcal_status">Usunięto %d wydarzeń kalendarza!</string> <string name="EPr_manage_delete_all_gcal_status">Usunięto %d wydarzeń kalendarza!</string>
<string name="TWi_loading">Ładowanie...</string> <string name="TWi_loading">Ładowanie...</string>
<string name="WCA_title">Wybierz zadania do wyświetlenia</string> <string name="WCA_title">Wybierz zadania do wyświetlenia</string>
<string name="DB_corrupted_title">Uszkodzona baza danych</string>
<string name="DB_corrupted_body">O jej! Wygląda na to, że możeć mieć uszkodzoną bazę danych. <string name="DB_corrupted_body">O jej! Wygląda na to, że możeć mieć uszkodzoną bazę danych.
Jeśli widzisz ten błąd często, sugerujemy wyczyszczenie Jeśli widzisz ten błąd często, sugerujemy wyczyszczenie
wszystkich danych (Settings-&gt;Sync and backup-&gt;Manage old tasks-&gt;Clear all data) wszystkich danych (Settings-&gt;Sync and backup-&gt;Manage old tasks-&gt;Clear all data)
@ -356,7 +355,6 @@ i odzyskanie zadań z kopi zapasowej (Settings-&gt;Sync and backup-&gt;Backup-&g
<string name="yesterday">Wczoraj</string> <string name="yesterday">Wczoraj</string>
<string name="tmrw">jtr</string> <string name="tmrw">jtr</string>
<string name="yest">wcz</string> <string name="yest">wcz</string>
<string name="DLG_information_title">Informacja</string>
<string name="DLG_error">Ups! Wygląda na to, że wystąpił jakiś błąd! Oto, co się stało:\n\n%s</string> <string name="DLG_error">Ups! Wygląda na to, że wystąpił jakiś błąd! Oto, co się stało:\n\n%s</string>
<string name="DLG_wait">Proszę czekać...</string> <string name="DLG_wait">Proszę czekać...</string>
<string name="sync_status_success">Ostatnia synchronizacja:\n%s</string> <string name="sync_status_success">Ostatnia synchronizacja:\n%s</string>

@ -163,7 +163,6 @@
<string name="EPr_manage_delete_all_gcal_status">%d eventos de agenda apagados!</string> <string name="EPr_manage_delete_all_gcal_status">%d eventos de agenda apagados!</string>
<string name="TWi_loading">Carregando...</string> <string name="TWi_loading">Carregando...</string>
<string name="WCA_title">Selecionar tarefas para visualização...</string> <string name="WCA_title">Selecionar tarefas para visualização...</string>
<string name="DB_corrupted_title">Banco de Dados Corrompido</string>
<string name="DB_corrupted_body">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-&gt; Sincronização e backup-&gt; Manutenção de tarefas antigas-&gt; Limpar todos os dados) e restaurar suas tarefas através do backup no Tasks (Configurações-&gt; Sincronização e backup-&gt; Backup-&gt; Importar tarefas).</string> <string name="DB_corrupted_body">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-&gt; Sincronização e backup-&gt; Manutenção de tarefas antigas-&gt; Limpar todos os dados) e restaurar suas tarefas através do backup no Tasks (Configurações-&gt; Sincronização e backup-&gt; Backup-&gt; Importar tarefas).</string>
<string name="EPr_default_urgency_title">Urgência</string> <string name="EPr_default_urgency_title">Urgência</string>
<string name="EPr_default_importance_title">Prioridade padrão</string> <string name="EPr_default_importance_title">Prioridade padrão</string>
@ -352,7 +351,6 @@
<string name="yesterday">Ontem</string> <string name="yesterday">Ontem</string>
<string name="tmrw">amanhã</string> <string name="tmrw">amanhã</string>
<string name="yest">ontem</string> <string name="yest">ontem</string>
<string name="DLG_information_title">Informações</string>
<string name="DLG_error">Opa, parece que ocorreu um erro! Aqui está o que aconteceu:\n\n%s</string> <string name="DLG_error">Opa, parece que ocorreu um erro! Aqui está o que aconteceu:\n\n%s</string>
<string name="DLG_wait">Por favor, aguarde...</string> <string name="DLG_wait">Por favor, aguarde...</string>
<string name="sync_status_success">Última sincronização:\n%s</string> <string name="sync_status_success">Última sincronização:\n%s</string>

@ -169,7 +169,6 @@
<string name="EPr_manage_delete_all_gcal_status">Eliminados %d eventos de calendário!</string> <string name="EPr_manage_delete_all_gcal_status">Eliminados %d eventos de calendário!</string>
<string name="TWi_loading">Carregando...</string> <string name="TWi_loading">Carregando...</string>
<string name="WCA_title">Escolha as tarefas a ver...</string> <string name="WCA_title">Escolha as tarefas a ver...</string>
<string name="DB_corrupted_title">Base de dados danificada</string>
<string name="DB_corrupted_body">Parece que a sua base de dados está danificada. <string name="DB_corrupted_body">Parece que a sua base de dados está danificada.
Se este erro ocorrer repetidamente sugerimos a eliminação dos dados em Se este erro ocorrer repetidamente sugerimos a eliminação dos dados em
Definições-&gt;Sincronização e backup-&gt;Gerir tarefas antigas-&gt;Limpar todos os dados e o restauro Definições-&gt;Sincronização e backup-&gt;Gerir tarefas antigas-&gt;Limpar todos os dados e o restauro
@ -364,7 +363,6 @@ das tarefas através de um backup em Definições-&gt;Sincronização e backup-&
<string name="yesterday">Ontem</string> <string name="yesterday">Ontem</string>
<string name="tmrw">Amanhã</string> <string name="tmrw">Amanhã</string>
<string name="yest">Ontem</string> <string name="yest">Ontem</string>
<string name="DLG_information_title">Informação</string>
<string name="DLG_error">Parece que ocorreu um erro! Isto foi o que aconteceu:\n\n%s</string> <string name="DLG_error">Parece que ocorreu um erro! Isto foi o que aconteceu:\n\n%s</string>
<string name="DLG_wait">Por favor aguarde...</string> <string name="DLG_wait">Por favor aguarde...</string>
<string name="sync_status_success">Última sincronização:\n%s</string> <string name="sync_status_success">Última sincronização:\n%s</string>

@ -168,7 +168,6 @@
<string name="EPr_manage_delete_all_gcal_status">Удалено %d календарных событий!</string> <string name="EPr_manage_delete_all_gcal_status">Удалено %d календарных событий!</string>
<string name="TWi_loading">Загрузка...</string> <string name="TWi_loading">Загрузка...</string>
<string name="WCA_title">Выберите задачи для просмотра…</string> <string name="WCA_title">Выберите задачи для просмотра…</string>
<string name="DB_corrupted_title">Поврежденная база данных</string>
<string name="DB_corrupted_body">Упс! Похоже, ваша база данных повреждена. <string name="DB_corrupted_body">Упс! Похоже, ваша база данных повреждена.
Если вы получаете эту ошибку регулярно, рекомендуется стереть Если вы получаете эту ошибку регулярно, рекомендуется стереть
все данные (Параметры-&gt;Синхронизация-&gt;Управление старыми задачами-&gt;Очистить все данные) и восстановить все данные (Параметры-&gt;Синхронизация-&gt;Управление старыми задачами-&gt;Очистить все данные) и восстановить
@ -364,7 +363,6 @@
<string name="yesterday">Вчера</string> <string name="yesterday">Вчера</string>
<string name="tmrw">Завт</string> <string name="tmrw">Завт</string>
<string name="yest">Вчера</string> <string name="yest">Вчера</string>
<string name="DLG_information_title">Информация</string>
<string name="DLG_error">Ой, похоже произошла ошибка! Подробности ниже:\n\n%s</string> <string name="DLG_error">Ой, похоже произошла ошибка! Подробности ниже:\n\n%s</string>
<string name="DLG_wait">Пожалуйста, подождите…</string> <string name="DLG_wait">Пожалуйста, подождите…</string>
<string name="sync_status_success">Последняя синхронизация\n%s</string> <string name="sync_status_success">Последняя синхронизация\n%s</string>

@ -168,7 +168,6 @@
<string name="EPr_manage_delete_all_gcal_status">Vymazané %d udalosti kalendára!</string> <string name="EPr_manage_delete_all_gcal_status">Vymazané %d udalosti kalendára!</string>
<string name="TWi_loading">Načítavanie</string> <string name="TWi_loading">Načítavanie</string>
<string name="WCA_title">Vybrať úlohy na zobrazenie</string> <string name="WCA_title">Vybrať úlohy na zobrazenie</string>
<string name="DB_corrupted_title">Poškodená databáza</string>
<string name="DB_corrupted_body">Oh nie! Zdá sa, že máš poškodenú databázu. Ak sa ti táto chyba zobrazuje stále, vymaž všetky údaje <string name="DB_corrupted_body">Oh nie! Zdá sa, že máš poškodenú databázu. Ak sa ti táto chyba zobrazuje stále, vymaž všetky údaje
(Nastavenia-&gt;Synchronizáca a zálohy-&gt;Spravovať staré úlohy-&gt;Vymazať všetky údaje) a obnov svoje údaje zo zálohy (Nastavenia-&gt;Synchronizácie a zálohy-&gt;Záloha-&gt;Importovať úlohy) v Tasks.</string> (Nastavenia-&gt;Synchronizáca a zálohy-&gt;Spravovať staré úlohy-&gt;Vymazať všetky údaje) a obnov svoje údaje zo zálohy (Nastavenia-&gt;Synchronizácie a zálohy-&gt;Záloha-&gt;Importovať úlohy) v Tasks.</string>
<string name="task_defaults">Predvoľby úloh</string> <string name="task_defaults">Predvoľby úloh</string>
@ -362,7 +361,6 @@
<string name="yesterday">Včera</string> <string name="yesterday">Včera</string>
<string name="tmrw">Zajtra</string> <string name="tmrw">Zajtra</string>
<string name="yest">Včera</string> <string name="yest">Včera</string>
<string name="DLG_information_title">Informácia</string>
<string name="DLG_error">Ups, zdá sa, že sa vyskytla chyba! Tu je čo sa stalo:\n\n%s</string> <string name="DLG_error">Ups, zdá sa, že sa vyskytla chyba! Tu je čo sa stalo:\n\n%s</string>
<string name="DLG_wait">Prosím čakaj...</string> <string name="DLG_wait">Prosím čakaj...</string>
<string name="sync_status_success">Posledná synchronizácia:\n%s</string> <string name="sync_status_success">Posledná synchronizácia:\n%s</string>

@ -167,7 +167,6 @@
<string name="EPr_manage_delete_all_gcal_status">Število zbrisanih dogodkov na koledarju: %d </string> <string name="EPr_manage_delete_all_gcal_status">Število zbrisanih dogodkov na koledarju: %d </string>
<string name="TWi_loading">Nalagam...</string> <string name="TWi_loading">Nalagam...</string>
<string name="WCA_title">Izberi in prikaži opravke...</string> <string name="WCA_title">Izberi in prikaži opravke...</string>
<string name="DB_corrupted_title">Okvarjena baza podatkov</string>
<string name="DB_corrupted_body">O, ne! Zdi se, da imate okvarjeno bazo podatkov. Če se ta napaka pogosto pojavlja, vam predlagamo, da zbrišete vse podatke (Nastavitve-&gt;Usklajevanje in varnostna kopija-&gt; Upravljanje s preteklimi opravki-&gt;Zbriši vse podatke) in obnovite svoje opravke s pomočjo varnostne kopije aplikacije Opravki. (Nastavitve-&gt;Usklajevanje in varnostna kopija-&gt;Varnostna kopija-&gt;Uvozi opravke)</string> <string name="DB_corrupted_body">O, ne! Zdi se, da imate okvarjeno bazo podatkov. Če se ta napaka pogosto pojavlja, vam predlagamo, da zbrišete vse podatke (Nastavitve-&gt;Usklajevanje in varnostna kopija-&gt; Upravljanje s preteklimi opravki-&gt;Zbriši vse podatke) in obnovite svoje opravke s pomočjo varnostne kopije aplikacije Opravki. (Nastavitve-&gt;Usklajevanje in varnostna kopija-&gt;Varnostna kopija-&gt;Uvozi opravke)</string>
<string name="EPr_default_urgency_title">Privzeta dospelost</string> <string name="EPr_default_urgency_title">Privzeta dospelost</string>
<string name="EPr_default_importance_title">Privzeta dospelost</string> <string name="EPr_default_importance_title">Privzeta dospelost</string>
@ -354,7 +353,6 @@
<string name="yesterday">Včeraj</string> <string name="yesterday">Včeraj</string>
<string name="tmrw">Jutr</string> <string name="tmrw">Jutr</string>
<string name="yest">Včer</string> <string name="yest">Včer</string>
<string name="DLG_information_title">Informacija</string>
<string name="DLG_error">Ups, zdi se, da je prišlo do napake! Tole se je zgodilo:\n\n%s</string> <string name="DLG_error">Ups, zdi se, da je prišlo do napake! Tole se je zgodilo:\n\n%s</string>
<string name="DLG_wait">Prosimo, počakajte...</string> <string name="DLG_wait">Prosimo, počakajte...</string>
<string name="sync_status_success">Najnovejše usklajevanje:\n%s</string> <string name="sync_status_success">Najnovejše usklajevanje:\n%s</string>

@ -159,7 +159,6 @@
<string name="EPr_manage_delete_all_gcal_status">%d kalenderhändelser raderade!</string> <string name="EPr_manage_delete_all_gcal_status">%d kalenderhändelser raderade!</string>
<string name="TWi_loading">Laddar...</string> <string name="TWi_loading">Laddar...</string>
<string name="WCA_title">Välj uppgifter att se på...</string> <string name="WCA_title">Välj uppgifter att se på...</string>
<string name="DB_corrupted_title">Korrupt databas</string>
<string name="DB_corrupted_body">Oj! Det verkar som din databas är skadad. <string name="DB_corrupted_body">Oj! Det verkar som din databas är skadad.
Om du ser detta felmeddelande ofta, föreslår vi att du tömmer all data Om du ser detta felmeddelande ofta, föreslår vi att du tömmer all data
(Inställningar-&gt;Synkronisering och backup-&gt;Hantera gamla uppgifter-&gt;Töm all data) (Inställningar-&gt;Synkronisering och backup-&gt;Hantera gamla uppgifter-&gt;Töm all data)

@ -101,5 +101,4 @@
<string name="today">วันนี้</string> <string name="today">วันนี้</string>
<string name="tomorrow">พรุ่งนี้</string> <string name="tomorrow">พรุ่งนี้</string>
<string name="yesterday">เมื่อวาน</string> <string name="yesterday">เมื่อวาน</string>
<string name="DLG_information_title">ข้อมูล</string>
</resources> </resources>

@ -142,7 +142,6 @@
<string name="EPr_manage_delete_all_gcal_status">%d takvim olayı silindi!</string> <string name="EPr_manage_delete_all_gcal_status">%d takvim olayı silindi!</string>
<string name="TWi_loading">Yükleniyor...</string> <string name="TWi_loading">Yükleniyor...</string>
<string name="WCA_title">Görüntülenecek görevi seç...</string> <string name="WCA_title">Görüntülenecek görevi seç...</string>
<string name="DB_corrupted_title">Bozuk Veritabanı</string>
<string name="DB_corrupted_body">Uh oh! It looks like you may have a corrupted database. <string name="DB_corrupted_body">Uh oh! It looks like you may have a corrupted database.
If you see this error regularly, we suggest you clear all If you see this error regularly, we suggest you clear all
data (Settings-&gt;Sync and backup-&gt;Manage old tasks-&gt;Clear all data) and restore data (Settings-&gt;Sync and backup-&gt;Manage old tasks-&gt;Clear all data) and restore
@ -320,7 +319,6 @@
<string name="yesterday">Dün</string> <string name="yesterday">Dün</string>
<string name="tmrw">Yarın</string> <string name="tmrw">Yarın</string>
<string name="yest">Dün</string> <string name="yest">Dün</string>
<string name="DLG_information_title">Bilgi</string>
<string name="DLG_error">Oops, bir sorun meydana geldi! Olan şu:\n\n%s</string> <string name="DLG_error">Oops, bir sorun meydana geldi! Olan şu:\n\n%s</string>
<string name="DLG_wait">Lütfen bekleyin...</string> <string name="DLG_wait">Lütfen bekleyin...</string>
<string name="sync_status_success">Son Senk.\n%s</string> <string name="sync_status_success">Son Senk.\n%s</string>

@ -167,7 +167,6 @@
<string name="EPr_manage_delete_all_gcal_status">Видалено %d календарних подій!</string> <string name="EPr_manage_delete_all_gcal_status">Видалено %d календарних подій!</string>
<string name="TWi_loading">Завантаження...</string> <string name="TWi_loading">Завантаження...</string>
<string name="WCA_title">Виберіть завдання для перегляду...</string> <string name="WCA_title">Виберіть завдання для перегляду...</string>
<string name="DB_corrupted_title">Пошкоджена база данних</string>
<string name="DB_corrupted_body">Ой! Схоже, ваша база даних пошкоджена. <string name="DB_corrupted_body">Ой! Схоже, ваша база даних пошкоджена.
Якщо ви отримуєте цю помилку регулярно, Якщо ви отримуєте цю помилку регулярно,
рекомендується стерти всі дані (Параметри-&gt; рекомендується стерти всі дані (Параметри-&gt;
@ -341,7 +340,6 @@
<string name="yesterday">Вчора</string> <string name="yesterday">Вчора</string>
<string name="tmrw">Завт.</string> <string name="tmrw">Завт.</string>
<string name="yest">Вчор.</string> <string name="yest">Вчор.</string>
<string name="DLG_information_title">Інформація</string>
<string name="DLG_error">На жаль, схоже, сталася помилка! Ось що вийшло:\n\n%s</string> <string name="DLG_error">На жаль, схоже, сталася помилка! Ось що вийшло:\n\n%s</string>
<string name="DLG_wait">Будь ласка, зачекайте...</string> <string name="DLG_wait">Будь ласка, зачекайте...</string>
<string name="sync_status_success">Остання синхр.:\n%s</string> <string name="sync_status_success">Остання синхр.:\n%s</string>

@ -125,7 +125,6 @@
<string name="EPr_manage_delete_all_gcal_status">已经删除了 %d 个日历事件了!</string> <string name="EPr_manage_delete_all_gcal_status">已经删除了 %d 个日历事件了!</string>
<string name="TWi_loading">载入中...</string> <string name="TWi_loading">载入中...</string>
<string name="WCA_title">选择任务以显示...</string> <string name="WCA_title">选择任务以显示...</string>
<string name="DB_corrupted_title">数据库已经受损</string>
<string name="DB_corrupted_body">啊喔!您有一个毁损的资料库。如果您经常看见这个错误出现,我们建议您清除所有数据(在设置-&gt;同步和备份-&amp;gt管理旧任务-&gt;清楚所有数据)并在清单小助理备份中重新存入您的任务(设置-&gt;同步和备份-&gt;备份-&gt;导入任务)</string> <string name="DB_corrupted_body">啊喔!您有一个毁损的资料库。如果您经常看见这个错误出现,我们建议您清除所有数据(在设置-&gt;同步和备份-&amp;gt管理旧任务-&gt;清楚所有数据)并在清单小助理备份中重新存入您的任务(设置-&gt;同步和备份-&gt;备份-&gt;导入任务)</string>
<string name="EPr_default_urgency_title">默认截止期</string> <string name="EPr_default_urgency_title">默认截止期</string>
<string name="EPr_default_hideUntil_title">默认隐藏直到</string> <string name="EPr_default_hideUntil_title">默认隐藏直到</string>
@ -299,7 +298,6 @@
<string name="yesterday">昨天</string> <string name="yesterday">昨天</string>
<string name="tmrw">明天</string> <string name="tmrw">明天</string>
<string name="yest">昨天</string> <string name="yest">昨天</string>
<string name="DLG_information_title">信息</string>
<string name="DLG_error">糟糕,发生错误!状况是:\n\n%s</string> <string name="DLG_error">糟糕,发生错误!状况是:\n\n%s</string>
<string name="DLG_wait">请稍候...</string> <string name="DLG_wait">请稍候...</string>
<string name="sync_status_success">上次同步:\n%s</string> <string name="sync_status_success">上次同步:\n%s</string>

@ -154,7 +154,6 @@
<string name="EPr_manage_delete_all_gcal_status">已經刪除了 %d 個日曆事件了!</string> <string name="EPr_manage_delete_all_gcal_status">已經刪除了 %d 個日曆事件了!</string>
<string name="TWi_loading">載入中...</string> <string name="TWi_loading">載入中...</string>
<string name="WCA_title">選擇工作顯示...</string> <string name="WCA_title">選擇工作顯示...</string>
<string name="DB_corrupted_title">數據庫已經受損</string>
<string name="DB_corrupted_body">啊喔!您有一個毀損的資料庫。如果您經常看見這個錯誤出現,我們建議您清除所有數據(在設置-&gt;同步和備份-&amp;gt管理舊任務工作-&gt;清楚所有數據並在Tasks備份中重新存入您的任務工作設置-&gt;同步和備份-&gt;備份-&gt;導入任務工作)</string> <string name="DB_corrupted_body">啊喔!您有一個毀損的資料庫。如果您經常看見這個錯誤出現,我們建議您清除所有數據(在設置-&gt;同步和備份-&amp;gt管理舊任務工作-&gt;清楚所有數據並在Tasks備份中重新存入您的任務工作設置-&gt;同步和備份-&gt;備份-&gt;導入任務工作)</string>
<string name="EPr_default_urgency_title">預設嚴重性</string> <string name="EPr_default_urgency_title">預設嚴重性</string>
<string name="EPr_default_importance_title">預設優先權</string> <string name="EPr_default_importance_title">預設優先權</string>
@ -336,7 +335,6 @@
<string name="yesterday">昨天</string> <string name="yesterday">昨天</string>
<string name="tmrw">明天</string> <string name="tmrw">明天</string>
<string name="yest">昨天</string> <string name="yest">昨天</string>
<string name="DLG_information_title">資訊</string>
<string name="DLG_error">糟糕,發生錯誤!狀況是:\n\n%s</string> <string name="DLG_error">糟糕,發生錯誤!狀況是:\n\n%s</string>
<string name="DLG_wait">請稍候...</string> <string name="DLG_wait">請稍候...</string>
<string name="sync_status_success">上次同步:\n%s</string> <string name="sync_status_success">上次同步:\n%s</string>

@ -55,6 +55,9 @@
<attr name="ic_action_new_tag" format="reference"/> <attr name="ic_action_new_tag" format="reference"/>
<attr name="ic_action_discard" format="reference" /> <attr name="ic_action_discard" format="reference" />
<attr name="popup_theme" format="reference" /> <attr name="popup_theme" format="reference" />
<attr name="ic_arrow_back" format="reference" />
<attr name="ic_folder" format="reference" />
<attr name="ic_file" format="reference" />
<declare-styleable name="DateAndTimePicker"> <declare-styleable name="DateAndTimePicker">
<attr name="shortcutLabels" format="reference" /> <attr name="shortcutLabels" format="reference" />

@ -392,8 +392,6 @@
<!-- ============================================================= Misc == --> <!-- ============================================================= Misc == -->
<string name="DB_corrupted_title">Corrupted Database</string>
<string name="DB_corrupted_body"> <string name="DB_corrupted_body">
Uh oh! It looks like you may have a corrupted database. Uh oh! It looks like you may have a corrupted database.
If you see this error regularly, we suggest you clear all If you see this error regularly, we suggest you clear all

@ -31,9 +31,6 @@
<!-- ================================================== Generic Dialogs == --> <!-- ================================================== Generic Dialogs == -->
<!-- information dialog title -->
<string name="DLG_information_title">Information</string>
<!-- error dialog (%s => error message)--> <!-- error dialog (%s => error message)-->
<string name="DLG_error">Oops, looks like an error occurred! Here\'s what happened:\n\n%s</string> <string name="DLG_error">Oops, looks like an error occurred! Here\'s what happened:\n\n%s</string>

@ -67,4 +67,23 @@
<item name="ic_action_discard">@drawable/ic_close_white_24dp</item> <item name="ic_action_discard">@drawable/ic_close_white_24dp</item>
</style> </style>
<style name="TasksDialogDark" parent="@style/Theme.AppCompat.Dialog">
<item name="colorPrimary">@android:color/black</item>
<item name="colorPrimaryDark">@android:color/black</item>
<item name="colorAccent">@android:color/white</item>
<item name="asThemeTextColor">@color/dark_blue_theme_color</item>
<item name="asTextColor">@android:color/white</item>
<item name="asListDividerColor">#dddddd</item>
<item name="ic_action_inbox">@drawable/ic_inbox_white_24dp</item>
<item name="ic_action_calendar_today">@drawable/ic_today_white_24dp</item>
<item name="ic_action_history">@drawable/ic_history_white_24dp</item>
<item name="ic_action_uncategorized">@drawable/ic_label_outline_white_24dp</item>
<item name="ic_action_label">@drawable/ic_label_white_24dp</item>
<item name="ic_action_filter">@drawable/ic_filter_list_white_24dp</item>
<item name="ic_action_cloud">@drawable/ic_cloud_queue_white_24dp</item>
<item name="ic_arrow_back">@drawable/ic_arrow_back_white_24dp</item>
<item name="ic_folder">@drawable/ic_folder_white_24dp</item>
<item name="ic_file">@drawable/ic_insert_drive_file_white_24dp</item>
</style>
</resources> </resources>

@ -67,7 +67,7 @@
<item name="ic_action_discard">@drawable/ic_close_white_24dp</item> <item name="ic_action_discard">@drawable/ic_close_white_24dp</item>
</style> </style>
<style name="Tasks.Dialog" parent="@style/Theme.AppCompat.Light.Dialog"> <style name="TasksDialog" parent="@style/Theme.AppCompat.Light.Dialog">
<item name="colorPrimary">@color/primary</item> <item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item> <item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/primary</item> <item name="colorAccent">@color/primary</item>
@ -81,6 +81,9 @@
<item name="ic_action_label">@drawable/ic_label_black_24dp</item> <item name="ic_action_label">@drawable/ic_label_black_24dp</item>
<item name="ic_action_filter">@drawable/ic_filter_list_black_24dp</item> <item name="ic_action_filter">@drawable/ic_filter_list_black_24dp</item>
<item name="ic_action_cloud">@drawable/ic_cloud_queue_black_24dp</item> <item name="ic_action_cloud">@drawable/ic_cloud_queue_black_24dp</item>
<item name="ic_arrow_back">@drawable/ic_arrow_back_black_24dp</item>
<item name="ic_folder">@drawable/ic_folder_black_24dp</item>
<item name="ic_file">@drawable/ic_insert_drive_file_black_24dp</item>
</style> </style>
</resources> </resources>
Loading…
Cancel
Save