Skip to content

Commit 45742a0

Browse files
committed
Plugins::WebBrowser: modify url search
1 parent 7b3f739 commit 45742a0

File tree

2 files changed

+43
-26
lines changed

2 files changed

+43
-26
lines changed

Plugins/WebBrowser/AddressCompleter.cpp

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ bool CAddressCompleter::eventFilter(QObject *watched, QEvent *event)
149149
switch (event->type()) {
150150
case QEvent::KeyPress: {
151151
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
152+
//qDebug(log) << Q_FUNC_INFO << keyEvent;
152153
switch (keyEvent->key()) {
153154
case Qt::Key_Down:
154155
if (m_isCompleterVisible) {
@@ -168,7 +169,9 @@ bool CAddressCompleter::eventFilter(QObject *watched, QEvent *event)
168169
selectCurrentItem();
169170
return true;
170171
}
171-
emit urlSelected(m_pLineEdit->text());
172+
if(m_pLineEdit) {
173+
emit urlSelected(m_pLineEdit->text());
174+
}
172175
break;
173176
case Qt::Key_Escape:
174177
hideCompleter();
@@ -276,27 +279,28 @@ void CAddressCompleter::performSearch()
276279

277280
addedUrls.insert(url);
278281

279-
if(url == m_pLineEdit->text())
280-
m_currentSelectedIndex = count;
281-
282282
count++;
283283
}
284284

285285
// 如果没有找到历史记录,显示搜索建议
286286
if (0 == count) {
287287
addSearchSuggestions(keyword);
288288
} else if (1 == count) {
289+
// 防止重复显示
289290
if(*addedUrls.begin() == m_pLineEdit->text())
290291
return;
291292
}
292293

293294
// 如果有结果,显示下拉列表
294295
if (m_pListWidget->count() > 0) {
295-
if(-1 < m_currentSelectedIndex) {
296-
m_pListWidget->setCurrentRow(m_currentSelectedIndex);
297-
// 确保选中项可见
298-
m_pListWidget->scrollToItem(m_pListWidget->item(m_currentSelectedIndex));
299-
}
296+
// 选中第一项
297+
if(-1 == m_currentSelectedIndex)
298+
m_currentSelectedIndex = 0;
299+
300+
m_pListWidget->setCurrentRow(m_currentSelectedIndex);
301+
// 确保选中项可见
302+
m_pListWidget->scrollToItem(m_pListWidget->item(m_currentSelectedIndex));
303+
300304
showCompleter();
301305
} else {
302306
hideCompleter();
@@ -315,7 +319,7 @@ void CAddressCompleter::addSearchSuggestions(const QString &keyword)
315319
QListWidgetItem *pSearchItem = new QListWidgetItem(m_pListWidget);
316320
if(pSearchItem) {
317321
pSearchItem->setSizeHint(QSize(0, 40));
318-
pSearchItem->setData(Qt::UserRole, QString("search:%1").arg(keyword));
322+
pSearchItem->setData(Qt::UserRole, QString("@search:%1").arg(keyword));
319323

320324
CAddressCompleterItem *pCompleterItem = new CAddressCompleterItem(
321325
searchText,
@@ -361,10 +365,12 @@ void CAddressCompleter::onItemClicked(QListWidgetItem *item)
361365
QString url = item->data(Qt::UserRole).toString();
362366

363367
// 处理搜索请求
364-
if (url.startsWith("search:")) {
365-
QString keyword = url.mid(7);
368+
if (url.startsWith("@search:", Qt::CaseInsensitive)) {
369+
QString keyword = url.mid(8);
370+
qDebug(log) << "emit searchRequested:" << keyword;
366371
emit searchRequested(keyword);
367372
} else {
373+
qDebug(log) << "emit urlSelected:" << url;
368374
emit urlSelected(url);
369375
}
370376

@@ -405,6 +411,7 @@ void CAddressCompleter::moveToPreviousItem()
405411

406412
void CAddressCompleter::selectCurrentItem()
407413
{
414+
//qDebug(log) << Q_FUNC_INFO;
408415
if(!m_pListWidget) return;
409416
QListWidgetItem *item = m_pListWidget->item(m_currentSelectedIndex);
410417
if (item) {
@@ -415,7 +422,7 @@ void CAddressCompleter::selectCurrentItem()
415422
void CAddressCompleter::showCompleter()
416423
{
417424
if(!m_pListWidget) return;
418-
if (m_isCompleterVisible || !m_pLineEdit || m_pListWidget->count() == 0) {
425+
if (m_isCompleterVisible || m_pListWidget->count() == 0) {
419426
return;
420427
}
421428

@@ -444,12 +451,6 @@ void CAddressCompleter::showCompleter()
444451
setGeometry(endRect);
445452
show();
446453
}
447-
448-
// 选中第一项
449-
if (m_pListWidget->count() > 0) {
450-
m_currentSelectedIndex = 0;
451-
m_pListWidget->setCurrentRow(0);
452-
}
453454
}
454455

455456
void CAddressCompleter::hideCompleter()

Plugins/WebBrowser/FrmWebBrowser.cpp

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,20 @@ CFrmWebBrowser::CFrmWebBrowser(CParameterWebBrowser *pPara, bool bMenuBar, QWidg
161161
check = connect(pAddressCompleter, &CAddressCompleter::urlSelected,
162162
this, &CFrmWebBrowser::slotUrlSelected);
163163
Q_ASSERT(check);
164+
check = connect(pAddressCompleter, &CAddressCompleter::searchRequested,
165+
this, [&](const QString& keyword) {
166+
qDebug(log) << "CAddressCompleter::searchRequested keyword:" << keyword;
167+
QString szSearch;
168+
QString szUrl;
169+
if(m_pPara) {
170+
szSearch = m_pPara->GetSearchEngine();
171+
szUrl = szSearch.replace(m_pPara->GetSearchRelaceString(),
172+
QUrl::toPercentEncoding(keyword));
173+
if(!szUrl.isEmpty())
174+
slotUrlSelected(szUrl);
175+
}
176+
});
177+
Q_ASSERT(check);
164178

165179
m_pAddPage = m_pToolBar->addAction(QIcon::fromTheme("add"), tr("Add tab page"),
166180
this, [&](){
@@ -918,21 +932,23 @@ void CFrmWebBrowser::slotReturnPressed()
918932

919933
void CFrmWebBrowser::slotUrlSelected(const QString &szUrl)
920934
{
921-
QUrl u = QUrl::fromUserInput(szUrl);
922-
qDebug(log) << u << szUrl;
923-
if(u.isEmpty()) {
935+
if(szUrl.isEmpty()) return;
936+
QUrl url = QUrl::fromUserInput(szUrl);
937+
qDebug(log) << url << szUrl << url.isValid();
938+
if(szUrl.startsWith("@search:", Qt::CaseInsensitive)) {
924939
QString szSearch;
940+
QString keyword = szUrl.mid(8);
925941
if(m_pPara) {
926942
szSearch = m_pPara->GetSearchEngine();
927-
u = szSearch.replace(m_pPara->GetSearchRelaceString(),
928-
QUrl::toPercentEncoding(m_pUrlLineEdit->text()));
943+
url = szSearch.replace(m_pPara->GetSearchRelaceString(),
944+
QUrl::toPercentEncoding(keyword));
929945
}
930946
}
931-
emit sigInformation(u.toString());
947+
emit sigInformation(url.toString());
932948
CFrmWebView* pWeb = CurrentView();
933949
if(!pWeb)
934950
pWeb = qobject_cast<CFrmWebView*>(CreateWindow(QWebEnginePage::WebBrowserTab));
935-
pWeb->load(u);
951+
pWeb->load(url);
936952
if(m_pGo->isVisible())
937953
m_pGo->setVisible(false);
938954
}

0 commit comments

Comments
 (0)