diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,14 +18,14 @@ find_package(Qt5 ${QT_REQUIRED_VERSION} REQUIRED COMPONENTS Core Widgets) find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Archive - Completion - Config - ConfigWidgets + Completion + Config + ConfigWidgets CoreAddons Crash - DocTools - I18n - KHtml + DocTools + I18n + KIO Notifications XmlGui) include(KDEInstallDirs) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -16,27 +16,28 @@ wordtype.cpp ) ki18n_wrap_ui(kiten_bin_SRCS - configdictselect.ui - configfont.ui - configlearn.ui - configsearching.ui - configsorting.ui - ) + configdictselect.ui + configfont.ui + configlearn.ui + configsearching.ui + configsorting.ui + ) kconfig_add_kcfg_files( kiten_bin_SRCS kitenconfig.kcfgc) file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/../data/pics/*-apps-kiten.png") ecm_add_app_icon(kiten_bin_SRCS ICONS ${ICONS_SRCS}) add_executable(kiten_bin ${kiten_bin_SRCS}) set_target_properties(kiten_bin PROPERTIES OUTPUT_NAME kiten IMPORT_PREFIX bin_) -target_link_libraries(kiten_bin +target_link_libraries(kiten_bin KF5::Archive KF5::ConfigWidgets KF5::Crash KF5::I18n - KF5::KHtml + KF5::KIOCore KF5::Notifications + KF5::XmlGui kiten) install( TARGETS kiten_bin ${INSTALL_TARGETS_DEFAULT_ARGS} ) diff --git a/app/kiten.cpp b/app/kiten.cpp --- a/app/kiten.cpp +++ b/app/kiten.cpp @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -102,7 +101,7 @@ detachedView = new ResultsView( NULL, "detachedView" ); */ - setCentralWidget( _mainView->widget() ); + setCentralWidget( _mainView ); setupActions(); // Be sure to create this manager before creating the GUI @@ -132,7 +131,7 @@ this, &Kiten::searchClipboard ); connect(_inputManager, &SearchStringInput::search, this, &Kiten::searchFromEdit); - connect( _mainView->view()->verticalScrollBar(), &QAbstractSlider::valueChanged, + connect( _mainView->verticalScrollBar(), &QAbstractSlider::valueChanged, this, &Kiten::setCurrentScrollValue ); /* We need to know when to reload our dictionaries if the user updated them. */ connect(_dictionaryUpdateManager, &DictionaryUpdateManager::updateFinished, this, &Kiten::loadDictionaries); @@ -310,7 +309,7 @@ void Kiten::focusResultsView() { - _mainView->view()->setFocus(); + _mainView->verticalScrollBar()->setFocus(); } // This function is run on program window close. diff --git a/app/resultsview.h b/app/resultsview.h --- a/app/resultsview.h +++ b/app/resultsview.h @@ -24,14 +24,14 @@ #define RESULTSVIEW_H #include -#include +#include #include "entry.h" class KActionCollection; class KActionMenu; -class ResultsView : public KHTMLPart +class ResultsView : public QTextBrowser { Q_OBJECT @@ -55,14 +55,7 @@ void urlClicked( const QString& ); protected: - QString deLinkify( const DOM::Node &); QString generateCSS(); - bool urlSelected( const QString &url - , int button - , int state - , const QString &_target - , const KParts::OpenUrlArguments& args = KParts::OpenUrlArguments() - , const KParts::BrowserArguments& browserArgs = KParts::BrowserArguments() ) override; private slots: void doScroll(); diff --git a/app/resultsview.cpp b/app/resultsview.cpp --- a/app/resultsview.cpp +++ b/app/resultsview.cpp @@ -22,28 +22,18 @@ *****************************************************************************/ #include "resultsview.h" - #include "kitenconfig.h" - #include -#include - -/* Needed by ResultsView only */ #include ResultsView::ResultsView( QWidget *parent, const char *name ) -: KHTMLPart( parent, parent ) +: QTextBrowser( parent ) , _scrollValue( 0 ) { - ////////setReadOnly(true); - /* TODO: configurably underlined links */ -// setLinkUnderline(false); //KDE4 CHANGE - ////////basicMode = false; - - // don't let ktextbrowser internally handle link clicks - ////////setNotifyClick(true); - connect( view(), &KHTMLView::finishedLayout, - this, &ResultsView::doScroll ); + setOpenLinks( false ); + connect(this, &QTextBrowser::anchorClicked, this, [=](const QUrl &url){ + emit urlClicked( url.toString() ); + }); } /** @@ -59,46 +49,21 @@ */ void ResultsView::clear() { - _printText = QLatin1String(""); -} - -QString ResultsView::deLinkify( const DOM::Node &node ) -{ - //TODO: make this function more flexible (ie, accept non-link-content as - //well.) - QString word; - for ( long unsigned int i = 0; i < node.childNodes().length(); ++i ) - { - if ( node.childNodes().item(i).nodeName() != "a" ) - { - return QString(); - } - if ( ! node.childNodes().item(i).hasChildNodes() ) - { - return QString(); - } - - word += node.childNodes().item(i).childNodes().item( 0 ).nodeValue().string(); - } - return word; + _printText.clear(); } void ResultsView::doScroll() { - view()->verticalScrollBar()->setValue(_scrollValue); + verticalScrollBar()->setValue(_scrollValue); } /** * Flushes the printText to screen */ void ResultsView::flush() { - begin(); - setUserStyleSheet( generateCSS() ); - write( _printText ); - end(); -//KDE4 CHANGE setCursorPosition( 0, 0 ); - ////////ensureCursorVisible(); + const QString content = QString("%2").arg(generateCSS()).arg(_printText); + setHtml( content ); } QString ResultsView::generateCSS() @@ -117,7 +82,7 @@ "a:visited {color: %5} " "a:hover {color: %6 } " "a:active {color: %6}" - ".Entry:hover { background-color: %10 }" + ".odd { background-color: %10 }" "query { color: %6 }" ) .arg( scheme.foreground().color().name() ) .arg( scheme.foreground( KColorScheme::InactiveText ).color().name() ) @@ -199,31 +164,14 @@ */ void ResultsView::setContents( const QString &text ) { - begin(); - setUserStyleSheet( generateCSS() ); - write( text ); - end(); - - qDebug() << "Set CSS to " << generateCSS(); -//KDE4 CHANGE setCursorPosition( 0,0 ); - ////////ensureCursorVisible(); + const QString content = QString("%2").arg(generateCSS()).arg(text); + setHtml( content ); +// qDebug() << "Set HTML to " << content; } void ResultsView::setLaterScrollValue( int scrollValue ) { this->_scrollValue = scrollValue; } -bool ResultsView::urlSelected( const QString &url, - int button, - int state, - const QString &_target, - const KParts::OpenUrlArguments& args, - const KParts::BrowserArguments& browserArgs ) -{ - //qDebug() << nodeUnderMouse().parentNode().parentNode().parentNode().toHTML(); - emit urlClicked( url ); - return KHTMLPart::urlSelected( url, button, state, _target, args, browserArgs ); -} - diff --git a/lib/entrylist.cpp b/lib/entrylist.cpp --- a/lib/entrylist.cpp +++ b/lib/entrylist.cpp @@ -177,7 +177,8 @@ if( length-- > 0 ) { - result += QStringLiteral( "
%3
" ) + result += QStringLiteral( "
%4
" ) + .arg( i % 2 == 0 ? "Entry" : "Entry odd" ) .arg( QString::number( i ) ) .arg( entry->getDictName() ) .arg( entry->toHTML() );