From 9dfdace2300f7e39c81e73d150cd1648df965f99 Mon Sep 17 00:00:00 2001 From: Randy Baumgarte Date: Mon, 1 Aug 2011 07:34:49 -0400 Subject: [PATCH] Unicode fix for editing source HTML. --- src/cx/fbn/nevernote/NeverNote.java | 2 +- src/cx/fbn/nevernote/gui/BrowserWindow.java | 25 +++++++++++++++++++++++-- src/cx/fbn/nevernote/sql/NoteTable.java | 14 ++++---------- src/cx/fbn/nevernote/threads/SyncRunner.java | 5 ++++- src/cx/fbn/nevernote/xml/ExportData.java | 2 +- 5 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/cx/fbn/nevernote/NeverNote.java b/src/cx/fbn/nevernote/NeverNote.java index 76c373d..3ca3c48 100644 --- a/src/cx/fbn/nevernote/NeverNote.java +++ b/src/cx/fbn/nevernote/NeverNote.java @@ -4884,7 +4884,7 @@ public class NeverNote extends QMainWindow{ Note oldNote = conn.getNoteTable().getNote(guid, true, false,false,false,true); List resList = conn.getNoteTable().noteResourceTable.getNoteResources(guid, true); - oldNote.setContent(conn.getNoteTable().getNoteContentBinary(guid)); + oldNote.setContent(conn.getNoteTable().getNoteContentNoUTFConversion(guid)); oldNote.setResources(resList); duplicateNote(oldNote); } diff --git a/src/cx/fbn/nevernote/gui/BrowserWindow.java b/src/cx/fbn/nevernote/gui/BrowserWindow.java index 2741c49..2c2157c 100644 --- a/src/cx/fbn/nevernote/gui/BrowserWindow.java +++ b/src/cx/fbn/nevernote/gui/BrowserWindow.java @@ -38,6 +38,7 @@ import java.util.List; import java.util.Locale; import java.util.StringTokenizer; +import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import com.evernote.edam.limits.Constants; @@ -3384,9 +3385,12 @@ public class BrowserWindow extends QWidget { // Source edited @SuppressWarnings("unused") private void sourceEdited() { - QByteArray data = new QByteArray(sourceEditHeader+sourceEdit.toPlainText()+""); + QTextCodec codec = QTextCodec.codecForLocale(); + codec = QTextCodec.codecForName("UTF-8"); + String content = codec.fromUnicode(sourceEdit.toHtml()).toString(); + content = StringEscapeUtils.unescapeHtml(removeTags(content)); + QByteArray data = new QByteArray(sourceEditHeader+content+""); getBrowser().setContent(data); - checkNoteTitle(); noteSignal.noteChanged.emit(currentNote.getGuid(), sourceEdit.toPlainText()); } @@ -3412,4 +3416,21 @@ public class BrowserWindow extends QWidget { public void showSource(boolean value) { sourceEdit.setVisible(value); } + + // Remove HTML tags + private String removeTags(String text) { + StringBuffer buffer = new StringBuffer(text); + boolean inTag = false; + int bodyPosition = text.indexOf("=0; i--) { + if (buffer.charAt(i) == '>') + inTag = true; + if (buffer.charAt(i) == '<') + inTag = false; + if (inTag || buffer.charAt(i) == '<' || i