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

Commit b5070970 authored by tobias's avatar tobias
Browse files

- improved widget handling

parent cc8dc6e8
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -229,7 +229,7 @@
            </intent-filter>
        </receiver>
        <receiver
            android:name="org.dmfs.tasks.homescreen.TaskListWidgetUpdaterService$TaskListViewsFactory"
            android:name="org.dmfs.tasks.homescreen.ProviderChangedBroadcastReceiver"
            android:enabled="@bool/enable_widget_provider" >
            <intent-filter>
                <action android:name="android.intent.action.PROVIDER_CHANGED" />
@@ -246,6 +246,7 @@
                    android:mimeType="vnd.android.cursor.item/org.dmfs.tasks.tasks" />
            </intent-filter>
        </receiver>
        
        <receiver android:name="org.dmfs.provider.tasks.broadcast.AccountsChangeBroadcastReceiver" >
            <intent-filter>
                <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" />
+63 −0
Original line number Diff line number Diff line
/*
 * 
 *
 * Copyright (C) 2014 Marten Gajda <marten@dmfs.org>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,15 +15,49 @@
 *
 */

package org.dmfs.tasks.model;
package org.dmfs.tasks.homescreen;

import android.appwidget.AppWidgetManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;


/**
 * Wrapper class to handle task lists.
 * Listens for the ProviderChanged broadcast in order to update the app widgets.
 * 
 * @author Tobias Reinsch <tobias@dmfs.org>
 * 
 */
public class TaskList
public class ProviderChangedBroadcastReceiver extends BroadcastReceiver
{
	@Override
	public void onReceive(Context context, Intent intent)
	{

		// update all widgets
		ComponentName smallProvider = new ComponentName(context, TaskListWidgetProvider.class);
		int[] smallWidgetIds = AppWidgetManager.getInstance(context).getAppWidgetIds(smallProvider);

		ComponentName largeProvider = new ComponentName(context, TaskListWidgetProviderLarge.class);
		int[] largeWidgetIds = AppWidgetManager.getInstance(context).getAppWidgetIds(largeProvider);

		/** Create an Intent with the {@link RemoteViewsService } and pass it the Widget Id */
		Intent remoteServiceIntent = new Intent(context, TaskListWidgetUpdaterService.class);
		remoteServiceIntent.setData(Uri.parse(remoteServiceIntent.toUri(Intent.URI_INTENT_SCHEME)));

		for (int id : smallWidgetIds)
		{
			remoteServiceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id);
			context.startService(remoteServiceIntent);
		}

		for (int id : largeWidgetIds)
		{
	public String accountName;
	public String listName;
			remoteServiceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id);
			context.startService(remoteServiceIntent);
		}
	}
}
+2 −7
Original line number Diff line number Diff line
@@ -17,12 +17,11 @@

package org.dmfs.tasks.homescreen;

import java.util.Collection;
import java.util.ArrayList;

import org.dmfs.provider.tasks.TaskContract;
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;

@@ -84,7 +83,6 @@ public class TaskListSelectionFragment extends ListFragment implements LoaderMan
		super.onAttach(activity);
		mActivity = activity;
		mAuthority = getString(R.string.org_dmfs_tasks_authority);

	}


@@ -134,12 +132,10 @@ public class TaskListSelectionFragment extends ListFragment implements LoaderMan

		mTaskListAdapter.setSelectionEnabledListener(new SelectionEnabledListener()
		{

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

			}


@@ -169,7 +165,6 @@ public class TaskListSelectionFragment extends ListFragment implements LoaderMan
	public void onLoadFinished(Loader<Cursor> loader, Cursor cursor)
	{
		mTaskListAdapter.changeCursor(cursor);

	}


@@ -181,7 +176,7 @@ public class TaskListSelectionFragment extends ListFragment implements LoaderMan

	public interface onSelectionListener
	{
		public void onSelection(Collection<TaskList> selectedLists);
		public void onSelection(ArrayList<Long> selectedLists);


		public void onSelectionCancel();
+12 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import org.dmfs.tasks.R;
import org.dmfs.tasks.TaskListActivity;
import org.dmfs.tasks.model.TaskFieldAdapters;
import org.dmfs.tasks.utils.DueDateFormatter;
import org.dmfs.tasks.utils.WidgetConfigurationDatabaseHelper;

import android.annotation.TargetApi;
import android.app.PendingIntent;
@@ -201,4 +202,15 @@ public class TaskListWidgetProvider extends AppWidgetProvider
			appWidgetManager.updateAppWidget(appWidgetIds[i], widget);
		}
	}


	@Override
	public void onDeleted(Context context, int[] appWidgetIds)
	{
		// Delete configuration
		WidgetConfigurationDatabaseHelper dbHelper = new WidgetConfigurationDatabaseHelper(context);
		dbHelper.deleteWidgetConfiguration(appWidgetIds);

		super.onDeleted(context, appWidgetIds);
	}
}
+12 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
package org.dmfs.tasks.homescreen;

import org.dmfs.tasks.R;
import org.dmfs.tasks.utils.WidgetConfigurationDatabaseHelper;

import android.annotation.TargetApi;
import android.appwidget.AppWidgetManager;
@@ -64,6 +65,17 @@ public class TaskListWidgetProviderLarge extends TaskListWidgetProvider
	}


	@Override
	public void onDeleted(Context context, int[] appWidgetIds)
	{
		// Delete configuration
		WidgetConfigurationDatabaseHelper dbHelper = new WidgetConfigurationDatabaseHelper(context);
		dbHelper.deleteWidgetConfiguration(appWidgetIds);

		super.onDeleted(context, appWidgetIds);
	}


	static ComponentName getComponentName(Context context)
	{
		return new ComponentName(context, TaskListWidgetProviderLarge.class);
Loading