/*
* This file is part of NeighborNote
* Copyright 2013 Yuki Takahashi
*
* This file may be licensed under the terms of of the
* GNU General Public License Version 2 (the ``GPL'').
*
* Software distributed under the License is distributed
* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
* express or implied. See the GPL for the specific language
* governing rights and limitations.
*
* You should have received a copy of the GPL along with this
* program. If not, go to http://www.gnu.org/licenses/gpl.html
* or write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
package cx.fbn.nevernote.gui;
import java.awt.Desktop;
import com.trolltech.qt.core.QUrl;
import com.trolltech.qt.gui.QDesktopServices;
import com.trolltech.qt.gui.QDialog;
import com.trolltech.qt.gui.QPrintDialog;
import com.trolltech.qt.gui.QPrinter;
import com.trolltech.qt.gui.QVBoxLayout;
import com.trolltech.qt.gui.QWidget;
import cx.fbn.nevernote.clipboard.ClipBoardObserver;
import cx.fbn.nevernote.dialog.FindDialog;
import cx.fbn.nevernote.sql.DatabaseConnection;
public class TabBrowse extends QWidget {
private final DatabaseConnection conn;
private final BrowserWindow browser;
public Signal4<String, String, Boolean, BrowserWindow> contentsChanged;
private boolean noteDirty;
String saveTitle;
private final FindDialog find; // Text search in note dialog
private final TabBrowserWidget parent;
private final ClipBoardObserver cbObserver;
// コンストラクタ
public TabBrowse(DatabaseConnection c, TabBrowserWidget p, ClipBoardObserver cbObserver) {
conn = c;
parent = p;
this.cbObserver = cbObserver;
contentsChanged = new Signal4<String, String, Boolean, BrowserWindow>();
browser = new BrowserWindow(conn, this.cbObserver);
QVBoxLayout v = new QVBoxLayout();
v.addWidget(browser);
setLayout(v);
noteDirty = false;
browser.titleLabel.textChanged.connect(this, "titleChanged(String)");
browser.getBrowser().page().contentsChanged.connect(this,
"contentChanged()");
find = new FindDialog();
find.getOkButton().clicked.connect(this, "doFindText()");
}
@SuppressWarnings("unused")
private void contentChanged() {
noteDirty = true;
contentsChanged.emit(getBrowserWindow().getNote().getGuid(),
getBrowserWindow().getContent(), false, getBrowserWindow());
}
public BrowserWindow getBrowserWindow() {
return browser;
}
@SuppressWarnings("unused")
private void titleChanged(String value) {
int index = parent.indexOf(this);
if(index >= 0){
parent.setTabTitle(index, value);
}
}
@SuppressWarnings("unused")
private void findText() {
find.show();
find.setFocusOnTextField();
}
@SuppressWarnings("unused")
private void doFindText() {
browser.getBrowser().page().findText(find.getText(), find.getFlags());
find.setFocus();
}
@SuppressWarnings("unused")
private void printNote() {
QPrintDialog dialog = new QPrintDialog();
if (dialog.exec() == QDialog.DialogCode.Accepted.value()) {
QPrinter printer = dialog.printer();
browser.getBrowser().print(printer);
}
}
// Listener triggered when the email button is pressed
@SuppressWarnings("unused")
private void emailNote() {
if (Desktop.isDesktopSupported()) {
Desktop desktop = Desktop.getDesktop();
String text2 = browser.getContentsToEmail();
QUrl url = new QUrl("mailto:");
url.addQueryItem("subject", browser.getTitle());
url.addQueryItem("body", text2);
QDesktopServices.openUrl(url);
}
}
// noteDirtyの値を返す
public boolean getNoteDirty() {
return noteDirty;
}
}