From d67ec29088f14f08d345c5c5591049398b2f7bb0 Mon Sep 17 00:00:00 2001 From: houxg Date: Fri, 16 Dec 2016 18:27:55 +0800 Subject: [PATCH] be compatible with desktop-app --- .../main/assets/RichTextEditor/editor.html | 24 +++++++++++++++++++ .../houxg/leamonax/editor/RichTextEditor.java | 10 +++++--- .../leamonax/ui/NotePreviewActivity.java | 23 +++++++++++++++++- .../leamonax/ui/edit/NoteEditActivity.java | 8 +++---- .../java/org/houxg/leamonax/utils/AppLog.java | 18 ++++++++++++++ app/src/main/res/menu/preview.xml | 10 ++++++++ 6 files changed, 85 insertions(+), 8 deletions(-) create mode 100644 app/src/main/java/org/houxg/leamonax/utils/AppLog.java diff --git a/app/src/main/assets/RichTextEditor/editor.html b/app/src/main/assets/RichTextEditor/editor.html index 10fccf2..e769c87 100755 --- a/app/src/main/assets/RichTextEditor/editor.html +++ b/app/src/main/assets/RichTextEditor/editor.html @@ -7,6 +7,25 @@ @@ -190,6 +209,11 @@ return tinyMCE.editors[0].selection.getNode().getAttribute('href'); } + function getContent() { + var body = tinyMCE.$(tinyMCE.editors[0].getBody()).clone(); + return $(body).clone().html(); + } + function getListState() { var node = tinyMCE.editors[0].selection.getNode() var parents = tinymce.dom.DomQuery(node).parents(); diff --git a/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java b/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java index 5a17155..9891e48 100644 --- a/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java +++ b/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java @@ -4,6 +4,7 @@ package org.houxg.leamonax.editor; import android.annotation.SuppressLint; import android.webkit.WebView; +import org.houxg.leamonax.utils.AppLog; import org.houxg.leamonax.utils.HtmlUtils; import java.util.Locale; @@ -63,13 +64,16 @@ public class RichTextEditor extends Editor implements TinnyMceCallback.TinnyMceL @Override public void setContent(String content) { - execJs(String.format(Locale.US, "tinyMCE.editors[0].setContent('%s');", HtmlUtils.escapeHtml(content))); + content = HtmlUtils.escapeHtml(content); + AppLog.i(TAG, "escaped=" + content); + execJs(String.format(Locale.US, "tinyMCE.editors[0].setContent('%s');", content)); } @Override public String getContent() { - String content = HtmlUtils.unescapeHtml(new JsRunner().get(mWebView, "tinyMCE.editors[0].getContent();")); - content = content.replaceAll("\\n", ""); + String content = new JsRunner().get(mWebView, "getContent();"); + content = HtmlUtils.unescapeHtml(content); + AppLog.i(TAG, "unescaped=" + content); return content; } diff --git a/app/src/main/java/org/houxg/leamonax/ui/NotePreviewActivity.java b/app/src/main/java/org/houxg/leamonax/ui/NotePreviewActivity.java index b62e1b6..062500b 100644 --- a/app/src/main/java/org/houxg/leamonax/ui/NotePreviewActivity.java +++ b/app/src/main/java/org/houxg/leamonax/ui/NotePreviewActivity.java @@ -6,16 +6,19 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v7.widget.Toolbar; +import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import org.houxg.leamonax.BuildConfig; import org.houxg.leamonax.R; import org.houxg.leamonax.database.AppDataBase; import org.houxg.leamonax.model.Note; import org.houxg.leamonax.service.NoteService; import org.houxg.leamonax.ui.edit.EditorFragment; import org.houxg.leamonax.ui.edit.NoteEditActivity; +import org.houxg.leamonax.utils.AppLog; import org.houxg.leamonax.utils.DialogDisplayer; import org.houxg.leamonax.utils.NetworkUtils; import org.houxg.leamonax.utils.ToastUtils; @@ -69,6 +72,8 @@ public class NotePreviewActivity extends BaseActivity implements EditorFragment. @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.preview, menu); + menu.findItem(R.id.action_print).setVisible(BuildConfig.DEBUG); + menu.findItem(R.id.action_get).setVisible(BuildConfig.DEBUG); return super.onCreateOptionsMenu(menu); } @@ -78,6 +83,22 @@ public class NotePreviewActivity extends BaseActivity implements EditorFragment. case R.id.action_edit: startActivityForResult(NoteEditActivity.getOpenIntent(this, mNote.getId(), false), REQ_EDIT); return true; + case R.id.action_get: + Observable.create( + new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + mEditorFragment.getContent(); + subscriber.onNext(null); + subscriber.onCompleted(); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(); + return true; + case R.id.action_print: + AppLog.i(TAG, mNote.getContent()); } return super.onOptionsItemSelected(item); } @@ -201,7 +222,7 @@ public class NotePreviewActivity extends BaseActivity implements EditorFragment. mActionContainer.setVisibility(mNote.isDirty() ? View.VISIBLE : View.GONE); mRevertBtn.setVisibility(mNote.getUsn() > 0 ? View.VISIBLE : View.GONE); - mEditorFragment.setTitle(mNote.getTitle()); + mEditorFragment.setTitle(TextUtils.isEmpty(mNote.getTitle()) ? getString(R.string.untitled) : mNote.getTitle()); mEditorFragment.setContent(mNote.getContent()); } } diff --git a/app/src/main/java/org/houxg/leamonax/ui/edit/NoteEditActivity.java b/app/src/main/java/org/houxg/leamonax/ui/edit/NoteEditActivity.java index 89077a9..b1142b4 100644 --- a/app/src/main/java/org/houxg/leamonax/ui/edit/NoteEditActivity.java +++ b/app/src/main/java/org/houxg/leamonax/ui/edit/NoteEditActivity.java @@ -214,11 +214,11 @@ public class NoteEditActivity extends BaseActivity implements EditorFragment.Edi public void call(Subscriber subscriber) { if (!subscriber.isUnsubscribed()) { updateNote(); - if (mModified.note.isDirty() - || mOriginal.note.hasChanges(mModified.note) - || isLocalNote(mModified.note) + if (mOriginal.note.hasChanges(mModified.note) || isTitleContentEmpty(mModified.note) - || !CollectionUtils.isTheSame(mOriginal.tags, mModified.tags)) { + || !CollectionUtils.isTheSame(mOriginal.tags, mModified.tags) + || mModified.note.isDirty() + || isLocalNote(mModified.note)) { subscriber.onNext(mModified); } subscriber.onCompleted(); diff --git a/app/src/main/java/org/houxg/leamonax/utils/AppLog.java b/app/src/main/java/org/houxg/leamonax/utils/AppLog.java new file mode 100644 index 0000000..86456d7 --- /dev/null +++ b/app/src/main/java/org/houxg/leamonax/utils/AppLog.java @@ -0,0 +1,18 @@ +package org.houxg.leamonax.utils; + + +import android.util.Log; + +public class AppLog { + + private static final int LOG_LIMIT = 3000; + + public static void i(String tag, String message) { + do { + int offset = Math.min(message.length(), LOG_LIMIT); + String print = message.substring(0, offset); + message = message.substring(offset); + Log.i(tag, print); + } while (message.length() > 0); + } +} diff --git a/app/src/main/res/menu/preview.xml b/app/src/main/res/menu/preview.xml index 4c8cac7..a49bede 100644 --- a/app/src/main/res/menu/preview.xml +++ b/app/src/main/res/menu/preview.xml @@ -7,4 +7,14 @@ app:showAsAction="always" android:title="@string/edit"/> + + + + \ No newline at end of file