Light and dark dialog themes

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

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

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

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

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

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

@ -9,145 +9,25 @@ package com.todoroo.andlib.utility;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;
import org.tasks.preferences.ActivityPreferences;
import javax.inject.Inject;
@Deprecated
public class DialogUtilities {
private static final Logger log = LoggerFactory.getLogger(DialogUtilities.class);
private ActivityPreferences activityPreferences;
@Inject
public DialogUtilities(ActivityPreferences activityPreferences) {
this.activityPreferences = activityPreferences;
}
/**
* Displays a dialog box with an OK button
*/
public static void okDialog(final Activity activity, final String text,
final DialogInterface.OnClickListener okListener) {
if(activity.isFinishing()) {
return;
}
tryOnUiThread(activity, new Runnable() {
@Override
public void run() {
new AlertDialog.Builder(activity)
.setTitle(R.string.DLG_information_title)
.setMessage(text)
.setPositiveButton(android.R.string.ok, okListener)
.show().setOwnerActivity(activity);
}
});
}
/**
* Displays a dialog box with an OK button
*/
public static void okDialog(final Activity activity, final String title,
final int icon, final CharSequence text) {
if(activity.isFinishing()) {
return;
}
tryOnUiThread(activity, new Runnable() {
@Override
public void run() {
new AlertDialog.Builder(activity)
.setTitle(title)
.setMessage(text)
.setIcon(icon)
.setPositiveButton(android.R.string.ok, null)
.show().setOwnerActivity(activity);
}
});
}
/**
* Displays a dialog box with OK and Cancel buttons
*/
public static void okCancelDialog(final Activity activity, final String text,
final DialogInterface.OnClickListener okListener,
final DialogInterface.OnClickListener cancelListener) {
okCancelCustomDialog(activity, text, android.R.string.ok, android.R.string.cancel, okListener, cancelListener);
}
/**
* Displays a dialog box with custom titled OK and cancel button titles
*/
public static void okCancelCustomDialog(final Activity activity, final String text,
final int okTitleId, final int cancelTitleId,
final DialogInterface.OnClickListener okListener,
final DialogInterface.OnClickListener cancelListener) {
if(activity.isFinishing()) {
return;
}
tryOnUiThread(activity, new Runnable() {
final boolean[] selectedOk = new boolean[1];
@Override
public void run() {
AlertDialog dialog = new AlertDialog.Builder(activity)
.setMessage(text)
.setPositiveButton(okTitleId, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
selectedOk[0] = true;
okListener.onClick(dialog, which);
}
})
.setNegativeButton(cancelTitleId, cancelListener)
.show();
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
if (!selectedOk[0] && cancelListener != null) {
cancelListener.onClick(dialog, Dialog.BUTTON_NEGATIVE);
}
}
});
dialog.setOwnerActivity(activity);
}
});
}
/** Run runnable with progress dialog */
public static ProgressDialog runWithProgressDialog(final Activity activity, final Runnable runnable) {
final ProgressDialog progressdiag = progressDialog(activity, activity.getString(R.string.DLG_wait));
new Thread(new Runnable() {
@Override
public void run() {
try {
runnable.run();
} catch (Exception e) {
log.error(e.getMessage(), e);
DialogUtilities.okDialog(activity, activity.getString(R.string.DLG_error, e.toString()), null);
} finally {
DialogUtilities.dismissDialog(activity, progressdiag);
}
}
}).start();
return progressdiag;
}
/**
* Displays a progress dialog. Must be run on the UI thread
*/
public static ProgressDialog progressDialog(Activity context, String text) {
ProgressDialog dialog = new ProgressDialog(context);
return progressDialog(context, text, R.style.TasksDialog);
}
private static ProgressDialog progressDialog(Activity context, String text, int theme) {
ProgressDialog dialog = new ProgressDialog(context, theme);
dialog.setIndeterminate(true);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setMessage(text);
@ -176,7 +56,6 @@ public class DialogUtilities {
});
}
private static void tryOnUiThread(Activity activity, final Runnable runnable) {
activity.runOnUiThread(new Runnable() {
@Override

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -16,7 +16,6 @@ import android.preference.PreferenceManager;
import com.todoroo.andlib.data.DatabaseDao.ModelUpdateListener;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.backup.TasksXmlImporter;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.DatabaseUpdateListener;
@ -37,6 +36,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.Broadcaster;
import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.preferences.Preferences;
import java.io.File;
@ -68,6 +68,7 @@ public class StartupService {
private final CalendarAlarmScheduler calendarAlarmScheduler;
private final TaskDeleter taskDeleter;
private Broadcaster broadcaster;
private DialogBuilder dialogBuilder;
@Inject
public StartupService(UpgradeService upgradeService, TagDataDao tagDataDao, Database database,
@ -75,7 +76,7 @@ public class StartupService {
GtasksSyncService gtasksSyncService, MetadataDao metadataDao,
Preferences preferences, TasksXmlImporter xmlImporter,
CalendarAlarmScheduler calendarAlarmScheduler, TaskDeleter taskDeleter,
Broadcaster broadcaster) {
Broadcaster broadcaster, DialogBuilder dialogBuilder) {
this.upgradeService = upgradeService;
this.tagDataDao = tagDataDao;
this.database = database;
@ -87,6 +88,7 @@ public class StartupService {
this.calendarAlarmScheduler = calendarAlarmScheduler;
this.taskDeleter = taskDeleter;
this.broadcaster = broadcaster;
this.dialogBuilder = dialogBuilder;
}
/**
@ -111,7 +113,10 @@ public class StartupService {
try {
database.openForWriting();
} catch (SQLiteException e) {
handleSQLiteError(activity, e);
log.error(e.getMessage(), e);
dialogBuilder.newMessageDialog(R.string.DB_corrupted_body)
.setPositiveButton(android.R.string.ok, null)
.show();
return;
}
@ -196,11 +201,6 @@ public class StartupService {
});
}
public static void handleSQLiteError(Activity activity, final SQLiteException e) {
log.error(e.getMessage(), e);
DialogUtilities.okDialog(activity, activity.getString(R.string.DB_corrupted_title), 0, activity.getString(R.string.DB_corrupted_body));
}
/**
* If database exists, no tasks but metadata, and a backup file exists, restore it
*/

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

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

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

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

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

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

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

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

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

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

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

@ -42,6 +42,10 @@ public class ActivityPreferences extends Preferences {
applyTheme(isDarkTheme() ? R.style.TasksDark : R.style.Tasks);
}
public void applyDialogTheme() {
applyTheme(isDarkTheme() ? R.style.TasksDialogDark : R.style.TasksDialog);
}
public void applyStatusBarColor() {
applyStatusBarColor(isDarkTheme() ? android.R.color.black : R.color.primary_dark);
}
@ -68,6 +72,14 @@ public class ActivityPreferences extends Preferences {
activity.getWindow().setFormat(PixelFormat.RGBA_8888);
}
public int getTheme() {
return isDarkTheme() ? R.style.TasksDark : R.style.Tasks;
}
public int getDialogTheme() {
return isDarkTheme() ? R.style.TasksDialogDark : R.style.TasksDialog;
}
public int getEditDialogTheme() {
return isDarkTheme() ? R.style.TEA_Dialog_Dark : R.style.TEA_Dialog;
}

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

@ -5,13 +5,12 @@ import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
import android.widget.ArrayAdapter;
import com.todoroo.astrid.reminders.SnoozeCallback;
import org.joda.time.DateTime;
import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ForApplication;
import org.tasks.injection.InjectingDialogFragment;
import org.tasks.preferences.Preferences;
@ -28,26 +27,26 @@ public class SnoozeDialog extends InjectingDialogFragment {
@Inject Preferences preferences;
@Inject @ForApplication Context context;
@Inject DialogBuilder dialogBuilder;
private DateTime now = new DateTime();
private SnoozeCallback snoozeCallback;
private DialogInterface.OnCancelListener onCancelListener;
private List<Long> snoozeTimes = new ArrayList<>();
private ArrayAdapter<String> adapter;
private List<String> items = new ArrayList<>();
private DateTime getDateTimeShortcut(int resId, long def) {
return now.withMillisOfDay(preferences.getInt(getString(resId), (int) def));
}
private void add(int resId, DateTime dateTime) {
adapter.add(String.format("%s (%s)", getString(resId), getTimeString(context, dateTime.toDate())));
items.add(String.format("%s (%s)", getString(resId), getTimeString(context, dateTime.toDate())));
snoozeTimes.add(dateTime.getMillis());
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1);
DateTime morning = getDateTimeShortcut(R.string.p_date_shortcut_morning, TimeUnit.HOURS.toMillis(9));
DateTime afternoon = getDateTimeShortcut(R.string.p_date_shortcut_afternoon, TimeUnit.HOURS.toMillis(13));
DateTime evening = getDateTimeShortcut(R.string.p_date_shortcut_evening, TimeUnit.HOURS.toMillis(17));
@ -55,7 +54,7 @@ public class SnoozeDialog extends InjectingDialogFragment {
DateTime tomorrowMorning = morning.plusDays(1);
DateTime tomorrowAfternoon = afternoon.plusDays(1);
adapter.add(getString(R.string.date_shortcut_hour));
items.add(getString(R.string.date_shortcut_hour));
snoozeTimes.add(0L);
DateTime hourCutoff = new DateTime().plusMinutes(75);
@ -76,11 +75,11 @@ public class SnoozeDialog extends InjectingDialogFragment {
add(R.string.date_shortcut_tomorrow_morning, tomorrowMorning);
add(R.string.date_shortcut_tomorrow_afternoon, tomorrowAfternoon);
}
adapter.add(getString(R.string.pick_a_date_and_time));
items.add(getString(R.string.pick_a_date_and_time));
return new AlertDialog.Builder(getActivity(), R.style.Tasks_Dialog)
return dialogBuilder.newDialog()
.setTitle(R.string.rmd_NoA_snooze)
.setAdapter(adapter, new DialogInterface.OnClickListener() {
.setItems(items.toArray(new String[items.size()]), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {

@ -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="TWi_loading">تحميل...</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.
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
@ -239,7 +238,6 @@
<string name="yesterday">أمس</string>
<string name="tmrw">غدا</string>
<string name="yest">أمس</string>
<string name="DLG_information_title">معلومة</string>
<string name="DLG_wait">إنتظر من فضلك...</string>
<string name="sync_status_success">آخر تحيين:\n%s</string>
<string name="sync_SPr_interval_title">تحيين في الخلفية</string>

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

@ -201,7 +201,6 @@
<string name="today">Avui</string>
<string name="tomorrow">Demà</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_wait">Si us plau, espera...</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="TWi_loading">Nahrávám...</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="EPr_default_urgency_title">Výchozí termín dokončení</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="tmrw">Zítra</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_wait">Čekejte prosím...</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="TWi_loading">Ladevorgang …</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="task_defaults">Aufgabenstandards</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="TWi_loading">Φόρτωση...</string>
<string name="WCA_title">Επιλογή εργασιών για προβολή...</string>
<string name="DB_corrupted_title">Κατεστραμμένη βάση δεδομένων</string>
<string name="DB_corrupted_body">Ωχ! Μοιάζει να έχετε μια κατεστραμμένη βάση δεδομένων.
Εάν βλέπετε αυτό το σφάλμα τακτικά, σας προτείνουμε καθαρισμό όλων των
δεδομένων (Ρυθμίσεις-&gt; Sync και Backup-&gt; Διαχείριση παλιά tasks-&gt; Διαγραφή όλων των δεδομένων) και να αποκαταστήσει
@ -346,7 +345,6 @@
<string name="yesterday">Χθές</string>
<string name="tmrw">Αύριο</string>
<string name="yest">Χθές</string>
<string name="DLG_information_title">Πληροφορίες</string>
<string name="DLG_error">Ωπ, προέκυψε σφάλμα!! Νά τι έγινε :\n\n%s</string>
<string name="DLG_wait">Παρακαλώ περιμένετε...</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="TWi_loading">Cargando…</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="task_defaults">Configuración por defecto de tareas</string>
<string name="EPr_default_urgency_title">Fecha límite por defecto</string>
@ -366,7 +365,6 @@
<string name="yesterday">Ayer</string>
<string name="tmrw">Mñna</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_wait">Por favor, espere...</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="TWi_loading">Chargement…</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="task_defaults">Valeurs 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="tmrw">Demain</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_wait">Veuillez patienter...</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="TWi_loading">Caricamento...</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.
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>
@ -320,7 +319,6 @@ Se visualizzi questo errore più volte, ti consigliamo di cancellare tutti i dat
<string name="yesterday">Ieri</string>
<string name="tmrw">Domani</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_wait">Attendi...</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="TWi_loading">טוענת...</string>
<string name="WCA_title">בחר משימות להצגה...</string>
<string name="DB_corrupted_title">בסיס נתונים פגום</string>
<string name="DB_corrupted_body">הו לא! נראה כי בסיס הנתונים אינו תקין.
אם אתה נתקל השגיאה זאת האופן תדיר, אנו מציעים שתמחק את כל הנתונים
(הגדרות-&gt;סינכרון וגיבוי-&gt;ניהול משימות ישנות-&gt;הסרת כל הנתונים) ושחזר את המשימות
@ -348,7 +347,6 @@
<string name="yesterday">אתמול</string>
<string name="tmrw">מחר</string>
<string name="yest">אתמול</string>
<string name="DLG_information_title">פרטים</string>
<string name="DLG_error">אוּפְּס, נראה שארעה שגיאה! הנה מה שקה:\n\n%s</string>
<string name="DLG_wait">אנא המתן...</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="TWi_loading">読み込んでいます・・・</string>
<string name="WCA_title">ウィジェットに表示する項目</string>
<string name="DB_corrupted_title">不正なデータベース</string>
<string name="DB_corrupted_body">データベースが正しくないようです.
このエラーが何度も表示される場合, データのクリア
(設定-&gt;同期およびバックアップ-&gt;古いタスクの管理-&gt;全てのデータをクリア) し,
@ -371,7 +370,6 @@
<string name="yesterday">昨日</string>
<string name="tmrw">明日</string>
<string name="yest">昨日</string>
<string name="DLG_information_title">インフォメーション</string>
<string name="DLG_error">エラーが発生しました! 発生した内容\n\n%s</string>
<string name="DLG_wait">お待ちください</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="TWi_loading">로드 중…</string>
<string name="WCA_title">열람할 일정 선택...</string>
<string name="DB_corrupted_title">손상된 데이터베이스</string>
<string name="DB_corrupted_body">데이터베이스가 손상된 것 같습니다. 이 에러 메시지가 주기적으로 나타나면,
자료를 모두 지우고 (설정-&gt;동기화 &amp; 백업-&gt;오래된 일정 관리-&gt;모든 자료 삭제)
Tasks의 백업에서 당신의 일정을 복구하시기 바랍니다.
@ -366,7 +365,6 @@ Tasks의 백업에서 당신의 일정을 복구하시기 바랍니다.
<string name="yesterday">어제</string>
<string name="tmrw">내일</string>
<string name="yest">어제</string>
<string name="DLG_information_title">정보</string>
<string name="DLG_error">에러가 발생한 것 같습니다! 발생한 에러는 다음과 같습니다:\n\n%s</string>
<string name="DLG_wait">잠시 기다리세요...</string>
<string name="sync_status_success">마지막 동기화: \n%s</string>

@ -172,7 +172,6 @@
<string name="today">I dag</string>
<string name="tomorrow">I morgen</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_wait">Vennligst vent...</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="TWi_loading">Laden…</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="EPr_default_urgency_title">Standaard prioriteit</string>
<string name="EPr_default_importance_title">Standaard prioriteit</string>
@ -353,7 +352,6 @@
<string name="yesterday">Gisteren</string>
<string name="tmrw">mrgn</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_wait">Even geduld a.u.b.</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="TWi_loading">Ładowanie...</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.
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)
@ -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="tmrw">jtr</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_wait">Proszę czekać...</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="TWi_loading">Carregando...</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="EPr_default_urgency_title">Urgência</string>
<string name="EPr_default_importance_title">Prioridade padrão</string>
@ -352,7 +351,6 @@
<string name="yesterday">Ontem</string>
<string name="tmrw">amanhã</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_wait">Por favor, aguarde...</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="TWi_loading">Carregando...</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.
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
@ -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="tmrw">Amanhã</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_wait">Por favor aguarde...</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="TWi_loading">Загрузка...</string>
<string name="WCA_title">Выберите задачи для просмотра…</string>
<string name="DB_corrupted_title">Поврежденная база данных</string>
<string name="DB_corrupted_body">Упс! Похоже, ваша база данных повреждена.
Если вы получаете эту ошибку регулярно, рекомендуется стереть
все данные (Параметры-&gt;Синхронизация-&gt;Управление старыми задачами-&gt;Очистить все данные) и восстановить
@ -364,7 +363,6 @@
<string name="yesterday">Вчера</string>
<string name="tmrw">Завт</string>
<string name="yest">Вчера</string>
<string name="DLG_information_title">Информация</string>
<string name="DLG_error">Ой, похоже произошла ошибка! Подробности ниже:\n\n%s</string>
<string name="DLG_wait">Пожалуйста, подождите…</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="TWi_loading">Načítavanie</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
(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>
@ -362,7 +361,6 @@
<string name="yesterday">Včera</string>
<string name="tmrw">Zajtra</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_wait">Prosím čakaj...</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="TWi_loading">Nalagam...</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="EPr_default_urgency_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="tmrw">Jutr</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_wait">Prosimo, počakajte...</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="TWi_loading">Laddar...</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.
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)

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

@ -142,7 +142,6 @@
<string name="EPr_manage_delete_all_gcal_status">%d takvim olayı silindi!</string>
<string name="TWi_loading">Yükleniyor...</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.
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
@ -320,7 +319,6 @@
<string name="yesterday">Dün</string>
<string name="tmrw">Yarı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_wait">Lütfen bekleyin...</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="TWi_loading">Завантаження...</string>
<string name="WCA_title">Виберіть завдання для перегляду...</string>
<string name="DB_corrupted_title">Пошкоджена база данних</string>
<string name="DB_corrupted_body">Ой! Схоже, ваша база даних пошкоджена.
Якщо ви отримуєте цю помилку регулярно,
рекомендується стерти всі дані (Параметри-&gt;
@ -341,7 +340,6 @@
<string name="yesterday">Вчора</string>
<string name="tmrw">Завт.</string>
<string name="yest">Вчор.</string>
<string name="DLG_information_title">Інформація</string>
<string name="DLG_error">На жаль, схоже, сталася помилка! Ось що вийшло:\n\n%s</string>
<string name="DLG_wait">Будь ласка, зачекайте...</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="TWi_loading">载入中...</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="EPr_default_urgency_title">默认截止期</string>
<string name="EPr_default_hideUntil_title">默认隐藏直到</string>
@ -299,7 +298,6 @@
<string name="yesterday">昨天</string>
<string name="tmrw">明天</string>
<string name="yest">昨天</string>
<string name="DLG_information_title">信息</string>
<string name="DLG_error">糟糕,发生错误!状况是:\n\n%s</string>
<string name="DLG_wait">请稍候...</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="TWi_loading">載入中...</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="EPr_default_urgency_title">預設嚴重性</string>
<string name="EPr_default_importance_title">預設優先權</string>
@ -336,7 +335,6 @@
<string name="yesterday">昨天</string>
<string name="tmrw">明天</string>
<string name="yest">昨天</string>
<string name="DLG_information_title">資訊</string>
<string name="DLG_error">糟糕,發生錯誤!狀況是:\n\n%s</string>
<string name="DLG_wait">請稍候...</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_discard" 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">
<attr name="shortcutLabels" format="reference" />

@ -392,8 +392,6 @@
<!-- ============================================================= Misc == -->
<string name="DB_corrupted_title">Corrupted Database</string>
<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

@ -31,9 +31,6 @@
<!-- ================================================== Generic Dialogs == -->
<!-- information dialog title -->
<string name="DLG_information_title">Information</string>
<!-- error dialog (%s => error message)-->
<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>
</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>

@ -67,7 +67,7 @@
<item name="ic_action_discard">@drawable/ic_close_white_24dp</item>
</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="colorPrimaryDark">@color/primary_dark</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_filter">@drawable/ic_filter_list_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>
</resources>
Loading…
Cancel
Save