2 * This file is part of NeverNote
\r
3 * Copyright 2009 Randy Baumgarte
\r
5 * This file may be licensed under the terms of of the
\r
6 * GNU General Public License Version 2 (the ``GPL'').
\r
8 * Software distributed under the License is distributed
\r
9 * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
\r
10 * express or implied. See the GPL for the specific language
\r
11 * governing rights and limitations.
\r
13 * You should have received a copy of the GPL along with this
\r
14 * program. If not, go to http://www.gnu.org/licenses/gpl.html
\r
15 * or write to the Free Software Foundation, Inc.,
\r
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
\r
20 package cx.fbn.nevernote.gui;
\r
22 import java.awt.Desktop;
\r
23 import java.util.List;
\r
25 import com.trolltech.qt.core.QUrl;
\r
26 import com.trolltech.qt.core.Qt.WidgetAttribute;
\r
27 import com.trolltech.qt.gui.QCloseEvent;
\r
28 import com.trolltech.qt.gui.QDesktopServices;
\r
29 import com.trolltech.qt.gui.QDialog;
\r
30 import com.trolltech.qt.gui.QMdiSubWindow;
\r
31 import com.trolltech.qt.gui.QPrintDialog;
\r
32 import com.trolltech.qt.gui.QPrinter;
\r
34 import cx.fbn.nevernote.Global;
\r
35 import cx.fbn.nevernote.dialog.FindDialog;
\r
36 import cx.fbn.nevernote.sql.DatabaseConnection;
\r
38 public class ExternalBrowse extends QMdiSubWindow {
\r
39 private final DatabaseConnection conn;
\r
40 private final BrowserWindow browser;
\r
41 public Signal4<String, String, Boolean, BrowserWindow> contentsChanged;
\r
42 public Signal1<String> windowClosing;
\r
44 private final FindDialog find; // Text search in note dialog
\r
45 // ExternalBrowserMenuBar menu;
\r
46 ExternalBrowserMenuBar menu;
\r
49 public ExternalBrowse(DatabaseConnection c) {
\r
50 setAttribute(WidgetAttribute.WA_QuitOnClose, false);
\r
51 setWindowTitle(tr("NeverNote"));
\r
53 contentsChanged = new Signal4<String, String, Boolean, BrowserWindow>();
\r
54 windowClosing = new Signal1<String>();
\r
55 browser = new BrowserWindow(conn);
\r
56 menu = new ExternalBrowserMenuBar(this);
\r
57 for (int i=0; i<menu.actions().size(); i++) {
\r
58 addAction(menu.actions().get(i));
\r
63 browser.titleLabel.textChanged.connect(this, "titleChanged(String)");
\r
64 browser.getBrowser().page().contentsChanged.connect(this, "contentChanged()");
\r
65 find = new FindDialog();
\r
66 find.getOkButton().clicked.connect(this, "doFindText()");
\r
69 @SuppressWarnings("unused")
\r
70 private void contentChanged() {
\r
72 contentsChanged.emit(getBrowserWindow().getNote().getGuid(), getBrowserWindow().getContent(), false, getBrowserWindow());
\r
77 public void closeEvent(QCloseEvent event) {
\r
79 contentsChanged.emit(getBrowserWindow().getNote().getGuid(), getBrowserWindow().getContent(), true, getBrowserWindow());
\r
80 windowClosing.emit(getBrowserWindow().getNote().getGuid());
\r
83 public BrowserWindow getBrowserWindow() {
\r
87 @SuppressWarnings("unused")
\r
88 private void titleChanged(String value) {
\r
89 setWindowTitle(tr("NeverNote - ") +value);
\r
92 @SuppressWarnings("unused")
\r
93 private void updateTitle(String guid, String title) {
\r
94 if (guid.equals(getBrowserWindow().getNote().getGuid())) {
\r
95 getBrowserWindow().loadingData(true);
\r
96 getBrowserWindow().setTitle(title);
\r
97 getBrowserWindow().getNote().setTitle(title);
\r
98 getBrowserWindow().loadingData(false);
\r
101 @SuppressWarnings("unused")
\r
102 private void updateNotebook(String guid, String notebook) {
\r
103 if (guid.equals(getBrowserWindow().getNote().getGuid())) {
\r
104 getBrowserWindow().loadingData(true);
\r
105 getBrowserWindow().setNotebook(notebook);
\r
106 getBrowserWindow().loadingData(false);
\r
110 @SuppressWarnings("unused")
\r
111 private void updateTags(String guid, List<String> tags) {
\r
112 if (guid.equals(getBrowserWindow().getNote().getGuid())) {
\r
113 StringBuffer tagLine = new StringBuffer(100);
\r
114 for (int i=0; i<tags.size(); i++) {
\r
116 tagLine.append(Global.tagDelimeter+" ");
\r
117 tagLine.append(tags.get(i));
\r
120 getBrowserWindow().loadingData(true);
\r
121 getBrowserWindow().getTagLine().setText(tagLine.toString());
\r
122 getBrowserWindow().loadingData(false);
\r
127 @SuppressWarnings("unused")
\r
128 private void findText() {
\r
130 find.setFocusOnTextField();
\r
132 @SuppressWarnings("unused")
\r
133 private void doFindText() {
\r
134 browser.getBrowser().page().findText(find.getText(), find.getFlags());
\r
139 @SuppressWarnings("unused")
\r
140 private void printNote() {
\r
142 QPrintDialog dialog = new QPrintDialog();
\r
143 if (dialog.exec() == QDialog.DialogCode.Accepted.value()) {
\r
144 QPrinter printer = dialog.printer();
\r
145 browser.getBrowser().print(printer);
\r
149 // Listener triggered when the email button is pressed
\r
150 @SuppressWarnings("unused")
\r
151 private void emailNote() {
\r
152 if (Desktop.isDesktopSupported()) {
\r
153 Desktop desktop = Desktop.getDesktop();
\r
155 String text2 = browser.getContentsToEmail();
\r
156 QUrl url = new QUrl("mailto:");
\r
157 url.addQueryItem("subject", browser.getTitle());
\r
158 url.addQueryItem("body", text2);
\r
159 QDesktopServices.openUrl(url);
\r