showMessage(tr("Checking: %1").arg(page.toString()));
+ if (!check(page)) {
+ LOG<<"########## BLACK LISTED IGNORED ##########";
+ statusBar()->showMessage(tr("Forbidden: %1").arg(page.toString()));
+ QMessageBox::warning(this, tr("Access Denied"),
+ tr("Access denied due to security"
+ " considerations.
You are not"
+ " allowed to connect to %1.")
+ .arg(page.toString()));
+ return;
+ }
+ statusBar()->showMessage(tr("Reading: %1").arg(page.toString()));
+ if (!page.isValid()) {
+ statusBar()->showMessage(tr("Illegal URL: %1").arg(page.errorString()));
+ return;
+ }
+ if (!view) view=qobject_cast(_tabs->currentWidget());
+ view->load(page);
+ }
+
+ void newSettings() {
+ _searchEngines->clear();
+ for (Settings::SearchEngines::const_iterator
+ it(_settings.searchEngines().begin());
+ it!=_settings.searchEngines().end(); it++)
+ if (QFile(":/icons/"+it.key()).exists())
+ _searchEngines->addItem(QIcon(":/icons/"+it.key()), "", it.value());
+ else
+ _searchEngines->addItem(it.key(), it.value());
+ if (_searchEngines->count()==0)
+ _searchEngines->addItem(QIcon(":/icons/gg"), tr("gg"),
+ tr("http://www.google.com/search?hl=%2&q=%1"));
+ }
+
+ void on_actionAddBookmark_triggered() {
+ QComboBox* url(qobject_cast(_url));
+ if (_url) {
+ url->addItem(url->currentText());
+ QAction* a(_bookmarks->addAction(url->currentText()));
+ a->setData(url->currentText());
+ connect(a, SIGNAL(triggered(bool)), SLOT(loadFromHistory()));
+ }
+ }
+
+ void on_actionEditBookmarks_triggered() {
+ _editbookmarks->show();
+ }
+
+ void zoom(int i) {
+ LOG<showMessage(tr("Zoom: %1%").arg(i));
+ qobject_cast(_tabs->currentWidget())->setZoomFactor(i/100.0);
+ }
+
+ void loadFromHistory() {
+ load(qobject_cast(sender())->data().toString());
+ }
+
+ void on_actionHome_activated() {
+ LOG;
+ load(_home);
+ }
+
+ void on_actionNew_triggered() {
+ LOG;
+ QStringList args(QCoreApplication::arguments());
+ QString prg(args.takeFirst());
+ statusBar()->showMessage(tr("opening new window"), 5000);
+ QProcess::startDetached(prg, args);
+ }
+
+ void on_actionNewTab_triggered() {
+ newTab();
+ }
+
+ void on_actionCloseTab_triggered() {
+ on__tabs_tabCloseRequested(_tabs->currentIndex());
+ }
+
+ void on__tabs_currentChanged(int index) {
+ if (qobject_cast(_url))
+ qobject_cast(_url)->setEditText
+ (qobject_cast(_tabs->currentWidget())
+ ->url().toString());
+ else
+ qobject_cast(_url)->setText
+ (qobject_cast(_tabs->currentWidget())
+ ->url().toString());
+ activateTab();
+ }
+
+ void on__tabs_tabCloseRequested(int index) {
+ _tabs->removeTab(index);
+ _tabs->setTabsClosable(_tabs->count()>1);
+ }
+
+ void on_actionPrintPreview_triggered() {
+ QPrintPreviewDialog preview(&_printer, this);
+ connect(&preview, SIGNAL(paintRequested(QPrinter*)),
+ qobject_cast(_tabs->currentWidget()),
+ SLOT(print(QPrinter*)));
+ preview.exec();
+ }
+
+ void on_actionInstantPrint_triggered() {
+ qobject_cast(_tabs->currentWidget())->print(&_printer);
+ }
+
+ void on_actionPrint_triggered() {
+ QPrintDialog dialog(&_printer, this);
+ dialog.setWindowTitle(tr("Print Document"));
+ if (dialog.exec()!=QDialog::Accepted) return;
+ on_actionInstantPrint_triggered();
+ }
+
+ void on_actionClose_triggered() {
+ LOG;
+ close();
+ }
+
+ void on_actionBack_triggered() {
+ LOG;
+ qobject_cast(_tabs->currentWidget())->history()->back();
+ }
+
+ void on_actionBack_hovered() {
+ LOG;
+ if (!qobject_cast(_tabs->currentWidget())->history()
+ ->backItem().isValid())
+ return;
+ actionBack->setStatusTip
+ (tr("%1 - %2", "statusbar actionBack_hovered %1=url %2=title")
+ .arg(qobject_cast(_tabs->currentWidget())->history()
+ ->backItem().url().toString())
+ .arg(qobject_cast(_tabs->currentWidget())->history()
+ ->backItem().title()));
+ actionBack->showStatusText(this);
+ }
+
+ void on_actionForward_triggered() {
+ LOG;
+ qobject_cast(_tabs->currentWidget())->history()->forward();
+ }
+
+ void on_actionForward_hovered() {
+ LOG;
+ if (!qobject_cast(_tabs->currentWidget())->history()
+ ->forwardItem().isValid())
+ return;
+ actionForward->setStatusTip
+ (tr("%1 - %2", "statusbar actionForward_hovered %1=url %2=title")
+ .arg(qobject_cast(_tabs->currentWidget())->history()
+ ->forwardItem().url().toString())
+ .arg(qobject_cast(_tabs->currentWidget())->history()
+ ->forwardItem().title()));
+ actionForward->showStatusText(this);
+ }
+
+ void on_actionReload_triggered() {
+ LOG;
+ qobject_cast(_tabs->currentWidget())->reload();
+ }
+
+ void on_actionStop_triggered() {
+ LOG;
+ for (int i(0); i<_tabs->count(); ++i)
+ qobject_cast(_tabs->widget(i))->stop();
+ _downloadManager.abort();
+ }
+
+ void on_actionClearLocation_triggered() {
+ if (!qobject_cast(_url)) return;
+ qobject_cast(_url)->clearEditText();
+ qobject_cast(_url)->setFocus();
+ }
+
+ void on_actionClearFind_triggered() {
+ _find->clear();
+ _find->setFocus();
+ }
+
+ void on_actionFind_triggered() {
+ if (_find->isHidden()) {
+ _find->setText(qobject_cast(_tabs->currentWidget())
+ ->selectedText());
+ _find->show();
+ }
+ disconnect(_find, SIGNAL(returnPressed()), this, SLOT(rfind()));
+ disconnect(_find, SIGNAL(textEdited(QString)), this, SLOT(rfind()));
+ assert(connect(_find, SIGNAL(returnPressed()), SLOT(find())));
+ assert(connect(_find, SIGNAL(textEdited(QString)), SLOT(find())));
+ _find->changeStyleSheet(tr("background-color: white", "neutral find"));
+ _find->setFocus();
+ }
+
+ void on_actionReverseFind_triggered() {
+ if (_find->isHidden()) {
+ _find->setText(qobject_cast(_tabs->currentWidget())
+ ->selectedText());
+ _find->show();
+ }
+ disconnect(_find, SIGNAL(returnPressed()), this, SLOT(find()));
+ disconnect(_find, SIGNAL(textEdited(QString)), this, SLOT(find()));
+ assert(connect(_find, SIGNAL(returnPressed()), SLOT(rfind())));
+ assert(connect(_find, SIGNAL(textEdited(QString)), SLOT(rfind())));
+ _find->changeStyleSheet(tr("background-color: white", "neutral find"));
+ _find->setFocus();
+ }
+
+ void find(const QString& txt=QString()) {
+ if (qobject_cast(_tabs->currentWidget())->findText
+ (_find->text(),
+ QWebPage::FindWrapsAroundDocument))
+ _find->changeStyleSheet(tr("background-color: #ADA", "text found"));
+ else
+ _find->changeStyleSheet(tr("background-color: #F77", "text not found"));
+ }
+
+ void rfind(const QString& txt=QString()) {
+ if(qobject_cast(_tabs->currentWidget())->findText
+ (_find->text(),
+ QWebPage::FindWrapsAroundDocument
+ |QWebPage::FindBackward))
+ _find->changeStyleSheet(tr("background-color: #ADA", "text found"));
+ else
+ _find->changeStyleSheet(tr("background-color: #F77", "text not found"));
+ }
+
+ void on_actionUnFind_triggered() {
+ _find->hide();
+ }
+
+ void on_actionSearch_triggered() {
+ load(_searchEngines->itemData(_searchEngines->currentIndex()).toString()
+ .arg(_search->text())
+ .arg(QLocale::system().name().left(2)));
+ }
+
+ void on_actionClearSearch_triggered() {
+ _search->clear();
+ }
+
+ void on_actionProxy_triggered() {
+ _proxy.show();
+ }
+
+ void on_actionLoginCertificate_triggered() {
+ _logincertificate.show();
+ }
+
+ void on_actionErrorLog_triggered() {
+ _errorLog.show();
+ }
+
+ void on_actionAbout_triggered() {
+ QMessageBox::about(this, tr("About"),
+ tr("%8\n"
+ "Version: %1\n"
+ "Builddate: %2\n"
+ "Libraries:\n"
+ "%3\n"
+ "%4\n"
+ "qt-%5 (%6)\n"
+ "openssl-%7")
+ .arg(VERSION)
+ .arg(BUILDDATE)
+ .arg(QString::fromStdString(proxy::version()))
+ .arg(QString::fromStdString(pcsc::version()))
+ .arg(qVersion())
+ .arg(QT_VERSION_STR)
+ .arg(SHLIB_VERSION_NUMBER)
+ .arg(QApplication::applicationName()));
+ }
+
+ void on_actionSettings_triggered() {
+ _settings.show();
+ }
+
+ void on_actionSaveWindowState_triggered() {
+ saveWin();
+ }
+
+ void on_actionLoadWindowState_triggered() {
+ loadWin();
+ }
+
+ void saveWin() {
+ LOG<<"Save Window State";
+ if (!_settings()) return;
+ QStringList urls;
+ if (qobject_cast(_url))
+ for (int i(0); i(_url)->count(); ++i)
+ urls<(_url)->itemText(i);
+ _settings()->setValue("Window/Urls", urls);
+ QStringList tabs;
+ for (int i(0); i<_tabs->count(); ++i)
+ tabs<(_tabs->widget(i))->url().toString();
+ _settings()->setValue("Window/Tabs", tabs);
+ _settings()->setValue("Window/CurrentTab", _tabs->currentIndex());
+ _settings()->setValue("Window/Geometry", saveGeometry());
+ _settings()->setValue("Window/WindowState", saveState());
+ }
+
+ void loadWin() {
+ LOG;
+ QStringList urls(_settings()->value("Window/Urls").toStringList());
+ urls.sort();
+ urls.removeDuplicates();
+ if (qobject_cast(_url)) {
+ qobject_cast(_url)->clear();
+ qobject_cast(_url)->addItems(urls);
+ }
+ _bookmarks->clear();
+ for (QStringList::iterator it(urls.begin()); it!=urls.end(); ++it) {
+ QAction* a(_bookmarks->addAction(*it));
+ a->setData(*it);
+ connect(a, SIGNAL(triggered(bool)), SLOT(loadFromHistory()));
+ }
+ QStringList tabs(_settings()->value("Window/Tabs").toStringList());
+ int oldCnt(_tabs->count());
+ for (QStringList::iterator it(tabs.begin()); it!=tabs.end(); ++it) {
+ LOG<<"-------------------------------------------------------------";
+ load(*it, newTab());
+ LOG<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++";
+ }
+ for (int i(0); icount()>1; ++i) _tabs->removeTab(0);
+ _tabs->setTabsClosable(_tabs->count()>1);
+ _tabs->setCurrentIndex(_settings()->value("Window/CurrentTab").toInt());
+ restoreGeometry(_settings()->value("Window/Geometry").toByteArray());
+ restoreState(_settings()->value("Window/WindowState").toByteArray());
+ }
+
+ //@name QWebView slots
+ //@{
+
+ void urlChanged(const QUrl& url) {
+ LOG<currentWidget()) return;
+ LOG<<"signal on current tab";
+ if (qobject_cast(_url))
+ qobject_cast(_url)->setEditText(url.toString());
+ else
+ qobject_cast(_url)->setText(url.toString());
+ }
+
+ void linkClicked(const QUrl& url) {
+ LOG<(sender()));
+ }
+
+ void iconChanged() {
+ LOG;
+ QWebView* view(qobject_cast(sender()));
+ int index = _tabs->indexOf(view);
+ if (index<0) return;
+ QIcon icon(QWebSettings::iconForUrl(view->url()));
+ if (icon.isNull()) {
+ LOG<<"Icon for URL is Null"<url();
+ QPixmap pixmap(QWebSettings::webGraphic
+ (QWebSettings::DefaultFrameIconGraphic));
+ if (!pixmap.isNull()) icon = pixmap;
+ } else icon = icon.pixmap(16, 16);
+ if (icon.isNull()) LOG<<"Icon is still null";
+ _tabs->setTabIcon(index, icon);
+ }
+
+ void titleChanged(const QString& text) {
+ LOG<setTabText(_tabs->indexOf(qobject_cast(sender())),
+ trUtf8("%1").arg(text));
+ }
+
+ void statusBarMessage(const QString& text) {
+ LOG<showMessage(tr("Info: %1").arg(text));
+ }
+
+ void loadProgress(int i) {
+ LOG<(_tabs->currentWidget())->size());
+ qobject_cast(_tabs->currentWidget())->resize(0,0);
+ qobject_cast(_tabs->currentWidget())->resize(sz);
+ if (ok) {
+ statusBar()->showMessage(tr("done."));
+ goodUrl();
+ }
+ activateTab();
+ }
+
+ //@}
+
+ //@name QWebPage WebAction slots
+ //@{
+
+ void triggeredOpenLink(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredOpenLinkInNewWindow(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredOpenFrameInNewWindow(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredDownloadLinkToDisk(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredCopyLinkToClipboard(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredOpenImageInNewWindow(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredDownloadImageToDisk(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredCopyImageToClipboard(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredBack(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredForward(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredStop(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredReload(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredCut(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredCopy(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredPaste(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredUndo(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredRedo(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredMoveToNextChar(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredMoveToPreviousChar(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredMoveToNextWord(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredMoveToPreviousWord(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredMoveToNextLine(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredMoveToPreviousLine(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredMoveToStartOfLine(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredMoveToEndOfLine(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredMoveToStartOfBlock(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredMoveToEndOfBlock(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredMoveToStartOfDocument(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredMoveToEndOfDocument(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSelectNextChar(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSelectPreviousChar(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSelectNextWord(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSelectPreviousWord(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSelectNextLine(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSelectPreviousLine(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSelectStartOfLine(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSelectEndOfLine(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSelectStartOfBlock(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSelectEndOfBlock(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSelectStartOfDocument(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSelectEndOfDocument(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredDeleteStartOfWord(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredDeleteEndOfWord(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSetTextDirectionDefault(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSetTextDirectionLeftToRight(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSetTextDirectionRightToLeft(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredToggleBold(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredToggleItalic(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredToggleUnderline(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredInspectElement(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredInsertParagraphSeparator(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredInsertLineSeparator(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ void triggeredSelectAll(bool) {
+ LOG<(sender())->data().toString();
+ }
+
+ //@}
+
+ //@name QWebPage slots
+ //@{
+
+ void contentsChanged() {
+ LOG;
+ }
+
+ void databaseQuotaExceeded(QWebFrame* frame, QString databaseName) {
+ LOG<showMessage(tr("%1", "statusbar for hovered link %1=url")
+ .arg(link));
+ }
+
+// void loadFinished(bool ok) {
+// LOG<<(ok?"succeess":"error");
+// }
+
+// void loadProgress(int progress) {
+// LOG<