void QtWebKitWebWidget::setQuickSearchEngine(const QString &searchEngine) { if (searchEngine != m_searchEngine) { m_searchEngine = searchEngine; updateSearchActions(); } }
PreferencesSearchPageWidget::PreferencesSearchPageWidget(QWidget *parent) : QWidget(parent), m_defaultSearchEngine(SettingsManager::getValue(QLatin1String("Search/DefaultSearchEngine")).toString()), m_ui(new Ui::PreferencesSearchPageWidget) { m_ui->setupUi(this); QStandardItemModel *searchEnginesModel(new QStandardItemModel(this)); searchEnginesModel->setHorizontalHeaderLabels(QStringList({tr("Name"), tr("Keyword")})); const QStringList searchEngines(SearchEnginesManager::getSearchEngines()); for (int i = 0; i < searchEngines.count(); ++i) { const SearchEnginesManager::SearchEngineDefinition searchEngine(SearchEnginesManager::getSearchEngine(searchEngines.at(i))); if (searchEngine.identifier.isEmpty()) { continue; } m_searchEngines[searchEngine.identifier] = qMakePair(false, searchEngine); QList<QStandardItem*> items({new QStandardItem(searchEngine.icon, searchEngine.title), new QStandardItem(searchEngine.keyword)}); items[0]->setData(searchEngine.identifier, Qt::UserRole); items[0]->setToolTip(searchEngine.description); items[0]->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDragEnabled); items[1]->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDragEnabled); searchEnginesModel->appendRow(items); } m_ui->searchViewWidget->setModel(searchEnginesModel); m_ui->searchViewWidget->setItemDelegateForColumn(1, new SearchKeywordDelegate(this)); m_ui->searchSuggestionsCheckBox->setChecked(SettingsManager::getValue(QLatin1String("Search/SearchEnginesSuggestions")).toBool()); QMenu *addSearchMenu(new QMenu(m_ui->addSearchButton)); addSearchMenu->addAction(tr("New…")); addSearchMenu->addAction(tr("Readd"))->setMenu(new QMenu(m_ui->addSearchButton)); m_ui->addSearchButton->setMenu(addSearchMenu); m_ui->moveDownSearchButton->setIcon(ThemesManager::getIcon(QLatin1String("arrow-down"))); m_ui->moveUpSearchButton->setIcon(ThemesManager::getIcon(QLatin1String("arrow-up"))); updateReaddSearchMenu(); connect(m_ui->searchFilterLineEdit, SIGNAL(textChanged(QString)), m_ui->searchViewWidget, SLOT(setFilterString(QString))); connect(m_ui->searchViewWidget, SIGNAL(canMoveDownChanged(bool)), m_ui->moveDownSearchButton, SLOT(setEnabled(bool))); connect(m_ui->searchViewWidget, SIGNAL(canMoveUpChanged(bool)), m_ui->moveUpSearchButton, SLOT(setEnabled(bool))); connect(m_ui->searchViewWidget, SIGNAL(needsActionsUpdate()), this, SLOT(updateSearchActions())); connect(m_ui->searchViewWidget, SIGNAL(modified()), this, SIGNAL(settingsModified())); connect(m_ui->addSearchButton->menu()->actions().at(0), SIGNAL(triggered()), this, SLOT(addSearchEngine())); connect(m_ui->addSearchButton->menu()->actions().at(1)->menu(), SIGNAL(triggered(QAction*)), this, SLOT(readdSearchEngine(QAction*))); connect(m_ui->editSearchButton, SIGNAL(clicked()), this, SLOT(editSearchEngine())); connect(m_ui->removeSearchButton, SIGNAL(clicked()), this, SLOT(removeSearchEngine())); connect(m_ui->moveDownSearchButton, SIGNAL(clicked()), m_ui->searchViewWidget, SLOT(moveDownRow())); connect(m_ui->moveUpSearchButton, SIGNAL(clicked()), m_ui->searchViewWidget, SLOT(moveUpRow())); }
void QtWebKitWebWidget::showContextMenu(const QPoint &position) { if (position.isNull() && m_webView->selectedText().isEmpty()) { return; } const QPoint hitPosition = (position.isNull() ? m_webView->mapFromGlobal(QCursor::pos()) : position); MenuFlags flags = NoMenu; m_hitResult = m_webView->page()->frameAt(hitPosition)->hitTestContent(hitPosition); if (m_hitResult.element().tagName().toLower() == QLatin1String("textarea") || m_hitResult.element().tagName().toLower() == QLatin1String("select") || (m_hitResult.element().tagName().toLower() == QLatin1String("input") && (m_hitResult.element().attribute(QLatin1String("type")).isEmpty() || m_hitResult.element().attribute(QLatin1String("type")).toLower() == QLatin1String("text")))) { QWebElement parentElement = m_hitResult.element().parent(); while (!parentElement.isNull() && parentElement.tagName().toLower() != QLatin1String("form")) { parentElement = parentElement.parent(); } if (!parentElement.isNull() && parentElement.hasAttribute(QLatin1String("action")) && !parentElement.findFirst(QLatin1String("input[name], select[name], textarea[name]")).isNull()) { flags |= FormMenu; } } if (m_hitResult.pixmap().isNull() && m_hitResult.isContentSelected() && !m_webView->selectedText().isEmpty()) { updateSearchActions(m_searchEngine); flags |= SelectionMenu; } if (m_hitResult.linkUrl().isValid()) { flags |= LinkMenu; } if (!m_hitResult.pixmap().isNull()) { flags |= ImageMenu; const bool isImageOpened = getUrl().matches(m_hitResult.imageUrl(), (QUrl::NormalizePathSegments | QUrl::RemoveFragment | QUrl::StripTrailingSlash)); getAction(OpenImageInNewTabAction)->setEnabled(!isImageOpened); getAction(InspectElementAction)->setEnabled(!isImageOpened); } if (m_hitResult.mediaUrl().isValid()) { flags |= MediaMenu; const bool isVideo = (m_hitResult.element().tagName().toLower() == QLatin1String("video")); const bool isPaused = m_hitResult.element().evaluateJavaScript(QLatin1String("this.paused")).toBool(); const bool isMuted = m_hitResult.element().evaluateJavaScript(QLatin1String("this.muted")).toBool(); getAction(SaveMediaToDiskAction)->setText(isVideo ? tr("Save Video...") : tr("Save Audio...")); getAction(CopyMediaUrlToClipboardAction)->setText(isVideo ? tr("Copy Video Link to Clipboard") : tr("Copy Audio Link to Clipboard")); getAction(ToggleMediaControlsAction)->setText(tr("Show Controls")); getAction(ToggleMediaLoopAction)->setText(tr("Looping")); getAction(ToggleMediaPlayPauseAction)->setIcon(Utils::getIcon(isPaused ? QLatin1String("media-playback-start") : QLatin1String("media-playback-pause"))); getAction(ToggleMediaPlayPauseAction)->setText(isPaused ? tr("Play") : tr("Pause")); getAction(ToggleMediaMuteAction)->setIcon(Utils::getIcon(isMuted ? QLatin1String("audio-volume-medium") : QLatin1String("audio-volume-muted"))); getAction(ToggleMediaMuteAction)->setText(isMuted ? tr("Unmute") : tr("Mute")); } if (m_hitResult.isContentEditable()) { flags |= EditMenu; getAction(ClearAllAction)->setEnabled(getAction(SelectAllAction)->isEnabled()); } if (flags == NoMenu || flags == FormMenu) { flags |= StandardMenu; if (m_hitResult.frame() != m_webView->page()->mainFrame()) { flags |= FrameMenu; } } WebWidget::showContextMenu(hitPosition, flags); }