diff options
Diffstat (limited to 'app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote')
4 files changed, 37 insertions, 64 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidget.java index c82ba9a5..3ad56c76 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidget.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidget.java @@ -10,12 +10,11 @@ import android.net.Uri; import android.util.Log; import android.widget.RemoteViews; -import java.util.NoSuchElementException; - import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.edit.EditNoteActivity; import it.niedermann.owncloud.notes.edit.BaseNoteFragment; import it.niedermann.owncloud.notes.persistence.NotesDatabase; +import it.niedermann.owncloud.notes.persistence.entity.SingleNoteWidgetData; public class SingleNoteWidget extends AppWidgetProvider { @@ -26,9 +25,8 @@ public class SingleNoteWidget extends AppWidgetProvider { final NotesDatabase db = NotesDatabase.getInstance(context); for (int appWidgetId : appWidgetIds) { - try { - final SingleNoteWidgetData data = db.getSingleNoteWidgetData(appWidgetId); - + final SingleNoteWidgetData data = db.getWidgetSingleNoteDao().getSingleNoteWidgetData(appWidgetId); + if(data != null) { templateIntent.putExtra(BaseNoteFragment.PARAM_ACCOUNT_ID, data.getAccountId()); final PendingIntent templatePendingIntent = PendingIntent.getActivity(context, appWidgetId, templateIntent, @@ -45,7 +43,7 @@ public class SingleNoteWidget extends AppWidgetProvider { awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.single_note_widget_lv); awm.updateAppWidget(appWidgetId, views); - } catch (NoSuchElementException e) { + } else { Log.i(TAG, "onUpdate has been triggered before the user finished configuring the widget"); } } @@ -71,7 +69,7 @@ public class SingleNoteWidget extends AppWidgetProvider { final NotesDatabase db = NotesDatabase.getInstance(context); for (int appWidgetId : appWidgetIds) { - db.removeSingleNoteWidget(appWidgetId); + new Thread(() -> db.getWidgetSingleNoteDao().removeSingleNoteWidget(appWidgetId)).start(); } super.onDeleted(context, appWidgetIds); } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetConfigurationActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetConfigurationActivity.java index ef3bbbe6..3b43ab2f 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetConfigurationActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetConfigurationActivity.java @@ -12,11 +12,12 @@ import android.widget.Toast; import androidx.appcompat.widget.Toolbar; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import it.niedermann.owncloud.notes.NotesApplication; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.exception.ExceptionHandler; import it.niedermann.owncloud.notes.main.MainActivity; -import it.niedermann.owncloud.notes.shared.model.DBNote; -import it.niedermann.owncloud.notes.NotesApplication; +import it.niedermann.owncloud.notes.persistence.entity.Note; +import it.niedermann.owncloud.notes.persistence.entity.SingleNoteWidgetData; public class SingleNoteWidgetConfigurationActivity extends MainActivity { @@ -41,7 +42,7 @@ public class SingleNoteWidgetConfigurationActivity extends MainActivity { @Override public void onNoteClick(int position, View v) { - final DBNote note = (DBNote) adapter.getItem(position); + final Note note = (Note) adapter.getItem(position); final Bundle extras = getIntent().getExtras(); if (extras == null) { @@ -51,24 +52,25 @@ public class SingleNoteWidgetConfigurationActivity extends MainActivity { int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); - try { - db.createOrUpdateSingleNoteWidgetData( - new SingleNoteWidgetData( - appWidgetId, - note.getAccountId(), - note.getId(), - NotesApplication.getAppTheme(this).getModeId() - ) - ); - final Intent updateIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE, null, - getApplicationContext(), SingleNoteWidget.class) - .putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); - setResult(RESULT_OK, updateIntent); - getApplicationContext().sendBroadcast(updateIntent); - } catch (SQLException e) { - Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); - } - - finish(); + new Thread(() -> { + try { + mainViewModel.createOrUpdateSingleNoteWidgetData( + new SingleNoteWidgetData( + appWidgetId, + note.getAccountId(), + note.getId(), + NotesApplication.getAppTheme(this).getModeId() + ) + ); + final Intent updateIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE, null, + getApplicationContext(), SingleNoteWidget.class) + .putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); + setResult(RESULT_OK, updateIntent); + getApplicationContext().sendBroadcast(updateIntent); + finish(); + } catch (SQLException e) { + Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); + } + }); } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetData.java b/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetData.java deleted file mode 100644 index 79b83006..00000000 --- a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetData.java +++ /dev/null @@ -1,25 +0,0 @@ -package it.niedermann.owncloud.notes.widget.singlenote; - -import it.niedermann.owncloud.notes.widget.AbstractWidgetData; - -public class SingleNoteWidgetData extends AbstractWidgetData { - private long noteId; - - public SingleNoteWidgetData() { - - } - - public SingleNoteWidgetData(int appWidgetId, long accountId, long noteId, int themeMode) { - super(appWidgetId, accountId, themeMode); - this.noteId = noteId; - } - - public long getNoteId() { - return noteId; - } - - public void setNoteId(long noteId) { - this.noteId = noteId; - } - -} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetFactory.java b/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetFactory.java index 5c7ddd9e..db26da24 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetFactory.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetFactory.java @@ -10,13 +10,12 @@ import android.widget.RemoteViewsService; import androidx.annotation.Nullable; -import java.util.NoSuchElementException; - import it.niedermann.android.markdown.MarkdownUtil; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.edit.EditNoteActivity; import it.niedermann.owncloud.notes.persistence.NotesDatabase; -import it.niedermann.owncloud.notes.shared.model.DBNote; +import it.niedermann.owncloud.notes.persistence.entity.Note; +import it.niedermann.owncloud.notes.persistence.entity.SingleNoteWidgetData; public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFactory { @@ -25,14 +24,13 @@ public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFa private final NotesDatabase db; @Nullable - private DBNote note; + private Note note; private static final String TAG = SingleNoteWidget.class.getSimpleName(); SingleNoteWidgetFactory(Context context, Intent intent) { this.context = context; - this.appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, - AppWidgetManager.INVALID_APPWIDGET_ID); + this.appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); this.db = NotesDatabase.getInstance(context); } @@ -43,16 +41,16 @@ public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFa @Override public void onDataSetChanged() { - try { - final SingleNoteWidgetData data = db.getSingleNoteWidgetData(appWidgetId); + final SingleNoteWidgetData data = db.getWidgetSingleNoteDao().getSingleNoteWidgetData(appWidgetId); + if(data != null) { final long noteId = data.getNoteId(); Log.v(TAG, "Fetch note with id " + noteId); - note = db.getNote(data.getAccountId(), noteId); + note = db.getNoteDao().getNoteById(noteId); if (note == null) { Log.e(TAG, "Error: note not found"); } - } catch (NoSuchElementException e) { + } else { Log.w(TAG, "Widget with ID " + appWidgetId + " seems to be not configured yet."); } } |