diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java
index 7a60c5337..84f082d74 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java
@@ -8,6 +8,7 @@
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.support.design.widget.Snackbar;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
@@ -300,10 +301,22 @@ public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewH
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
if (direction == ItemTouchHelper.LEFT || direction == ItemTouchHelper.RIGHT) {
- DBNote dbNote = (DBNote) adapter.getItem(viewHolder.getAdapterPosition());
+ final DBNote dbNote = (DBNote) adapter.getItem(viewHolder.getAdapterPosition());
db.deleteNoteAndSync((dbNote).getId());
adapter.remove(dbNote);
+ refreshList();
Log.v("Note", "Item deleted through swipe ----------------------------------------------");
+ Snackbar.make(swipeRefreshLayout, R.string.action_note_deleted, Snackbar.LENGTH_LONG)
+ .setAction(R.string.action_undo, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ db.addNoteAndSync(dbNote);
+ refreshList();
+ Snackbar.make(swipeRefreshLayout, R.string.action_note_restored, Snackbar.LENGTH_SHORT)
+ .show();
+ }
+ })
+ .show();
}
}
});
@@ -474,7 +487,7 @@ public boolean onNoteLongClick(int position, View v) {
@Override
public void onBackPressed() {
- if (searchView.isIconified()) {
+ if (searchView==null || searchView.isIconified()) {
super.onBackPressed();
} else {
searchView.setIconified(true);
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteSQLiteOpenHelper.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteSQLiteOpenHelper.java
index 50a1ae85b..0c93941c4 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteSQLiteOpenHelper.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteSQLiteOpenHelper.java
@@ -102,8 +102,19 @@ public Context getContext() {
*/
@SuppressWarnings("UnusedReturnValue")
public long addNoteAndSync(String content) {
- DBNote note = new DBNote(0, 0, Calendar.getInstance(), NoteUtil.generateNoteTitle(content), content, false, DBStatus.LOCAL_EDITED);
- long id = addNote(note);
+ OwnCloudNote note = new OwnCloudNote(0, Calendar.getInstance(), NoteUtil.generateNoteTitle(content), content, false);
+ return addNoteAndSync(note);
+ }
+
+ /**
+ * Creates a new Note in the Database and adds a Synchronization Flag.
+ *
+ * @param note Note
+ */
+ @SuppressWarnings("UnusedReturnValue")
+ public long addNoteAndSync(OwnCloudNote note) {
+ DBNote dbNote = new DBNote(0, 0, note.getModified(), note.getTitle(), note.getContent(), note.isFavorite(), DBStatus.LOCAL_EDITED);
+ long id = addNote(dbNote);
getNoteServerSyncHelper().scheduleSync(true);
return id;
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteServerSyncHelper.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteServerSyncHelper.java
index 6090f9163..70405df2b 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteServerSyncHelper.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteServerSyncHelper.java
@@ -222,7 +222,11 @@ private void pushLocalChanges() {
// if note is not new, try to edit it.
if (note.getRemoteId()>0) {
Log.d(getClass().getSimpleName(), " ...try to edit");
- remoteNote = client.editNote(note);
+ try {
+ remoteNote = client.editNote(note);
+ } catch(FileNotFoundException e) {
+ // Note does not exists anymore
+ }
}
// However, the note may be deleted on the server meanwhile; or was never synchronized -> (re)create
// Please note, thas dbHelper.updateNote() realizes an optimistic conflict resolution, which is required for parallel changes of this Note from the UI.
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 372649627..ac92c1023 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -12,6 +12,9 @@
Gespeichert
Abbrechen
Notiz auswählen
+ Notiz wurde gelöscht
+ Notiz wurde wiederhergestellt
+ Rückgängig
Über
Löschen
Kopieren
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 530a9fe79..e37328719 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -14,6 +14,9 @@
Cancel
About
Select note
+ Note is deleted
+ Note is restored
+ Undo
Delete
Copy
Edit