import com.trolltech.qt.core.QFileSystemWatcher;\r
import com.trolltech.qt.core.QIODevice;\r
import com.trolltech.qt.core.QMimeData;\r
+import com.trolltech.qt.core.QTextCodec;\r
import com.trolltech.qt.core.QUrl;\r
import com.trolltech.qt.core.Qt.Key;\r
import com.trolltech.qt.core.Qt.KeyboardModifier;\r
import cx.fbn.nevernote.sql.DatabaseConnection;\r
import cx.fbn.nevernote.utilities.ApplicationLogger;\r
import cx.fbn.nevernote.utilities.FileUtils;\r
+import cx.fbn.nevernote.utilities.Pair;\r
\r
public class BrowserWindow extends QWidget {\r
\r
spellCheckDialog = new SpellCheck(checker);\r
}\r
public void spellingError(SpellCheckEvent event) {\r
- System.out.println("**" +event.getInvalidWord());\r
errorsFound = true;\r
spellCheckDialog.setWord(event.getInvalidWord());\r
\r
- List<Word> suggestions = event.getSuggestions();\r
+ @SuppressWarnings("unchecked")\r
+ List<Word> suggestions = event.getSuggestions();\r
spellCheckDialog.clearSuggestions();\r
if (!suggestions.isEmpty()) {\r
// spellCheckDialog.setCurrentSuggestion(suggestions.get(0).getWord());\r
// New Editor Button\r
private QPushButton newEditorButton(String name, String toolTip) {\r
QPushButton button = new QPushButton();\r
- QIcon icon = new QIcon(iconPath + name + ".gif");\r
+// QIcon icon = new QIcon(iconPath + name + ".gif");\r
+ QIcon icon = new QIcon(iconPath + name + ".png");\r
button.setIcon(icon);\r
button.setToolTip(toolTip);\r
button.clicked.connect(this, name + "Clicked()");\r
// New Editor Button\r
private QToolButton newToolButton(String name, String toolTip) {\r
QToolButton button = new QToolButton();\r
- QIcon icon = new QIcon(iconPath + name + ".gif");\r
+// QIcon icon = new QIcon(iconPath + name + ".gif");\r
+ QIcon icon = new QIcon(iconPath + name + ".png");\r
button.setIcon(icon);\r
button.setToolTip(toolTip);\r
button.clicked.connect(this, name + "Clicked()");\r
String text = browser.selectedText();\r
if (text.trim().equalsIgnoreCase(""))\r
return;\r
+ text = new String(text.replaceAll("\n", "<br/>"));\r
\r
EnCryptDialog dialog = new EnCryptDialog();\r
dialog.exec();\r
\r
EnCrypt crypt = new EnCrypt();\r
String encrypted = crypt.encrypt(text, dialog.getPassword().trim(), 64);\r
+ String decrypted = crypt.decrypt(encrypted, dialog.getPassword().trim(), 64);\r
\r
if (encrypted.trim().equals("")) {\r
QMessageBox.information(this, tr("Error"), tr("Error Encrypting String"));\r
+ dialog.getHint().replace("'","\\'") + "\" length=\"64\" ");\r
buffer.append("contentEditable=\"false\" alt=\"");\r
buffer.append(encrypted);\r
- // NFC FIXME: should this be a file URL like in handleLocalAttachment and importAttachment?\r
buffer.append("\" src=\"").append(FileUtils.toForwardSlashedPath(Global.getFileManager().getImageDirPath("encrypt.png") +"\""));\r
Global.cryptCounter++;\r
buffer.append(" id=\"crypt"+Global.cryptCounter.toString() +"\"");\r
\r
// First, try to decrypt with any keys we already have\r
for (int i=0; i<Global.passwordRemember.size(); i++) {\r
- plainText = crypt.decrypt(text, Global.passwordRemember.get(i), 64);\r
+ plainText = crypt.decrypt(text, Global.passwordRemember.get(i).getFirst(), 64);\r
if (plainText != null) {\r
slot = new String(Long.toString(l));\r
Global.passwordSafe.put(slot, Global.passwordRemember.get(i));\r
QMessageBox.warning(this, "Incorrect Password", "The password entered is not correct");\r
}\r
}\r
- Global.passwordSafe.put(slot, dialog.getPassword());\r
+ Pair<String,String> passwordPair = new Pair<String,String>();\r
+ passwordPair.setFirst(dialog.getPassword());\r
+ passwordPair.setSecond(dialog.getHint());\r
+ Global.passwordSafe.put(slot, passwordPair);\r
+// removeEncryption(id, plainText.replaceAll("\n", "<br/>"), dialog.permanentlyDecrypt(), slot);\r
removeEncryption(id, plainText, dialog.permanentlyDecrypt(), slot);\r
- if (dialog.rememberPassword())\r
- Global.passwordRemember.add(dialog.getPassword());\r
+ if (dialog.rememberPassword()) {\r
+ Pair<String, String> pair = new Pair<String,String>();\r
+ pair.setFirst(dialog.getPassword());\r
+ pair.setSecond(dialog.getHint());\r
+ Global.passwordRemember.add(pair);\r
+ }\r
\r
}\r
\r
String newTagArray[];\r
if (!completionText.equals("")) {\r
String before = tagEdit.text().substring(0,tagEdit.cursorPosition());\r
- before = before.substring(0,before.lastIndexOf(Global.tagDelimeter));\r
+ int lastDelimiter = before.lastIndexOf(Global.tagDelimeter);\r
+ if (lastDelimiter > 0)\r
+ before = before.substring(0,before.lastIndexOf(Global.tagDelimeter));\r
+ else \r
+ before = "";\r
String after = tagEdit.text().substring(tagEdit.cursorPosition());\r
newTagArray = (before+Global.tagDelimeter+completionText+Global.tagDelimeter+after).split(Global.tagDelimeter);\r
}\r
}\r
}\r
}\r
+ \r
+ \r
+ // Set the notebook for a note\r
+ public void setNotebook(String notebook) {\r
+ currentNote.setNotebookGuid(notebook);\r
+ loadNotebookList();\r
+ }\r
\r
// Get the contents of the editor\r
public String getContent() {\r
\r
PDFPreview pdfPreview = new PDFPreview();\r
if (pdfPreview.setupPreview(Global.getFileManager().getResDirPath(fileName), "pdf",0)) {\r
- // NFC TODO: should this be a 'file://' url like the ones above?\r
imageURL = file.fileName() + ".png";\r
}\r
}\r
// Strip URL prefix and base dir\r
guid = guid.replace("nnres://", "")\r
.replace(FileUtils.toForwardSlashedPath(Global.getFileManager().getResDirPath()), "");\r
+ guid = guid.replace("file://", "").replace("/", "")\r
+ .replace(FileUtils.toForwardSlashedPath(Global.getFileManager().getResDirPath()), "");\r
\r
pos = guid.lastIndexOf('.');\r
if (pos > 0)\r
// * User chose to save an attachment. Pares out the request *\r
// * into a guid & file. Save the result. --- DONE FROM downloadAttachment now!!!!! \r
// ************************************************************\r
- // NFC TODO: unused? remove\r
public void downloadImage(QNetworkRequest request) {\r
QFileDialog fd = new QFileDialog(this);\r
fd.setFileMode(FileMode.AnyFile);\r
// *************************************************************\r
private void removeEncryption(String id, String plainText, boolean permanent, String slot) {\r
if (!permanent) {\r
- plainText = " <en-crypt-temp slot=\""+slot +"\">" +plainText+"</en-crypt-temp> ";\r
+ plainText = " <table class=\"en-crypt-temp\" slot=\""\r
+ +slot \r
+ +"\""\r
+ +"border=1 width=100%><tbody><tr><td>"\r
+ +plainText+"</td></tr></tbody></table>";\r
}\r
\r
String html = browser.page().mainFrame().toHtml();\r
endPos = text.indexOf(">", imagePos);\r
String tag = text.substring(imagePos-1,endPos);\r
if (tag.indexOf("id=\""+id+"\"") > -1) {\r
- text = text.substring(0,imagePos) +plainText+text.substring(endPos+1);\r
- \r
- browser.setContent(new QByteArray(text));\r
- contentChanged();\r
+ text = text.substring(0,imagePos) +plainText+text.substring(endPos+1); \r
+ QTextCodec codec = QTextCodec.codecForName("UTF-8");\r
+ QByteArray unicode = codec.fromUnicode(text);\r
+ browser.setContent(unicode);\r
+ if (permanent)\r
+ contentChanged();\r
}\r
imagePos = text.indexOf("<img", imagePos+1);\r
}\r
+" var workingNode = window.getSelection().anchorNode.parentNode;"\r
+" while(workingNode != null) { " \r
// +" window.jambi.printNode(workingNode.nodeName);"\r
- +" if (workingNode.nodeName=='EN-CRYPT-TEMP') window.jambi.forceTextPaste();"\r
+ +" if (workingNode.nodeName=='TABLE') { if (workingNode.getAttribute('class').toLowerCase() == 'en-crypt-temp') window.jambi.forceTextPaste(); }"\r
+" if (workingNode.nodeName=='B') window.jambi.boldActive();"\r
+" if (workingNode.nodeName=='I') window.jambi.italicActive();"\r
+" if (workingNode.nodeName=='U') window.jambi.underlineActive();"\r
}\r
*/\r
\r
+ @SuppressWarnings("unused")\r
private void toggleUndoVisible(Boolean toggle) {\r
undoAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("undo", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleRedoVisible(Boolean toggle) {\r
redoAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("redo", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleCutVisible(Boolean toggle) {\r
cutAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("cut", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleCopyVisible(Boolean toggle) {\r
copyAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("copy", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void togglePasteVisible(Boolean toggle) {\r
pasteAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("paste", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleBoldVisible(Boolean toggle) {\r
boldAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("bold", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleItalicVisible(Boolean toggle) {\r
italicAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("italic", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleUnderlineVisible(Boolean toggle) {\r
underlineAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("underline", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleStrikethroughVisible(Boolean toggle) {\r
strikethroughAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("strikethrough", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleLeftAlignVisible(Boolean toggle) {\r
leftAlignAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("alignLeft", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleRightAlignVisible(Boolean toggle) {\r
rightAlignAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("alignRight", toggle);\r
} \r
+ @SuppressWarnings("unused")\r
private void toggleCenterAlignVisible(Boolean toggle) {\r
centerAlignAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("alignCenter", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleHLineVisible(Boolean toggle) {\r
hlineAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("hline", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleIndentVisible(Boolean toggle) {\r
indentAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("indent", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleTodoVisible(Boolean toggle) {\r
todoAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("todo", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleOutdentVisible(Boolean toggle) {\r
outdentAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("outdent", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleBulletListVisible(Boolean toggle) {\r
bulletListAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("bulletList", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleNumberListVisible(Boolean toggle) {\r
numberListAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("numberList", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleFontListVisible(Boolean toggle) {\r
fontListAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("font", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleFontColorVisible(Boolean toggle) {\r
fontColorAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("fontColor", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleFontSizeVisible(Boolean toggle) {\r
fontSizeAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("fontSize", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleFontHilightVisible(Boolean toggle) {\r
fontHilightAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("fontHilight", toggle);\r
}\r
+ @SuppressWarnings("unused")\r
private void toggleSpellCheckVisible(Boolean toggle) {\r
spellCheckAction.setVisible(toggle);\r
Global.saveEditorButtonsVisible("spellCheck", toggle);\r
}\r
\r
// Invoke spell checker dialog\r
+ @SuppressWarnings("unused")\r
private void spellCheckClicked() {\r
\r
if (spellChecker == null) {\r