Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b1798908 authored by tobias's avatar tobias
Browse files

improved task list selection for widgets

parent 7c2c3271
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@
            android:text="@string/task_list_selection_ok"
            android:textAllCaps="true"
            android:textSize="14sp"
            android:enabled="false"
            android:textStyle="bold" />
    </LinearLayout>

+20 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import org.dmfs.provider.tasks.TaskContract.TaskLists;
import org.dmfs.tasks.R;
import org.dmfs.tasks.model.TaskList;
import org.dmfs.tasks.utils.TasksListCursorAdapter;
import org.dmfs.tasks.utils.TasksListCursorAdapter.SelectionEnabledListener;

import android.app.Activity;
import android.database.Cursor;
@@ -131,6 +132,25 @@ public class TaskListSelectionFragment extends ListFragment implements LoaderMan
		mTaskListAdapter = new TasksListCursorAdapter(mActivity);
		mTaskList.setAdapter(mTaskListAdapter);

		mTaskListAdapter.setSelectionEnabledListener(new SelectionEnabledListener()
		{

			@Override
			public void onSelectionEnabled()
			{
				mButtonOk.setEnabled(true);

			}


			@Override
			public void onSelectionDisabled()
			{
				mButtonOk.setEnabled(false);

			}
		});

		Bundle bundle = new Bundle();
		bundle.putParcelable(LIST_LOADER_URI, TaskLists.getContentUri(mAuthority));
		bundle.putString(LIST_LOADER_FILTER, LIST_LOADER_VISIBLE_LISTS_FILTER);
+18 −17
Original line number Diff line number Diff line
@@ -374,10 +374,10 @@ public class TaskListWidgetUpdaterService extends RemoteViewsService
					+ TaskContract.Instances.INSTANCE_START + "<=" + System.currentTimeMillis() + " OR " + TaskContract.Instances.INSTANCE_START + " is null)");
				String[] selectionArgs = new String[lists.size() * 2];

				if (lists.size() > 0)
				if (lists != null && lists.size() > 0)
				{
					selection.append(" AND ( ");
				}

					for (int i = 0; i < lists.size(); i++)
					{
						TaskList list = lists.get(i);
@@ -397,6 +397,7 @@ public class TaskListWidgetUpdaterService extends RemoteViewsService
						selectionArgs[i * 2 + 1] = list.listName;

					}
				}

				// load all upcoming non-completed tasks
				Cursor c = mContext.getContentResolver().query(
+38 −0
Original line number Diff line number Diff line
@@ -53,6 +53,8 @@ public class TasksListCursorAdapter extends android.support.v4.widget.CursorAdap
	private int mIdColumn;
	private Map<Long, TaskList> mSelectedLists = new HashMap<Long, TaskList>();

	private SelectionEnabledListener mListener;


	public TasksListCursorAdapter(Context context)
	{
@@ -61,6 +63,12 @@ public class TasksListCursorAdapter extends android.support.v4.widget.CursorAdap
	}


	public void setSelectionEnabledListener(SelectionEnabledListener listener)
	{
		mListener = listener;
	}


	@Override
	public Cursor swapCursor(Cursor c)
	{
@@ -123,6 +131,8 @@ public class TasksListCursorAdapter extends android.support.v4.widget.CursorAdap
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
			{

				int oldSize = mSelectedLists.size();

				if (isChecked)
				{
					TaskList taskList = mSelectedLists.get(id);
@@ -139,6 +149,20 @@ public class TasksListCursorAdapter extends android.support.v4.widget.CursorAdap
				{
					mSelectedLists.remove(id);
				}

				if (mListener != null)
				{
					if (oldSize == 0 && mSelectedLists.size() > 0)
					{
						mListener.onSelectionEnabled();
					}
					if (oldSize > 0 && mSelectedLists.size() == 0)
					{
						mListener.onSelectionDisabled();

					}
				}

			}
		});
		return convertView;
@@ -149,4 +173,18 @@ public class TasksListCursorAdapter extends android.support.v4.widget.CursorAdap
	{
		return mSelectedLists.values();
	}

	/**
	 * Listener that is used to notify if the select item count is > 0 or equal 0.
	 * 
	 * @author Tobias Reinsch <tobias@dmfs.org>
	 * 
	 */
	public interface SelectionEnabledListener
	{
		public void onSelectionEnabled();


		public void onSelectionDisabled();
	}
}