OSDN Git Service

Added inter-note links. Added index content controls. Altered Android Unicode test...
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / gui / BrowserWindow.java
index f47dd85..69a0d5b 100644 (file)
@@ -36,6 +36,7 @@ import java.util.GregorianCalendar;
 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
@@ -162,6 +163,7 @@ public class BrowserWindow extends QWidget {
        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
@@ -302,6 +304,7 @@ public class BrowserWindow extends QWidget {
 //             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
@@ -314,7 +317,7 @@ public class BrowserWindow extends QWidget {
                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
@@ -332,7 +335,7 @@ public class BrowserWindow extends QWidget {
                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
@@ -876,6 +879,18 @@ public class BrowserWindow extends QWidget {
                        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
@@ -1048,8 +1063,12 @@ public class BrowserWindow extends QWidget {
 \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
@@ -1662,7 +1681,7 @@ public class BrowserWindow extends QWidget {
                        }\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
@@ -2113,6 +2132,41 @@ public class BrowserWindow extends QWidget {
                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("&nbsp;");\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
@@ -3216,12 +3270,12 @@ public class BrowserWindow extends QWidget {
 \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