void PreferencesSearchPageWidget::readdSearchEngine(QAction *action) { if (action && !action->data().isNull()) { addSearchEngine(SessionsManager::getReadableDataPath(QLatin1String("searchEngines/") + action->data().toString() + QLatin1String(".xml")), action->data().toString(), true); } }
void PreferencesSearchPageWidget::importSearchEngine() { const QString path(QFileDialog::getOpenFileName(this, tr("Select File"), QStandardPaths::standardLocations(QStandardPaths::HomeLocation).value(0), Utils::formatFileTypes({tr("Open Search files (*.xml)")}))); if (!path.isEmpty()) { addSearchEngine(path, Utils::createIdentifier(QString(), m_searchEngines.keys()), false); } }
void WebView::contextMenuEvent(QContextMenuEvent *event) { QMenu *menu = new QMenu(this); QWebHitTestResult r = page()->mainFrame()->hitTestContent(event->pos()); if (!r.linkUrl().isEmpty()) { QAction *newWindowAction = menu->addAction(tr("Open in New &Window"), this, SLOT(openActionUrlInNewWindow())); newWindowAction->setData(r.linkUrl()); QAction *newTabAction = menu->addAction(tr("Open in New &Tab"), this, SLOT(openActionUrlInNewTab())); newTabAction->setData(r.linkUrl()); menu->addSeparator(); menu->addAction(tr("Save Lin&k"), this, SLOT(downloadLinkToDisk())); menu->addAction(tr("&Bookmark This Link"), this, SLOT(bookmarkLink()))->setData(r.linkUrl()); menu->addSeparator(); if (!page()->selectedText().isEmpty()) menu->addAction(pageAction(QWebPage::Copy)); menu->addAction(tr("&Copy Link Location"), this, SLOT(copyLinkToClipboard())); } if (!r.imageUrl().isEmpty()) { if (!menu->isEmpty()) menu->addSeparator(); QAction *newWindowAction = menu->addAction(tr("Open Image in New &Window"), this, SLOT(openActionUrlInNewWindow())); newWindowAction->setData(r.imageUrl()); QAction *newTabAction = menu->addAction(tr("Open Image in New &Tab"), this, SLOT(openActionUrlInNewTab())); newTabAction->setData(r.imageUrl()); menu->addSeparator(); menu->addAction(tr("&Save Image"), this, SLOT(downloadImageToDisk())); menu->addAction(tr("&Copy Image"), this, SLOT(copyImageToClipboard())); menu->addAction(tr("C&opy Image Location"), this, SLOT(copyImageLocationToClipboard()))->setData(r.imageUrl().toString()); menu->addSeparator(); menu->addAction(tr("Block Image"), this, SLOT(blockImage()))->setData(r.imageUrl().toString()); } if (!page()->selectedText().isEmpty()) { if (menu->isEmpty()) { menu->addAction(pageAction(QWebPage::Copy)); } else { menu->addSeparator(); } QMenu *searchMenu = menu->addMenu(tr("Search with...")); QList<QString> list = ToolbarSearch::openSearchManager()->allEnginesNames(); for (int i = 0; i < list.count(); ++i) { QString name = list.at(i); OpenSearchEngine *engine = ToolbarSearch::openSearchManager()->engine(name); QAction *action = new OpenSearchEngineAction(engine, searchMenu); searchMenu->addAction(action); action->setData(name); } connect(searchMenu, SIGNAL(triggered(QAction *)), this, SLOT(searchRequested(QAction *))); } QWebElement element = r.element(); if (!element.isNull() && element.tagName().toLower() == QLatin1String("input") && element.attribute(QLatin1String("type"), QLatin1String("text")) == QLatin1String("text")) { if (menu->isEmpty()) { menu->addAction(pageAction(QWebPage::Copy)); } else { menu->addSeparator(); } QVariant variant; variant.setValue(element); menu->addAction(tr("Add to the toolbar search"), this, SLOT(addSearchEngine()))->setData(variant); } if (menu->isEmpty()) { delete menu; menu = page()->createStandardContextMenu(); } else { if (page()->settings()->testAttribute(QWebSettings::DeveloperExtrasEnabled)) menu->addAction(pageAction(QWebPage::InspectElement)); } if (!menu->isEmpty()) { if (BrowserMainWindow::parentWindow(tabWidget())->menuBar()->isHidden()) { menu->addSeparator(); menu->addAction(BrowserMainWindow::parentWindow(tabWidget())->showMenuBarAction()); } menu->exec(mapToGlobal(event->pos())); delete menu; return; } delete menu; QWebView::contextMenuEvent(event); }
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())); }