diff --git a/app/src/main/assets/RichTextEditor/editor.html b/app/src/main/assets/RichTextEditor/editor.html
new file mode 100755
index 0000000..d576561
--- /dev/null
+++ b/app/src/main/assets/RichTextEditor/editor.html
@@ -0,0 +1,187 @@
+
+
+
+
+ RichTextEditor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 3877f36..a6e582d 100644
--- a/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java
+++ b/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java
@@ -2,9 +2,7 @@ package org.houxg.leamonax.editor;
import android.annotation.SuppressLint;
-import android.text.TextUtils;
import android.util.Log;
-import android.webkit.WebChromeClient;
import android.webkit.WebView;
import com.google.gson.Gson;
@@ -34,9 +32,9 @@ public class RichTextEditor extends Editor implements OnJsEditorStateChangedList
mWebView.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new EditorClient());
- mWebView.setWebChromeClient(new WebChromeClient());
+ mWebView.setWebChromeClient(new EditorChromeClient());
mWebView.addJavascriptInterface(new JsCallbackHandler(this), JS_CALLBACK_HANDLER);
- mWebView.loadUrl("file:///android_asset/android-editor.html");
+ mWebView.loadUrl("file:///android_asset/RichTextEditor/editor.html");
}
private void execJs(final String script) {
@@ -51,46 +49,42 @@ public class RichTextEditor extends Editor implements OnJsEditorStateChangedList
@Override
public void setEditingEnabled(boolean enabled) {
if (enabled) {
- execJs("ZSSEditor.getField('zss_field_title').enableEditing();");
- execJs("ZSSEditor.getField('zss_field_content').enableEditing();");
+ execJs("enable();");
} else {
- execJs("ZSSEditor.getField('zss_field_title').disableEditing();");
- execJs("ZSSEditor.getField('zss_field_content').disableEditing();");
+ execJs("disable()");
}
}
@Override
public void setTitle(String title) {
- execJs(String.format(Locale.US, "ZSSEditor.getField('zss_field_title').setPlainText('%s');", HtmlUtils.escapeHtml(title)));
+ execJs(String.format(Locale.US, "setTitle('%s');", HtmlUtils.escapeHtml(title)));
}
@Override
public String getTitle() {
- return HtmlUtils.unescapeHtml(new JsRunner().get(mWebView, "ZSSEditor.getField('zss_field_title').getHTML();"));
+ return HtmlUtils.unescapeHtml(new JsRunner().get(mWebView, "getTitle();"));
}
@Override
public void setContent(String content) {
- execJs(String.format(Locale.US, "ZSSEditor.getField('zss_field_content').setHTML('%s');", HtmlUtils.escapeHtml(content)));
+ execJs(String.format(Locale.US, "tinyMCE.editors[0].setContent('%s');", HtmlUtils.escapeHtml(content)));
}
@Override
public String getContent() {
- String content = HtmlUtils.unescapeHtml(new JsRunner().get(mWebView, "ZSSEditor.getField('zss_field_content').getHTML();"));
- if (!TextUtils.isEmpty(content)) {
- content = appendPTag(content);
- }
+ String content = HtmlUtils.unescapeHtml(new JsRunner().get(mWebView, "tinyMCE.editors[0].getContent();"));
+ content = content.replaceAll("\\n", "");
return content;
}
@Override
public void insertImage(String title, String url) {
- execJs(String.format(Locale.US, "ZSSEditor.insertImage('%s', '%s');", url, title));
+ execJs(String.format(Locale.US, "insertImage('%s');", url));
}
@Override
public void insertLink(String title, String url) {
- execJs(String.format(Locale.US, "ZSSEditor.insertLink('%s', '%s');", url, title));
+ execJs(String.format(Locale.US, "formatLink('%s');", url));
}
@Override
@@ -100,60 +94,44 @@ public class RichTextEditor extends Editor implements OnJsEditorStateChangedList
@Override
public void redo() {
- execJs("ZSSEditor.redo();");
+ execJs("tinyMCE.editors[0].undoManager.redo();");
}
@Override
public void undo() {
- execJs("ZSSEditor.undo();");
+ execJs("tinyMCE.editors[0].undoManager.undo();");
}
@Override
public void toggleOrderList() {
- execJs("ZSSEditor.setOrderedList();");
+ execJs("toggleOrderedList();");
}
@Override
public void toggleUnorderList() {
- execJs("ZSSEditor.setUnorderedList();");
+ execJs("toggleBulletList();");
}
@Override
public void toggleBold() {
- execJs("ZSSEditor.setBold();");
+ execJs("toggleBold();");
}
@Override
public void toggleItalic() {
- execJs("ZSSEditor.setItalic();");
+ execJs("toggleItalic();");
}
@Override
public void toggleQuote() {
- execJs("ZSSEditor.setBlockquote();");
+ execJs("toggleBlockquote();");
}
@Override
public void toggleHeading() {
- execJs("ZSSEditor.setHeading();");
+ execJs("toggleHeader();");
}
- private String appendPTag(String source) {
- String[] segments = source.split("\n\n");
- StringBuilder contentBuilder = new StringBuilder();
- if (segments.length > 0) {
- for (String segment : segments) {
- contentBuilder.append("");
- contentBuilder.append(segment);
- contentBuilder.append("
");
- }
- return contentBuilder.toString();
- } else {
- return source;
- }
- }
-
-
@Override
public void onDomLoaded() {
execJs("ZSSEditor.getField('zss_field_content').setMultiline('true');");
diff --git a/app/src/main/java/org/houxg/leamonax/model/Note.java b/app/src/main/java/org/houxg/leamonax/model/Note.java
index ba75d28..3a3e62d 100644
--- a/app/src/main/java/org/houxg/leamonax/model/Note.java
+++ b/app/src/main/java/org/houxg/leamonax/model/Note.java
@@ -284,7 +284,8 @@ public class Note extends BaseModel implements Serializable {
private boolean isChanged(String message, Object l, Object r) {
boolean isEqual = l.equals(r);
if (!isEqual) {
- Log.i("Note", message + " changed, origin=" + l + ", modified=" + r);
+ Log.i("Note", message + " changed, origin =" + l);
+ Log.i("Note", message + " changed, modified=" + r);
}
return !isEqual;
}
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 e672df8..89077a9 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
@@ -215,7 +215,7 @@ public class NoteEditActivity extends BaseActivity implements EditorFragment.Edi
if (!subscriber.isUnsubscribed()) {
updateNote();
if (mModified.note.isDirty()
- || mModified.note.hasChanges(mOriginal.note)
+ || mOriginal.note.hasChanges(mModified.note)
|| isLocalNote(mModified.note)
|| isTitleContentEmpty(mModified.note)
|| !CollectionUtils.isTheSame(mOriginal.tags, mModified.tags)) {