diff options
Diffstat (limited to 'app/src/main/java/it/niedermann/owncloud/notes/android')
5 files changed, 119 insertions, 21 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/CreateNoteActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/CreateNoteActivity.java index d2079eab..78a3a295 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/CreateNoteActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/CreateNoteActivity.java @@ -5,19 +5,25 @@ import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; -import android.widget.EditText; +import android.widget.TextView; + +import com.yydcdut.rxmarkdown.RxMDEditText; +import com.yydcdut.rxmarkdown.RxMarkdown; +import com.yydcdut.rxmarkdown.factory.EditFactory; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.persistence.NoteSQLiteOpenHelper; +import it.niedermann.owncloud.notes.util.MarkDownUtil; +import rx.Subscriber; public class CreateNoteActivity extends AppCompatActivity { - private EditText editTextField = null; + private RxMDEditText editTextField = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_create); - editTextField = (EditText) findViewById(R.id.createContent); + editTextField = (RxMDEditText) findViewById(R.id.createContent); // Get intent, action and MIME type Intent intent = getIntent(); @@ -29,6 +35,25 @@ public class CreateNoteActivity extends AppCompatActivity { editTextField.setText(intent.getStringExtra(Intent.EXTRA_TEXT)); } } + + RxMarkdown.live(editTextField) + .config(MarkDownUtil.getMarkDownConfiguration(getApplicationContext())) + .factory(EditFactory.create()) + .intoObservable() + .subscribe(new Subscriber<CharSequence>() { + @Override + public void onCompleted() { + } + + @Override + public void onError(Throwable e) { + } + + @Override + public void onNext(CharSequence charSequence) { + editTextField.setText(charSequence, TextView.BufferType.SPANNABLE); + } + }); } @Override diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/EditNoteActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/EditNoteActivity.java index e42f61d8..0ba718e9 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/EditNoteActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/EditNoteActivity.java @@ -10,6 +10,11 @@ import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.EditText; +import android.widget.TextView; + +import com.yydcdut.rxmarkdown.RxMDEditText; +import com.yydcdut.rxmarkdown.RxMarkdown; +import com.yydcdut.rxmarkdown.factory.EditFactory; import java.util.Timer; import java.util.TimerTask; @@ -20,6 +25,8 @@ import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.model.DBNote; import it.niedermann.owncloud.notes.persistence.NoteSQLiteOpenHelper; import it.niedermann.owncloud.notes.util.ICallback; +import it.niedermann.owncloud.notes.util.MarkDownUtil; +import rx.Subscriber; public class EditNoteActivity extends AppCompatActivity { @@ -31,7 +38,7 @@ public class EditNoteActivity extends AppCompatActivity { private static final long DELAY = 2000; // in ms private static final long DELAY_AFTER_SYNC = 5000; // in ms - private EditText content = null; + private RxMDEditText content = null; private DBNote note, originalNote; private int notePosition = 0; private Timer timer, timerNextSync; @@ -53,9 +60,29 @@ public class EditNoteActivity extends AppCompatActivity { originalNote = (DBNote) savedInstanceState.getSerializable(PARAM_ORIGINAL_NOTE); notePosition = savedInstanceState.getInt(PARAM_NOTE_POSITION); } - content = (EditText) findViewById(R.id.editContent); + content = (RxMDEditText) findViewById(R.id.editContent); content.setText(note.getContent()); content.setEnabled(true); + + RxMarkdown.live(content) + .config(MarkDownUtil.getMarkDownConfiguration(getApplicationContext())) + .factory(EditFactory.create()) + .intoObservable() + .subscribe(new Subscriber<CharSequence>() { + @Override + public void onCompleted() { + } + + @Override + public void onError(Throwable e) { + } + + @Override + public void onNext(CharSequence charSequence) { + content.setText(charSequence, TextView.BufferType.SPANNABLE); + } + }); + db = new NoteSQLiteOpenHelper(this); actionBar = getSupportActionBar(); if (actionBar != null) { diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NoteActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NoteActivity.java index b7439a1a..af2361f3 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NoteActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NoteActivity.java @@ -5,19 +5,28 @@ import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.text.format.DateUtils; import android.text.method.LinkMovementMethod; +import android.util.Log; import android.view.MenuItem; import android.view.View; import android.widget.TextView; +import com.yydcdut.rxmarkdown.RxMDTextView; +import com.yydcdut.rxmarkdown.RxMarkdown; +import com.yydcdut.rxmarkdown.factory.TextFactory; + import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.model.DBNote; +import it.niedermann.owncloud.notes.util.MarkDownUtil; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; public class NoteActivity extends AppCompatActivity { public static final String PARAM_NOTE = EditNoteActivity.PARAM_NOTE; private DBNote note = null; - private TextView noteContent = null; + private RxMDTextView noteContent = null; private ActionBar actionBar = null; @Override @@ -33,8 +42,30 @@ public class NoteActivity extends AppCompatActivity { actionBar.setTitle(note.getTitle()); actionBar.setSubtitle(DateUtils.getRelativeDateTimeString(getApplicationContext(), note.getModified().getTimeInMillis(), DateUtils.MINUTE_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, 0)); } - noteContent = (TextView) findViewById(R.id.single_note_content); - noteContent.setText(note.getSpannableContent()); + noteContent = (RxMDTextView) findViewById(R.id.single_note_content); + + RxMarkdown.with(note.getContent(), this) + .config(MarkDownUtil.getMarkDownConfiguration(getApplicationContext())) + .factory(TextFactory.create()) + .intoObservable() + .subscribeOn(Schedulers.computation()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Subscriber<CharSequence>() { + @Override + public void onCompleted() { + } + + @Override + public void onError(Throwable e) { + Log.v("Note View -------------", e.getStackTrace().toString()); + } + + @Override + public void onNext(CharSequence charSequence) { + noteContent.setText(charSequence, TextView.BufferType.SPANNABLE); + } + }); + noteContent.setText(note.getContent()); findViewById(R.id.fab_edit).setVisibility(View.GONE); ((TextView) findViewById(R.id.single_note_content)).setMovementMethod(LinkMovementMethod.getInstance()); } 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 7a60c533..50b6e7cb 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.content.SharedPreferences; 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 class NotesListViewActivity extends AppCompatActivity implements @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(); } } }); @@ -383,22 +396,23 @@ public class NotesListViewActivity extends AppCompatActivity implements if (resultCode == RESULT_OK) { //not need because of db.synchronisation in createActivity - DBNote createdNote = (DBNote) data.getExtras().getSerializable( - CREATED_NOTE); + DBNote createdNote = (DBNote) data.getExtras().getSerializable(CREATED_NOTE); adapter.add(createdNote); //setListView(db.getNotes()); } } else if (requestCode == show_single_note_cmd) { if (resultCode == RESULT_OK || resultCode == RESULT_FIRST_USER) { int notePosition = data.getExtras().getInt(EditNoteActivity.PARAM_NOTE_POSITION); - Item oldItem = adapter.getItem(notePosition); - if(resultCode == RESULT_FIRST_USER) { - adapter.remove(oldItem); - } - if (resultCode == RESULT_OK) { - DBNote editedNote = (DBNote) data.getExtras().getSerializable(EditNoteActivity.PARAM_NOTE); - adapter.replace(editedNote, notePosition); - refreshList(); + if(adapter.getItemCount()>notePosition) { + Item oldItem = adapter.getItem(notePosition); + if (resultCode == RESULT_FIRST_USER) { + adapter.remove(oldItem); + } + if (resultCode == RESULT_OK) { + DBNote editedNote = (DBNote) data.getExtras().getSerializable(EditNoteActivity.PARAM_NOTE); + adapter.replace(editedNote, notePosition); + refreshList(); + } } } } else if (requestCode == server_settings) { @@ -474,7 +488,7 @@ public class NotesListViewActivity extends AppCompatActivity implements @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/android/widget/SingleNoteWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/android/widget/SingleNoteWidget.java index b82d9146..6ebc7beb 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/widget/SingleNoteWidget.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/widget/SingleNoteWidget.java @@ -22,7 +22,8 @@ public class SingleNoteWidget extends AppWidgetProvider { public static void updateAppWidget(DBNote note, Context context, AppWidgetManager appWidgetManager, int appWidgetId) { RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget_single_note); if (note != null) { - updateViews.setTextViewText(R.id.single_note_content, note.getSpannableContent()); + //TODO switch to RxMD + //updateViews.setTextViewText(R.id.single_note_content, note.getSpannableContent()); Intent intent = new Intent(context, EditNoteActivity.class); intent.putExtra(EditNoteActivity.PARAM_NOTE, note); // http://stackoverflow.com/questions/4011178/multiple-instances-of-widget-only-updating-last-widget |