list widget
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package net.headlezz.notificationlogger.widget;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.appwidget.AppWidgetManager;
|
||||
import android.appwidget.AppWidgetProvider;
|
||||
import android.content.Context;
|
||||
@@ -7,10 +8,13 @@ import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.widget.RemoteViews;
|
||||
|
||||
import net.headlezz.notificationlogger.MainActivity;
|
||||
import net.headlezz.notificationlogger.R;
|
||||
|
||||
public class ListWidgetProvider extends AppWidgetProvider {
|
||||
|
||||
public static final String SHOW_NOTIFICATION_ACTION = "net.headlezz.notificationlogger.listwidget.SHOW_NOTIFICATION_ACTION";
|
||||
|
||||
@Override
|
||||
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
|
||||
for(int widgetId : appWidgetIds) {
|
||||
@@ -27,11 +31,25 @@ public class ListWidgetProvider extends AppWidgetProvider {
|
||||
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
|
||||
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
|
||||
|
||||
Intent showNotificationIntent = new Intent(context, ListWidgetProvider.class);
|
||||
showNotificationIntent.setAction(ListWidgetProvider.SHOW_NOTIFICATION_ACTION);
|
||||
PendingIntent pi = PendingIntent.getBroadcast(context, 0, showNotificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
rvs.setPendingIntentTemplate(R.id.list_widget_listView, pi);
|
||||
|
||||
rvs.setRemoteAdapter(R.id.list_widget_listView, serviceIntent);
|
||||
rvs.setEmptyView(R.id.list_widget_listView, R.id.list_widget_empty_view);
|
||||
|
||||
|
||||
|
||||
return rvs;
|
||||
}
|
||||
|
||||
// receives the intent broadcast from list items
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if (intent.getAction().equals(SHOW_NOTIFICATION_ACTION)) {
|
||||
Intent mainActivityIntent = new Intent(context, MainActivity.class);
|
||||
mainActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
context.startActivity(mainActivityIntent);
|
||||
}
|
||||
super.onReceive(context, intent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
package net.headlezz.notificationlogger.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Typeface;
|
||||
import android.text.SpannableString;
|
||||
import android.text.format.DateUtils;
|
||||
import android.text.style.StyleSpan;
|
||||
import android.widget.RemoteViews;
|
||||
import android.widget.RemoteViewsService;
|
||||
|
||||
@@ -55,13 +59,22 @@ public class ListWidgetViewFactory implements RemoteViewsService.RemoteViewsFact
|
||||
@Override
|
||||
public RemoteViews getViewAt(int position) {
|
||||
RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.widget_list_item);
|
||||
mCursor.moveToPosition(position);
|
||||
|
||||
mCursor.moveToPosition(position);
|
||||
LoggedNotification notification = Logged_notificationTable.getRow(mCursor, false);
|
||||
|
||||
rv.setTextViewText(R.id.widget_list_item_title, notification.appName);
|
||||
rv.setTextViewText(R.id.widget_list_item_notification, notification.title + ": " + notification.message);
|
||||
|
||||
String title = notification.title + ":";
|
||||
SpannableString titleSpan = new SpannableString(title + " " + notification.message);
|
||||
titleSpan.setSpan(new StyleSpan(Typeface.BOLD), 0, title.length(), 0);
|
||||
|
||||
rv.setTextViewText(R.id.widget_list_item_notification, titleSpan);
|
||||
rv.setTextViewText(R.id.widget_list_item_date, DateUtils.formatDateTime(mContext, notification.date, DateUtils.FORMAT_ABBREV_ALL | DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE));
|
||||
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra(Logged_notificationTable.FIELD__ID, notification.id);
|
||||
rv.setOnClickFillInIntent(R.id.widget_list_item, intent);
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user