bool QtWebEnginePage::javaScriptConfirm(const QUrl &url, const QString &message) { if (m_ignoreJavaScriptPopups) { return false; } if (!m_widget || !m_widget->parentWidget()) { return QWebEnginePage::javaScriptConfirm(url, message); } ContentsDialog dialog(ThemesManager::getIcon(QLatin1String("dialog-information")), tr("JavaScript"), message, QString(), (QDialogButtonBox::Ok | QDialogButtonBox::Cancel), NULL, m_widget); dialog.setCheckBox(tr("Disable JavaScript popups"), false); connect(m_widget, SIGNAL(aboutToReload()), &dialog, SLOT(close())); m_widget->showDialog(&dialog); if (dialog.getCheckBoxState()) { m_ignoreJavaScriptPopups = true; } return dialog.isAccepted(); }
void QtWebEnginePage::javaScriptAlert(const QUrl &url, const QString &message) { if (m_ignoreJavaScriptPopups) { return; } if (!m_widget || !m_widget->parentWidget()) { QWebEnginePage::javaScriptAlert(url, message); return; } ContentsDialog dialog(Utils::getIcon(QLatin1String("dialog-information")), tr("JavaScript"), message, QString(), QDialogButtonBox::Ok, NULL, m_widget); dialog.setCheckBox(tr("Disable JavaScript popups"), false); connect(m_widget, SIGNAL(aboutToReload()), &dialog, SLOT(close())); m_widget->showDialog(&dialog); if (dialog.getCheckBoxState()) { m_ignoreJavaScriptPopups = true; } }
TableEditor::TableEditor(QWidget *parent): Editor(parent) { QVBoxLayout *layout = new QVBoxLayout(this); setLayout(layout); // toolbar _toolbar = new QWidget(this); layout->addWidget(_toolbar); _ui_toolbar = new Ui::TableEditorToolbar; _ui_toolbar->setupUi(_toolbar); _ui_toolbar->firstPageButton->setIcon(QIcon(IconLoader::getIconIdentifier(":/drawable/actions/allLeft"))); _ui_toolbar->previousPageButton->setIcon(QIcon(IconLoader::getIconIdentifier(":/drawable/actions/left"))); _ui_toolbar->nextPageButton->setIcon(QIcon(IconLoader::getIconIdentifier(":/drawable/actions/right"))); _ui_toolbar->lastPageButton->setIcon(QIcon(IconLoader::getIconIdentifier(":/drawable/actions/allRight"))); _ui_toolbar->refreshButton->setIcon(QIcon(IconLoader::getIconIdentifier(":/drawable/actions/refresh"))); _ui_toolbar->addRowButton->setIcon(QIcon(IconLoader::getIconIdentifier(":/drawable/general/add"))); _ui_toolbar->deleteRowButton->setIcon(QIcon(IconLoader::getIconIdentifier(":/drawable/general/remove"))); _ui_toolbar->commitButton->setIcon(QIcon(IconLoader::getIconIdentifier(":/drawable/actions/checked"))); _ui_toolbar->rollbackButton->setIcon(QIcon(IconLoader::getIconIdentifier(":/drawable/actions/rollback"))); _ui_toolbar->dumpDataButton->setIcon(QIcon(IconLoader::getIconIdentifier(":/drawable/actions/export"))); _tableView = new QTableView(this); _tableModel = new QSqlTableModel(_tableView /* TODO database connection */); _tableView->setModel(_tableModel); layout->addWidget(_tableView); // connections connect(_ui_toolbar->commitButton, SIGNAL(clicked()), _tableModel, SLOT(submitAll())); connect(_ui_toolbar->rollbackButton, SIGNAL(clicked()), _tableModel, SLOT(revertAll())); connect(_ui_toolbar->addRowButton, SIGNAL(clicked()), this, SLOT(addRow())); connect(_ui_toolbar->deleteRowButton, SIGNAL(clicked()), this, SLOT(deleteRows())); connect(_ui_toolbar->refreshButton, SIGNAL(clicked()), _tableModel, SLOT(select())); connect(_ui_toolbar->toolButtonExportImage, SIGNAL(clicked()),_imageView, SLOT(exportImage())); connect(_ui_toolbar->toolButtonZoomIn, SIGNAL(clicked()),_imageView,SLOT(zoomIn())); connect(_ui_toolbar->toolButtonZoomOut, SIGNAL(clicked()),_imageView, SLOT(zoomOut())); connect(_ui_toolbar->toolButtonFitToScreen, SIGNAL(clicked()),_imageView, SLOT(fitToScreen())); connect(_ui_toolbar->toolButtonOriginalSize, SIGNAL(clicked()),_imageView, SLOT(resetToOriginalSize())); connect(_ui_toolbar->toolButtonBackground, SIGNAL(toggled()),_imageView, SLOT(setViewBackground())); connect(_ui_toolbar->toolButtonOutline, SIGNAL(toggled()),_imageView, SLOT(setViewOutline())); connect(_ui_toolbar->toolButtonPlayPause, SIGNAL(clicked()),this, SLOT(playToggled())); connect(_file, SIGNAL(imageSizeChanged()),this, SLOT(imageSizeUpdated())); connect(_file, SIGNAL(openFinished()),_imageView, SLOT(createScene())); connect(_file, SIGNAL(openFinished()),this, SLOT(updateToolButtons())); connect(_file, SIGNAL(aboutToReload()),_imageView, SLOT(reset())); connect(_file, SIGNAL(reloadFinished()),_imageView, SLOT(createScene())); connect(_file, SIGNAL(isPausedChanged()),this, SLOT(updatePauseAction())); connect(_imageView, SIGNAL(scaleFactorChanged()),this, SLOT(scaleFactorUpdate())); }
void QtWebKitNetworkManager::handleAuthenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator) { emit messageChanged(tr("Waiting for authentication…")); AuthenticationDialog *authenticationDialog = new AuthenticationDialog(reply->url(), authenticator, m_widget); authenticationDialog->setButtonsVisible(false); ContentsDialog dialog(Utils::getIcon(QLatin1String("dialog-password")), authenticationDialog->windowTitle(), QString(), QString(), (QDialogButtonBox::Ok | QDialogButtonBox::Cancel), authenticationDialog, m_widget); connect(&dialog, SIGNAL(accepted()), authenticationDialog, SLOT(accept())); connect(m_widget, SIGNAL(aboutToReload()), &dialog, SLOT(close())); m_widget->showDialog(&dialog); }
bool ResourceEditorFile::reload(QString *errorString, ReloadFlag flag, ChangeType type) { if (flag == FlagIgnore) return true; if (type == TypePermissions) { emit changed(); } else { emit aboutToReload(); QString fn = m_parent->m_resourceEditor->fileName(); if (!m_parent->open(errorString, fn, fn)) return false; emit reloaded(); } return true; }
bool QtWebEnginePage::javaScriptPrompt(const QUrl &url, const QString &message, const QString &defaultValue, QString *result) { if (m_ignoreJavaScriptPopups) { return false; } if (!m_widget || !m_widget->parentWidget()) { return QWebEnginePage::javaScriptPrompt(url, message, defaultValue, result); } QWidget *widget(new QWidget(m_widget)); QLineEdit *lineEdit(new QLineEdit(defaultValue, widget)); QLabel *label(new QLabel(message, widget)); label->setBuddy(lineEdit); label->setTextFormat(Qt::PlainText); QVBoxLayout *layout(new QVBoxLayout(widget)); layout->addWidget(label); layout->addWidget(lineEdit); ContentsDialog dialog(ThemesManager::getIcon(QLatin1String("dialog-information")), tr("JavaScript"), QString(), QString(), (QDialogButtonBox::Ok | QDialogButtonBox::Cancel), widget, m_widget); dialog.setCheckBox(tr("Disable JavaScript popups"), false); connect(m_widget, SIGNAL(aboutToReload()), &dialog, SLOT(close())); m_widget->showDialog(&dialog); if (dialog.isAccepted()) { *result = lineEdit->text(); } if (dialog.getCheckBoxState()) { m_ignoreJavaScriptPopups = true; } return dialog.isAccepted(); }
void QtWebKitNetworkManager::handleProxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator) { if (NetworkManagerFactory::isUsingSystemProxyAuthentication()) { authenticator->setUser(QString()); return; } emit messageChanged(tr("Waiting for authentication…")); AuthenticationDialog *authenticationDialog = new AuthenticationDialog(proxy.hostName(), authenticator, m_widget); authenticationDialog->setButtonsVisible(false); ContentsDialog dialog(Utils::getIcon(QLatin1String("dialog-password")), authenticationDialog->windowTitle(), QString(), QString(), (QDialogButtonBox::Ok | QDialogButtonBox::Cancel), authenticationDialog, m_widget); connect(&dialog, SIGNAL(accepted()), authenticationDialog, SLOT(accept())); connect(m_widget, SIGNAL(aboutToReload()), &dialog, SLOT(close())); m_widget->showDialog(&dialog); }
void QtWebKitNetworkManager::handleSslErrors(QNetworkReply *reply, const QList<QSslError> &errors) { if (errors.isEmpty()) { reply->ignoreSslErrors(errors); return; } QStringList ignoredErrors = m_widget->getOption(QLatin1String("Security/IgnoreSslErrors"), m_widget->getUrl()).toStringList(); QStringList messages; QList<QSslError> errorsToIgnore; for (int i = 0; i < errors.count(); ++i) { if (errors.at(i).error() != QSslError::NoError) { m_sslInformation.errors.append(qMakePair(reply->url(), errors.at(i))); if (ignoredErrors.contains(errors.at(i).certificate().digest().toBase64())) { errorsToIgnore.append(errors.at(i)); } else { messages.append(errors.at(i).errorString()); } } } if (!errorsToIgnore.isEmpty()) { reply->ignoreSslErrors(errorsToIgnore); } if (messages.isEmpty()) { return; } ContentsDialog dialog(Utils::getIcon(QLatin1String("dialog-warning")), tr("Warning"), tr("SSL errors occured, do you want to continue?"), messages.join('\n'), (QDialogButtonBox::Yes | QDialogButtonBox::No), NULL, m_widget); if (!m_widget->getUrl().isEmpty()) { dialog.setCheckBox(tr("Do not show this message again"), false); } connect(m_widget, SIGNAL(aboutToReload()), &dialog, SLOT(close())); m_widget->showDialog(&dialog); if (dialog.isAccepted()) { reply->ignoreSslErrors(errors); if (!m_widget->getUrl().isEmpty() && dialog.getCheckBoxState()) { for (int i = 0; i < errors.count(); ++i) { const QString digest = errors.at(i).certificate().digest().toBase64(); if (!ignoredErrors.contains(digest)) { ignoredErrors.append(digest); } } SettingsManager::setValue(QLatin1String("Security/IgnoreSslErrors"), ignoredErrors, m_widget->getUrl()); } } }
bool QtWebEnginePage::acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) { if (m_isPopup) { emit aboutToNavigate(url, type); return false; } if (isMainFrame && url.scheme() == QLatin1String("javascript")) { runJavaScript(url.path()); return false; } if (url.scheme() == QLatin1String("mailto")) { QDesktopServices::openUrl(url); return false; } if (isMainFrame && type == QWebEnginePage::NavigationTypeReload && m_previousNavigationType == QWebEnginePage::NavigationTypeFormSubmitted && SettingsManager::getValue(QLatin1String("Choices/WarnFormResend")).toBool()) { bool cancel(false); bool warn(true); if (m_widget) { ContentsDialog dialog(ThemesManager::getIcon(QLatin1String("dialog-warning")), tr("Question"), tr("Are you sure that you want to send form data again?"), tr("Do you want to resend data?"), (QDialogButtonBox::Yes | QDialogButtonBox::Cancel), NULL, m_widget); dialog.setCheckBox(tr("Do not show this message again"), false); connect(m_widget, SIGNAL(aboutToReload()), &dialog, SLOT(close())); m_widget->showDialog(&dialog); cancel = !dialog.isAccepted(); warn = !dialog.getCheckBoxState(); } else { QMessageBox dialog; dialog.setWindowTitle(tr("Question")); dialog.setText(tr("Are you sure that you want to send form data again?")); dialog.setInformativeText(tr("Do you want to resend data?")); dialog.setIcon(QMessageBox::Question); dialog.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); dialog.setDefaultButton(QMessageBox::Cancel); dialog.setCheckBox(new QCheckBox(tr("Do not show this message again"))); cancel = (dialog.exec() == QMessageBox::Cancel); warn = !dialog.checkBox()->isChecked(); } SettingsManager::setValue(QLatin1String("Choices/WarnFormResend"), warn); if (cancel) { return false; } } if (isMainFrame && type != QWebEnginePage::NavigationTypeReload) { m_previousNavigationType = type; } if (isMainFrame) { scripts().clear(); const QList<UserScript*> scripts(AddonsManager::getUserScriptsForUrl(url)); for (int i = 0; i < scripts.count(); ++i) { QWebEngineScript::InjectionPoint injectionPoint(QWebEngineScript::DocumentReady); if (scripts.at(i)->getInjectionTime() == UserScript::DocumentCreationTime) { injectionPoint = QWebEngineScript::DocumentCreation; } else if (scripts.at(i)->getInjectionTime() == UserScript::DeferredTime) { injectionPoint = QWebEngineScript::Deferred; } QWebEngineScript script; script.setSourceCode(scripts.at(i)->getSource()); script.setRunsOnSubFrames(scripts.at(i)->shouldRunOnSubFrames()); script.setInjectionPoint(injectionPoint); this->scripts().insert(script); } emit aboutToNavigate(url, type); } return true; }
bool QtWebEnginePage::acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) { if (isMainFrame && url.scheme() == QLatin1String("javascript")) { runJavaScript(url.path()); return false; } if (url.scheme() == QLatin1String("mailto")) { QDesktopServices::openUrl(url); return false; } if (isMainFrame && type == QWebEnginePage::NavigationTypeReload && m_previousNavigationType == QWebEnginePage::NavigationTypeFormSubmitted && SettingsManager::getValue(QLatin1String("Choices/WarnFormResend")).toBool()) { bool cancel = false; bool warn = true; if (m_widget) { ContentsDialog dialog(Utils::getIcon(QLatin1String("dialog-warning")), tr("Question"), tr("Are you sure that you want to send form data again?"), tr("Do you want to resend data?"), (QDialogButtonBox::Yes | QDialogButtonBox::Cancel), NULL, m_widget); dialog.setCheckBox(tr("Do not show this message again"), false); connect(m_widget, SIGNAL(aboutToReload()), &dialog, SLOT(close())); m_widget->showDialog(&dialog); cancel = !dialog.isAccepted(); warn = !dialog.getCheckBoxState(); } else { QMessageBox dialog; dialog.setWindowTitle(tr("Question")); dialog.setText(tr("Are you sure that you want to send form data again?")); dialog.setInformativeText(tr("Do you want to resend data?")); dialog.setIcon(QMessageBox::Question); dialog.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); dialog.setDefaultButton(QMessageBox::Cancel); dialog.setCheckBox(new QCheckBox(tr("Do not show this message again"))); cancel = (dialog.exec() == QMessageBox::Cancel); warn = !dialog.checkBox()->isChecked(); } SettingsManager::setValue(QLatin1String("Choices/WarnFormResend"), warn); if (cancel) { return false; } } if (isMainFrame && type != QWebEnginePage::NavigationTypeReload) { m_previousNavigationType = type; } return true; }