Merge remote-tracking branch 'upstream/master' into 120712_sb_in_app_billing
@ -0,0 +1,59 @@
|
||||
package com.todoroo.astrid.people;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.timsu.astrid.R;
|
||||
import com.todoroo.astrid.activity.FilterListFragment;
|
||||
import com.todoroo.astrid.activity.FilterModeSpec;
|
||||
import com.todoroo.astrid.activity.TaskListFragment;
|
||||
import com.todoroo.astrid.api.Filter;
|
||||
import com.todoroo.astrid.api.FilterListItem;
|
||||
import com.todoroo.astrid.api.FilterWithUpdate;
|
||||
import com.todoroo.astrid.helper.AsyncImageView;
|
||||
import com.todoroo.astrid.ui.MainMenuPopover;
|
||||
|
||||
public class PeopleFilterMode implements FilterModeSpec {
|
||||
|
||||
private AsyncImageView imageView;
|
||||
|
||||
@Override
|
||||
public Filter getDefaultFilter(Context context) {
|
||||
Filter defaultFilter = PeopleFilterExposer.mySharedTasks(context);
|
||||
return defaultFilter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends FilterListFragment> getFilterListClass() {
|
||||
return PeopleListFragment.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFilterItemClickedCallback(FilterListItem item) {
|
||||
if (imageView == null)
|
||||
return;
|
||||
if (item instanceof FilterWithUpdate)
|
||||
imageView.setUrl(((FilterWithUpdate) item).imageUrl);
|
||||
else
|
||||
imageView.setUrl(null);
|
||||
}
|
||||
|
||||
public void setImageView(AsyncImageView imageView) {
|
||||
this.imageView = imageView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getForbiddenMenuItems() {
|
||||
return FORBIDDEN_MENU_ITEMS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMainMenuIconAttr() {
|
||||
return R.attr.asPeopleMenu;
|
||||
}
|
||||
|
||||
private static final int[] FORBIDDEN_MENU_ITEMS = {
|
||||
TaskListFragment.MENU_NEW_FILTER_ID,
|
||||
TaskListFragment.MENU_ADDONS_ID,
|
||||
MainMenuPopover.MAIN_MENU_ITEM_FRIENDS
|
||||
};
|
||||
}
|
@ -1,85 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2012 Todoroo Inc
|
||||
*
|
||||
* See the file "LICENSE" for the full license governing this code.
|
||||
*/
|
||||
package com.todoroo.astrid.people;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.timsu.astrid.R;
|
||||
import com.todoroo.andlib.utility.AndroidUtilities;
|
||||
import com.todoroo.astrid.activity.FilterListFragment;
|
||||
import com.todoroo.astrid.activity.TaskListActivity;
|
||||
import com.todoroo.astrid.activity.TaskListFragment;
|
||||
import com.todoroo.astrid.api.Filter;
|
||||
import com.todoroo.astrid.api.FilterListItem;
|
||||
import com.todoroo.astrid.api.FilterWithUpdate;
|
||||
import com.todoroo.astrid.helper.AsyncImageView;
|
||||
import com.todoroo.astrid.ui.MainMenuPopover;
|
||||
|
||||
public class PeopleViewActivity extends TaskListActivity {
|
||||
|
||||
private AsyncImageView imageView;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
imageView = (AsyncImageView) findViewById(R.id.person_image);
|
||||
imageView.setDefaultImageResource(R.drawable.icn_default_person_image);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getContentView() {
|
||||
return R.layout.people_view_wrapper_activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Filter getDefaultFilter() {
|
||||
Filter defaultFilter = PeopleFilterExposer.mySharedTasks(this);
|
||||
return defaultFilter;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class<? extends FilterListFragment> getFilterListClass() {
|
||||
return PeopleListFragment.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getHeaderView() {
|
||||
return R.layout.header_people_view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onFilterItemClicked(FilterListItem item) {
|
||||
boolean result = super.onFilterItemClicked(item);
|
||||
if (result && item instanceof FilterWithUpdate)
|
||||
imageView.setUrl(((FilterWithUpdate) item).imageUrl);
|
||||
else
|
||||
imageView.setUrl(null);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static final int[] FORBIDDEN_MENU_ITEMS = {
|
||||
TaskListFragment.MENU_NEW_FILTER_ID,
|
||||
TaskListFragment.MENU_ADDONS_ID,
|
||||
MainMenuPopover.MAIN_MENU_ITEM_FRIENDS
|
||||
};
|
||||
|
||||
@Override
|
||||
public boolean shouldAddMenuItem(int itemId) {
|
||||
return AndroidUtilities.indexOf(FORBIDDEN_MENU_ITEMS, itemId) < 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mainMenuItemSelected(int item, Intent customIntent) {
|
||||
if (item == MainMenuPopover.MAIN_MENU_ITEM_LISTS) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
super.mainMenuItemSelected(item, customIntent);
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package com.todoroo.astrid.tags.reusable;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.widget.ListView;
|
||||
|
||||
import com.todoroo.astrid.adapter.FilterAdapter;
|
||||
import com.todoroo.astrid.utility.Constants;
|
||||
|
||||
public class FeaturedListFilterAdapter extends FilterAdapter {
|
||||
public static final String BROADCAST_REQUEST_FEATURED_LISTS = Constants.PACKAGE + ".REQUEST_FEATURED_LISTS"; //$NON-NLS-1$
|
||||
public static final String BROADCAST_SEND_FEATURED_LISTS = Constants.PACKAGE + ".SEND_FEATURED_LISTS"; //$NON-NLS-1$
|
||||
|
||||
public FeaturedListFilterAdapter(Activity activity, ListView listView,
|
||||
int rowLayout, boolean skipIntentFilters) {
|
||||
super(activity, listView, rowLayout, skipIntentFilters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getLists() {
|
||||
Intent broadcastIntent = new Intent(BROADCAST_REQUEST_FEATURED_LISTS);
|
||||
activity.sendBroadcast(broadcastIntent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerRecevier() {
|
||||
IntentFilter peopleFilter = new IntentFilter(BROADCAST_SEND_FEATURED_LISTS);
|
||||
activity.registerReceiver(filterReceiver, peopleFilter);
|
||||
getLists();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterRecevier() {
|
||||
activity.unregisterReceiver(filterReceiver);
|
||||
}
|
||||
}
|
@ -0,0 +1,102 @@
|
||||
package com.todoroo.astrid.tags.reusable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.todoroo.andlib.data.TodorooCursor;
|
||||
import com.todoroo.andlib.service.ContextManager;
|
||||
import com.todoroo.andlib.sql.Criterion;
|
||||
import com.todoroo.andlib.sql.Functions;
|
||||
import com.todoroo.andlib.sql.Order;
|
||||
import com.todoroo.andlib.sql.Query;
|
||||
import com.todoroo.andlib.sql.QueryTemplate;
|
||||
import com.todoroo.astrid.actfm.TagViewFragment;
|
||||
import com.todoroo.astrid.api.AstridApiConstants;
|
||||
import com.todoroo.astrid.api.Filter;
|
||||
import com.todoroo.astrid.api.FilterListItem;
|
||||
import com.todoroo.astrid.api.FilterWithCustomIntent;
|
||||
import com.todoroo.astrid.api.FilterWithUpdate;
|
||||
import com.todoroo.astrid.core.PluginServices;
|
||||
import com.todoroo.astrid.data.Metadata;
|
||||
import com.todoroo.astrid.data.TagData;
|
||||
import com.todoroo.astrid.data.TaskApiDao.TaskCriteria;
|
||||
import com.todoroo.astrid.tags.TagFilterExposer;
|
||||
import com.todoroo.astrid.tags.TagService;
|
||||
import com.todoroo.astrid.tags.TagService.Tag;
|
||||
|
||||
public class FeaturedListFilterExposer extends TagFilterExposer {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
addUntaggedFilter = false;
|
||||
FilterListItem[] listAsArray = prepareFilters(context);
|
||||
|
||||
Intent broadcastIntent = new Intent(FeaturedListFilterAdapter.BROADCAST_SEND_FEATURED_LISTS);
|
||||
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, listAsArray);
|
||||
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
|
||||
}
|
||||
|
||||
private static FilterWithCustomIntent filterFromFeaturedList(Tag tag, Criterion criterion) {
|
||||
String title = tag.tag;
|
||||
QueryTemplate tagTemplate = tag.queryTemplate(criterion);
|
||||
ContentValues contentValues = new ContentValues();
|
||||
contentValues.put(Metadata.KEY.name, TagService.KEY);
|
||||
contentValues.put(TagService.TAG.name, tag.tag);
|
||||
|
||||
FilterWithUpdate filter = new FilterWithUpdate(tag.tag,
|
||||
title, tagTemplate,
|
||||
contentValues);
|
||||
|
||||
Class<?> fragmentClass = FeaturedTaskListFragment.class;
|
||||
filter.customTaskList = new ComponentName(ContextManager.getContext(), fragmentClass);
|
||||
if(tag.image != null)
|
||||
filter.imageUrl = tag.image;
|
||||
|
||||
Bundle extras = new Bundle();
|
||||
extras.putString(TagViewFragment.EXTRA_TAG_NAME, tag.tag);
|
||||
extras.putLong(TagViewFragment.EXTRA_TAG_REMOTE_ID, tag.remoteId);
|
||||
filter.customExtras = extras;
|
||||
|
||||
return filter;
|
||||
}
|
||||
|
||||
public static Filter getDefaultFilter() {
|
||||
TodorooCursor<TagData> firstFilter = PluginServices.getTagDataService()
|
||||
.query(Query.select(TagData.PROPERTIES)
|
||||
.where(Criterion.and(
|
||||
Functions.bitwiseAnd(TagData.FLAGS, TagData.FLAG_FEATURED).gt(0),
|
||||
TagData.DELETION_DATE.eq(0),
|
||||
TagData.NAME.isNotNull(),
|
||||
TagData.NAME.neq(""))) //$NON-NLS-1$
|
||||
.orderBy(Order.asc(TagData.NAME))
|
||||
.limit(1));
|
||||
try {
|
||||
if (firstFilter.getCount() > 0) {
|
||||
firstFilter.moveToFirst();
|
||||
TagData tagData = new TagData(firstFilter);
|
||||
Tag tag = new Tag(tagData);
|
||||
return filterFromFeaturedList(tag, TaskCriteria.activeAndVisible());
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} finally {
|
||||
firstFilter.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Filter constructFilter(Context context, Tag tag) {
|
||||
return filterFromFeaturedList(tag, TaskCriteria.activeAndVisible());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Tag> getTagList() {
|
||||
return TagService.getInstance().getFeaturedLists();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package com.todoroo.astrid.tags.reusable;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.timsu.astrid.R;
|
||||
import com.todoroo.astrid.activity.FilterListFragment;
|
||||
import com.todoroo.astrid.activity.FilterModeSpec;
|
||||
import com.todoroo.astrid.activity.TaskListFragment;
|
||||
import com.todoroo.astrid.api.Filter;
|
||||
import com.todoroo.astrid.api.FilterListItem;
|
||||
import com.todoroo.astrid.core.CoreFilterExposer;
|
||||
import com.todoroo.astrid.ui.MainMenuPopover;
|
||||
|
||||
public class FeaturedListFilterMode implements FilterModeSpec {
|
||||
|
||||
@Override
|
||||
public int[] getForbiddenMenuItems() {
|
||||
return FORBIDDEN_MENU_ITEMS;
|
||||
}
|
||||
|
||||
private static final int[] FORBIDDEN_MENU_ITEMS = {
|
||||
TaskListFragment.MENU_NEW_FILTER_ID,
|
||||
TaskListFragment.MENU_ADDONS_ID,
|
||||
MainMenuPopover.MAIN_MENU_ITEM_FEATURED_LISTS
|
||||
};
|
||||
|
||||
@Override
|
||||
public Class<? extends FilterListFragment> getFilterListClass() {
|
||||
return FeaturedListFragment.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filter getDefaultFilter(Context context) {
|
||||
Filter defaultFilter = FeaturedListFilterExposer.getDefaultFilter();
|
||||
if (defaultFilter == null)
|
||||
return CoreFilterExposer.buildInboxFilter(context.getResources());
|
||||
else
|
||||
return defaultFilter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMainMenuIconAttr() {
|
||||
return R.attr.asMainMenu;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFilterItemClickedCallback(FilterListItem item) {
|
||||
//
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package com.todoroo.astrid.tags.reusable;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.timsu.astrid.R;
|
||||
import com.todoroo.andlib.utility.AndroidUtilities;
|
||||
import com.todoroo.astrid.activity.FilterListFragment;
|
||||
import com.todoroo.astrid.adapter.FilterAdapter;
|
||||
|
||||
public class FeaturedListFragment extends FilterListFragment {
|
||||
|
||||
@Override
|
||||
protected FilterAdapter instantiateAdapter() {
|
||||
return new FeaturedListFilterAdapter(getActivity(), null, R.layout.filter_adapter_row, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayout(Activity activity) {
|
||||
if (AndroidUtilities.isTabletSized(activity))
|
||||
return R.layout.filter_list_fragment_alternative_3pane;
|
||||
else
|
||||
return R.layout.filter_list_fragment_alternative;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,113 @@
|
||||
package com.todoroo.astrid.tags.reusable;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.ProgressDialog;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.timsu.astrid.R;
|
||||
import com.todoroo.andlib.data.TodorooCursor;
|
||||
import com.todoroo.andlib.service.Autowired;
|
||||
import com.todoroo.andlib.sql.Query;
|
||||
import com.todoroo.andlib.utility.DialogUtilities;
|
||||
import com.todoroo.astrid.actfm.TagViewFragment;
|
||||
import com.todoroo.astrid.adapter.TaskAdapter;
|
||||
import com.todoroo.astrid.data.TagData;
|
||||
import com.todoroo.astrid.data.Task;
|
||||
import com.todoroo.astrid.service.TagDataService;
|
||||
import com.todoroo.astrid.utility.Flags;
|
||||
|
||||
public class FeaturedTaskListFragment extends TagViewFragment {
|
||||
|
||||
@Autowired private TagDataService tagDataService;
|
||||
|
||||
@Override
|
||||
protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) {
|
||||
return new ReusableTaskAdapter(this, R.layout.reusable_task_adapter_row,
|
||||
cursor, sqlQueryTemplate, false, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setupQuickAddBar() {
|
||||
super.setupQuickAddBar();
|
||||
quickAddBar.setVisibility(View.GONE);
|
||||
((TextView) getView().findViewById(android.R.id.empty)).setOnClickListener(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTaskListItemClicked(long taskId) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getTaskListBodyLayout() {
|
||||
return R.layout.task_list_body_featured_list;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setUpMembersGallery() {
|
||||
// Repurposed this method to set up listener for clone list button
|
||||
View clone = getView().findViewById(R.id.clone_list);
|
||||
clone.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// Clone list
|
||||
if (taskAdapter == null || taskAdapter.getCount() == 0) {
|
||||
Toast.makeText(getActivity(), R.string.actfm_feat_list_clone_empty, Toast.LENGTH_LONG).show();
|
||||
return;
|
||||
}
|
||||
final String localName = tagData.getValue(TagData.NAME) + " " + getString(R.string.actfm_feat_list_suffix); //$NON-NLS-1$
|
||||
long remoteId = 0;
|
||||
TodorooCursor<TagData> existing = tagDataService.query(Query.select(TagData.REMOTE_ID)
|
||||
.where(TagData.NAME.eqCaseInsensitive(localName)));
|
||||
try {
|
||||
if (existing.getCount() > 0) {
|
||||
existing.moveToFirst();
|
||||
TagData match = new TagData(existing);
|
||||
remoteId = match.getValue(TagData.REMOTE_ID);
|
||||
}
|
||||
|
||||
} finally {
|
||||
existing.close();
|
||||
}
|
||||
|
||||
final ProgressDialog pd = DialogUtilities.progressDialog(getActivity(), getString(R.string.actfm_feat_list_cloning));
|
||||
|
||||
final long finalRemoteId = remoteId;
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
TodorooCursor<Task> tasks = taskService.fetchFiltered(taskAdapter.getQuery(), null, Task.PROPERTIES);
|
||||
try {
|
||||
Task t = new Task();
|
||||
for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) {
|
||||
t.readFromCursor(tasks);
|
||||
taskService.cloneReusableTask(t,
|
||||
localName, finalRemoteId);
|
||||
}
|
||||
Activity activity = getActivity();
|
||||
if (activity != null) {
|
||||
DialogUtilities.dismissDialog(activity, pd);
|
||||
DialogUtilities.okDialog(activity, getString(R.string.actfm_feat_list_clone_success), null);
|
||||
}
|
||||
|
||||
Flags.set(Flags.REFRESH);
|
||||
} finally {
|
||||
tasks.close();
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void refresh() {
|
||||
loadTaskListContent(true);
|
||||
((TextView)taskListView.findViewById(android.R.id.empty)).setText(R.string.TLA_no_items);
|
||||
setUpMembersGallery();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,84 @@
|
||||
package com.todoroo.astrid.tags.reusable;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.timsu.astrid.R;
|
||||
import com.todoroo.andlib.data.TodorooCursor;
|
||||
import com.todoroo.andlib.utility.Preferences;
|
||||
import com.todoroo.astrid.activity.TaskListFragment;
|
||||
import com.todoroo.astrid.adapter.TaskAdapter;
|
||||
import com.todoroo.astrid.data.Task;
|
||||
import com.todoroo.astrid.utility.Flags;
|
||||
|
||||
public class ReusableTaskAdapter extends TaskAdapter {
|
||||
|
||||
public ReusableTaskAdapter(TaskListFragment fragment, int resource,
|
||||
Cursor c, AtomicReference<String> query, boolean autoRequery,
|
||||
OnCompletedTaskListener onCompletedTaskListener) {
|
||||
super(fragment, resource, c, query, autoRequery, onCompletedTaskListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View newView(Context context, Cursor cursor, ViewGroup parent) {
|
||||
ViewGroup view = (ViewGroup)inflater.inflate(resource, parent, false);
|
||||
|
||||
ReusableTaskViewHolder viewHolder = new ReusableTaskViewHolder();
|
||||
viewHolder.task = new Task();
|
||||
viewHolder.clone = (ImageView) view.findViewById(R.id.clone_task);
|
||||
viewHolder.title = (TextView) view.findViewById(R.id.title);
|
||||
|
||||
boolean showFullTaskTitle = Preferences.getBoolean(R.string.p_fullTaskTitle, false);
|
||||
if (showFullTaskTitle) {
|
||||
viewHolder.title.setMaxLines(Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
view.setTag(viewHolder);
|
||||
for(int i = 0; i < view.getChildCount(); i++)
|
||||
view.getChildAt(i).setTag(viewHolder);
|
||||
|
||||
viewHolder.clone.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
ReusableTaskViewHolder holder = (ReusableTaskViewHolder) v.getTag();
|
||||
taskService.cloneReusableTask(holder.task, null, 0);
|
||||
Toast.makeText(fragment.getActivity(), R.string.actfm_feat_list_task_clone_success, Toast.LENGTH_LONG).show();
|
||||
Flags.set(Flags.REFRESH);
|
||||
}
|
||||
});
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bindView(View view, Context context, Cursor c) {
|
||||
TodorooCursor<Task> cursor = (TodorooCursor<Task>)c;
|
||||
ReusableTaskViewHolder viewHolder = (ReusableTaskViewHolder) view.getTag();
|
||||
|
||||
Task task = viewHolder.task;
|
||||
task.clear();
|
||||
task.readFromCursor(cursor);
|
||||
|
||||
viewHolder.title.setText(task.getValue(Task.TITLE));
|
||||
if (Preferences.getBoolean(R.string.p_allowCompressedTaskRows, false)) {
|
||||
view.setMinimumHeight(0);
|
||||
} else {
|
||||
view.setMinimumHeight(minRowHeight);
|
||||
}
|
||||
}
|
||||
|
||||
public static class ReusableTaskViewHolder {
|
||||
public Task task;
|
||||
public ImageView clone;
|
||||
public TextView title;
|
||||
}
|
||||
|
||||
}
|
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.6 KiB |
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
<item android:state_pressed="true"
|
||||
android:drawable="@drawable/icn_clone_down" />
|
||||
<item android:drawable="@drawable/icn_clone_up" />
|
||||
|
||||
</selector>
|
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.2 KiB |
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" >
|
||||
<fragment
|
||||
android:name="com.todoroo.astrid.tags.reusable.FeaturedListFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:tag="filterlist_fragment">
|
||||
</fragment>
|
||||
</FrameLayout>
|
@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- See the file "LICENSE" for the full license governing this code. -->
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:astrid="http://schemas.android.com/apk/res/com.timsu.astrid"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@android:drawable/list_selector_background"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/clone_task"
|
||||
android:layout_width="45dip"
|
||||
android:layout_height="45dip"
|
||||
android:layout_centerVertical="true"
|
||||
android:src="@drawable/btn_clone"
|
||||
android:scaleType="fitCenter"
|
||||
android:padding="6dip"/>
|
||||
|
||||
<!-- task name -->
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
style="@style/TextAppearance.TAd_ItemTitle"
|
||||
android:layout_marginLeft="3dip"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="100"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="2" />
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="100">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="43dip"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:background="?attr/asMembersHeaderBackground">
|
||||
<TextView
|
||||
android:id="@+id/clone_list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:gravity="center"
|
||||
style="@style/TextAppearance"
|
||||
android:textStyle="bold"
|
||||
android:textColor="#333333"
|
||||
android:text="@string/actfm_feat_list_clone"/>
|
||||
<ImageView
|
||||
android:id="@+id/members_edit"
|
||||
android:layout_width="43dip"
|
||||
android:layout_height="43dip"
|
||||
android:padding="5dip"
|
||||
android:layout_weight="1"
|
||||
android:src="@drawable/list_settings"
|
||||
android:scaleType="fitCenter"
|
||||
android:visibility="gone"/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/filter_assigned"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:paddingTop="3dip"
|
||||
android:paddingBottom="3dip"
|
||||
style="@style/TextAppearance"
|
||||
android:background="@android:color/darker_gray"
|
||||
android:visibility="gone"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<!-- List body goes here -->
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,42 @@
|
||||
package com.todoroo.astrid.activity;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.timsu.astrid.R;
|
||||
import com.todoroo.andlib.utility.Preferences;
|
||||
import com.todoroo.astrid.api.Filter;
|
||||
import com.todoroo.astrid.api.FilterListItem;
|
||||
import com.todoroo.astrid.core.CoreFilterExposer;
|
||||
import com.todoroo.astrid.ui.MainMenuPopover;
|
||||
|
||||
public class DefaultFilterMode implements FilterModeSpec {
|
||||
|
||||
@Override
|
||||
public int[] getForbiddenMenuItems() {
|
||||
if (Preferences.getBoolean(R.string.p_show_featured_lists_labs, false))
|
||||
return new int[0];
|
||||
else
|
||||
return new int[] { MainMenuPopover.MAIN_MENU_ITEM_FEATURED_LISTS };
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends FilterListFragment> getFilterListClass() {
|
||||
return FilterListFragment.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filter getDefaultFilter(Context context) {
|
||||
return CoreFilterExposer.buildInboxFilter(context.getResources());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMainMenuIconAttr() {
|
||||
return R.attr.asMainMenu;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFilterItemClickedCallback(FilterListItem item) {
|
||||
//
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package com.todoroo.astrid.activity;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.todoroo.astrid.api.Filter;
|
||||
import com.todoroo.astrid.api.FilterListItem;
|
||||
|
||||
|
||||
public interface FilterModeSpec {
|
||||
|
||||
public int[] getForbiddenMenuItems();
|
||||
public Class<? extends FilterListFragment> getFilterListClass();
|
||||
public Filter getDefaultFilter(Context context);
|
||||
public int getMainMenuIconAttr();
|
||||
public void onFilterItemClickedCallback(FilterListItem item);
|
||||
|
||||
}
|