Featured lists fragment now mostly working, needs polish

pull/14/head
Sam Bosley 14 years ago
parent fb51a7334c
commit ba80ac686c

@ -96,8 +96,6 @@ public class TagViewFragment extends TaskListFragment {
private Filter originalFilter;
//private ImageAdapter galleryAdapter;
// --- UI initialization
@Override
@ -142,7 +140,7 @@ public class TagViewFragment extends TaskListFragment {
*/
@Override
protected View getListBody(ViewGroup root) {
ViewGroup parent = (ViewGroup) getActivity().getLayoutInflater().inflate(R.layout.task_list_body_tag, root, false);
ViewGroup parent = (ViewGroup) getActivity().getLayoutInflater().inflate(getTaskListBodyLayout(), root, false);
taskListView = super.getListBody(parent);
parent.addView(taskListView);
@ -150,6 +148,10 @@ public class TagViewFragment extends TaskListFragment {
return parent;
}
protected int getTaskListBodyLayout() {
return R.layout.task_list_body_tag;
}
private void showListSettingsPopover() {
if (!AstridPreferences.canShowPopover())
return;
@ -295,7 +297,7 @@ public class TagViewFragment extends TaskListFragment {
Preferences.setLong(LAST_FETCH_KEY + tagData.getId(), DateUtilities.now());
}
private void setUpMembersGallery() {
protected void setUpMembersGallery() {
LinearLayout membersView = (LinearLayout)getView().findViewById(R.id.shared_with);
membersView.setOnClickListener(settingsListener);
try {

@ -63,6 +63,8 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
@Autowired TagDataService tagDataService;
@Autowired GtasksPreferenceService gtasksPreferenceService;
protected boolean addUntaggedFilter = true;
/** Create filter from new tag object */
@SuppressWarnings("nls")
public static FilterWithCustomIntent filterFromTag(Context context, Tag tag, Criterion criterion) {
@ -165,7 +167,8 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
}
private FilterCategory filterFromTags(Tag[] tags, int name) {
Filter[] filters = new Filter[tags.length + 1];
int length = addUntaggedFilter ? tags.length + 1 : tags.length;
Filter[] filters = new Filter[length];
Context context = ContextManager.getContext();
Resources r = context.getResources();
@ -174,6 +177,7 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
int themeFlags = isTablet ? ThemeService.FLAG_FORCE_LIGHT : 0;
// --- untagged
if (addUntaggedFilter) {
int untaggedLabel = gtasksPreferenceService.isLoggedIn() ?
R.string.tag_FEx_untagged_w_astrid : R.string.tag_FEx_untagged;
Filter untagged = new Filter(r.getString(untaggedLabel),
@ -183,9 +187,12 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
untagged.listingIcon = ((BitmapDrawable)r.getDrawable(
ThemeService.getDrawable(R.drawable.gl_lists, themeFlags))).getBitmap();
filters[0] = untagged;
}
for(int i = 0; i < tags.length; i++)
filters[i+1] = constructFilter(context, tags[i]);
for(int i = 0; i < tags.length; i++) {
int index = addUntaggedFilter ? i + 1 : i;
filters[index] = constructFilter(context, tags[i]);
}
FilterCategory filter = new FilterCategory(context.getString(name), filters);
return filter;
}

@ -1,28 +1,39 @@
package com.todoroo.astrid.tags.reusable;
import android.content.Intent;
import android.os.Bundle;
import com.timsu.astrid.R;
import com.todoroo.astrid.activity.AstridActivity;
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.FilterListItem;
import com.todoroo.astrid.ui.MainMenuPopover;
public class FeaturedListActivity extends AstridActivity {
public class FeaturedListActivity extends TaskListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.featured_list_activity);
protected Class<? extends FilterListFragment> getFilterListClass() {
return FeaturedListFragment.class;
}
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 boolean onFilterItemClicked(FilterListItem item) {
Intent taskList = new Intent(this, TaskListActivity.class);
taskList.putExtra(TaskListFragment.TOKEN_FILTER, item);
startActivity(taskList);
return true;
public void mainMenuItemSelected(int item, Intent customIntent) {
if (item == MainMenuPopover.MAIN_MENU_ITEM_LISTS) {
finish();
return;
}
super.mainMenuItemSelected(item, customIntent);
}
}

@ -27,6 +27,7 @@ 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);

@ -1,12 +1,15 @@
package com.todoroo.astrid.tags.reusable;
import android.view.View;
import android.view.View.OnClickListener;
import com.timsu.astrid.R;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.data.Task;
public class FeaturedTaskListFragment extends TaskListFragment {
public class FeaturedTaskListFragment extends TagViewFragment {
@Override
protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) {
@ -14,4 +17,31 @@ public class FeaturedTaskListFragment extends TaskListFragment {
cursor, sqlQueryTemplate, false, null);
}
@Override
protected void setupQuickAddBar() {
super.setupQuickAddBar();
quickAddBar.setVisibility(View.GONE);
}
@Override
public void onTaskListItemClicked(long taskId) {
// Do nothing
}
@Override
protected int getTaskListBodyLayout() {
return R.layout.task_list_body_featured_list;
}
@Override
protected void setUpMembersGallery() {
View clone = getView().findViewById(R.id.clone_list);
clone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.err.println("Cloning list");
}
});
}
}

@ -2,10 +2,20 @@ 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 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;
public class ReusableTaskAdapter extends TaskAdapter {
@ -15,4 +25,56 @@ public class ReusableTaskAdapter extends TaskAdapter {
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) {
// Clone task
System.err.println("Cloning task");
}
});
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;
}
}

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

@ -270,6 +270,10 @@
<!-- share login: OAUTH Login Prompt -->
<string name="actfm_OLA_prompt">Please log in:</string>
<!-- ================================================ Featured Lists -->
<string name="actfm_feat_list_clone">Copy this list</string>
<!-- ================================================ Synchronization == -->
<string name="actfm_status_title_logged_in">Status - Logged in as %s</string>

@ -163,8 +163,8 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
protected final HashMap<Long, Boolean> completedItems = new HashMap<Long, Boolean>(0);
protected OnCompletedTaskListener onCompletedTaskListener = null;
public boolean isFling = false;
private final int resource;
private final LayoutInflater inflater;
protected final int resource;
protected final LayoutInflater inflater;
private DetailLoaderThread detailLoader;
private ActionsLoaderThread actionsLoader;
private int fontSize;
@ -174,7 +174,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
private final AtomicReference<String> query;
private final int minRowHeight;
protected final int minRowHeight;
// measure utilities
protected final Paint paint;
@ -1008,7 +1008,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
fontSize = Preferences.getIntegerFromString(R.string.p_fontSize, 18);
}
protected final View.OnClickListener completeBoxListener = new View.OnClickListener() {

Loading…
Cancel
Save