2 package cx.fbn.nevernote.gui;
4 import java.awt.Desktop;
6 import com.trolltech.qt.core.QUrl;
7 import com.trolltech.qt.gui.QDesktopServices;
8 import com.trolltech.qt.gui.QDialog;
9 import com.trolltech.qt.gui.QPrintDialog;
10 import com.trolltech.qt.gui.QPrinter;
11 import com.trolltech.qt.gui.QVBoxLayout;
12 import com.trolltech.qt.gui.QWidget;
14 import cx.fbn.nevernote.dialog.FindDialog;
15 import cx.fbn.nevernote.neighbornote.ClipBoardObserver;
16 import cx.fbn.nevernote.sql.DatabaseConnection;
18 public class TabBrowse extends QWidget {
19 private final DatabaseConnection conn;
20 private final BrowserWindow browser;
21 public Signal4<String, String, Boolean, BrowserWindow> contentsChanged;
22 private boolean noteDirty;
24 private final FindDialog find; // Text search in note dialog
25 private final TabBrowserWidget parent;
26 private final ClipBoardObserver cbObserver;
29 public TabBrowse(DatabaseConnection c, TabBrowserWidget p, ClipBoardObserver cbObserver) {
32 this.cbObserver = cbObserver;
33 contentsChanged = new Signal4<String, String, Boolean, BrowserWindow>();
34 browser = new BrowserWindow(conn, this.cbObserver);
35 QVBoxLayout v = new QVBoxLayout();
39 browser.titleLabel.textChanged.connect(this, "titleChanged(String)");
40 browser.getBrowser().page().contentsChanged.connect(this,
42 find = new FindDialog();
43 find.getOkButton().clicked.connect(this, "doFindText()");
46 @SuppressWarnings("unused")
47 private void contentChanged() {
49 contentsChanged.emit(getBrowserWindow().getNote().getGuid(),
50 getBrowserWindow().getContent(), false, getBrowserWindow());
53 public BrowserWindow getBrowserWindow() {
58 @SuppressWarnings("unused")
59 private void titleChanged(String value) {
60 int index = parent.indexOf(this);
62 parent.setTabTitle(index, value);
67 @SuppressWarnings("unused")
68 private void updateTitle(String guid, String title) {
69 if (guid.equals(getBrowserWindow().getNote().getGuid())
70 && (saveTitle != null && !title.equals(saveTitle) || saveTitle == null)) {
72 getBrowserWindow().loadingData(true);
73 getBrowserWindow().setTitle(title);
74 getBrowserWindow().getNote().setTitle(title);
75 getBrowserWindow().loadingData(false);
81 @SuppressWarnings("unused")
82 private void updateNotebook(String guid, String notebook) {
83 if (guid.equals(getBrowserWindow().getNote().getGuid())) {
84 getBrowserWindow().loadingData(true);
85 getBrowserWindow().setNotebook(notebook);
86 getBrowserWindow().loadingData(false);
92 @SuppressWarnings("unused")
93 private void updateTags(String guid, List<String> tags) {
94 if (guid.equals(getBrowserWindow().getNote().getGuid())) {
95 StringBuffer tagLine = new StringBuffer(100);
96 for (int i = 0; i < tags.size(); i++) {
98 tagLine.append(Global.tagDelimeter + " ");
99 tagLine.append(tags.get(i));
102 getBrowserWindow().loadingData(true);
103 getBrowserWindow().getTagLine().setText(tagLine.toString());
104 getBrowserWindow().loadingData(false);
109 @SuppressWarnings("unused")
110 private void findText() {
112 find.setFocusOnTextField();
115 @SuppressWarnings("unused")
116 private void doFindText() {
117 browser.getBrowser().page().findText(find.getText(), find.getFlags());
121 @SuppressWarnings("unused")
122 private void printNote() {
124 QPrintDialog dialog = new QPrintDialog();
125 if (dialog.exec() == QDialog.DialogCode.Accepted.value()) {
126 QPrinter printer = dialog.printer();
127 browser.getBrowser().print(printer);
131 // Listener triggered when the email button is pressed
132 @SuppressWarnings("unused")
133 private void emailNote() {
134 if (Desktop.isDesktopSupported()) {
135 Desktop desktop = Desktop.getDesktop();
137 String text2 = browser.getContentsToEmail();
138 QUrl url = new QUrl("mailto:");
139 url.addQueryItem("subject", browser.getTitle());
140 url.addQueryItem("body", text2);
141 QDesktopServices.openUrl(url);
146 public boolean getNoteDirty() {