|
|
@ -3,6 +3,7 @@
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
package com.todoroo.astrid.activity;
|
|
|
|
package com.todoroo.astrid.activity;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import android.app.AlertDialog;
|
|
|
|
import android.app.ExpandableListActivity;
|
|
|
|
import android.app.ExpandableListActivity;
|
|
|
|
import android.app.SearchManager;
|
|
|
|
import android.app.SearchManager;
|
|
|
|
import android.content.BroadcastReceiver;
|
|
|
|
import android.content.BroadcastReceiver;
|
|
|
@ -10,18 +11,21 @@ import android.content.Context;
|
|
|
|
import android.content.DialogInterface;
|
|
|
|
import android.content.DialogInterface;
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.content.IntentFilter;
|
|
|
|
import android.content.IntentFilter;
|
|
|
|
|
|
|
|
import android.graphics.Bitmap;
|
|
|
|
|
|
|
|
import android.graphics.Canvas;
|
|
|
|
import android.graphics.drawable.BitmapDrawable;
|
|
|
|
import android.graphics.drawable.BitmapDrawable;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.os.Parcelable;
|
|
|
|
import android.os.Parcelable;
|
|
|
|
import android.view.ContextMenu;
|
|
|
|
import android.view.ContextMenu;
|
|
|
|
|
|
|
|
import android.view.ContextMenu.ContextMenuInfo;
|
|
|
|
import android.view.Menu;
|
|
|
|
import android.view.Menu;
|
|
|
|
import android.view.MenuItem;
|
|
|
|
import android.view.MenuItem;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.ContextMenu.ContextMenuInfo;
|
|
|
|
|
|
|
|
import android.widget.EditText;
|
|
|
|
import android.widget.EditText;
|
|
|
|
import android.widget.ExpandableListView;
|
|
|
|
import android.widget.ExpandableListView;
|
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
|
|
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
|
|
|
|
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
|
|
|
|
|
|
|
|
import android.widget.FrameLayout;
|
|
|
|
|
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
|
|
|
|
|
|
import com.flurry.android.FlurryAgent;
|
|
|
|
import com.flurry.android.FlurryAgent;
|
|
|
|
import com.timsu.astrid.R;
|
|
|
|
import com.timsu.astrid.R;
|
|
|
@ -272,7 +276,9 @@ public class FilterListActivity extends ExpandableListActivity {
|
|
|
|
menuItem = menu.add(0, CONTEXT_MENU_SHORTCUT, 0, R.string.FLA_context_shortcut);
|
|
|
|
menuItem = menu.add(0, CONTEXT_MENU_SHORTCUT, 0, R.string.FLA_context_shortcut);
|
|
|
|
Intent shortcutIntent = new Intent(this, TaskListActivity.class);
|
|
|
|
Intent shortcutIntent = new Intent(this, TaskListActivity.class);
|
|
|
|
shortcutIntent.setAction(Intent.ACTION_VIEW);
|
|
|
|
shortcutIntent.setAction(Intent.ACTION_VIEW);
|
|
|
|
shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER, filter);
|
|
|
|
shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER_TITLE, filter.title);
|
|
|
|
|
|
|
|
shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER_SQL, filter.sqlQuery);
|
|
|
|
|
|
|
|
shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER_VALUES, filter.valuesForNewTasks);
|
|
|
|
menuItem.setIntent(shortcutIntent);
|
|
|
|
menuItem.setIntent(shortcutIntent);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -287,6 +293,44 @@ public class FilterListActivity extends ExpandableListActivity {
|
|
|
|
menu.setHeaderTitle(item.listingTitle);
|
|
|
|
menu.setHeaderTitle(item.listingTitle);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Creates a shortcut on the user's home screen
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param shortcutIntent
|
|
|
|
|
|
|
|
* @param label
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private void createShortcut(Filter filter, Intent shortcutIntent, String label) {
|
|
|
|
|
|
|
|
Bitmap emblem = filter.listingIcon;
|
|
|
|
|
|
|
|
if(emblem == null)
|
|
|
|
|
|
|
|
emblem = ((BitmapDrawable) getResources().getDrawable(
|
|
|
|
|
|
|
|
R.drawable.filter_tags1)).getBitmap();
|
|
|
|
|
|
|
|
// create icon by superimposing astrid w/ icon
|
|
|
|
|
|
|
|
Bitmap bitmap = ((BitmapDrawable) getResources().getDrawable(
|
|
|
|
|
|
|
|
R.drawable.icon_blank)).getBitmap();
|
|
|
|
|
|
|
|
bitmap = bitmap.copy(bitmap.getConfig(), true);
|
|
|
|
|
|
|
|
Canvas canvas = new Canvas(bitmap);
|
|
|
|
|
|
|
|
canvas.drawBitmap(emblem, Math.max(0, bitmap.getWidth() -
|
|
|
|
|
|
|
|
emblem.getWidth()), Math.max(0, bitmap.getHeight() -
|
|
|
|
|
|
|
|
emblem.getHeight()), null);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Intent createShortcutIntent = new Intent();
|
|
|
|
|
|
|
|
createShortcutIntent.putExtra(
|
|
|
|
|
|
|
|
Intent.EXTRA_SHORTCUT_INTENT,
|
|
|
|
|
|
|
|
shortcutIntent);
|
|
|
|
|
|
|
|
createShortcutIntent.putExtra(
|
|
|
|
|
|
|
|
Intent.EXTRA_SHORTCUT_NAME, label);
|
|
|
|
|
|
|
|
createShortcutIntent.putExtra(
|
|
|
|
|
|
|
|
Intent.EXTRA_SHORTCUT_ICON, bitmap);
|
|
|
|
|
|
|
|
createShortcutIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); //$NON-NLS-1$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sendBroadcast(createShortcutIntent);
|
|
|
|
|
|
|
|
Toast.makeText(
|
|
|
|
|
|
|
|
FilterListActivity.this,
|
|
|
|
|
|
|
|
getString(
|
|
|
|
|
|
|
|
R.string.FLA_toast_onCreateShortcut,
|
|
|
|
|
|
|
|
label), Toast.LENGTH_LONG).show();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public boolean onMenuItemSelected(int featureId, final MenuItem item) {
|
|
|
|
public boolean onMenuItemSelected(int featureId, final MenuItem item) {
|
|
|
|
|
|
|
|
|
|
|
@ -306,37 +350,29 @@ public class FilterListActivity extends ExpandableListActivity {
|
|
|
|
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo)item.getMenuInfo();
|
|
|
|
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo)item.getMenuInfo();
|
|
|
|
|
|
|
|
|
|
|
|
final Intent shortcutIntent = item.getIntent();
|
|
|
|
final Intent shortcutIntent = item.getIntent();
|
|
|
|
Filter filter = (Filter)info.targetView.getTag();
|
|
|
|
final Filter filter = (Filter)info.targetView.getTag();
|
|
|
|
|
|
|
|
|
|
|
|
String dialogText = getString(R.string.FLA_shortcut_dialog);
|
|
|
|
FrameLayout frameLayout = new FrameLayout(this);
|
|
|
|
|
|
|
|
frameLayout.setPadding(10, 0, 10, 0);
|
|
|
|
final EditText editText = new EditText(this);
|
|
|
|
final EditText editText = new EditText(this);
|
|
|
|
editText.setText(filter.listingTitle);
|
|
|
|
editText.setText(filter.listingTitle);
|
|
|
|
|
|
|
|
frameLayout.addView(editText, new FrameLayout.LayoutParams(
|
|
|
|
dialogUtilities.viewDialog(this, dialogText, editText,
|
|
|
|
FrameLayout.LayoutParams.FILL_PARENT,
|
|
|
|
new DialogInterface.OnClickListener() {
|
|
|
|
FrameLayout.LayoutParams.WRAP_CONTENT));
|
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
|
|
|
|
|
String label = editText.getText().toString();
|
|
|
|
new AlertDialog.Builder(this)
|
|
|
|
|
|
|
|
.setTitle(R.string.FLA_shortcut_dialog_title)
|
|
|
|
Intent createShortcutIntent = new Intent();
|
|
|
|
.setMessage(R.string.FLA_shortcut_dialog)
|
|
|
|
createShortcutIntent.putExtra(
|
|
|
|
.setView(frameLayout)
|
|
|
|
Intent.EXTRA_SHORTCUT_INTENT,
|
|
|
|
.setIcon(android.R.drawable.ic_dialog_info)
|
|
|
|
shortcutIntent);
|
|
|
|
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
|
|
|
createShortcutIntent.putExtra(
|
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
|
Intent.EXTRA_SHORTCUT_NAME, label);
|
|
|
|
String label = editText.getText().toString();
|
|
|
|
createShortcutIntent.putExtra(
|
|
|
|
createShortcut(filter, shortcutIntent, label);
|
|
|
|
Intent.EXTRA_SHORTCUT_ICON,
|
|
|
|
}
|
|
|
|
((BitmapDrawable) getResources().getDrawable(
|
|
|
|
})
|
|
|
|
R.drawable.icon_tag)).getBitmap());
|
|
|
|
.setNegativeButton(android.R.string.cancel, null)
|
|
|
|
createShortcutIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); //$NON-NLS-1$
|
|
|
|
.show();
|
|
|
|
|
|
|
|
|
|
|
|
sendBroadcast(createShortcutIntent);
|
|
|
|
|
|
|
|
Toast.makeText(
|
|
|
|
|
|
|
|
FilterListActivity.this,
|
|
|
|
|
|
|
|
getString(
|
|
|
|
|
|
|
|
R.string.FLA_toast_onCreateShortcut,
|
|
|
|
|
|
|
|
label), Toast.LENGTH_LONG).show();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, null);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|