mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-11-27 23:34:06 +00:00
refactor code.F12 optimize
This commit is contained in:
parent
cb5ac438fe
commit
a2baf836e4
|
@ -26,14 +26,11 @@
|
||||||
|
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
#include "wildcard.hh"
|
#include "wildcard.hh"
|
||||||
|
|
||||||
#include "utils.hh"
|
#include "utils.hh"
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#ifdef Q_OS_WIN32
|
#ifdef Q_OS_WIN32
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -178,11 +175,9 @@ void ArticleView::emitJavascriptFinished(){
|
||||||
//a better solution would be to replace it with callback etc.
|
//a better solution would be to replace it with callback etc.
|
||||||
QString ArticleView::runJavaScriptSync(QWebEnginePage* frame, const QString& variable)
|
QString ArticleView::runJavaScriptSync(QWebEnginePage* frame, const QString& variable)
|
||||||
{
|
{
|
||||||
qDebug(QString("runJavascriptScriptSync:%1").arg(variable).toLatin1().data());
|
qDebug("%s", QString("runJavascriptScriptSync:%1").arg(variable).toLatin1().data());
|
||||||
|
|
||||||
QString result;
|
QString result;
|
||||||
//QEventLoop loop;
|
|
||||||
//QObject::connect(this, SIGNAL(notifyJavascriptFinished()), &loop, SLOT(quit()));
|
|
||||||
QSharedPointer<QEventLoop> loop = QSharedPointer<QEventLoop>(new QEventLoop());
|
QSharedPointer<QEventLoop> loop = QSharedPointer<QEventLoop>(new QEventLoop());
|
||||||
QTimer::singleShot(1000, loop.data(), &QEventLoop::quit);
|
QTimer::singleShot(1000, loop.data(), &QEventLoop::quit);
|
||||||
frame->runJavaScript(variable, [loop,&result](const QVariant &v)
|
frame->runJavaScript(variable, [loop,&result](const QVariant &v)
|
||||||
|
@ -192,8 +187,6 @@ QString ArticleView::runJavaScriptSync(QWebEnginePage* frame, const QString& var
|
||||||
result = v.toString();
|
result = v.toString();
|
||||||
loop->quit();
|
loop->quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
//this->emitJavascriptFinished();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
loop->exec();
|
loop->exec();
|
||||||
|
@ -334,15 +327,15 @@ ArticleView::ArticleView( QWidget * parent, ArticleNetworkAccessManager & nm,
|
||||||
ui.definition->addAction( &inspectAction );
|
ui.definition->addAction( &inspectAction );
|
||||||
//connect( &inspectAction, SIGNAL( triggered() ), this, SLOT( inspect() ) );
|
//connect( &inspectAction, SIGNAL( triggered() ), this, SLOT( inspect() ) );
|
||||||
|
|
||||||
QWebEngineView *m_pNewView;
|
|
||||||
QWebEnginePage *page = ui.definition->page();
|
QWebEnginePage *page = ui.definition->page();
|
||||||
connect(&inspectAction, &QAction::triggered, this, [page, m_pNewView]() mutable
|
connect(&inspectAction, &QAction::triggered, this, [page, this]() {
|
||||||
{
|
if (inspectView == nullptr || !inspectView->isVisible()) {
|
||||||
m_pNewView = new QWebEngineView();
|
inspectView = new QWebEngineView();
|
||||||
page->setDevToolsPage(m_pNewView->page());
|
page->setDevToolsPage(inspectView->page());
|
||||||
page->triggerAction(QWebEnginePage::InspectElement);
|
page->triggerAction(QWebEnginePage::InspectElement);
|
||||||
m_pNewView->show();
|
inspectView->show();
|
||||||
});
|
}
|
||||||
|
});
|
||||||
|
|
||||||
ui.definition->installEventFilter( this );
|
ui.definition->installEventFilter( this );
|
||||||
ui.searchFrame->installEventFilter( this );
|
ui.searchFrame->installEventFilter( this );
|
||||||
|
@ -1677,17 +1670,21 @@ void ArticleView::playSound()
|
||||||
ui.definition->page()->runJavaScript(variable);
|
ui.definition->page()->runJavaScript(variable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// use eventloop to turn the async callback to sync execution.
|
||||||
QString ArticleView::toHtml()
|
QString ArticleView::toHtml()
|
||||||
{
|
{
|
||||||
QString html;
|
QString result;
|
||||||
ui.definition->page()->toHtml([&](const QString& content) {
|
QSharedPointer<QEventLoop> loop = QSharedPointer<QEventLoop>(new QEventLoop());
|
||||||
|
QTimer::singleShot(1000, loop.data(), &QEventLoop::quit);
|
||||||
|
|
||||||
|
ui.definition->page()->toHtml([loop, &result](const QString &content) {
|
||||||
html = content;
|
if (loop->isRunning()) {
|
||||||
|
result = content;
|
||||||
});
|
loop->quit();
|
||||||
|
}
|
||||||
return html;
|
});
|
||||||
|
loop->exec();
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ArticleView::setHtml(const QString& content,const QUrl& baseUrl){
|
void ArticleView::setHtml(const QString& content,const QUrl& baseUrl){
|
||||||
|
@ -2645,36 +2642,28 @@ void ArticleView::performFtsFindOperation( bool backwards )
|
||||||
runJavaScript( QString( "var sel=window.getSelection();sel.removeAllRanges();sel.addRange(%1);_=0;" )
|
runJavaScript( QString( "var sel=window.getSelection();sel.removeAllRanges();sel.addRange(%1);_=0;" )
|
||||||
.arg( rangeVarName ) );
|
.arg( rangeVarName ) );
|
||||||
|
|
||||||
bool res;
|
if (backwards) {
|
||||||
if( backwards )
|
if (ftsPosition > 0) {
|
||||||
{
|
ftsPosition -= 1;
|
||||||
if( ftsPosition > 0 )
|
}
|
||||||
{
|
|
||||||
ui.definition->findText( allMatches.at( ftsPosition - 1 ),
|
|
||||||
flags | QWebEnginePage::FindBackward );
|
|
||||||
ftsPosition -= 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
ui.definition->findText( allMatches.at( ftsPosition ),
|
|
||||||
flags | QWebEnginePage::FindBackward );
|
|
||||||
|
|
||||||
// ui.ftsSearchPrevious->setEnabled( res );
|
ui.definition->findText(allMatches.at(ftsPosition),
|
||||||
// if( !ui.ftsSearchNext->isEnabled() )
|
flags | QWebEnginePage::FindBackward,
|
||||||
// ui.ftsSearchNext->setEnabled( res );
|
[this](bool res) {
|
||||||
}
|
ui.ftsSearchPrevious->setEnabled(res);
|
||||||
else
|
if (!ui.ftsSearchNext->isEnabled())
|
||||||
{
|
ui.ftsSearchNext->setEnabled(res);
|
||||||
if( ftsPosition < allMatches.size() - 1 )
|
});
|
||||||
{
|
} else {
|
||||||
ui.definition->findText( allMatches.at( ftsPosition + 1 ), flags );
|
if (ftsPosition < allMatches.size() - 1) {
|
||||||
ftsPosition += 1;
|
ftsPosition += 1;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
ui.definition->findText( allMatches.at( ftsPosition ), flags );
|
|
||||||
|
|
||||||
// ui.ftsSearchNext->setEnabled( res );
|
ui.definition->findText(allMatches.at(ftsPosition), flags, [this](bool res) {
|
||||||
// if( !ui.ftsSearchPrevious->isEnabled() )
|
ui.ftsSearchNext->setEnabled(res);
|
||||||
// ui.ftsSearchPrevious->setEnabled( res );
|
if (!ui.ftsSearchPrevious->isEnabled())
|
||||||
|
ui.ftsSearchPrevious->setEnabled(res);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Store new highlighted selection
|
// Store new highlighted selection
|
||||||
|
|
|
@ -41,6 +41,9 @@ class ArticleView: public QFrame
|
||||||
QString articleToJump;
|
QString articleToJump;
|
||||||
QString rangeVarName;
|
QString rangeVarName;
|
||||||
|
|
||||||
|
//used to hold the F12 inspect source view.
|
||||||
|
QWebEngineView *inspectView = nullptr;
|
||||||
|
|
||||||
/// Any resource we've decided to download off the dictionary gets stored here.
|
/// Any resource we've decided to download off the dictionary gets stored here.
|
||||||
/// Full vector capacity is used for search requests, where we have to make
|
/// Full vector capacity is used for search requests, where we have to make
|
||||||
/// a multitude of requests.
|
/// a multitude of requests.
|
||||||
|
@ -371,8 +374,9 @@ private:
|
||||||
|
|
||||||
QStringList getMutedDictionaries(unsigned group);
|
QStringList getMutedDictionaries(unsigned group);
|
||||||
|
|
||||||
protected:
|
void findTextCallback();
|
||||||
|
|
||||||
|
protected:
|
||||||
// We need this to hide the search bar when we're showed
|
// We need this to hide the search bar when we're showed
|
||||||
void showEvent( QShowEvent * );
|
void showEvent( QShowEvent * );
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue