diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/CreateNoteWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/CreateNoteWidget.java index 12e9b726b..894f658fd 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/CreateNoteWidget.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/CreateNoteWidget.java @@ -5,7 +5,6 @@ import android.appwidget.AppWidgetProvider; import android.content.Context; import android.content.Intent; -import android.util.Log; import android.widget.RemoteViews; import it.niedermann.owncloud.notes.R; @@ -15,8 +14,8 @@ */ public class CreateNoteWidget extends AppWidgetProvider { - static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, - int appWidgetId) { + private static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, + int appWidgetId) { // Construct the RemoteViews object RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_create_note); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NoteListWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NoteListWidget.java index 44762d585..84332bcd6 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NoteListWidget.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NoteListWidget.java @@ -18,8 +18,8 @@ public class NoteListWidget extends AppWidgetProvider { - static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, - int appWidgetId) { + private static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, + int appWidgetId) { RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_note_list); // Launch application when user taps the header icon or app title @@ -58,7 +58,7 @@ static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME))); views.setPendingIntentTemplate(R.id.note_list_widget_lv, templatePI); views.setRemoteAdapter(R.id.note_list_widget_lv, serviceIntent); - views.setEmptyView(R.id.note_list_widget_lv, R.id.widget_entry_content_tv); + views.setEmptyView(R.id.note_list_widget_lv, R.id.widget_note_list_placeholder_tv); appWidgetManager.updateAppWidget(appWidgetId, views); } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SingleNoteWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SingleNoteWidget.java index e7ec780a9..c3a7f1802 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SingleNoteWidget.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SingleNoteWidget.java @@ -41,7 +41,7 @@ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] a PendingIntent templatePendingIntent = PendingIntent.getActivity( context, - 0, + appWidgetId, templateIntent, PendingIntent.FLAG_UPDATE_CURRENT); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/model/NoteListWidgetFactory.java b/app/src/main/java/it/niedermann/owncloud/notes/model/NoteListWidgetFactory.java index 773bb791f..0d518bebc 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/model/NoteListWidgetFactory.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/model/NoteListWidgetFactory.java @@ -1,6 +1,5 @@ package it.niedermann.owncloud.notes.model; -import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.net.Uri; @@ -20,15 +19,12 @@ */ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFactory { - private Context mContext; - private int mAppWidgetId; + private final Context mContext; private NoteSQLiteOpenHelper db; private List dbNotes; public NoteListWidgetFactory(Context context, Intent intent) { mContext = context; - mAppWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, - AppWidgetManager.INVALID_APPWIDGET_ID); } @Override @@ -55,6 +51,10 @@ public void onDestroy() { */ @Override public int getCount() { + if (dbNotes == null) { + return 0; + } + return dbNotes.size(); } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/model/SingleNoteWidgetFactory.java b/app/src/main/java/it/niedermann/owncloud/notes/model/SingleNoteWidgetFactory.java index e5e8f1ae3..dacd71a23 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/model/SingleNoteWidgetFactory.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/model/SingleNoteWidgetFactory.java @@ -16,8 +16,13 @@ import it.niedermann.owncloud.notes.persistence.NoteSQLiteOpenHelper; public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFactory { - private Context mContext; - private int mAppWidgetId; + + private final Context mContext; + private final int mAppWidgetId; + + private NoteSQLiteOpenHelper db; + private DBNote note; + private static final String TAG = SingleNoteWidget.class.getSimpleName(); public SingleNoteWidgetFactory(Context context, Intent intent) { @@ -28,7 +33,7 @@ public SingleNoteWidgetFactory(Context context, Intent intent) { @Override public void onCreate() { - + db = NoteSQLiteOpenHelper.getInstance(mContext); } @Override @@ -36,6 +41,7 @@ public boolean hasStableIds() { return true; } + // TODO Set loading view @Override public RemoteViews getLoadingView() { return null; @@ -48,7 +54,16 @@ public int getViewTypeCount() { @Override public void onDataSetChanged() { + SharedPreferences sharedprefs = PreferenceManager.getDefaultSharedPreferences(mContext); + long noteID = sharedprefs.getLong(SingleNoteWidget.WIDGET_KEY + mAppWidgetId, -1); + if (noteID >= 0) { + note = db.getNote(noteID); + + if (note == null) { + Log.e(TAG, "Error: note not found"); + } + } } @Override @@ -57,48 +72,37 @@ public void onDestroy() { } /** - * getCount() always runs 1 because the list view only ever has a - * single note displayed - * @return + * Returns the number of items in the data set. In this case, always 1 as a single note is + * being displayed. Will return 0 when the note can't be displayed. */ @Override public int getCount() { - return 1; + return (note != null) ? 1 : 0; } /** - * getViewAt - Returns a RemoteView containing the note content in a TextView and - * a fillInIntent to handle the user tapping on the item in the list - * view. + * Returns a RemoteView containing the note content in a TextView and + * a fillInIntent to handle the user tapping on the item in the list view. * * @param position The position of the item in the list * @return The RemoteView at the specified position in the list */ @Override public RemoteViews getViewAt(int position) { + if (note == null) { + return null; + } + RemoteViews note_content = new RemoteViews(mContext.getPackageName(), R.layout.widget_single_note_content); - - SharedPreferences sharedprefs = PreferenceManager.getDefaultSharedPreferences(mContext); - long noteID = sharedprefs.getLong(SingleNoteWidget.WIDGET_KEY + mAppWidgetId, -1); - - if (noteID >= 0) { - NoteSQLiteOpenHelper db = NoteSQLiteOpenHelper.getInstance(mContext); - DBNote note = db.getNote(noteID); - - final Intent fillInIntent = new Intent(); - final Bundle extras = new Bundle(); - - extras.putSerializable(EditNoteActivity.PARAM_NOTE, note); - - fillInIntent.putExtras(extras); - fillInIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - note_content.setOnClickFillInIntent(R.id.single_note_content_tv, fillInIntent); - note_content.setTextViewText(R.id.single_note_content_tv, note.getContent()); - } else { - Log.e(TAG, "Note not found"); - note_content.setTextViewText(R.id.single_note_content_tv, "Note not found"); - } + final Intent fillInIntent = new Intent(); + final Bundle extras = new Bundle(); + + extras.putSerializable(EditNoteActivity.PARAM_NOTE, note); + fillInIntent.putExtras(extras); + fillInIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); + note_content.setOnClickFillInIntent(R.id.single_note_content_tv, fillInIntent); + note_content.setTextViewText(R.id.single_note_content_tv, note.getContent()); return note_content; } diff --git a/app/src/main/res/drawable/note_list_widget_preview.png b/app/src/main/res/drawable/note_list_widget_preview.png index b88c96fc6..4051eac26 100644 Binary files a/app/src/main/res/drawable/note_list_widget_preview.png and b/app/src/main/res/drawable/note_list_widget_preview.png differ diff --git a/app/src/main/res/layout/widget_create_note.xml b/app/src/main/res/layout/widget_create_note.xml index 7a2c0820b..04e9a0cbe 100644 --- a/app/src/main/res/layout/widget_create_note.xml +++ b/app/src/main/res/layout/widget_create_note.xml @@ -5,12 +5,14 @@ android:layout_gravity="center_vertical" android:clickable="true" android:orientation="vertical" - android:padding="@dimen/widget_margin"> + android:padding="@dimen/widget_margin" + android:focusable="true"> + android:background="@drawable/ic_widget_create" + android:contentDescription="@string/widget_create_note" /> \ No newline at end of file diff --git a/app/src/main/res/layout/widget_entry.xml b/app/src/main/res/layout/widget_entry.xml index d8bc93ce7..1d55511bc 100644 --- a/app/src/main/res/layout/widget_entry.xml +++ b/app/src/main/res/layout/widget_entry.xml @@ -4,29 +4,34 @@ android:layout_height="wrap_content" android:layout_width="match_parent" android:orientation="horizontal" - android:padding="4dp"> + android:padding="@dimen/widget_note_list_padding"> + android:ellipsize="end" /> + android:contentDescription="@string/widget_entry_fav_contentDescription" /> diff --git a/app/src/main/res/layout/widget_note_list.xml b/app/src/main/res/layout/widget_note_list.xml index 0f372592e..787d8f81a 100644 --- a/app/src/main/res/layout/widget_note_list.xml +++ b/app/src/main/res/layout/widget_note_list.xml @@ -2,23 +2,29 @@ + android:orientation="vertical" + android:background="@color/widget_background"> + android:padding="@dimen/widget_note_list_hdr_padding"> + android:paddingStart="@dimen/widget_note_list_outer_padding" + android:paddingEnd="@dimen/widget_note_list_inner_padding" + android:paddingLeft="@dimen/widget_note_list_outer_padding" + android:paddingRight="@dimen/widget_note_list_inner_padding" + android:contentDescription="@string/widget_app_launcher_contentDescription" /> + android:paddingStart="@dimen/widget_note_list_outer_padding" + android:paddingEnd="@dimen/widget_note_list_inner_padding" + android:paddingLeft="@dimen/widget_note_list_outer_padding" + android:paddingRight="@dimen/widget_note_list_inner_padding" /> + android:layout_alignParentEnd="true" + android:paddingStart="@dimen/widget_note_list_inner_padding" + android:paddingEnd="@dimen/widget_note_list_outer_padding" + android:paddingLeft="@dimen/widget_note_list_inner_padding" + android:paddingRight="@dimen/widget_note_list_outer_padding" + android:contentDescription="@string/widget_create_note" /> @@ -48,8 +62,15 @@ android:id="@+id/note_list_widget_lv" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/widget_background" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/fg_default" /> + + diff --git a/app/src/main/res/layout/widget_single_note.xml b/app/src/main/res/layout/widget_single_note.xml index e3893c0d4..631f5a36b 100644 --- a/app/src/main/res/layout/widget_single_note.xml +++ b/app/src/main/res/layout/widget_single_note.xml @@ -3,21 +3,24 @@ android:id="@+id/widget_single_note" android:layout_width="match_parent" android:layout_height="match_parent" - > + android:background="@color/widget_background"> + android:padding="@dimen/widget_single_note_padding" /> + android:gravity="center" + android:text="@string/widget_single_note_placeholder_tv" + android:textColor="@color/fg_default_high" + android:textAlignment="center" + android:padding="@dimen/widget_single_note_padding" /> + - 4dp - 6dp - 6dp + 2dp + 4dp + 36dp + 30dp + + 6dp + 0dp + + 26dp + 20dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b2cb2a281..84f3c076b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -118,9 +118,13 @@ Note list + No notes Single note + Note not found Create Note - Please log in to Notes before using this widget + Please login to Notes before using this widget + Star icon used to denote item as a favourite + Launches app Select note diff --git a/app/src/main/res/xml/note_list_widget_provider_info.xml b/app/src/main/res/xml/note_list_widget_provider_info.xml index 77f9b513f..0dbfe8a99 100644 --- a/app/src/main/res/xml/note_list_widget_provider_info.xml +++ b/app/src/main/res/xml/note_list_widget_provider_info.xml @@ -11,7 +11,3 @@ android:widgetCategory="keyguard|home_screen" android:previewImage="@drawable/note_list_widget_preview" /> - - \ No newline at end of file