diff --git a/app/src/main/java/net/headlezz/notificationlogger/widget/ListWidgetProvider.java b/app/src/main/java/net/headlezz/notificationlogger/widget/ListWidgetProvider.java index d14f89f..20f6042 100644 --- a/app/src/main/java/net/headlezz/notificationlogger/widget/ListWidgetProvider.java +++ b/app/src/main/java/net/headlezz/notificationlogger/widget/ListWidgetProvider.java @@ -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); + } } diff --git a/app/src/main/java/net/headlezz/notificationlogger/widget/ListWidgetViewFactory.java b/app/src/main/java/net/headlezz/notificationlogger/widget/ListWidgetViewFactory.java index 9297177..eee7da8 100644 --- a/app/src/main/java/net/headlezz/notificationlogger/widget/ListWidgetViewFactory.java +++ b/app/src/main/java/net/headlezz/notificationlogger/widget/ListWidgetViewFactory.java @@ -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; } diff --git a/app/src/main/res/layout/widget_list.xml b/app/src/main/res/layout/widget_list.xml index 1365f1e..58170e4 100644 --- a/app/src/main/res/layout/widget_list.xml +++ b/app/src/main/res/layout/widget_list.xml @@ -2,11 +2,22 @@ + android:orientation="vertical"> + + + android:text="@string/widget_list_empty" + android:textColor="@android:color/black" /> \ No newline at end of file diff --git a/app/src/main/res/layout/widget_list_item.xml b/app/src/main/res/layout/widget_list_item.xml index 5278387..f78f971 100644 --- a/app/src/main/res/layout/widget_list_item.xml +++ b/app/src/main/res/layout/widget_list_item.xml @@ -4,35 +4,46 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:id="@+id/widget_list_item" android:padding="8dp"> + tools:text="appname asd asdasqweqwe qw q asd asd aweq" + android:layout_toStartOf="@+id/widget_list_item_date" /> + tools:text="notification" /> + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ce6f3dd..e9b25b7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -83,6 +83,8 @@ Show Open folder No file browser installed. + Latest Notifications + No notifications logged. Show more info diff --git a/app/src/main/res/xml/widget_info.xml b/app/src/main/res/xml/widget_info.xml index 0d319f4..33fe1b7 100644 --- a/app/src/main/res/xml/widget_info.xml +++ b/app/src/main/res/xml/widget_info.xml @@ -1,8 +1,7 @@