From e7980d4c8d87a5611a68f3a8c7b2e57db8c4158e Mon Sep 17 00:00:00 2001 From: Randy Baumgarte Date: Mon, 26 Sep 2011 12:08:09 -0400 Subject: [PATCH] Correct problem with # in the file name of an attachment. --- src/cx/fbn/nevernote/NeverNote.java | 2 +- src/cx/fbn/nevernote/config/FileManager.java | 11 ++++++++++- src/cx/fbn/nevernote/gui/BrowserWindow.java | 21 ++++++++++++--------- src/cx/fbn/nevernote/xml/NoteFormatter.java | 3 ++- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/cx/fbn/nevernote/NeverNote.java b/src/cx/fbn/nevernote/NeverNote.java index 7d9aa53..df4546a 100644 --- a/src/cx/fbn/nevernote/NeverNote.java +++ b/src/cx/fbn/nevernote/NeverNote.java @@ -965,7 +965,7 @@ public class NeverNote extends QMainWindow{ if (lower.startsWith("--disable-viewing")) startupConfig.setDisableViewing(true); } - Global.setup(startupConfig); + Global.setup(startupConfig); } // Exit point diff --git a/src/cx/fbn/nevernote/config/FileManager.java b/src/cx/fbn/nevernote/config/FileManager.java index fc67ab0..9345fd2 100644 --- a/src/cx/fbn/nevernote/config/FileManager.java +++ b/src/cx/fbn/nevernote/config/FileManager.java @@ -243,6 +243,15 @@ public class FileManager { public String getResDirPath(String relativePath) { return resDirPath + toPlatformPathSeparator(relativePath); } + + /** + * Get a path below the 'res' directory, using native {@link File#separator}. + * This will contain backslashes on Windows. This is different from the + * one above in that it will encode the relative path + */ + public String getResDirPathSpecialChar(String relativePath) { + return resDirPath + toPlatformPathSeparator(relativePath).replace("#", "%23"); + } /** * Get a file below the 'xml' directory. @@ -262,7 +271,7 @@ public class FileManager { private static String toPlatformPathSeparator(String relativePath) { // Sometimes a space in the file name comes across as a %20. This is to put it back as a space. relativePath = relativePath.replace("%20", " "); - return ALL_PATH_SEPARATORS_REGEX.matcher(relativePath).replaceAll( + return ALL_PATH_SEPARATORS_REGEX.matcher(relativePath).replaceAll( // Must double-escape backslashes, // because they have special meaning in the replacement string of Matcher.replaceAll (File.separator.equals("\\") ? "\\\\" : File.separator)); diff --git a/src/cx/fbn/nevernote/gui/BrowserWindow.java b/src/cx/fbn/nevernote/gui/BrowserWindow.java index 052bad6..6c44862 100644 --- a/src/cx/fbn/nevernote/gui/BrowserWindow.java +++ b/src/cx/fbn/nevernote/gui/BrowserWindow.java @@ -1099,8 +1099,6 @@ public class BrowserWindow extends QWidget { } QClipboard clipboard = QApplication.clipboard(); QMimeData mime = clipboard.mimeData(); - -// String x = mime.html(); if (mime.hasImage()) { logger.log(logger.EXTREME, "Image paste found"); @@ -1112,7 +1110,7 @@ public class BrowserWindow extends QWidget { if (mime.hasUrls()) { logger.log(logger.EXTREME, "URL paste found"); - if (!mime.text().startsWith("evernote:")) { + if (mime.text().startsWith("evernote:")) { handleNoteLink(mime); } else { handleUrls(mime); @@ -2406,15 +2404,15 @@ public class BrowserWindow extends QWidget { imageURL = file.fileName() + ".png"; } } - + logger.log(logger.EXTREME, "Generating link tags"); buffer.delete(0, buffer.length()); buffer.append(""); - buffer.append(""); + buffer.append(""); buffer.append(""); browser.page().mainFrame().evaluateJavaScript( script_start + buffer.toString() + script_end); @@ -2424,13 +2422,18 @@ public class BrowserWindow extends QWidget { private Resource createResource(String url, int sequence, String mime, boolean attachment) { logger.log(logger.EXTREME, "Inside create resource"); - QFile resourceFile; + QFile resourceFile; + //These two lines are added to handle odd characters in the name like #. Without it + // toLocalFile() chokes and returns the wrong name. + url = url.replace("file:///", ""); + url = url.replace("file://", ""); String urlTest = new QUrl(url).toLocalFile(); + urlTest = url; if (!urlTest.equals("")) url = urlTest; - url = url.replace("/", File.separator); +// url = url.replace("/", File.separator); logger.log(logger.EXTREME, "Reading from file to create resource"); - resourceFile = new QFile(url); + resourceFile = new QFile(url); resourceFile.open(new QIODevice.OpenMode(QIODevice.OpenModeFlag.ReadOnly)); // logger.log(logger.EXTREME, "Error opening file "+url.toString() +": "+resourceFile.errorString()); byte[] fileData = resourceFile.readAll().toByteArray(); diff --git a/src/cx/fbn/nevernote/xml/NoteFormatter.java b/src/cx/fbn/nevernote/xml/NoteFormatter.java index 0632121..f93a523 100644 --- a/src/cx/fbn/nevernote/xml/NoteFormatter.java +++ b/src/cx/fbn/nevernote/xml/NoteFormatter.java @@ -197,6 +197,7 @@ public class NoteFormatter { for (int j=z-1; j>i+1; j--) html.deleteCharAt(j); } + return html.toString(); } @@ -584,7 +585,7 @@ public class NoteFormatter { newText.setAttribute("src", Global.getFileManager().getImageDirPath(icon)); if (goodPreview) { // NFC TODO: should this be a 'file://' URL? - newText.setAttribute("src", fileManager.getResDirPath(filePath)); + newText.setAttribute("src", fileManager.getResDirPathSpecialChar(filePath)); newText.setAttribute("style", "border-style:solid; border-color:green; padding:0.5mm 0.5mm 0.5mm 0.5mm;"); } newText.setAttribute("title", fileDetails); -- 2.11.0