import java.util.HashMap;\r
import java.util.List;\r
import java.util.Locale;\r
+import java.util.StringTokenizer;\r
\r
import org.apache.commons.lang.StringUtils;\r
\r
private List<Tag> allTags;\r
private List<String> currentTags;\r
public NoteSignal noteSignal;\r
+ public Signal2<String,String> evernoteLinkClicked;\r
private List<Notebook> notebookList;\r
private Note currentNote;\r
private String saveNoteTitle;\r
// fileWatcher.fileChanged.connect(this, "fileChanged(String)");\r
noteSignal = new NoteSignal();\r
titleLabel = new QLineEdit();\r
+ evernoteLinkClicked = new Signal2<String,String>();\r
titleLabel.setMaxLength(Constants.EDAM_NOTE_TITLE_LEN_MAX);\r
urlText = new QLineEdit();\r
authorText = new QLineEdit();\r
focusLost = new Signal0();\r
\r
tagEdit = new TagLineEdit(allTags);\r
- tagLabel = new QLabel("Tags:");\r
+ tagLabel = new QLabel(tr("Tags:"));\r
tagEdit.focusLost.connect(this, "modifyTagsTyping()");\r
\r
createdCalendarWidget = new QCalendarWidget();\r
alteredDate.setCalendarPopup(true);\r
alteredDate.setCalendarWidget(alteredCalendarWidget);\r
alteredTime = new QTimeEdit();\r
- alteredLabel = new QLabel("Altered:");\r
+ alteredLabel = new QLabel(tr("Altered:"));\r
alteredDate.dateChanged.connect(this, "alteredChanged()");\r
alteredTime.timeChanged.connect(this, "alteredChanged()");\r
\r
editLatex(guid);\r
return;\r
}\r
+ if (url.toString().startsWith("evernote:/view/")) {\r
+ StringTokenizer tokens = new StringTokenizer(url.toString().replace("evernote:/view/", ""), "/");\r
+ tokens.nextToken();\r
+ tokens.nextToken();\r
+ String sid = tokens.nextToken();\r
+ String lid = tokens.nextToken();\r
+ \r
+ // Emit that we want to switch to a new note\r
+ evernoteLinkClicked.emit(sid, lid);\r
+\r
+ return;\r
+ }\r
if (url.toString().startsWith("nnres://")) {\r
logger.log(logger.EXTREME, "URL is NN resource");\r
if (url.toString().endsWith("/vnd.evernote.ink")) {\r
\r
if (mime.hasUrls()) {\r
logger.log(logger.EXTREME, "URL paste found");\r
- handleUrls(mime);\r
- browser.setFocus();\r
+ if (!mime.text().startsWith("evernote:")) {\r
+ handleNoteLink(mime);\r
+ } else {\r
+ handleUrls(mime);\r
+ browser.setFocus();\r
+ }\r
return;\r
}\r
\r
}\r
plainText = crypt.decrypt(text, dialog.getPassword().trim(), 64);\r
if (plainText == null) {\r
- QMessageBox.warning(this, "Incorrect Password", "The password entered is not correct");\r
+ QMessageBox.warning(this, tr("Incorrect Password"), tr("The password entered is not correct"));\r
}\r
}\r
Pair<String,String> passwordPair = new Pair<String,String>();\r
return;\r
}\r
\r
+ // Handle pasting of a note-to-note link\r
+ private void handleNoteLink(QMimeData mime) {\r
+ for (int i=0; i<mime.urls().size(); i++) {\r
+ StringTokenizer tokens = new StringTokenizer(mime.urls().get(i).toString().replace("evernote:///view/", ""), "/");\r
+ tokens.nextToken();\r
+ tokens.nextToken();\r
+ String sid = tokens.nextToken();\r
+ String lid = tokens.nextToken();\r
+ \r
+ if (!sid.equals(currentNote.getGuid()) && !lid.equals(currentNote.getGuid())) {\r
+ \r
+ Note note = conn.getNoteTable().getNote(sid, false, false, false, false, false);\r
+ if (note == null)\r
+ note = conn.getNoteTable().getNote(lid, false, false, false, false, false);\r
+ \r
+ if (note == null)\r
+ return;\r
+\r
+ // If we've gotten this far, we have a bunch of values. We need to build the link.\r
+ StringBuffer url = new StringBuffer(100);\r
+ String script_start = new String(\r
+ "document.execCommand('insertHtml', false, '");\r
+ String script_end = new String("');");\r
+ \r
+ url.append("<a href=\""+mime.urls().get(i).toString() +"\" style=\"color:#69aa35\">");\r
+ url.append(note.getTitle());\r
+ url.append("</a>");\r
+ if (mime.urls().size() > 1)\r
+ url.append(" ");\r
+ browser.page().mainFrame().evaluateJavaScript(\r
+ script_start + url + script_end);\r
+ }\r
+ }\r
+ }\r
+ \r
// Handle URLs that are trying to be pasted\r
public void handleUrls(QMimeData mime) {\r
logger.log(logger.EXTREME, "Starting handleUrls");\r
\r
} catch (FileNotFoundException e) {\r
QMessageBox.critical(this, tr("Spell Check Error"), \r
- tr("Dictionary "+ Global.getFileManager().getSpellDirPath()+Locale.getDefault()+\r
- ".dic was not found."));\r
+ tr("Dictionary ")+ Global.getFileManager().getSpellDirPath()+Locale.getDefault()+\r
+ tr(".dic was not found."));\r
} catch (IOException e) {\r
QMessageBox.critical(this, tr("Spell Check Error"), \r
- tr("Dictionary "+ Global.getFileManager().getSpellDirPath()+Locale.getDefault()+\r
- ".dic is invalid."));\r
+ tr("Dictionary ")+ Global.getFileManager().getSpellDirPath()+Locale.getDefault()+\r
+ tr(".dic is invalid."));\r
}\r
\r
}\r