diff options
Diffstat (limited to 'src')
154 files changed, 2098 insertions, 2034 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6f256a2f4..523ee03a9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,39 +1,17 @@ -macro_optional_find_package(Baloo) -set_package_properties(Baloo PROPERTIES DESCRIPTION "Baloo Core libraries" - URL "http://www.kde.org" - TYPE OPTIONAL - PURPOSE "For adding desktop-wide search and tagging support to dolphin" - ) -macro_optional_find_package(BalooWidgets) -set_package_properties(BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets" - URL "http://www.kde.org" - TYPE OPTIONAL - ) +configure_file(config-baloo.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-baloo.h) -macro_optional_find_package(KFileMetaData) -set_package_properties(KFileMetaData PROPERTIES - URL "https://projects.kde.org/kfilemetadata" - TYPE OPTIONAL - PURPOSE "For accessing file metadata labels" - ) +configure_file(config-dolphin.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-dolphin.h) -if (Baloo_FOUND AND BalooWidgets_FOUND AND KFileMetaData_FOUND) - set(HAVE_BALOO TRUE) -endif() - -configure_file(config-baloo.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-baloo.h ) - -macro_bool_to_01(X11_Xrender_FOUND HAVE_XRENDER) -configure_file(config-X11.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-X11.h ) +add_definitions(-DTRANSLATION_DOMAIN=\"dolphin\") +add_definitions(-Wno-deprecated-declarations) +remove_definitions(-DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_URL_CAST_FROM_STRING) -include_directories( ${KACTIVITIES_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR} ) - -if(HAVE_BALOO) - include_directories(${BALOO_INCLUDE_DIR} ${BALOO_WIDGETS_INCLUDE_DIR} ${KFILEMETADATA_INCLUDE_DIR}) +if(X11_Xrender_FOUND) + set(HAVE_XRENDER TRUE) endif() -add_subdirectory(tests) +configure_file(config-X11.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-X11.h) ########### next target ############### @@ -104,7 +82,7 @@ if(HAVE_BALOO) ) endif() -kde4_add_kcfg_files(dolphinprivate_LIB_SRCS +kconfig_add_kcfg_files(dolphinprivate_LIB_SRCS settings/dolphin_compactmodesettings.kcfgc settings/dolphin_directoryviewpropertysettings.kcfgc settings/dolphin_detailsmodesettings.kcfgc @@ -113,21 +91,22 @@ kde4_add_kcfg_files(dolphinprivate_LIB_SRCS settings/dolphin_versioncontrolsettings.kcfgc ) -kde4_add_library(dolphinprivate SHARED ${dolphinprivate_LIB_SRCS}) +add_library(dolphinprivate ${dolphinprivate_LIB_SRCS}) target_link_libraries( - dolphinprivate - ${KDE4_KFILE_LIBS} - konq - ${KDE4_KNEWSTUFF3_LIBS} + dolphinprivate PUBLIC + KF5::KDELibs4Support + KF5::Konq + KF5::NewStuff ) if(HAVE_BALOO) target_link_libraries( - dolphinprivate - ${BALOO_LIBRARIES} - ${BALOO_WIDGETS_LIBRARY} - ${KFILEMETADATA_LIBRARY} + dolphinprivate PUBLIC + KF5::FileMetaData + KF5::Baloo + KF5::BalooNaturalQueryParser + KF5::BalooWidgets ) endif() @@ -135,32 +114,32 @@ if(X11_Xrender_FOUND) target_link_libraries(dolphinprivate ${X11_Xrender_LIB}) endif(X11_Xrender_FOUND) -target_link_libraries(dolphinprivate ${KDE4_PLASMA_LIBS}) +set_target_properties(dolphinprivate PROPERTIES + VERSION ${DOLPHINPRIVATE_VERSION_STRING} + SOVERSION ${DOLPHINPRIVATE_SOVERSION} +) -set_target_properties(dolphinprivate PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} ) -install(TARGETS dolphinprivate ${INSTALL_TARGETS_DEFAULT_ARGS}) +install(TARGETS dolphinprivate ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) ########################################## set(dolphinpart_SRCS dolphinpart.cpp + dolphinpart_ext.cpp ) -# Add dolphinpart_ext.cpp conditionally, only with KDE > 4.9.1. -if (${KDE_VERSION} VERSION_GREATER "4.9.1") -set(dolphinpart_SRCS - ${dolphinpart_SRCS} - dolphinpart_ext.cpp) -endif (${KDE_VERSION} VERSION_GREATER "4.9.1") - -kde4_add_plugin(dolphinpart ${dolphinpart_SRCS}) +add_library(dolphinpart MODULE ${dolphinpart_SRCS}) -target_link_libraries(dolphinpart dolphinprivate konq ${KDE4_KPARTS_LIBS} ${KDE4_KFILE_LIBS}) +target_link_libraries(dolphinpart + dolphinprivate + KF5::Konq + KF5::KDELibs4Support +) install(TARGETS dolphinpart DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES dolphinpart.rc DESTINATION ${DATA_INSTALL_DIR}/dolphinpart) -install(FILES dolphinpart.desktop DESTINATION ${SERVICES_INSTALL_DIR} ) +install(FILES dolphinpart.desktop DESTINATION ${SERVICES_INSTALL_DIR}) install(FILES views/versioncontrol/fileviewversioncontrolplugin.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR}) ########################################## @@ -222,7 +201,7 @@ set(dolphin_SRCS views/zoomlevelinfo.cpp ) -kde4_add_kcfg_files(dolphin_SRCS +kconfig_add_kcfg_files(dolphin_SRCS panels/folders/dolphin_folderspanelsettings.kcfgc panels/information/dolphin_informationpanelsettings.kcfgc panels/places/dolphin_placespanelsettings.kcfgc @@ -236,40 +215,35 @@ kde4_add_kcfg_files(dolphin_SRCS if(NOT WIN32) set(dolphin_SRCS ${dolphin_SRCS} panels/terminal/terminalpanel.cpp) -endif(NOT WIN32) +endif() + +# TODO Does anything replace kde4_add_app_icon ? +#kde4_add_app_icon(dolphin_SRCS "${KDE4_ICON_INSTALL_DIR}/oxygen/*/apps/system-file-manager.png") -kde4_add_app_icon(dolphin_SRCS "${KDE4_ICON_INSTALL_DIR}/oxygen/*/apps/system-file-manager.png") +kf5_add_kdeinit_executable(dolphin ${dolphin_SRCS}) -kde4_add_kdeinit_executable(dolphin ${dolphin_SRCS}) +target_include_directories(kdeinit_dolphin PRIVATE ${PHONON_INCLUDES}) target_link_libraries(kdeinit_dolphin - ${KDE4_KDEPRINT_LIBS} - ${KDE4_KFILE_LIBS} - ${KDE4_KPARTS_LIBS} - ${KDE4_KCMUTILS_LIBRARY} - konq + KF5::Konq dolphinprivate - knewstuff3 - ${KDE4_SOLID_LIBS} - ${KDE4_PHONON_LIBS} + KF5::NewStuff + KF5::Parts + KF5::KCMUtils + KF5::Solid + Phonon::phonon4qt5 + KF5::KDELibs4Support ) -if(HAVE_BALOO) - target_link_libraries(kdeinit_dolphin - ${BALOO_LIBRARIES} - ${BALOO_WIDGETS_LIBRARY} - ) -endif() - -if (KActivities_FOUND) +if (KF5Activities_FOUND) target_link_libraries( kdeinit_dolphin - ${KACTIVITIES_LIBRARY} + KF5::Activities ) -endif (KActivities_FOUND) +endif() -install(TARGETS kdeinit_dolphin ${INSTALL_TARGETS_DEFAULT_ARGS}) -install(TARGETS dolphin ${INSTALL_TARGETS_DEFAULT_ARGS}) +install(TARGETS kdeinit_dolphin ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) +install(TARGETS dolphin ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) ########################################## @@ -302,7 +276,7 @@ set(kcm_dolphingeneral_PART_SRCS settings/serviceitemdelegate.cpp settings/servicemodel.cpp) -kde4_add_kcfg_files(kcm_dolphinviewmodes_PART_SRCS +kconfig_add_kcfg_files(kcm_dolphinviewmodes_PART_SRCS settings/dolphin_compactmodesettings.kcfgc settings/dolphin_directoryviewpropertysettings.kcfgc settings/dolphin_detailsmodesettings.kcfgc @@ -311,25 +285,25 @@ kde4_add_kcfg_files(kcm_dolphinviewmodes_PART_SRCS settings/dolphin_versioncontrolsettings.kcfgc ) -kde4_add_kcfg_files(kcm_dolphinnavigation_PART_SRCS +kconfig_add_kcfg_files(kcm_dolphinnavigation_PART_SRCS settings/dolphin_generalsettings.kcfgc) -kde4_add_kcfg_files(kcm_dolphinservices_PART_SRCS +kconfig_add_kcfg_files(kcm_dolphinservices_PART_SRCS settings/dolphin_generalsettings.kcfgc settings/dolphin_versioncontrolsettings.kcfgc) -kde4_add_kcfg_files(kcm_dolphingeneral_PART_SRCS +kconfig_add_kcfg_files(kcm_dolphingeneral_PART_SRCS settings/dolphin_generalsettings.kcfgc) -kde4_add_plugin(kcm_dolphinviewmodes ${kcm_dolphinviewmodes_PART_SRCS}) -kde4_add_plugin(kcm_dolphinnavigation ${kcm_dolphinnavigation_PART_SRCS}) -kde4_add_plugin(kcm_dolphinservices ${kcm_dolphinservices_PART_SRCS}) -kde4_add_plugin(kcm_dolphingeneral ${kcm_dolphingeneral_PART_SRCS}) +add_library(kcm_dolphinviewmodes MODULE ${kcm_dolphinviewmodes_PART_SRCS}) +add_library(kcm_dolphinnavigation MODULE ${kcm_dolphinnavigation_PART_SRCS}) +add_library(kcm_dolphinservices MODULE ${kcm_dolphinservices_PART_SRCS}) +add_library(kcm_dolphingeneral MODULE ${kcm_dolphingeneral_PART_SRCS}) -target_link_libraries(kcm_dolphinviewmodes ${KDE4_KDEUI_LIBS} ${KDE4_KFILE_LIBS} dolphinprivate) -target_link_libraries(kcm_dolphinnavigation ${KDE4_KDEUI_LIBS} ${KDE4_KFILE_LIBS} dolphinprivate) -target_link_libraries(kcm_dolphinservices ${KDE4_KDEUI_LIBS} ${KDE4_KFILE_LIBS} ${KDE4_KIO_LIBS} ${KDE4_KNEWSTUFF3_LIBRARY} dolphinprivate) -target_link_libraries(kcm_dolphingeneral ${KDE4_KDEUI_LIBS} ${KDE4_KFILE_LIBS} ${KDE4_KIO_LIBS} dolphinprivate) +target_link_libraries(kcm_dolphinviewmodes KF5::KDELibs4Support dolphinprivate) +target_link_libraries(kcm_dolphinnavigation KF5::KDELibs4Support dolphinprivate) +target_link_libraries(kcm_dolphinservices KF5::KDELibs4Support dolphinprivate) +target_link_libraries(kcm_dolphingeneral KF5::KDELibs4Support dolphinprivate) install(TARGETS kcm_dolphinviewmodes DESTINATION ${PLUGIN_INSTALL_DIR} ) install(TARGETS kcm_dolphinnavigation DESTINATION ${PLUGIN_INSTALL_DIR} ) @@ -340,13 +314,16 @@ install(TARGETS kcm_dolphingeneral DESTINATION ${PLUGIN_INSTALL_DIR} ) set(kio_search_PART_SRCS search/filenamesearchprotocol.cpp) -kde4_add_plugin(kio_filenamesearch ${kio_search_PART_SRCS}) -target_link_libraries(kio_filenamesearch ${KDE4_KIO_LIBS}) + +add_library(kio_filenamesearch MODULE ${kio_search_PART_SRCS}) + +target_link_libraries(kio_filenamesearch KF5::KDELibs4Support) + install(TARGETS kio_filenamesearch DESTINATION ${PLUGIN_INSTALL_DIR}) ########### install files ############### -install( PROGRAMS dolphin.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} ) +install( PROGRAMS org.kde.dolphin.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} ) install( FILES settings/dolphin_directoryviewpropertysettings.kcfg settings/dolphin_generalsettings.kcfg settings/dolphin_compactmodesettings.kcfg @@ -354,7 +331,7 @@ install( FILES settings/dolphin_directoryviewpropertysettings.kcfg settings/dolphin_detailsmodesettings.kcfg settings/dolphin_versioncontrolsettings.kcfg DESTINATION ${KCFG_INSTALL_DIR} ) -install( FILES dolphinui.rc DESTINATION ${DATA_INSTALL_DIR}/dolphin ) +install( FILES dolphinui.rc DESTINATION ${CMAKE_INSTALL_KXMLGUI5DIR}/dolphin ) install( FILES dolphin.appdata.xml DESTINATION ${SHARE_INSTALL_PREFIX}/appdata ) install( FILES search/filenamesearch.protocol DESTINATION ${SERVICES_INSTALL_DIR} ) install( FILES settings/kcm/kcmdolphinviewmodes.desktop DESTINATION @@ -366,3 +343,4 @@ install( FILES settings/services/servicemenu.knsrc DESTINATION ${CONFIG_INSTALL_ install( PROGRAMS settings/services/servicemenuinstallation DESTINATION ${BIN_INSTALL_DIR} ) install( PROGRAMS settings/services/servicemenudeinstallation DESTINATION ${BIN_INSTALL_DIR} ) +add_subdirectory(tests) diff --git a/src/config-dolphin.h.cmake b/src/config-dolphin.h.cmake new file mode 100644 index 000000000..45e7208e1 --- /dev/null +++ b/src/config-dolphin.h.cmake @@ -0,0 +1,4 @@ + +/* Define to 1 if you have the KActivities library. */ +#cmakedefine KF5Activities_FOUND 1 + diff --git a/src/dolphinapplication.cpp b/src/dolphinapplication.cpp index a4b105b90..41812aaa9 100644 --- a/src/dolphinapplication.cpp +++ b/src/dolphinapplication.cpp @@ -26,11 +26,13 @@ #include <KDebug> #include <KRun> #include <KUrl> +#include <KGlobal> DolphinApplication::DolphinApplication() : m_mainWindow(0) { - KGlobal::locale()->insertCatalog("libkonq"); // Needed for applications using libkonq + //KF5 port: remove this line and define TRANSLATION_DOMAIN in CMakeLists.txt instead +//KLocale::global()->insertCatalog("libkonq"); // Needed for applications using libkonq m_mainWindow = new DolphinMainWindow(); m_mainWindow->setAttribute(Qt::WA_DeleteOnClose); @@ -103,4 +105,3 @@ void DolphinApplication::restoreSession() } } -#include "dolphinapplication.moc" diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp index e692c8fa9..84a09f4d2 100644 --- a/src/dolphincontextmenu.cpp +++ b/src/dolphincontextmenu.cpp @@ -34,19 +34,22 @@ #include <KFileItemListProperties> #include <KGlobal> #include <KIconLoader> -#include <KIO/NetAccess> -#include <KMenu> +#include <KIO/RestoreJob> +#include <KIO/EmptyTrashJob> +#include <KIO/JobUiDelegate> +#include <KJobUiDelegate> +#include <KJobWidgets> +#include <QMenu> #include <KMenuBar> #include <KMessageBox> #include <KMimeTypeTrader> +#include <KMimeType> #include <KNewFileMenu> -#include <konqmimedata.h> #include <konq_operations.h> #include <KService> #include <KLocale> #include <KPropertiesDialog> #include <KStandardAction> -#include <KStandardDirs> #include <KToolBar> #include <panels/places/placesitem.h> @@ -63,7 +66,7 @@ DolphinContextMenu::DolphinContextMenu(DolphinMainWindow* parent, const QPoint& pos, const KFileItem& fileInfo, const KUrl& baseUrl) : - KMenu(parent), + QMenu(parent), m_pos(pos), m_mainWindow(parent), m_fileInfo(fileInfo), @@ -128,7 +131,7 @@ void DolphinContextMenu::keyPressEvent(QKeyEvent *ev) if (m_removeAction && ev->key() == Qt::Key_Shift) { m_removeAction->update(); } - KMenu::keyPressEvent(ev); + QMenu::keyPressEvent(ev); } void DolphinContextMenu::keyReleaseEvent(QKeyEvent *ev) @@ -136,14 +139,14 @@ void DolphinContextMenu::keyReleaseEvent(QKeyEvent *ev) if (m_removeAction && ev->key() == Qt::Key_Shift) { m_removeAction->update(); } - KMenu::keyReleaseEvent(ev); + QMenu::keyReleaseEvent(ev); } void DolphinContextMenu::openTrashContextMenu() { Q_ASSERT(m_context & TrashContext); - QAction* emptyTrashAction = new QAction(KIcon("trash-empty"), i18nc("@action:inmenu", "Empty Trash"), this); + QAction* emptyTrashAction = new QAction(QIcon::fromTheme("trash-empty"), i18nc("@action:inmenu", "Empty Trash"), this); KConfig trashConfig("trashrc", KConfig::SimpleConfig); emptyTrashAction->setEnabled(!trashConfig.group("Status").readEntry("Empty", true)); addAction(emptyTrashAction); @@ -156,7 +159,13 @@ void DolphinContextMenu::openTrashContextMenu() addShowMenuBarAction(); if (exec(m_pos) == emptyTrashAction) { - KonqOperations::emptyTrash(m_mainWindow); + KIO::JobUiDelegate uiDelegate; + uiDelegate.setWindow(m_mainWindow); + if (uiDelegate.askDeleteConfirmation(QList<QUrl>(), KIO::JobUiDelegate::EmptyTrash, KIO::JobUiDelegate::DefaultConfirmation)) { + KIO::Job* job = KIO::emptyTrash(); + KJobWidgets::setWindow(job, m_mainWindow); + job->ui()->setAutoErrorHandlingEnabled(true); + } } } @@ -180,7 +189,9 @@ void DolphinContextMenu::openTrashItemContextMenu() selectedUrls.append(item.url()); } - KonqOperations::restoreTrashedItems(selectedUrls, m_mainWindow); + KIO::RestoreJob *job = KIO::restoreFromTrash(selectedUrls); + KJobWidgets::setWindow(job, m_mainWindow); + job->uiDelegate()->setAutoErrorHandlingEnabled(true); } } @@ -188,6 +199,7 @@ void DolphinContextMenu::openItemContextMenu() { Q_ASSERT(!m_fileInfo.isNull()); + QAction* openParentAction = 0; QAction* openParentInNewWindowAction = 0; QAction* openParentInNewTabAction = 0; QAction* addToPlacesAction = 0; @@ -202,12 +214,12 @@ void DolphinContextMenu::openItemContextMenu() newFileMenu->checkUpToDate(); newFileMenu->setPopupFiles(m_fileInfo.url()); newFileMenu->setEnabled(selectedItemsProps.supportsWriting()); - connect(newFileMenu, SIGNAL(fileCreated(KUrl)), newFileMenu, SLOT(deleteLater())); - connect(newFileMenu, SIGNAL(directoryCreated(KUrl)), newFileMenu, SLOT(deleteLater())); + connect(newFileMenu, &DolphinNewFileMenu::fileCreated, newFileMenu, &DolphinNewFileMenu::deleteLater); + connect(newFileMenu, &DolphinNewFileMenu::directoryCreated, newFileMenu, &DolphinNewFileMenu::deleteLater); - KMenu* menu = newFileMenu->menu(); + QMenu* menu = newFileMenu->menu(); menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New")); - menu->setIcon(KIcon("document-new")); + menu->setIcon(QIcon::fromTheme("document-new")); addMenu(menu); addSeparator(); @@ -217,20 +229,26 @@ void DolphinContextMenu::openItemContextMenu() // insert 'Add to Places' entry if (!placeExists(m_fileInfo.url())) { - addToPlacesAction = addAction(KIcon("bookmark-new"), + addToPlacesAction = addAction(QIcon::fromTheme("bookmark-new"), i18nc("@action:inmenu Add selected folder to places", "Add to Places")); } addSeparator(); - } else if (m_baseUrl.protocol().contains("search")) { - openParentInNewWindowAction = new QAction(KIcon("window-new"), + } else if (m_baseUrl.protocol().contains("search") || m_baseUrl.protocol().contains("timeline")) { + openParentAction = new QAction(QIcon::fromTheme("document-open-folder"), + i18nc("@action:inmenu", + "Open Path"), + this); + addAction(openParentAction); + + openParentInNewWindowAction = new QAction(QIcon::fromTheme("window-new"), i18nc("@action:inmenu", "Open Path in New Window"), this); addAction(openParentInNewWindowAction); - openParentInNewTabAction = new QAction(KIcon("tab-new"), + openParentInNewTabAction = new QAction(QIcon::fromTheme("tab-new"), i18nc("@action:inmenu", "Open Path in New Tab"), this); @@ -294,6 +312,8 @@ void DolphinContextMenu::openItemContextMenu() PlacesItem* item = model.createPlacesItem(text, selectedUrl); model.appendItemToGroup(item); } + } else if (activatedAction == openParentAction) { + m_command = OpenParentFolder; } else if (activatedAction == openParentInNewWindowAction) { m_command = OpenParentFolderInNewWindow; } else if (activatedAction == openParentInNewTabAction) { @@ -321,7 +341,7 @@ void DolphinContextMenu::openViewportContextMenu() // Insert 'Add to Places' entry if exactly one item is selected QAction* addToPlacesAction = 0; if (!placeExists(m_mainWindow->activeViewContainer()->url())) { - addToPlacesAction = addAction(KIcon("bookmark-new"), + addToPlacesAction = addAction(QIcon::fromTheme("bookmark-new"), i18nc("@action:inmenu Add current folder to places", "Add to Places")); } @@ -377,7 +397,7 @@ void DolphinContextMenu::insertDefaultItemActions(const KFileItemListProperties& // Insert 'Move to Trash' and/or 'Delete' if (properties.supportsDeleting()) { - const bool showDeleteAction = (KGlobal::config()->group("KDE").readEntry("ShowDeleteCommand", false) || + const bool showDeleteAction = (KSharedConfig::openConfig()->group("KDE").readEntry("ShowDeleteCommand", false) || !properties.isLocal()); const bool showMoveToTrashAction = (properties.isLocal() && properties.supportsMoving()); @@ -430,9 +450,9 @@ QAction* DolphinContextMenu::createPasteAction() const bool isDir = !m_fileInfo.isNull() && m_fileInfo.isDir(); if (isDir && (m_selectedItems.count() == 1)) { const QPair<bool, QString> pasteInfo = KonqOperations::pasteInfo(m_fileInfo.url()); - action = new QAction(KIcon("edit-paste"), i18nc("@action:inmenu", "Paste Into Folder"), this); + action = new QAction(QIcon::fromTheme("edit-paste"), i18nc("@action:inmenu", "Paste Into Folder"), this); action->setEnabled(pasteInfo.first); - connect(action, SIGNAL(triggered()), m_mainWindow, SLOT(pasteIntoFolder())); + connect(action, &QAction::triggered, m_mainWindow, &DolphinMainWindow::pasteIntoFolder); } else { action = m_mainWindow->actionCollection()->action(KStandardAction::name(KStandardAction::Paste)); } @@ -489,7 +509,7 @@ void DolphinContextMenu::addFileItemPluginActions() const KConfig config("kservicemenurc", KConfig::NoGlobals); const KConfigGroup showGroup = config.group("Show"); - foreach (const KSharedPtr<KService>& service, pluginServices) { + foreach (const KService::Ptr& service, pluginServices) { if (!showGroup.readEntry(service->desktopEntryName(), true)) { // The plugin has been disabled continue; @@ -529,4 +549,3 @@ void DolphinContextMenu::addCustomActions() } } -#include "dolphincontextmenu.moc" diff --git a/src/dolphincontextmenu.h b/src/dolphincontextmenu.h index 180f91787..62dffd074 100644 --- a/src/dolphincontextmenu.h +++ b/src/dolphincontextmenu.h @@ -24,7 +24,7 @@ #include <KService> #include <KUrl> #include <konq_copytomenu.h> -#include <KMenu> +#include <QMenu> #include <QObject> @@ -50,7 +50,7 @@ class DolphinRemoveAction; * - 'Actions': Contains all actions which can be applied to the * given item. */ -class DolphinContextMenu : public KMenu +class DolphinContextMenu : public QMenu { Q_OBJECT @@ -58,6 +58,7 @@ public: enum Command { None, + OpenParentFolder, OpenParentFolderInNewWindow, OpenParentFolderInNewTab }; diff --git a/src/dolphindockwidget.cpp b/src/dolphindockwidget.cpp index 6495c8da9..1e83ef841 100644 --- a/src/dolphindockwidget.cpp +++ b/src/dolphindockwidget.cpp @@ -91,4 +91,3 @@ bool DolphinDockWidget::isLocked() const return m_locked; } -#include "dolphindockwidget.moc" diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 95b08af96..e99788621 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -47,7 +47,6 @@ #include "dolphin_generalsettings.h" #include <KAcceleratorManager> -#include <KAction> #include <KActionCollection> #include <KActionMenu> #include <KConfig> @@ -56,29 +55,27 @@ #include <kdualaction.h> #include <KFileDialog> #include <KGlobal> +#include <KDialog> +#include <KJobWidgets> #include <KLineEdit> #include <KToolBar> -#include <KIcon> #include <KIconLoader> #include <KIO/NetAccess> #include <KIO/JobUiDelegate> #include <KInputDialog> #include <KLocale> #include <KProtocolManager> -#include <KMenu> +#include <QMenu> #include <KMenuBar> #include <KMessageBox> #include <KFileItemListProperties> -#include <konqmimedata.h> #include <KProtocolInfo> #include <KRun> #include <KShell> -#include <KStandardDirs> #include <kstatusbar.h> #include <KStandardAction> #include <KToggleAction> #include <KUrlNavigator> -#include <KUrl> #include <KUrlComboBox> #include <KToolInvocation> @@ -87,6 +84,10 @@ #include <QKeyEvent> #include <QClipboard> #include <QToolButton> +#include <QSplitter> +#include <QTimer> +#include <QStandardPaths> +#include <QPushButton> namespace { // Used for GeneralSettings::version() to determine whether @@ -108,20 +109,20 @@ DolphinMainWindow::DolphinMainWindow() : { setObjectName("Dolphin#"); - connect(&DolphinNewFileMenuObserver::instance(), SIGNAL(errorMessage(QString)), - this, SLOT(showErrorMessage(QString))); + connect(&DolphinNewFileMenuObserver::instance(), &DolphinNewFileMenuObserver::errorMessage, + this, &DolphinMainWindow::showErrorMessage); KIO::FileUndoManager* undoManager = KIO::FileUndoManager::self(); undoManager->setUiInterface(new UndoUiInterface()); - connect(undoManager, SIGNAL(undoAvailable(bool)), - this, SLOT(slotUndoAvailable(bool))); - connect(undoManager, SIGNAL(undoTextChanged(QString)), - this, SLOT(slotUndoTextChanged(QString))); - connect(undoManager, SIGNAL(jobRecordingStarted(CommandType)), - this, SLOT(clearStatusBar())); - connect(undoManager, SIGNAL(jobRecordingFinished(CommandType)), - this, SLOT(showCommand(CommandType))); + connect(undoManager, static_cast<void(KIO::FileUndoManager::*)(bool)>(&KIO::FileUndoManager::undoAvailable), + this, &DolphinMainWindow::slotUndoAvailable); + connect(undoManager, &KIO::FileUndoManager::undoTextChanged, + this, &DolphinMainWindow::slotUndoTextChanged); + connect(undoManager, &KIO::FileUndoManager::jobRecordingStarted, + this, &DolphinMainWindow::clearStatusBar); + connect(undoManager, &KIO::FileUndoManager::jobRecordingFinished, + this, &DolphinMainWindow::showCommand); GeneralSettings* generalSettings = GeneralSettings::self(); const bool firstRun = (generalSettings->version() < 200); @@ -143,12 +144,12 @@ DolphinMainWindow::DolphinMainWindow() : setupActions(); m_actionHandler = new DolphinViewActionHandler(actionCollection(), this); - connect(m_actionHandler, SIGNAL(actionBeingHandled()), SLOT(clearStatusBar())); - connect(m_actionHandler, SIGNAL(createDirectory()), SLOT(createDirectory())); + connect(m_actionHandler, &DolphinViewActionHandler::actionBeingHandled, this, &DolphinMainWindow::clearStatusBar); + connect(m_actionHandler, &DolphinViewActionHandler::createDirectory, this, &DolphinMainWindow::createDirectory); m_remoteEncoding = new DolphinRemoteEncoding(this, m_actionHandler); - connect(this, SIGNAL(urlChanged(KUrl)), - m_remoteEncoding, SLOT(slotAboutToOpenUrl())); + connect(this, &DolphinMainWindow::urlChanged, + m_remoteEncoding, &DolphinRemoteEncoding::slotAboutToOpenUrl); setupDockWidgets(); @@ -156,8 +157,8 @@ DolphinMainWindow::DolphinMainWindow() : stateChanged("new_file"); QClipboard* clipboard = QApplication::clipboard(); - connect(clipboard, SIGNAL(dataChanged()), - this, SLOT(updatePasteAction())); + connect(clipboard, &QClipboard::dataChanged, + this, &DolphinMainWindow::updatePasteAction); QAction* showFilterBarAction = actionCollection()->action("show_filter_bar"); showFilterBarAction->setChecked(generalSettings->filterBar()); @@ -311,14 +312,14 @@ void DolphinMainWindow::openNewActivatedTab() m_tabWidget->openNewActivatedTab(); } -void DolphinMainWindow::openNewTab(const KUrl& primaryUrl, const KUrl& secondaryUrl) +void DolphinMainWindow::openNewTab(const KUrl& url) { - m_tabWidget->openNewTab(primaryUrl, secondaryUrl); + m_tabWidget->openNewTab(url); } -void DolphinMainWindow::openNewActivatedTab(const KUrl& primaryUrl, const KUrl& secondaryUrl) +void DolphinMainWindow::openNewActivatedTab(const KUrl& url) { - m_tabWidget->openNewActivatedTab(primaryUrl, secondaryUrl); + m_tabWidget->openNewActivatedTab(url); } void DolphinMainWindow::openInNewTab() @@ -349,7 +350,7 @@ void DolphinMainWindow::openInNewWindow() } if (!newWindowUrl.isEmpty()) { - KRun::run("dolphin %u", KUrl::List() << newWindowUrl, this); + KRun::run("dolphin %u", QList<QUrl>() << newWindowUrl, this); } } @@ -378,18 +379,19 @@ void DolphinMainWindow::closeEvent(QCloseEvent* event) // KDialog::Yes -> Quit // KDialog::No -> Close only the current tab // KDialog::Cancel -> do nothing - KDialog *dialog = new KDialog(this, Qt::Dialog); - dialog->setCaption(i18nc("@title:window", "Confirmation")); - dialog->setButtons(KDialog::Yes | KDialog::No | KDialog::Cancel); + QDialog *dialog = new QDialog(this, Qt::Dialog); + dialog->setWindowTitle(i18nc("@title:window", "Confirmation")); dialog->setModal(true); - dialog->setButtonGuiItem(KDialog::Yes, KStandardGuiItem::quit()); - dialog->setButtonGuiItem(KDialog::No, KGuiItem(i18n("C&lose Current Tab"), KIcon("tab-close"))); - dialog->setButtonGuiItem(KDialog::Cancel, KStandardGuiItem::cancel()); - dialog->setDefaultButton(KDialog::Yes); + QDialogButtonBox* buttons = new QDialogButtonBox(QDialogButtonBox::Yes | QDialogButtonBox::No | QDialogButtonBox::Cancel); + KGuiItem::assign(buttons->button(QDialogButtonBox::Yes), KStandardGuiItem::quit()); + KGuiItem::assign(buttons->button(QDialogButtonBox::No), KGuiItem(i18n("C&lose Current Tab"), QIcon::fromTheme("tab-close"))); + KGuiItem::assign(buttons->button(QDialogButtonBox::Cancel), KStandardGuiItem::cancel()); + buttons->button(QDialogButtonBox::Yes)->setDefault(true); bool doNotAskAgainCheckboxResult = false; const int result = KMessageBox::createKMessageBox(dialog, + buttons, QMessageBox::Warning, i18n("You have multiple tabs open in this window, are you sure you want to quit?"), QStringList(), @@ -402,10 +404,10 @@ void DolphinMainWindow::closeEvent(QCloseEvent* event) } switch (result) { - case KDialog::Yes: + case QDialogButtonBox::Yes: // Quit break; - case KDialog::No: + case QDialogButtonBox::No: // Close only the current tab m_tabWidget->closeTab(); default: @@ -415,7 +417,7 @@ void DolphinMainWindow::closeEvent(QCloseEvent* event) } GeneralSettings::setVersion(CurrentDolphinVersion); - GeneralSettings::self()->writeConfig(); + GeneralSettings::self()->save(); KXmlGuiWindow::closeEvent(event); } @@ -714,7 +716,7 @@ void DolphinMainWindow::editSettings() const KUrl url = container->url(); DolphinSettingsDialog* settingsDialog = new DolphinSettingsDialog(url, this); - connect(settingsDialog, SIGNAL(settingsChanged()), this, SLOT(refreshViews())); + connect(settingsDialog, &DolphinSettingsDialog::settingsChanged, this, &DolphinMainWindow::refreshViews); settingsDialog->setAttribute(Qt::WA_DeleteOnClose); settingsDialog->show(); m_settingsDialog = settingsDialog; @@ -734,10 +736,10 @@ void DolphinMainWindow::handleUrl(const KUrl& url) // stat the URL to see if it is a dir or not m_lastHandleUrlStatJob = KIO::stat(url, KIO::HideProgressInfo); if (m_lastHandleUrlStatJob->ui()) { - m_lastHandleUrlStatJob->ui()->setWindow(this); + KJobWidgets::setWindow(m_lastHandleUrlStatJob, this); } - connect(m_lastHandleUrlStatJob, SIGNAL(result(KJob*)), - this, SLOT(slotHandleUrlStatFinished(KJob*))); + connect(m_lastHandleUrlStatJob, &KIO::Job::result, + this, &DolphinMainWindow::slotHandleUrlStatFinished); } else { new KRun(url, this); // Automatically deletes itself after being finished @@ -771,13 +773,18 @@ void DolphinMainWindow::openContextMenu(const QPoint& pos, const DolphinContextMenu::Command command = contextMenu.data()->open(); switch (command) { + case DolphinContextMenu::OpenParentFolder: + changeUrl(KIO::upUrl(item.url())); + break; + case DolphinContextMenu::OpenParentFolderInNewWindow: { - KRun::run("dolphin %u", KUrl::List() << item.url().upUrl(), this); + + KRun::run("dolphin %u", QList<QUrl>() << KIO::upUrl(item.url()), this); break; } case DolphinContextMenu::OpenParentFolderInNewTab: - openNewTab(item.url().upUrl()); + openNewTab(KIO::upUrl(item.url())); break; case DolphinContextMenu::None: @@ -790,10 +797,10 @@ void DolphinMainWindow::openContextMenu(const QPoint& pos, void DolphinMainWindow::updateControlMenu() { - KMenu* menu = qobject_cast<KMenu*>(sender()); + QMenu* menu = qobject_cast<QMenu*>(sender()); Q_ASSERT(menu); - // All actions get cleared by KMenu::clear(). The sub-menus are deleted + // All actions get cleared by QMenu::clear(). The sub-menus are deleted // by connecting to the aboutToHide() signal from the parent-menu. menu->clear(); @@ -835,7 +842,7 @@ void DolphinMainWindow::updateControlMenu() } addActionToMenu(ac->action("panels"), menu); - KMenu* locationBarMenu = new KMenu(i18nc("@action:inmenu", "Location Bar"), menu); + QMenu* locationBarMenu = new QMenu(i18nc("@action:inmenu", "Location Bar"), menu); locationBarMenu->addAction(ac->action("editable_location")); locationBarMenu->addAction(ac->action("replace_location")); menu->addMenu(locationBarMenu); @@ -843,8 +850,8 @@ void DolphinMainWindow::updateControlMenu() menu->addSeparator(); // Add "Go" menu - KMenu* goMenu = new KMenu(i18nc("@action:inmenu", "Go"), menu); - connect(menu, SIGNAL(aboutToHide()), goMenu, SLOT(deleteLater())); + QMenu* goMenu = new QMenu(i18nc("@action:inmenu", "Go"), menu); + connect(menu, &QMenu::aboutToHide, goMenu, &QMenu::deleteLater); goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Back))); goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Forward))); goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Up))); @@ -853,8 +860,8 @@ void DolphinMainWindow::updateControlMenu() menu->addMenu(goMenu); // Add "Tool" menu - KMenu* toolsMenu = new KMenu(i18nc("@action:inmenu", "Tools"), menu); - connect(menu, SIGNAL(aboutToHide()), toolsMenu, SLOT(deleteLater())); + QMenu* toolsMenu = new QMenu(i18nc("@action:inmenu", "Tools"), menu); + connect(menu, &QMenu::aboutToHide, toolsMenu, &QMenu::deleteLater); toolsMenu->addAction(ac->action("show_filter_bar")); toolsMenu->addAction(ac->action("compare_files")); toolsMenu->addAction(ac->action("open_terminal")); @@ -867,8 +874,8 @@ void DolphinMainWindow::updateControlMenu() addActionToMenu(ac->action(KStandardAction::name(KStandardAction::Preferences)), menu); // Add "Help" menu - KMenu* helpMenu = new KMenu(i18nc("@action:inmenu", "Help"), menu); - connect(menu, SIGNAL(aboutToHide()), helpMenu, SLOT(deleteLater())); + QMenu* helpMenu = new QMenu(i18nc("@action:inmenu", "Help"), menu); + connect(menu, &QMenu::aboutToHide, helpMenu, &QMenu::deleteLater); helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::HelpContents))); helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::WhatsThis))); helpMenu->addSeparator(); @@ -977,31 +984,31 @@ void DolphinMainWindow::setupActions() { // setup 'File' menu m_newFileMenu = new DolphinNewFileMenu(actionCollection(), this); - KMenu* menu = m_newFileMenu->menu(); + QMenu* menu = m_newFileMenu->menu(); menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New")); - menu->setIcon(KIcon("document-new")); + menu->setIcon(QIcon::fromTheme("document-new")); m_newFileMenu->setDelayed(false); - connect(menu, SIGNAL(aboutToShow()), - this, SLOT(updateNewMenu())); + connect(menu, &QMenu::aboutToShow, + this, &DolphinMainWindow::updateNewMenu); - KAction* newWindow = actionCollection()->addAction("new_window"); - newWindow->setIcon(KIcon("window-new")); + QAction* newWindow = actionCollection()->addAction("new_window"); + newWindow->setIcon(QIcon::fromTheme("window-new")); newWindow->setText(i18nc("@action:inmenu File", "New &Window")); - newWindow->setShortcut(Qt::CTRL | Qt::Key_N); - connect(newWindow, SIGNAL(triggered()), this, SLOT(openNewMainWindow())); + actionCollection()->setDefaultShortcut(newWindow, Qt::CTRL | Qt::Key_N); + connect(newWindow, &QAction::triggered, this, &DolphinMainWindow::openNewMainWindow); - KAction* newTab = actionCollection()->addAction("new_tab"); - newTab->setIcon(KIcon("tab-new")); + QAction* newTab = actionCollection()->addAction("new_tab"); + newTab->setIcon(QIcon::fromTheme("tab-new")); newTab->setText(i18nc("@action:inmenu File", "New Tab")); - newTab->setShortcut(KShortcut(Qt::CTRL | Qt::Key_T, Qt::CTRL | Qt::SHIFT | Qt::Key_N)); - connect(newTab, SIGNAL(triggered()), this, SLOT(openNewActivatedTab())); + actionCollection()->setDefaultShortcuts(newTab, QList<QKeySequence>() << QKeySequence(Qt::CTRL | Qt::Key_T) << QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_N)); + connect(newTab, &QAction::triggered, this, static_cast<void(DolphinMainWindow::*)()>(&DolphinMainWindow::openNewActivatedTab)); - KAction* closeTab = actionCollection()->addAction("close_tab"); - closeTab->setIcon(KIcon("tab-close")); + QAction* closeTab = actionCollection()->addAction("close_tab"); + closeTab->setIcon(QIcon::fromTheme("tab-close")); closeTab->setText(i18nc("@action:inmenu File", "Close Tab")); - closeTab->setShortcut(Qt::CTRL | Qt::Key_W); + actionCollection()->setDefaultShortcut(closeTab, Qt::CTRL | Qt::Key_W); closeTab->setEnabled(false); - connect(closeTab, SIGNAL(triggered()), m_tabWidget, SLOT(closeTab())); + connect(closeTab, &QAction::triggered, m_tabWidget, static_cast<void(DolphinTabWidget::*)()>(&DolphinTabWidget::closeTab)); KStandardAction::quit(this, SLOT(quit()), actionCollection()); @@ -1012,12 +1019,12 @@ void DolphinMainWindow::setupActions() // need to remove shift+del from cut action, else the shortcut for deletejob // doesn't work - KAction* cut = KStandardAction::cut(this, SLOT(cut()), actionCollection()); - KShortcut cutShortcut = cut->shortcut(); - cutShortcut.remove(Qt::SHIFT | Qt::Key_Delete, KShortcut::KeepEmpty); - cut->setShortcut(cutShortcut); + QAction* cut = KStandardAction::cut(this, SLOT(cut()), actionCollection()); + auto cutShortcuts = cut->shortcuts(); + cutShortcuts.removeAll(QKeySequence(Qt::SHIFT | Qt::Key_Delete)); + actionCollection()->setDefaultShortcuts(cut, cutShortcuts); KStandardAction::copy(this, SLOT(copy()), actionCollection()); - KAction* paste = KStandardAction::paste(this, SLOT(paste()), actionCollection()); + QAction* paste = KStandardAction::paste(this, SLOT(paste()), actionCollection()); // The text of the paste-action is modified dynamically by Dolphin // (e. g. to "Paste One Folder"). To prevent that the size of the toolbar changes // due to the long text, the text "Paste" is used: @@ -1025,51 +1032,50 @@ void DolphinMainWindow::setupActions() KStandardAction::find(this, SLOT(find()), actionCollection()); - KAction* selectAll = actionCollection()->addAction("select_all"); + QAction* selectAll = actionCollection()->addAction("select_all"); selectAll->setText(i18nc("@action:inmenu Edit", "Select All")); - selectAll->setShortcut(Qt::CTRL | Qt::Key_A); - connect(selectAll, SIGNAL(triggered()), this, SLOT(selectAll())); + actionCollection()->setDefaultShortcut(selectAll, Qt::CTRL | Qt::Key_A); + connect(selectAll, &QAction::triggered, this, &DolphinMainWindow::selectAll); - KAction* invertSelection = actionCollection()->addAction("invert_selection"); + QAction* invertSelection = actionCollection()->addAction("invert_selection"); invertSelection->setText(i18nc("@action:inmenu Edit", "Invert Selection")); - invertSelection->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_A); - connect(invertSelection, SIGNAL(triggered()), this, SLOT(invertSelection())); + actionCollection()->setDefaultShortcut(invertSelection, Qt::CTRL | Qt::SHIFT | Qt::Key_A); + connect(invertSelection, &QAction::triggered, this, &DolphinMainWindow::invertSelection); // setup 'View' menu // (note that most of it is set up in DolphinViewActionHandler) - KAction* split = actionCollection()->addAction("split_view"); - split->setShortcut(Qt::Key_F3); - connect(split, SIGNAL(triggered()), this, SLOT(toggleSplitView())); + QAction* split = actionCollection()->addAction("split_view"); + actionCollection()->setDefaultShortcut(split, Qt::Key_F3); + connect(split, &QAction::triggered, this, &DolphinMainWindow::toggleSplitView); - KAction* reload = actionCollection()->addAction("reload"); + QAction* reload = actionCollection()->addAction("reload"); reload->setText(i18nc("@action:inmenu View", "Reload")); - reload->setShortcut(Qt::Key_F5); - reload->setIcon(KIcon("view-refresh")); - connect(reload, SIGNAL(triggered()), this, SLOT(reloadView())); + actionCollection()->setDefaultShortcut(reload, Qt::Key_F5); + reload->setIcon(QIcon::fromTheme("view-refresh")); + connect(reload, &QAction::triggered, this, &DolphinMainWindow::reloadView); - KAction* stop = actionCollection()->addAction("stop"); + QAction* stop = actionCollection()->addAction("stop"); stop->setText(i18nc("@action:inmenu View", "Stop")); stop->setToolTip(i18nc("@info", "Stop loading")); - stop->setIcon(KIcon("process-stop")); - connect(stop, SIGNAL(triggered()), this, SLOT(stopLoading())); + stop->setIcon(QIcon::fromTheme("process-stop")); + connect(stop, &QAction::triggered, this, &DolphinMainWindow::stopLoading); KToggleAction* editableLocation = actionCollection()->add<KToggleAction>("editable_location"); editableLocation->setText(i18nc("@action:inmenu Navigation Bar", "Editable Location")); - editableLocation->setShortcut(Qt::Key_F6); - connect(editableLocation, SIGNAL(triggered()), this, SLOT(toggleEditLocation())); + actionCollection()->setDefaultShortcut(editableLocation, Qt::Key_F6); + connect(editableLocation, &KToggleAction::triggered, this, &DolphinMainWindow::toggleEditLocation); - KAction* replaceLocation = actionCollection()->addAction("replace_location"); + QAction* replaceLocation = actionCollection()->addAction("replace_location"); replaceLocation->setText(i18nc("@action:inmenu Navigation Bar", "Replace Location")); - replaceLocation->setShortcut(Qt::CTRL | Qt::Key_L); - connect(replaceLocation, SIGNAL(triggered()), this, SLOT(replaceLocation())); + actionCollection()->setDefaultShortcut(replaceLocation, Qt::CTRL | Qt::Key_L); + connect(replaceLocation, &QAction::triggered, this, &DolphinMainWindow::replaceLocation); // setup 'Go' menu - KAction* backAction = KStandardAction::back(this, SLOT(goBack()), actionCollection()); - connect(backAction, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)), this, SLOT(goBack(Qt::MouseButtons))); - KShortcut backShortcut = backAction->shortcut(); - backShortcut.setAlternate(Qt::Key_Backspace); - backAction->setShortcut(backShortcut); + QAction* backAction = KStandardAction::back(this, SLOT(goBack()), actionCollection()); + auto backShortcuts = backAction->shortcuts(); + backShortcuts.append(QKeySequence(Qt::Key_Backspace)); + actionCollection()->setDefaultShortcuts(backAction, backShortcuts); DolphinRecentTabsMenu* recentTabsMenu = new DolphinRecentTabsMenu(this); actionCollection()->addAction("closed_tabs", recentTabsMenu); @@ -1080,85 +1086,80 @@ void DolphinMainWindow::setupActions() connect(recentTabsMenu, SIGNAL(closedTabsCountChanged(uint)), this, SLOT(closedTabsCountChanged(uint))); - KAction* undoCloseTab = actionCollection()->addAction("undo_close_tab"); + QAction* undoCloseTab = actionCollection()->addAction("undo_close_tab"); undoCloseTab->setText(i18nc("@action:inmenu File", "Undo close tab")); - undoCloseTab->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_T); - undoCloseTab->setIcon(KIcon("edit-undo")); + actionCollection()->setDefaultShortcut(undoCloseTab, Qt::CTRL | Qt::SHIFT | Qt::Key_T); + undoCloseTab->setIcon(QIcon::fromTheme("edit-undo")); undoCloseTab->setEnabled(false); connect(undoCloseTab, SIGNAL(triggered()), recentTabsMenu, SLOT(undoCloseTab())); - KAction* forwardAction = KStandardAction::forward(this, SLOT(goForward()), actionCollection()); - connect(forwardAction, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)), this, SLOT(goForward(Qt::MouseButtons))); - - KAction* upAction = KStandardAction::up(this, SLOT(goUp()), actionCollection()); - connect(upAction, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)), this, SLOT(goUp(Qt::MouseButtons))); - - KAction* homeAction = KStandardAction::home(this, SLOT(goHome()), actionCollection()); - connect(homeAction, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)), this, SLOT(goHome(Qt::MouseButtons))); + KStandardAction::forward(this, SLOT(goForward()), actionCollection()); + KStandardAction::up(this, SLOT(goUp()), actionCollection()); + KStandardAction::home(this, SLOT(goHome()), actionCollection()); // setup 'Tools' menu - KAction* showFilterBar = actionCollection()->addAction("show_filter_bar"); + QAction* showFilterBar = actionCollection()->addAction("show_filter_bar"); showFilterBar->setText(i18nc("@action:inmenu Tools", "Show Filter Bar")); - showFilterBar->setIcon(KIcon("view-filter")); - showFilterBar->setShortcut(Qt::CTRL | Qt::Key_I); - connect(showFilterBar, SIGNAL(triggered()), this, SLOT(showFilterBar())); + showFilterBar->setIcon(QIcon::fromTheme("view-filter")); + actionCollection()->setDefaultShortcut(showFilterBar, Qt::CTRL | Qt::Key_I); + connect(showFilterBar, &QAction::triggered, this, &DolphinMainWindow::showFilterBar); - KAction* compareFiles = actionCollection()->addAction("compare_files"); + QAction* compareFiles = actionCollection()->addAction("compare_files"); compareFiles->setText(i18nc("@action:inmenu Tools", "Compare Files")); - compareFiles->setIcon(KIcon("kompare")); + compareFiles->setIcon(QIcon::fromTheme("kompare")); compareFiles->setEnabled(false); - connect(compareFiles, SIGNAL(triggered()), this, SLOT(compareFiles())); + connect(compareFiles, &QAction::triggered, this, &DolphinMainWindow::compareFiles); - KAction* openTerminal = actionCollection()->addAction("open_terminal"); + QAction* openTerminal = actionCollection()->addAction("open_terminal"); openTerminal->setText(i18nc("@action:inmenu Tools", "Open Terminal")); - openTerminal->setIcon(KIcon("utilities-terminal")); - openTerminal->setShortcut(Qt::SHIFT | Qt::Key_F4); - connect(openTerminal, SIGNAL(triggered()), this, SLOT(openTerminal())); + openTerminal->setIcon(QIcon::fromTheme("utilities-terminal")); + actionCollection()->setDefaultShortcut(openTerminal, Qt::SHIFT | Qt::Key_F4); + connect(openTerminal, &QAction::triggered, this, &DolphinMainWindow::openTerminal); // setup 'Settings' menu KToggleAction* showMenuBar = KStandardAction::showMenubar(0, 0, actionCollection()); - connect(showMenuBar, SIGNAL(triggered(bool)), // Fixes #286822 - this, SLOT(toggleShowMenuBar()), Qt::QueuedConnection); + connect(showMenuBar, &KToggleAction::triggered, // Fixes #286822 + this, &DolphinMainWindow::toggleShowMenuBar, Qt::QueuedConnection); KStandardAction::preferences(this, SLOT(editSettings()), actionCollection()); // not in menu actions QList<QKeySequence> nextTabKeys; - nextTabKeys.append(KStandardShortcut::tabNext().primary()); + nextTabKeys.append(KStandardShortcut::tabNext().first()); //TODO: is this correct nextTabKeys.append(QKeySequence(Qt::CTRL | Qt::Key_Tab)); QList<QKeySequence> prevTabKeys; - prevTabKeys.append(KStandardShortcut::tabPrev().primary()); + prevTabKeys.append(KStandardShortcut::tabPrev().first()); //TODO: is this correct prevTabKeys.append(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_Tab)); - KAction* activateNextTab = actionCollection()->addAction("activate_next_tab"); + QAction* activateNextTab = actionCollection()->addAction("activate_next_tab"); activateNextTab->setIconText(i18nc("@action:inmenu", "Next Tab")); activateNextTab->setText(i18nc("@action:inmenu", "Activate Next Tab")); activateNextTab->setEnabled(false); - connect(activateNextTab, SIGNAL(triggered()), m_tabWidget, SLOT(activateNextTab())); - activateNextTab->setShortcuts(QApplication::isRightToLeft() ? prevTabKeys : nextTabKeys); + connect(activateNextTab, &QAction::triggered, m_tabWidget, &DolphinTabWidget::activateNextTab); + actionCollection()->setDefaultShortcuts(activateNextTab, QApplication::isRightToLeft() ? prevTabKeys : nextTabKeys); - KAction* activatePrevTab = actionCollection()->addAction("activate_prev_tab"); + QAction* activatePrevTab = actionCollection()->addAction("activate_prev_tab"); activatePrevTab->setIconText(i18nc("@action:inmenu", "Previous Tab")); activatePrevTab->setText(i18nc("@action:inmenu", "Activate Previous Tab")); activatePrevTab->setEnabled(false); - connect(activatePrevTab, SIGNAL(triggered()), m_tabWidget, SLOT(activatePrevTab())); - activatePrevTab->setShortcuts(QApplication::isRightToLeft() ? nextTabKeys : prevTabKeys); + connect(activatePrevTab, &QAction::triggered, m_tabWidget, &DolphinTabWidget::activatePrevTab); + actionCollection()->setDefaultShortcuts(activatePrevTab, QApplication::isRightToLeft() ? nextTabKeys : prevTabKeys); // for context menu - KAction* openInNewTab = actionCollection()->addAction("open_in_new_tab"); + QAction* openInNewTab = actionCollection()->addAction("open_in_new_tab"); openInNewTab->setText(i18nc("@action:inmenu", "Open in New Tab")); - openInNewTab->setIcon(KIcon("tab-new")); - connect(openInNewTab, SIGNAL(triggered()), this, SLOT(openInNewTab())); + openInNewTab->setIcon(QIcon::fromTheme("tab-new")); + connect(openInNewTab, &QAction::triggered, this, &DolphinMainWindow::openInNewTab); - KAction* openInNewTabs = actionCollection()->addAction("open_in_new_tabs"); + QAction* openInNewTabs = actionCollection()->addAction("open_in_new_tabs"); openInNewTabs->setText(i18nc("@action:inmenu", "Open in New Tabs")); - openInNewTabs->setIcon(KIcon("tab-new")); - connect(openInNewTabs, SIGNAL(triggered()), this, SLOT(openInNewTab())); + openInNewTabs->setIcon(QIcon::fromTheme("tab-new")); + connect(openInNewTabs, &QAction::triggered, this, &DolphinMainWindow::openInNewTab); - KAction* openInNewWindow = actionCollection()->addAction("open_in_new_window"); + QAction* openInNewWindow = actionCollection()->addAction("open_in_new_window"); openInNewWindow->setText(i18nc("@action:inmenu", "Open in New Window")); - openInNewWindow->setIcon(KIcon("window-new")); - connect(openInNewWindow, SIGNAL(triggered()), this, SLOT(openInNewWindow())); + openInNewWindow->setIcon(QIcon::fromTheme("window-new")); + connect(openInNewWindow, &QAction::triggered, this, &DolphinMainWindow::openInNewWindow); } void DolphinMainWindow::setupDockWidgets() @@ -1167,32 +1168,32 @@ void DolphinMainWindow::setupDockWidgets() KDualAction* lockLayoutAction = actionCollection()->add<KDualAction>("lock_panels"); lockLayoutAction->setActiveText(i18nc("@action:inmenu Panels", "Unlock Panels")); - lockLayoutAction->setActiveIcon(KIcon("object-unlocked")); + lockLayoutAction->setActiveIcon(QIcon::fromTheme("object-unlocked")); lockLayoutAction->setInactiveText(i18nc("@action:inmenu Panels", "Lock Panels")); - lockLayoutAction->setInactiveIcon(KIcon("object-locked")); + lockLayoutAction->setInactiveIcon(QIcon::fromTheme("object-locked")); lockLayoutAction->setActive(lock); - connect(lockLayoutAction, SIGNAL(triggered()), this, SLOT(togglePanelLockState())); + connect(lockLayoutAction, &KDualAction::triggered, this, &DolphinMainWindow::togglePanelLockState); // Setup "Information" DolphinDockWidget* infoDock = new DolphinDockWidget(i18nc("@title:window", "Information")); infoDock->setLocked(lock); infoDock->setObjectName("infoDock"); infoDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - Panel* infoPanel = new InformationPanel(infoDock); + InformationPanel* infoPanel = new InformationPanel(infoDock); infoPanel->setCustomContextMenuActions(QList<QAction*>() << lockLayoutAction); - connect(infoPanel, SIGNAL(urlActivated(KUrl)), this, SLOT(handleUrl(KUrl))); + connect(infoPanel, &InformationPanel::urlActivated, this, &DolphinMainWindow::handleUrl); infoDock->setWidget(infoPanel); QAction* infoAction = infoDock->toggleViewAction(); - createPanelAction(KIcon("dialog-information"), Qt::Key_F11, infoAction, "show_information_panel"); + createPanelAction(QIcon::fromTheme("dialog-information"), Qt::Key_F11, infoAction, "show_information_panel"); addDockWidget(Qt::RightDockWidgetArea, infoDock); - connect(this, SIGNAL(urlChanged(KUrl)), - infoPanel, SLOT(setUrl(KUrl))); - connect(this, SIGNAL(selectionChanged(KFileItemList)), - infoPanel, SLOT(setSelection(KFileItemList))); - connect(this, SIGNAL(requestItemInfo(KFileItem)), - infoPanel, SLOT(requestDelayedItemInfo(KFileItem))); + connect(this, &DolphinMainWindow::urlChanged, + infoPanel, &InformationPanel::setUrl); + connect(this, &DolphinMainWindow::selectionChanged, + infoPanel, &InformationPanel::setSelection); + connect(this, &DolphinMainWindow::requestItemInfo, + infoPanel, &InformationPanel::requestDelayedItemInfo); // Setup "Folders" DolphinDockWidget* foldersDock = new DolphinDockWidget(i18nc("@title:window", "Folders")); @@ -1204,17 +1205,17 @@ void DolphinMainWindow::setupDockWidgets() foldersDock->setWidget(foldersPanel); QAction* foldersAction = foldersDock->toggleViewAction(); - createPanelAction(KIcon("folder"), Qt::Key_F7, foldersAction, "show_folders_panel"); + createPanelAction(QIcon::fromTheme("folder"), Qt::Key_F7, foldersAction, "show_folders_panel"); addDockWidget(Qt::LeftDockWidgetArea, foldersDock); - connect(this, SIGNAL(urlChanged(KUrl)), - foldersPanel, SLOT(setUrl(KUrl))); - connect(foldersPanel, SIGNAL(folderActivated(KUrl)), - this, SLOT(changeUrl(KUrl))); - connect(foldersPanel, SIGNAL(folderMiddleClicked(KUrl)), - this, SLOT(openNewTab(KUrl))); - connect(foldersPanel, SIGNAL(errorMessage(QString)), - this, SLOT(slotPanelErrorMessage(QString))); + connect(this, &DolphinMainWindow::urlChanged, + foldersPanel, &FoldersPanel::setUrl); + connect(foldersPanel, &FoldersPanel::folderActivated, + this, &DolphinMainWindow::changeUrl); + connect(foldersPanel, &FoldersPanel::folderMiddleClicked, + this, &DolphinMainWindow::openNewTab); + connect(foldersPanel, &FoldersPanel::errorMessage, + this, &DolphinMainWindow::slotPanelErrorMessage); // Setup "Terminal" #ifndef Q_OS_WIN @@ -1222,21 +1223,21 @@ void DolphinMainWindow::setupDockWidgets() terminalDock->setLocked(lock); terminalDock->setObjectName("terminalDock"); terminalDock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea); - Panel* terminalPanel = new TerminalPanel(terminalDock); + TerminalPanel* terminalPanel = new TerminalPanel(terminalDock); terminalPanel->setCustomContextMenuActions(QList<QAction*>() << lockLayoutAction); terminalDock->setWidget(terminalPanel); - connect(terminalPanel, SIGNAL(hideTerminalPanel()), terminalDock, SLOT(hide())); - connect(terminalPanel, SIGNAL(changeUrl(KUrl)), this, SLOT(slotTerminalDirectoryChanged(KUrl))); - connect(terminalDock, SIGNAL(visibilityChanged(bool)), - terminalPanel, SLOT(dockVisibilityChanged())); + connect(terminalPanel, &TerminalPanel::hideTerminalPanel, terminalDock, &DolphinDockWidget::hide); + connect(terminalPanel, &TerminalPanel::changeUrl, this, &DolphinMainWindow::slotTerminalDirectoryChanged); + connect(terminalDock, &DolphinDockWidget::visibilityChanged, + terminalPanel, &TerminalPanel::dockVisibilityChanged); QAction* terminalAction = terminalDock->toggleViewAction(); - createPanelAction(KIcon("utilities-terminal"), Qt::Key_F4, terminalAction, "show_terminal_panel"); + createPanelAction(QIcon::fromTheme("utilities-terminal"), Qt::Key_F4, terminalAction, "show_terminal_panel"); addDockWidget(Qt::BottomDockWidgetArea, terminalDock); - connect(this, SIGNAL(urlChanged(KUrl)), - terminalPanel, SLOT(setUrl(KUrl))); + connect(this, &DolphinMainWindow::urlChanged, + terminalPanel, &TerminalPanel::setUrl); #endif if (GeneralSettings::version() < 200) { @@ -1258,21 +1259,21 @@ void DolphinMainWindow::setupDockWidgets() placesDock->setWidget(placesPanel); QAction* placesAction = placesDock->toggleViewAction(); - createPanelAction(KIcon("bookmarks"), Qt::Key_F9, placesAction, "show_places_panel"); + createPanelAction(QIcon::fromTheme("bookmarks"), Qt::Key_F9, placesAction, "show_places_panel"); addDockWidget(Qt::LeftDockWidgetArea, placesDock); - connect(placesPanel, SIGNAL(placeActivated(KUrl)), - this, SLOT(slotPlaceActivated(KUrl))); + connect(placesPanel, &PlacesPanel::placeActivated, + this, &DolphinMainWindow::slotPlaceActivated); connect(placesPanel, SIGNAL(placeMiddleClicked(KUrl)), this, SLOT(openNewTab(KUrl))); - connect(placesPanel, SIGNAL(errorMessage(QString)), - this, SLOT(slotPanelErrorMessage(QString))); - connect(this, SIGNAL(urlChanged(KUrl)), - placesPanel, SLOT(setUrl(KUrl))); - connect(placesDock, SIGNAL(visibilityChanged(bool)), - m_tabWidget, SLOT(slotPlacesPanelVisibilityChanged(bool))); - connect(this, SIGNAL(settingsChanged()), - placesPanel, SLOT(readSettings())); + connect(placesPanel, &PlacesPanel::errorMessage, + this, &DolphinMainWindow::slotPanelErrorMessage); + connect(this, &DolphinMainWindow::urlChanged, + placesPanel, &PlacesPanel::setUrl); + connect(placesDock, &DolphinDockWidget::visibilityChanged, + m_tabWidget, &DolphinTabWidget::slotPlacesPanelVisibilityChanged); + connect(this, &DolphinMainWindow::settingsChanged, + placesPanel, &PlacesPanel::readSettings); m_tabWidget->slotPlacesPanelVisibilityChanged(placesPanel->isVisible()); @@ -1346,29 +1347,29 @@ void DolphinMainWindow::createControlButton() Q_ASSERT(!m_controlButton); m_controlButton = new QToolButton(this); - m_controlButton->setIcon(KIcon("applications-system")); + m_controlButton->setIcon(QIcon::fromTheme("applications-system")); m_controlButton->setText(i18nc("@action", "Control")); m_controlButton->setPopupMode(QToolButton::InstantPopup); m_controlButton->setToolButtonStyle(toolBar()->toolButtonStyle()); - KMenu* controlMenu = new KMenu(m_controlButton); - connect(controlMenu, SIGNAL(aboutToShow()), this, SLOT(updateControlMenu())); + QMenu* controlMenu = new QMenu(m_controlButton); + connect(controlMenu, &QMenu::aboutToShow, this, &DolphinMainWindow::updateControlMenu); m_controlButton->setMenu(controlMenu); toolBar()->addWidget(m_controlButton); - connect(toolBar(), SIGNAL(iconSizeChanged(QSize)), - m_controlButton, SLOT(setIconSize(QSize))); - connect(toolBar(), SIGNAL(toolButtonStyleChanged(Qt::ToolButtonStyle)), - m_controlButton, SLOT(setToolButtonStyle(Qt::ToolButtonStyle))); + connect(toolBar(), &KToolBar::iconSizeChanged, + m_controlButton, &QToolButton::setIconSize); + connect(toolBar(), &KToolBar::toolButtonStyleChanged, + m_controlButton, &QToolButton::setToolButtonStyle); // The added widgets are owned by the toolbar and may get deleted when e.g. the toolbar // gets edited. In this case we must add them again. The adding is done asynchronously by // m_updateToolBarTimer. - connect(m_controlButton, SIGNAL(destroyed()), this, SLOT(slotControlButtonDeleted())); + connect(m_controlButton, &QToolButton::destroyed, this, &DolphinMainWindow::slotControlButtonDeleted); m_updateToolBarTimer = new QTimer(this); m_updateToolBarTimer->setInterval(500); - connect(m_updateToolBarTimer, SIGNAL(timeout()), this, SLOT(updateToolBar())); + connect(m_updateToolBarTimer, &QTimer::timeout, this, &DolphinMainWindow::updateToolBar); } void DolphinMainWindow::deleteControlButton() @@ -1380,7 +1381,7 @@ void DolphinMainWindow::deleteControlButton() m_updateToolBarTimer = 0; } -bool DolphinMainWindow::addActionToMenu(QAction* action, KMenu* menu) +bool DolphinMainWindow::addActionToMenu(QAction* action, QMenu* menu) { Q_ASSERT(action); Q_ASSERT(menu); @@ -1418,38 +1419,38 @@ void DolphinMainWindow::clearStatusBar() void DolphinMainWindow::connectViewSignals(DolphinViewContainer* container) { - connect(container, SIGNAL(showFilterBarChanged(bool)), - this, SLOT(updateFilterBarAction(bool))); - connect(container, SIGNAL(writeStateChanged(bool)), - this, SLOT(slotWriteStateChanged(bool))); + connect(container, &DolphinViewContainer::showFilterBarChanged, + this, &DolphinMainWindow::updateFilterBarAction); + connect(container, &DolphinViewContainer::writeStateChanged, + this, &DolphinMainWindow::slotWriteStateChanged); const DolphinView* view = container->view(); - connect(view, SIGNAL(selectionChanged(KFileItemList)), - this, SLOT(slotSelectionChanged(KFileItemList))); - connect(view, SIGNAL(requestItemInfo(KFileItem)), - this, SLOT(slotRequestItemInfo(KFileItem))); - connect(view, SIGNAL(tabRequested(KUrl)), - this, SLOT(openNewTab(KUrl))); - connect(view, SIGNAL(requestContextMenu(QPoint,KFileItem,KUrl,QList<QAction*>)), - this, SLOT(openContextMenu(QPoint,KFileItem,KUrl,QList<QAction*>))); - connect(view, SIGNAL(directoryLoadingStarted()), - this, SLOT(enableStopAction())); - connect(view, SIGNAL(directoryLoadingCompleted()), - this, SLOT(disableStopAction())); - connect(view, SIGNAL(goBackRequested()), - this, SLOT(goBack())); - connect(view, SIGNAL(goForwardRequested()), - this, SLOT(goForward())); + connect(view, &DolphinView::selectionChanged, + this, &DolphinMainWindow::slotSelectionChanged); + connect(view, &DolphinView::requestItemInfo, + this, &DolphinMainWindow::slotRequestItemInfo); + connect(view, &DolphinView::tabRequested, + this, &DolphinMainWindow::openNewTab); + connect(view, &DolphinView::requestContextMenu, + this, &DolphinMainWindow::openContextMenu); + connect(view, &DolphinView::directoryLoadingStarted, + this, &DolphinMainWindow::enableStopAction); + connect(view, &DolphinView::directoryLoadingCompleted, + this, &DolphinMainWindow::disableStopAction); + connect(view, &DolphinView::goBackRequested, + this, static_cast<void(DolphinMainWindow::*)()>(&DolphinMainWindow::goBack)); + connect(view, &DolphinView::goForwardRequested, + this, static_cast<void(DolphinMainWindow::*)()>(&DolphinMainWindow::goForward)); const KUrlNavigator* navigator = container->urlNavigator(); - connect(navigator, SIGNAL(urlChanged(KUrl)), - this, SLOT(changeUrl(KUrl))); - connect(navigator, SIGNAL(historyChanged()), - this, SLOT(updateHistory())); - connect(navigator, SIGNAL(editableStateChanged(bool)), - this, SLOT(slotEditableStateChanged(bool))); - connect(navigator, SIGNAL(tabRequested(KUrl)), - this, SLOT(openNewTab(KUrl))); + connect(navigator, &KUrlNavigator::urlChanged, + this, &DolphinMainWindow::changeUrl); + connect(navigator, &KUrlNavigator::historyChanged, + this, &DolphinMainWindow::updateHistory); + connect(navigator, &KUrlNavigator::editableStateChanged, + this, &DolphinMainWindow::slotEditableStateChanged); + connect(navigator, &KUrlNavigator::tabRequested, + this, &DolphinMainWindow::openNewTab); } void DolphinMainWindow::updateSplitAction() @@ -1460,16 +1461,16 @@ void DolphinMainWindow::updateSplitAction() if (tabPage->primaryViewActive()) { splitAction->setText(i18nc("@action:intoolbar Close left view", "Close")); splitAction->setToolTip(i18nc("@info", "Close left view")); - splitAction->setIcon(KIcon("view-left-close")); + splitAction->setIcon(QIcon::fromTheme("view-left-close")); } else { splitAction->setText(i18nc("@action:intoolbar Close right view", "Close")); splitAction->setToolTip(i18nc("@info", "Close right view")); - splitAction->setIcon(KIcon("view-right-close")); + splitAction->setIcon(QIcon::fromTheme("view-right-close")); } } else { splitAction->setText(i18nc("@action:intoolbar Split view", "Split")); splitAction->setToolTip(i18nc("@info", "Split view")); - splitAction->setIcon(KIcon("view-right-new")); + splitAction->setIcon(QIcon::fromTheme("view-right-new")); } } @@ -1480,26 +1481,26 @@ bool DolphinMainWindow::isKompareInstalled() const if (!initialized) { // TODO: maybe replace this approach later by using a menu // plugin like kdiff3plugin.cpp - installed = !KGlobal::dirs()->findExe("kompare").isEmpty(); + installed = !QStandardPaths::findExecutable(QStringLiteral("kompare")).isEmpty(); initialized = true; } return installed; } -void DolphinMainWindow::createPanelAction(const KIcon& icon, +void DolphinMainWindow::createPanelAction(const QIcon& icon, const QKeySequence& shortcut, QAction* dockAction, const QString& actionName) { - KAction* panelAction = actionCollection()->addAction(actionName); + QAction* panelAction = actionCollection()->addAction(actionName); panelAction->setCheckable(true); panelAction->setChecked(dockAction->isChecked()); panelAction->setText(dockAction->text()); panelAction->setIcon(icon); - panelAction->setShortcut(shortcut); + actionCollection()->setDefaultShortcut(panelAction, shortcut); - connect(panelAction, SIGNAL(triggered()), dockAction, SLOT(trigger())); - connect(dockAction, SIGNAL(toggled(bool)), panelAction, SLOT(setChecked(bool))); + connect(panelAction, &QAction::triggered, dockAction, &QAction::trigger); + connect(dockAction, &QAction::toggled, panelAction, &QAction::setChecked); } DolphinMainWindow::UndoUiInterface::UndoUiInterface() : @@ -1522,4 +1523,3 @@ void DolphinMainWindow::UndoUiInterface::jobError(KIO::Job* job) } } -#include "dolphinmainwindow.moc" diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h index 9d4c003af..3ea4e0e17 100644 --- a/src/dolphinmainwindow.h +++ b/src/dolphinmainwindow.h @@ -28,7 +28,8 @@ #include <kio/fileundomanager.h> #include <ksortablelist.h> #include <kxmlguiwindow.h> -#include <KIcon> +#include <QIcon> +#include <KUrl> #include <QList> #include <QWeakPointer> @@ -41,13 +42,12 @@ class DolphinSettingsDialog; class DolphinViewContainer; class DolphinRemoteEncoding; class DolphinTabWidget; -class KAction; class KFileItem; class KFileItemList; class KJob; class KNewFileMenu; -class KUrl; class QToolButton; +class QIcon; /** * @short Main window for Dolphin. @@ -335,16 +335,14 @@ private slots: void openNewActivatedTab(); /** - * Opens a new tab in the background showing the URL \a primaryUrl and the - * optional URL \a secondaryUrl. + * Opens a new tab in the background showing the URL \a url. */ - void openNewTab(const KUrl& primaryUrl, const KUrl& secondaryUrl = KUrl()); + void openNewTab(const KUrl& url); /** - * Opens a new tab showing the URL \a primaryUrl and the optional URL - * \a secondaryUrl and activates the tab. + * Opens a new tab showing the URL \a url and activates the tab. */ - void openNewActivatedTab(const KUrl& primaryUrl, const KUrl& secondaryUrl = KUrl()); + void openNewActivatedTab(const KUrl& url); /** * Opens the selected folder in a new tab. @@ -450,7 +448,7 @@ private: * case if it has not added already to the toolbar. * @return True if the action has been added to the menu. */ - bool addActionToMenu(QAction* action, KMenu* menu); + bool addActionToMenu(QAction* action, QMenu* menu); /** * Connects the signals from the created DolphinView with @@ -476,7 +474,7 @@ private: * as the action for toggling the dock visibility is done by Qt which * is no KAction instance. */ - void createPanelAction(const KIcon& icon, + void createPanelAction(const QIcon &icon, const QKeySequence& shortcut, QAction* dockAction, const QString& actionName); diff --git a/src/dolphinnewfilemenu.cpp b/src/dolphinnewfilemenu.cpp index da57ca946..87f0932d8 100644 --- a/src/dolphinnewfilemenu.cpp +++ b/src/dolphinnewfilemenu.cpp @@ -45,4 +45,3 @@ void DolphinNewFileMenu::slotResult(KJob* job) } } -#include "dolphinnewfilemenu.moc" diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp index 908173193..e3479d3b8 100644 --- a/src/dolphinpart.cpp +++ b/src/dolphinpart.cpp @@ -34,17 +34,16 @@ #include <KPluginFactory> #include <KRun> #include <KToggleAction> +#include <KGlobal> #include <KIO/NetAccess> #include <KToolInvocation> #include <kauthorized.h> -#include <KMenu> +#include <QMenu> #include <KInputDialog> #include <KProtocolInfo> #include <kdeversion.h> -#if KDE_IS_VERSION(4, 9, 2) #include "dolphinpart_ext.h" -#endif #include "dolphinnewfilemenu.h" #include "views/dolphinview.h" @@ -69,7 +68,8 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL ,m_removeAction(0) { Q_UNUSED(args) - setComponentData(DolphinPartFactory::componentData(), false); +#pragma message("TODO: port to KF5") + //setComponentData(DolphinPartFactory::componentData(), false); m_extension = new DolphinPartBrowserExtension(this); // make sure that other apps using this part find Dolphin's view-file-columns icons @@ -79,73 +79,71 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL m_view->setTabsForFilesEnabled(true); setWidget(m_view); - connect(&DolphinNewFileMenuObserver::instance(), SIGNAL(errorMessage(QString)), - this, SLOT(slotErrorMessage(QString))); + connect(&DolphinNewFileMenuObserver::instance(), &DolphinNewFileMenuObserver::errorMessage, + this, &DolphinPart::slotErrorMessage); - connect(m_view, SIGNAL(directoryLoadingCompleted()), this, SIGNAL(completed())); - connect(m_view, SIGNAL(directoryLoadingProgress(int)), this, SLOT(updateProgress(int))); - connect(m_view, SIGNAL(errorMessage(QString)), this, SLOT(slotErrorMessage(QString))); + connect(m_view, &DolphinView::directoryLoadingCompleted, this, static_cast<void(DolphinPart::*)()>(&DolphinPart::completed)); + connect(m_view, &DolphinView::directoryLoadingProgress, this, &DolphinPart::updateProgress); + connect(m_view, &DolphinView::errorMessage, this, &DolphinPart::slotErrorMessage); setXMLFile("dolphinpart.rc"); - connect(m_view, SIGNAL(infoMessage(QString)), - this, SLOT(slotMessage(QString))); - connect(m_view, SIGNAL(operationCompletedMessage(QString)), - this, SLOT(slotMessage(QString))); - connect(m_view, SIGNAL(errorMessage(QString)), - this, SLOT(slotErrorMessage(QString))); - connect(m_view, SIGNAL(itemActivated(KFileItem)), - this, SLOT(slotItemActivated(KFileItem))); - connect(m_view, SIGNAL(itemsActivated(KFileItemList)), - this, SLOT(slotItemsActivated(KFileItemList))); - connect(m_view, SIGNAL(tabRequested(KUrl)), - this, SLOT(createNewWindow(KUrl))); - connect(m_view, SIGNAL(requestContextMenu(QPoint,KFileItem,KUrl,QList<QAction*>)), - this, SLOT(slotOpenContextMenu(QPoint,KFileItem,KUrl,QList<QAction*>))); - connect(m_view, SIGNAL(selectionChanged(KFileItemList)), - m_extension, SIGNAL(selectionInfo(KFileItemList))); - connect(m_view, SIGNAL(selectionChanged(KFileItemList)), - this, SLOT(slotSelectionChanged(KFileItemList))); - connect(m_view, SIGNAL(requestItemInfo(KFileItem)), - this, SLOT(slotRequestItemInfo(KFileItem))); - connect(m_view, SIGNAL(modeChanged(DolphinView::Mode,DolphinView::Mode)), - this, SIGNAL(viewModeChanged())); // relay signal - connect(m_view, SIGNAL(redirection(KUrl,KUrl)), - this, SLOT(slotDirectoryRedirection(KUrl,KUrl))); + connect(m_view, &DolphinView::infoMessage, + this, &DolphinPart::slotMessage); + connect(m_view, &DolphinView::operationCompletedMessage, + this, &DolphinPart::slotMessage); + connect(m_view, &DolphinView::errorMessage, + this, &DolphinPart::slotErrorMessage); + connect(m_view, &DolphinView::itemActivated, + this, &DolphinPart::slotItemActivated); + connect(m_view, &DolphinView::itemsActivated, + this, &DolphinPart::slotItemsActivated); + connect(m_view, &DolphinView::tabRequested, + this, &DolphinPart::createNewWindow); + connect(m_view, &DolphinView::requestContextMenu, + this, &DolphinPart::slotOpenContextMenu); + connect(m_view, &DolphinView::selectionChanged, + m_extension, static_cast<void(DolphinPartBrowserExtension::*)(const KFileItemList&)>(&DolphinPartBrowserExtension::selectionInfo)); + connect(m_view, &DolphinView::selectionChanged, + this, &DolphinPart::slotSelectionChanged); + connect(m_view, &DolphinView::requestItemInfo, + this, &DolphinPart::slotRequestItemInfo); + connect(m_view, &DolphinView::modeChanged, + this, &DolphinPart::viewModeChanged); // relay signal + connect(m_view, &DolphinView::redirection, + this, &DolphinPart::slotDirectoryRedirection); // Watch for changes that should result in updates to the // status bar text. - connect(m_view, SIGNAL(itemCountChanged()), this, SLOT(updateStatusBar())); - connect(m_view, SIGNAL(selectionChanged(KFileItemList)), this, SLOT(updateStatusBar())); + connect(m_view, &DolphinView::itemCountChanged, this, &DolphinPart::updateStatusBar); + connect(m_view, &DolphinView::selectionChanged, this, &DolphinPart::updateStatusBar); m_actionHandler = new DolphinViewActionHandler(actionCollection(), this); m_actionHandler->setCurrentView(m_view); - connect(m_actionHandler, SIGNAL(createDirectory()), SLOT(createDirectory())); + connect(m_actionHandler, &DolphinViewActionHandler::createDirectory, this, &DolphinPart::createDirectory); m_remoteEncoding = new DolphinRemoteEncoding(this, m_actionHandler); - connect(this, SIGNAL(aboutToOpenURL()), - m_remoteEncoding, SLOT(slotAboutToOpenUrl())); + connect(this, &DolphinPart::aboutToOpenURL, + m_remoteEncoding, &DolphinRemoteEncoding::slotAboutToOpenUrl); QClipboard* clipboard = QApplication::clipboard(); - connect(clipboard, SIGNAL(dataChanged()), - this, SLOT(updatePasteAction())); + connect(clipboard, &QClipboard::dataChanged, + this, &DolphinPart::updatePasteAction); // Create file info and listing filter extensions. // NOTE: Listing filter needs to be instantiated after the creation of the view. new DolphinPartFileInfoExtension(this); -#if KDE_IS_VERSION(4, 9, 2) new DolphinPartListingFilterExtension(this); KDirLister* lister = m_view->m_model->m_dirLister; if (lister) { DolphinPartListingNotificationExtension* notifyExt = new DolphinPartListingNotificationExtension(this); - connect(lister, SIGNAL(newItems(KFileItemList)), notifyExt, SLOT(slotNewItems(KFileItemList))); - connect(lister, SIGNAL(itemsDeleted(KFileItemList)), notifyExt, SLOT(slotItemsDeleted(KFileItemList))); + connect(lister, &KDirLister::newItems, notifyExt, &DolphinPartListingNotificationExtension::slotNewItems); + connect(lister, &KDirLister::itemsDeleted, notifyExt, &DolphinPartListingNotificationExtension::slotItemsDeleted); } else { kWarning() << "NULL KDirLister object! KParts::ListingNotificationExtension will NOT be supported"; } -#endif createActions(); m_actionHandler->updateViewActions(); @@ -171,40 +169,40 @@ void DolphinPart::createActions() m_newFileMenu = new DolphinNewFileMenu(actionCollection(), this); m_newFileMenu->setParentWidget(widget()); - connect(m_newFileMenu->menu(), SIGNAL(aboutToShow()), - this, SLOT(updateNewMenu())); + connect(m_newFileMenu->menu(), &QMenu::aboutToShow, + this, &DolphinPart::updateNewMenu); - KAction *editMimeTypeAction = actionCollection()->addAction( "editMimeType" ); + QAction *editMimeTypeAction = actionCollection()->addAction( "editMimeType" ); editMimeTypeAction->setText( i18nc("@action:inmenu Edit", "&Edit File Type..." ) ); - connect(editMimeTypeAction, SIGNAL(triggered()), SLOT(slotEditMimeType())); + connect(editMimeTypeAction, &QAction::triggered, this, &DolphinPart::slotEditMimeType); - KAction* selectItemsMatching = actionCollection()->addAction("select_items_matching"); + QAction* selectItemsMatching = actionCollection()->addAction("select_items_matching"); selectItemsMatching->setText(i18nc("@action:inmenu Edit", "Select Items Matching...")); - selectItemsMatching->setShortcut(Qt::CTRL | Qt::Key_S); - connect(selectItemsMatching, SIGNAL(triggered()), this, SLOT(slotSelectItemsMatchingPattern())); + actionCollection()->setDefaultShortcut(selectItemsMatching, Qt::CTRL | Qt::Key_S); + connect(selectItemsMatching, &QAction::triggered, this, &DolphinPart::slotSelectItemsMatchingPattern); - KAction* unselectItemsMatching = actionCollection()->addAction("unselect_items_matching"); + QAction* unselectItemsMatching = actionCollection()->addAction("unselect_items_matching"); unselectItemsMatching->setText(i18nc("@action:inmenu Edit", "Unselect Items Matching...")); - connect(unselectItemsMatching, SIGNAL(triggered()), this, SLOT(slotUnselectItemsMatchingPattern())); + connect(unselectItemsMatching, &QAction::triggered, this, &DolphinPart::slotUnselectItemsMatchingPattern); actionCollection()->addAction(KStandardAction::SelectAll, "select_all", m_view, SLOT(selectAll())); - KAction* unselectAll = actionCollection()->addAction("unselect_all"); + QAction* unselectAll = actionCollection()->addAction("unselect_all"); unselectAll->setText(i18nc("@action:inmenu Edit", "Unselect All")); - connect(unselectAll, SIGNAL(triggered()), m_view, SLOT(clearSelection())); + connect(unselectAll, &QAction::triggered, m_view, &DolphinView::clearSelection); - KAction* invertSelection = actionCollection()->addAction("invert_selection"); + QAction* invertSelection = actionCollection()->addAction("invert_selection"); invertSelection->setText(i18nc("@action:inmenu Edit", "Invert Selection")); - invertSelection->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_A); - connect(invertSelection, SIGNAL(triggered()), m_view, SLOT(invertSelection())); + actionCollection()->setDefaultShortcut(invertSelection, Qt::CTRL | Qt::SHIFT | Qt::Key_A); + connect(invertSelection, &QAction::triggered, m_view, &DolphinView::invertSelection); // View menu: all done by DolphinViewActionHandler // Go menu QActionGroup* goActionGroup = new QActionGroup(this); - connect(goActionGroup, SIGNAL(triggered(QAction*)), - this, SLOT(slotGoTriggered(QAction*))); + connect(goActionGroup, &QActionGroup::triggered, + this, &DolphinPart::slotGoTriggered); createGoAction("go_applications", "start-here-kde", i18nc("@action:inmenu Go", "App&lications"), QString("programs:/"), @@ -219,22 +217,22 @@ void DolphinPart::createActions() i18nc("@action:inmenu Go", "Trash"), QString("trash:/"), goActionGroup); createGoAction("go_autostart", "", - i18nc("@action:inmenu Go", "Autostart"), KGlobalSettings::autostartPath(), + i18nc("@action:inmenu Go", "Autostart"), QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + "/autostart", goActionGroup); // Tools menu m_findFileAction = actionCollection()->addAction("find_file"); m_findFileAction->setText(i18nc("@action:inmenu Tools", "Find File...")); - m_findFileAction->setShortcut(Qt::CTRL | Qt::Key_F); - m_findFileAction->setIcon(KIcon("edit-find")); - connect(m_findFileAction, SIGNAL(triggered()), this, SLOT(slotFindFile())); + actionCollection()->setDefaultShortcut(m_findFileAction, Qt::CTRL | Qt::Key_F); + m_findFileAction->setIcon(QIcon::fromTheme("edit-find")); + connect(m_findFileAction, &QAction::triggered, this, &DolphinPart::slotFindFile); if (KAuthorized::authorizeKAction("shell_access")) { m_openTerminalAction = actionCollection()->addAction("open_terminal"); - m_openTerminalAction->setIcon(KIcon("utilities-terminal")); + m_openTerminalAction->setIcon(QIcon::fromTheme("utilities-terminal")); m_openTerminalAction->setText(i18nc("@action:inmenu Tools", "Open &Terminal")); - connect(m_openTerminalAction, SIGNAL(triggered()), SLOT(slotOpenTerminal())); - m_openTerminalAction->setShortcut(Qt::Key_F4); + connect(m_openTerminalAction, &QAction::triggered, this, &DolphinPart::slotOpenTerminal); + actionCollection()->setDefaultShortcut(m_openTerminalAction, Qt::Key_F4); } } @@ -242,8 +240,8 @@ void DolphinPart::createGoAction(const char* name, const char* iconName, const QString& text, const QString& url, QActionGroup* actionGroup) { - KAction* action = actionCollection()->addAction(name); - action->setIcon(KIcon(iconName)); + QAction* action = actionCollection()->addAction(name); + action->setIcon(QIcon::fromTheme(iconName)); action->setText(text); action->setData(url); action->setActionGroup(actionGroup); @@ -301,10 +299,10 @@ void DolphinPart::updatePasteAction() KAboutData* DolphinPart::createAboutData() { - return new KAboutData("dolphinpart", "dolphin", ki18nc("@title", "Dolphin Part"), "0.1"); + return new KAboutData("dolphinpart", i18nc("@title", "Dolphin Part"), "0.1"); } -bool DolphinPart::openUrl(const KUrl& url) +bool DolphinPart::openUrl(const QUrl &url) { bool reload = arguments().reload(); // A bit of a workaround so that changing the namefilter works: force reload. @@ -432,7 +430,7 @@ void DolphinPart::slotOpenContextMenu(const QPoint& pos, const bool supportsMoving = capabilities.supportsMoving(); if (capabilities.supportsDeleting()) { - const bool showDeleteAction = (KGlobal::config()->group("KDE").readEntry("ShowDeleteCommand", false) || + const bool showDeleteAction = (KSharedConfig::openConfig()->group("KDE").readEntry("ShowDeleteCommand", false) || !item.isLocalFile()); const bool showMoveToTrashAction = capabilities.isLocal() && supportsMoving; @@ -559,7 +557,7 @@ void DolphinPart::slotOpenTerminal() void DolphinPart::slotFindFile() { - KRun::run("kfind", url(), widget()); + KRun::run("kfind", QList<QUrl>() << url(), widget()); } void DolphinPart::updateNewMenu() diff --git a/src/dolphinpart.h b/src/dolphinpart.h index 7146b46af..70886d10d 100644 --- a/src/dolphinpart.h +++ b/src/dolphinpart.h @@ -20,20 +20,18 @@ #ifndef DOLPHINPART_H #define DOLPHINPART_H -#include <kparts/part.h> +#include <KParts/ReadOnlyPart> +#include <KUrl> #include <QItemSelectionModel> class DolphinNewFileMenu; class DolphinViewActionHandler; class QActionGroup; -class KAction; class KFileItemList; class KFileItem; class DolphinPartBrowserExtension; -class DolphinSortFilterProxyModel; class DolphinRemoteEncoding; -class DolphinModel; class KDirLister; class DolphinView; class KAboutData; @@ -65,7 +63,7 @@ public: * Standard KParts::ReadOnlyPart openUrl method. * Called by Konqueror to view a directory in DolphinPart. */ - virtual bool openUrl(const KUrl& url); + virtual bool openUrl(const QUrl& url) Q_DECL_OVERRIDE; /// see the supportsUndo property bool supportsUndo() const { return true; } @@ -243,8 +241,8 @@ private: DolphinRemoteEncoding* m_remoteEncoding; DolphinPartBrowserExtension* m_extension; DolphinNewFileMenu* m_newFileMenu; - KAction* m_findFileAction; - KAction* m_openTerminalAction; + QAction* m_findFileAction; + QAction* m_openTerminalAction; QString m_nameFilter; DolphinRemoveAction* m_removeAction; Q_DISABLE_COPY(DolphinPart) diff --git a/src/dolphinpart_ext.cpp b/src/dolphinpart_ext.cpp index fb7a4d2ea..8e2985878 100644 --- a/src/dolphinpart_ext.cpp +++ b/src/dolphinpart_ext.cpp @@ -190,4 +190,3 @@ void DolphinPartListingNotificationExtension::slotItemsDeleted(const KFileItemLi emit listingEvent(KParts::ListingNotificationExtension::ItemsDeleted, items); } -#include "dolphinpart_ext.moc" diff --git a/src/dolphinpart_ext.h b/src/dolphinpart_ext.h index c05962cd9..5272df69d 100644 --- a/src/dolphinpart_ext.h +++ b/src/dolphinpart_ext.h @@ -23,6 +23,7 @@ #include <kparts/browserextension.h> #include <kparts/fileinfoextension.h> #include <kparts/listingextension.h> +#include <KUrl> class DolphinPart; diff --git a/src/dolphinrecenttabsmenu.cpp b/src/dolphinrecenttabsmenu.cpp index fa3eaf166..f4492a214 100644 --- a/src/dolphinrecenttabsmenu.cpp +++ b/src/dolphinrecenttabsmenu.cpp @@ -21,17 +21,17 @@ #include <KLocalizedString> #include <KAcceleratorManager> -#include <KMimeType> -#include <KMenu> +#include <kio/global.h> +#include <QMenu> DolphinRecentTabsMenu::DolphinRecentTabsMenu(QObject* parent) : - KActionMenu(KIcon("edit-undo"), i18n("Recently Closed Tabs"), parent) + KActionMenu(QIcon::fromTheme("edit-undo"), i18n("Recently Closed Tabs"), parent) { setDelayed(false); setEnabled(false); m_clearListAction = new QAction(i18n("Empty Recently Closed Tabs"), this); - m_clearListAction->setIcon(KIcon("edit-clear-list")); + m_clearListAction->setIcon(QIcon::fromTheme("edit-clear-list")); addAction(m_clearListAction); addSeparator(); @@ -45,8 +45,8 @@ void DolphinRecentTabsMenu::rememberClosedTab(const KUrl& url, const QByteArray& QAction* action = new QAction(menu()); action->setText(url.path()); action->setData(state); - const QString iconName = KMimeType::iconNameForUrl(url); - action->setIcon(KIcon(iconName)); + const QString iconName = KIO::iconNameForUrl(url); + action->setIcon(QIcon::fromTheme(iconName)); // Add the closed tab menu entry after the separator and // "Empty Recently Closed Tabs" entry diff --git a/src/dolphinrecenttabsmenu.h b/src/dolphinrecenttabsmenu.h index 910e564a1..dce032128 100644 --- a/src/dolphinrecenttabsmenu.h +++ b/src/dolphinrecenttabsmenu.h @@ -23,7 +23,6 @@ #include <KActionMenu> #include <KUrl> -class DolphinTabPage; class QAction; class DolphinRecentTabsMenu : public KActionMenu diff --git a/src/dolphinremoveaction.cpp b/src/dolphinremoveaction.cpp index 7d7c2f043..7ea4e4f79 100644 --- a/src/dolphinremoveaction.cpp +++ b/src/dolphinremoveaction.cpp @@ -29,7 +29,7 @@ DolphinRemoveAction::DolphinRemoveAction(QObject* parent, KActionCollection* col m_collection(collection) { update(); - connect(this, SIGNAL(triggered()), this, SLOT(slotRemoveActionTriggered())); + connect(this, &DolphinRemoveAction::triggered, this, &DolphinRemoveAction::slotRemoveActionTriggered); } void DolphinRemoveAction::slotRemoveActionTriggered() @@ -55,7 +55,7 @@ void DolphinRemoveAction::update() if (m_action) { setIcon(m_action->icon()); - setShortcuts(m_action->shortcuts()); + m_collection->setDefaultShortcuts(this, m_action->shortcuts()); setEnabled(m_action->isEnabled()); } } diff --git a/src/dolphintabbar.cpp b/src/dolphintabbar.cpp index 78bd5edcb..8e5fb2dce 100644 --- a/src/dolphintabbar.cpp +++ b/src/dolphintabbar.cpp @@ -22,8 +22,8 @@ #include <QTimer> #include <QDragEnterEvent> #include <KLocalizedString> -#include <KMenu> -#include <KIcon> +#include <QMenu> +#include <QIcon> #include <KUrl> DolphinTabBar::DolphinTabBar(QWidget* parent) : @@ -122,12 +122,12 @@ void DolphinTabBar::contextMenuEvent(QContextMenuEvent* event) if (index >= 0) { // Tab context menu - KMenu menu(this); + QMenu menu(this); - QAction* newTabAction = menu.addAction(KIcon("tab-new"), i18nc("@action:inmenu", "New Tab")); - QAction* detachTabAction = menu.addAction(KIcon("tab-detach"), i18nc("@action:inmenu", "Detach Tab")); - QAction* closeOtherTabsAction = menu.addAction(KIcon("tab-close-other"), i18nc("@action:inmenu", "Close Other Tabs")); - QAction* closeTabAction = menu.addAction(KIcon("tab-close"), i18nc("@action:inmenu", "Close Tab")); + QAction* newTabAction = menu.addAction(QIcon::fromTheme("tab-new"), i18nc("@action:inmenu", "New Tab")); + QAction* detachTabAction = menu.addAction(QIcon::fromTheme("tab-detach"), i18nc("@action:inmenu", "Detach Tab")); + QAction* closeOtherTabsAction = menu.addAction(QIcon::fromTheme("tab-close-other"), i18nc("@action:inmenu", "Close Other Tabs")); + QAction* closeTabAction = menu.addAction(QIcon::fromTheme("tab-close"), i18nc("@action:inmenu", "Close Tab")); QAction* selectedAction = menu.exec(event->globalPos()); if (selectedAction == newTabAction) { diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp index c6607e529..42a8aff09 100644 --- a/src/dolphintabwidget.cpp +++ b/src/dolphintabwidget.cpp @@ -27,7 +27,7 @@ #include <QApplication> #include <KConfigGroup> -#include <KIcon> +#include <kio/global.h> #include <KRun> DolphinTabWidget::DolphinTabWidget(QWidget* parent) : @@ -146,7 +146,7 @@ void DolphinTabWidget::openNewTab(const KUrl& primaryUrl, const KUrl& secondaryU this, SIGNAL(activeViewChanged(DolphinViewContainer*))); connect(tabPage, SIGNAL(activeViewUrlChanged(KUrl)), this, SLOT(tabUrlChanged(KUrl))); - addTab(tabPage, KIcon(KMimeType::iconNameForUrl(primaryUrl)), tabName(primaryUrl)); + addTab(tabPage, QIcon::fromTheme(KIO::iconNameForUrl(primaryUrl)), tabName(primaryUrl)); if (focusWidget) { // The DolphinViewContainer grabbed the keyboard focus. As the tab is opened @@ -301,7 +301,7 @@ void DolphinTabWidget::tabUrlChanged(const KUrl& url) const int index = indexOf(qobject_cast<QWidget*>(sender())); if (index >= 0) { tabBar()->setTabText(index, tabName(url)); - tabBar()->setTabIcon(index, KIcon(KMimeType::iconNameForUrl(url))); + tabBar()->setTabIcon(index, QIcon::fromTheme(KIO::iconNameForUrl(url))); // Emit the currentUrlChanged signal if the url of the current tab has been changed. if (index == currentIndex()) { diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index a11ba4202..0f3aa9761 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -26,6 +26,7 @@ #include <QBoxLayout> #include <QTimer> #include <QScrollBar> +#include <QMimeData> #include <KDesktopFile> #include <KFileItemDelegate> @@ -37,7 +38,6 @@ #include <KIO/PreviewJob> #include <KMessageWidget> #include <KNewFileMenu> -#include <konqmimedata.h> #include <konq_operations.h> #include <KShell> #include <KUrl> @@ -82,92 +82,117 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) : m_topLayout->setMargin(0); m_urlNavigator = new KUrlNavigator(new KFilePlacesModel(this), url, this); - connect(m_urlNavigator, SIGNAL(urlsDropped(KUrl,QDropEvent*)), - this, SLOT(dropUrls(KUrl,QDropEvent*))); - connect(m_urlNavigator, SIGNAL(activated()), - this, SLOT(activate())); - connect(m_urlNavigator->editor(), SIGNAL(completionModeChanged(KGlobalSettings::Completion)), - this, SLOT(saveUrlCompletionMode(KGlobalSettings::Completion))); + connect(m_urlNavigator, &KUrlNavigator::urlsDropped, + this, &DolphinViewContainer::dropUrls); + connect(m_urlNavigator, &KUrlNavigator::activated, + this, &DolphinViewContainer::activate); + connect(m_urlNavigator->editor(), &KUrlComboBox::completionModeChanged, + this, &DolphinViewContainer::saveUrlCompletionMode); const GeneralSettings* settings = GeneralSettings::self(); m_urlNavigator->setUrlEditable(settings->editableUrl()); m_urlNavigator->setShowFullPath(settings->showFullPath()); m_urlNavigator->setHomeUrl(KUrl(settings->homeUrl())); KUrlComboBox* editor = m_urlNavigator->editor(); - editor->setCompletionMode(KGlobalSettings::Completion(settings->urlCompletionMode())); + editor->setCompletionMode(KCompletion::CompletionMode(settings->urlCompletionMode())); m_searchBox = new DolphinSearchBox(this); m_searchBox->hide(); - connect(m_searchBox, SIGNAL(activated()), this, SLOT(activate())); - connect(m_searchBox, SIGNAL(closeRequest()), this, SLOT(closeSearchBox())); - connect(m_searchBox, SIGNAL(searchRequest()), this, SLOT(startSearching())); - connect(m_searchBox, SIGNAL(returnPressed(QString)), this, SLOT(requestFocus())); + connect(m_searchBox, &DolphinSearchBox::activated, this, &DolphinViewContainer::activate); + connect(m_searchBox, &DolphinSearchBox::closeRequest, this, &DolphinViewContainer::closeSearchBox); + connect(m_searchBox, &DolphinSearchBox::searchRequest, this, &DolphinViewContainer::startSearching); + connect(m_searchBox, &DolphinSearchBox::returnPressed, this, &DolphinViewContainer::requestFocus); m_messageWidget = new KMessageWidget(this); m_messageWidget->setCloseButtonVisible(true); m_messageWidget->hide(); m_view = new DolphinView(url, this); - connect(m_view, SIGNAL(urlChanged(KUrl)), m_urlNavigator, SLOT(setUrl(KUrl))); - connect(m_view, SIGNAL(urlChanged(KUrl)), m_messageWidget, SLOT(hide())); - connect(m_view, SIGNAL(directoryLoadingCompleted()), m_messageWidget, SLOT(hide())); - connect(m_view, SIGNAL(writeStateChanged(bool)), this, SIGNAL(writeStateChanged(bool))); - connect(m_view, SIGNAL(requestItemInfo(KFileItem)), this, SLOT(showItemInfo(KFileItem))); - connect(m_view, SIGNAL(itemActivated(KFileItem)), this, SLOT(slotItemActivated(KFileItem))); - connect(m_view, SIGNAL(itemsActivated(KFileItemList)), this, SLOT(slotItemsActivated(KFileItemList))); - connect(m_view, SIGNAL(redirection(KUrl,KUrl)), this, SLOT(redirect(KUrl,KUrl))); - connect(m_view, SIGNAL(directoryLoadingStarted()), this, SLOT(slotDirectoryLoadingStarted())); - connect(m_view, SIGNAL(directoryLoadingCompleted()), this, SLOT(slotDirectoryLoadingCompleted())); - connect(m_view, SIGNAL(directoryLoadingCanceled()), this, SLOT(slotDirectoryLoadingCanceled())); - connect(m_view, SIGNAL(itemCountChanged()), this, SLOT(delayedStatusBarUpdate())); - connect(m_view, SIGNAL(directoryLoadingProgress(int)), this, SLOT(updateDirectoryLoadingProgress(int))); - connect(m_view, SIGNAL(directorySortingProgress(int)), this, SLOT(updateDirectorySortingProgress(int))); - connect(m_view, SIGNAL(selectionChanged(KFileItemList)), this, SLOT(delayedStatusBarUpdate())); - connect(m_view, SIGNAL(urlAboutToBeChanged(KUrl)), this, SLOT(slotViewUrlAboutToBeChanged(KUrl))); - connect(m_view, SIGNAL(errorMessage(QString)), this, SLOT(showErrorMessage(QString))); - connect(m_view, SIGNAL(urlIsFileError(KUrl)), this, SLOT(slotUrlIsFileError(KUrl))); - connect(m_view, SIGNAL(activated()), this, SLOT(activate())); + connect(m_view, &DolphinView::urlChanged, + m_urlNavigator, &KUrlNavigator::setUrl); + connect(m_view, &DolphinView::urlChanged, + m_messageWidget, &KMessageWidget::hide); + connect(m_view, &DolphinView::directoryLoadingCompleted, + m_messageWidget, &KMessageWidget::hide); + connect(m_view, &DolphinView::writeStateChanged, + this, &DolphinViewContainer::writeStateChanged); + connect(m_view, &DolphinView::requestItemInfo, + this, &DolphinViewContainer::showItemInfo); + connect(m_view, &DolphinView::itemActivated, + this, &DolphinViewContainer::slotItemActivated); + connect(m_view, &DolphinView::itemsActivated, + this, &DolphinViewContainer::slotItemsActivated); + connect(m_view, &DolphinView::redirection, + this, &DolphinViewContainer::redirect); + connect(m_view, &DolphinView::directoryLoadingStarted, + this, &DolphinViewContainer::slotDirectoryLoadingStarted); + connect(m_view, &DolphinView::directoryLoadingCompleted, + this, &DolphinViewContainer::slotDirectoryLoadingCompleted); + connect(m_view, &DolphinView::directoryLoadingCanceled, + this, &DolphinViewContainer::slotDirectoryLoadingCanceled); + connect(m_view, &DolphinView::itemCountChanged, + this, &DolphinViewContainer::delayedStatusBarUpdate); + connect(m_view, &DolphinView::directoryLoadingProgress, + this, &DolphinViewContainer::updateDirectoryLoadingProgress); + connect(m_view, &DolphinView::directorySortingProgress, + this, &DolphinViewContainer::updateDirectorySortingProgress); + connect(m_view, &DolphinView::selectionChanged, + this, &DolphinViewContainer::delayedStatusBarUpdate); + connect(m_view, &DolphinView::urlAboutToBeChanged, + this, &DolphinViewContainer::slotViewUrlAboutToBeChanged); + connect(m_view, &DolphinView::errorMessage, + this, &DolphinViewContainer::showErrorMessage); + connect(m_view, &DolphinView::urlIsFileError, + this, &DolphinViewContainer::slotUrlIsFileError); + connect(m_view, &DolphinView::activated, + this, &DolphinViewContainer::activate); - connect(m_urlNavigator, SIGNAL(urlAboutToBeChanged(KUrl)), - this, SLOT(slotUrlNavigatorLocationAboutToBeChanged(KUrl))); - connect(m_urlNavigator, SIGNAL(urlChanged(KUrl)), - this, SLOT(slotUrlNavigatorLocationChanged(KUrl))); - connect(m_urlNavigator, SIGNAL(historyChanged()), - this, SLOT(slotHistoryChanged())); - connect(m_urlNavigator, SIGNAL(returnPressed()), - this, SLOT(slotReturnPressed())); + connect(m_urlNavigator, &KUrlNavigator::urlAboutToBeChanged, + this, &DolphinViewContainer::slotUrlNavigatorLocationAboutToBeChanged); + connect(m_urlNavigator, &KUrlNavigator::urlChanged, + this, &DolphinViewContainer::slotUrlNavigatorLocationChanged); + connect(m_urlNavigator, &KUrlNavigator::historyChanged, + this, &DolphinViewContainer::slotHistoryChanged); + connect(m_urlNavigator, &KUrlNavigator::returnPressed, + this, &DolphinViewContainer::slotReturnPressed); // Initialize status bar m_statusBar = new DolphinStatusBar(this); m_statusBar->setUrl(m_view->url()); m_statusBar->setZoomLevel(m_view->zoomLevel()); - connect(m_view, SIGNAL(urlChanged(KUrl)), m_statusBar, SLOT(setUrl(KUrl))); - connect(m_view, SIGNAL(zoomLevelChanged(int,int)), m_statusBar, SLOT(setZoomLevel(int))); - connect(m_view, SIGNAL(infoMessage(QString)), m_statusBar, SLOT(setText(QString))); - connect(m_view, SIGNAL(operationCompletedMessage(QString)), m_statusBar, SLOT(setText(QString))); - connect(m_statusBar, SIGNAL(stopPressed()), this, SLOT(stopDirectoryLoading())); - connect(m_statusBar, SIGNAL(zoomLevelChanged(int)), this, SLOT(slotStatusBarZoomLevelChanged(int))); + connect(m_view, &DolphinView::urlChanged, + m_statusBar, &DolphinStatusBar::setUrl); + connect(m_view, &DolphinView::zoomLevelChanged, + m_statusBar, &DolphinStatusBar::setZoomLevel); + connect(m_view, &DolphinView::infoMessage, + m_statusBar, &DolphinStatusBar::setText); + connect(m_view, &DolphinView::operationCompletedMessage, + m_statusBar, &DolphinStatusBar::setText); + connect(m_statusBar, &DolphinStatusBar::stopPressed, + this, &DolphinViewContainer::stopDirectoryLoading); + connect(m_statusBar, &DolphinStatusBar::zoomLevelChanged, + this, &DolphinViewContainer::slotStatusBarZoomLevelChanged); m_statusBarTimer = new QTimer(this); m_statusBarTimer->setSingleShot(true); m_statusBarTimer->setInterval(300); - connect(m_statusBarTimer, SIGNAL(timeout()), this, SLOT(updateStatusBar())); + connect(m_statusBarTimer, &QTimer::timeout, this, &DolphinViewContainer::updateStatusBar); KIO::FileUndoManager* undoManager = KIO::FileUndoManager::self(); - connect(undoManager, SIGNAL(jobRecordingFinished(CommandType)), - this, SLOT(delayedStatusBarUpdate())); + connect(undoManager, &KIO::FileUndoManager::jobRecordingFinished, + this, &DolphinViewContainer::delayedStatusBarUpdate); // Initialize filter bar m_filterBar = new FilterBar(this); m_filterBar->setVisible(settings->filterBar()); - connect(m_filterBar, SIGNAL(filterChanged(QString)), - this, SLOT(setNameFilter(QString))); - connect(m_filterBar, SIGNAL(closeRequest()), - this, SLOT(closeFilterBar())); - connect(m_filterBar, SIGNAL(focusViewRequest()), - this, SLOT(requestFocus())); - connect(m_view, SIGNAL(urlChanged(KUrl)), - m_filterBar, SLOT(slotUrlChanged())); + connect(m_filterBar, &FilterBar::filterChanged, + this, &DolphinViewContainer::setNameFilter); + connect(m_filterBar, &FilterBar::closeRequest, + this, &DolphinViewContainer::closeFilterBar); + connect(m_filterBar, &FilterBar::focusViewRequest, + this, &DolphinViewContainer::requestFocus); + connect(m_view, &DolphinView::urlChanged, + m_filterBar, &FilterBar::slotUrlChanged); m_topLayout->addWidget(m_urlNavigator); m_topLayout->addWidget(m_searchBox); @@ -488,7 +513,7 @@ void DolphinViewContainer::slotItemActivated(const KFileItem& item) return; } - item.run(); + new KRun(item.targetUrl(), this); } void DolphinViewContainer::slotItemsActivated(const KFileItemList& items) @@ -650,7 +675,7 @@ void DolphinViewContainer::requestFocus() m_view->setFocus(); } -void DolphinViewContainer::saveUrlCompletionMode(KGlobalSettings::Completion completion) +void DolphinViewContainer::saveUrlCompletionMode(KCompletion::CompletionMode completion) { GeneralSettings::setUrlCompletionMode(completion); } @@ -715,4 +740,3 @@ void DolphinViewContainer::saveViewState() m_urlNavigator->saveLocationState(locationState); } -#include "dolphinviewcontainer.moc" diff --git a/src/dolphinviewcontainer.h b/src/dolphinviewcontainer.h index 31612f10a..4ca76961c 100644 --- a/src/dolphinviewcontainer.h +++ b/src/dolphinviewcontainer.h @@ -22,7 +22,7 @@ #include <KFileItem> #include <KFileItemDelegate> -#include <KGlobalSettings> +#include <KCompletion> #include <KIO/Job> #include <KUrlNavigator> @@ -31,9 +31,9 @@ #include <QWidget> #include <views/dolphinview.h> -#include <config-apps.h> +#include <config-dolphin.h> -#ifdef KActivities_FOUND +#ifdef KF5Activities_FOUND namespace KActivities { class ResourceInstance; } @@ -290,7 +290,7 @@ private slots: * Saves the currently used URL completion mode of * the URL navigator. */ - void saveUrlCompletionMode(KGlobalSettings::Completion completion); + void saveUrlCompletionMode(KCompletion::CompletionMode completion); void slotHistoryChanged(); @@ -345,7 +345,7 @@ private: KUrl m_dropDestination; QScopedPointer<QDropEvent> m_dropEvent; -#ifdef KActivities_FOUND +#ifdef KF5Activities_FOUND private: KActivities::ResourceInstance * m_activityResourceInstance; #endif diff --git a/src/filterbar/filterbar.cpp b/src/filterbar/filterbar.cpp index 6de6fbe5c..b850469bf 100644 --- a/src/filterbar/filterbar.cpp +++ b/src/filterbar/filterbar.cpp @@ -20,15 +20,14 @@ ***************************************************************************/ #include "filterbar.h" -#include <QBoxLayout> #include <QKeyEvent> #include <QLabel> #include <QToolButton> +#include <QHBoxLayout> -#include <KIcon> +#include <QIcon> #include <KLocale> #include <KLineEdit> -#include <KIconLoader> FilterBar::FilterBar(QWidget* parent) : QWidget(parent) @@ -36,17 +35,17 @@ FilterBar::FilterBar(QWidget* parent) : // Create close button QToolButton *closeButton = new QToolButton(this); closeButton->setAutoRaise(true); - closeButton->setIcon(KIcon("dialog-close")); + closeButton->setIcon(QIcon::fromTheme("dialog-close")); closeButton->setToolTip(i18nc("@info:tooltip", "Hide Filter Bar")); - connect(closeButton, SIGNAL(clicked()), this, SIGNAL(closeRequest())); + connect(closeButton, &QToolButton::clicked, this, &FilterBar::closeRequest); // Create button to lock text when changing folders m_lockButton = new QToolButton(this); m_lockButton->setAutoRaise(true); m_lockButton->setCheckable(true); - m_lockButton->setIcon(KIcon("object-unlocked")); + m_lockButton->setIcon(QIcon::fromTheme("object-unlocked")); m_lockButton->setToolTip(i18nc("@info:tooltip", "Keep Filter When Changing Folders")); - connect(m_lockButton, SIGNAL(toggled(bool)), this, SLOT(slotToggleLockButton(bool))); + connect(m_lockButton, &QToolButton::toggled, this, &FilterBar::slotToggleLockButton); // Create label QLabel* filterLabel = new QLabel(i18nc("@label:textbox", "Filter:"), this); @@ -55,8 +54,8 @@ FilterBar::FilterBar(QWidget* parent) : m_filterInput = new KLineEdit(this); m_filterInput->setLayoutDirection(Qt::LeftToRight); m_filterInput->setClearButtonShown(true); - connect(m_filterInput, SIGNAL(textChanged(QString)), - this, SIGNAL(filterChanged(QString))); + connect(m_filterInput, &KLineEdit::textChanged, + this, &FilterBar::filterChanged); setFocusProxy(m_filterInput); // Apply layout @@ -103,9 +102,9 @@ void FilterBar::slotUrlChanged() void FilterBar::slotToggleLockButton(bool checked) { if (checked) { - m_lockButton->setIcon(KIcon("object-locked")); + m_lockButton->setIcon(QIcon::fromTheme("object-locked")); } else { - m_lockButton->setIcon(KIcon("object-unlocked")); + m_lockButton->setIcon(QIcon::fromTheme("object-unlocked")); clear(); } } @@ -140,4 +139,3 @@ void FilterBar::keyReleaseEvent(QKeyEvent* event) } } -#include "filterbar.moc" diff --git a/src/kitemviews/kfileitemlistview.cpp b/src/kitemviews/kfileitemlistview.cpp index fd01f2c4c..aee10b5bd 100644 --- a/src/kitemviews/kfileitemlistview.cpp +++ b/src/kitemviews/kfileitemlistview.cpp @@ -27,8 +27,10 @@ #include "private/kpixmapmodifier.h" #include <KDebug> -#include <KIcon> +#include <QIcon> #include <KTextEdit> +#include <KIconLoader> +#include <KDateTime> #include <QPainter> #include <QTextLine> @@ -62,12 +64,12 @@ KFileItemListView::KFileItemListView(QGraphicsWidget* parent) : m_updateVisibleIndexRangeTimer = new QTimer(this); m_updateVisibleIndexRangeTimer->setSingleShot(true); m_updateVisibleIndexRangeTimer->setInterval(ShortInterval); - connect(m_updateVisibleIndexRangeTimer, SIGNAL(timeout()), this, SLOT(updateVisibleIndexRange())); + connect(m_updateVisibleIndexRangeTimer, &QTimer::timeout, this, &KFileItemListView::updateVisibleIndexRange); m_updateIconSizeTimer = new QTimer(this); m_updateIconSizeTimer->setSingleShot(true); m_updateIconSizeTimer->setInterval(LongInterval); - connect(m_updateIconSizeTimer, SIGNAL(timeout()), this, SLOT(updateIconSize())); + connect(m_updateIconSizeTimer, &QTimer::timeout, this, &KFileItemListView::updateIconSize); setVisibleRoles(QList<QByteArray>() << "text"); } @@ -169,7 +171,7 @@ QPixmap KFileItemListView::createDragPixmap(const KItemSet& indexes) const foreach (int index, indexes) { QPixmap pixmap = model()->data(index).value("iconPixmap").value<QPixmap>(); if (pixmap.isNull()) { - KIcon icon(model()->data(index).value("iconName").toString()); + QIcon icon = QIcon::fromTheme(model()->data(index).value("iconName").toString()); pixmap = icon.pixmap(size, size); } else { KPixmapModifier::scale(pixmap, QSize(size, size)); @@ -421,4 +423,3 @@ QSize KFileItemListView::availableIconSize() const return QSize(iconSize, iconSize); } -#include "kfileitemlistview.moc" diff --git a/src/kitemviews/kfileitemlistwidget.cpp b/src/kitemviews/kfileitemlistwidget.cpp index fe8c7e997..4938e9d6d 100644 --- a/src/kitemviews/kfileitemlistwidget.cpp +++ b/src/kitemviews/kfileitemlistwidget.cpp @@ -27,6 +27,8 @@ #include <KLocale> #include <KIO/MetaData> #include <QDateTime> +#include <KFormat> +#include <QMimeDatabase> KFileItemListWidgetInformant::KFileItemListWidgetInformant() : KStandardItemListWidgetInformant() @@ -78,11 +80,11 @@ QString KFileItemListWidgetInformant::roleText(const QByteArray& role, } } else { const KIO::filesize_t size = roleValue.value<KIO::filesize_t>(); - text = KGlobal::locale()->formatByteSize(size); + text = KFormat().formatByteSize(size); } } else if (role == "date") { const QDateTime dateTime = roleValue.toDateTime(); - text = KGlobal::locale()->formatDateTime(dateTime); + text = KLocale::global()->formatDateTime(dateTime); } else { text = KStandardItemListWidgetInformant::roleText(role, values); } @@ -142,7 +144,8 @@ int KFileItemListWidget::selectionLength(const QString& text) const return selectionLength; } - const QString extension = KMimeType::extractKnownExtension(text); + QMimeDatabase db; + const QString extension = db.suffixForFileName(text); if (extension.isEmpty()) { // For an unknown extension just exclude the extension after // the last point. This does not work for multiple extensions like @@ -161,4 +164,3 @@ int KFileItemListWidget::selectionLength(const QString& text) const return selectionLength; } -#include "kfileitemlistwidget.moc" diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index 72acf776a..4d5879f4d 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -25,6 +25,7 @@ #include <KLocale> #include <KStringHandler> #include <KDebug> +#include <kstringhandler_deprecated.h> //TODO: port to QCollator #include "private/kfileitemmodelsortalgorithm.h" #include "private/kfileitemmodeldirlister.h" @@ -68,17 +69,17 @@ KFileItemModel::KFileItemModel(QObject* parent) : m_dirLister->setMainWindow(parentWidget->window()); } - connect(m_dirLister, SIGNAL(started(KUrl)), this, SIGNAL(directoryLoadingStarted())); - connect(m_dirLister, SIGNAL(canceled()), this, SLOT(slotCanceled())); - connect(m_dirLister, SIGNAL(completed(KUrl)), this, SLOT(slotCompleted())); - connect(m_dirLister, SIGNAL(itemsAdded(KUrl,KFileItemList)), this, SLOT(slotItemsAdded(KUrl,KFileItemList))); - connect(m_dirLister, SIGNAL(itemsDeleted(KFileItemList)), this, SLOT(slotItemsDeleted(KFileItemList))); - connect(m_dirLister, SIGNAL(refreshItems(QList<QPair<KFileItem,KFileItem> >)), this, SLOT(slotRefreshItems(QList<QPair<KFileItem,KFileItem> >))); - connect(m_dirLister, SIGNAL(clear()), this, SLOT(slotClear())); - connect(m_dirLister, SIGNAL(infoMessage(QString)), this, SIGNAL(infoMessage(QString))); - connect(m_dirLister, SIGNAL(errorMessage(QString)), this, SIGNAL(errorMessage(QString))); - connect(m_dirLister, SIGNAL(redirection(KUrl,KUrl)), this, SIGNAL(directoryRedirection(KUrl,KUrl))); - connect(m_dirLister, SIGNAL(urlIsFileError(KUrl)), this, SIGNAL(urlIsFileError(KUrl))); + connect(m_dirLister, &KFileItemModelDirLister::started, this, &KFileItemModel::directoryLoadingStarted); + connect(m_dirLister, static_cast<void(KFileItemModelDirLister::*)()>(&KFileItemModelDirLister::canceled), this, &KFileItemModel::slotCanceled); + connect(m_dirLister, static_cast<void(KFileItemModelDirLister::*)(const QUrl&)>(&KFileItemModelDirLister::completed), this, &KFileItemModel::slotCompleted); + connect(m_dirLister, &KFileItemModelDirLister::itemsAdded, this, &KFileItemModel::slotItemsAdded); + connect(m_dirLister, &KFileItemModelDirLister::itemsDeleted, this, &KFileItemModel::slotItemsDeleted); + connect(m_dirLister, &KFileItemModelDirLister::refreshItems, this, &KFileItemModel::slotRefreshItems); + connect(m_dirLister, static_cast<void(KFileItemModelDirLister::*)()>(&KFileItemModelDirLister::clear), this, &KFileItemModel::slotClear); + connect(m_dirLister, &KFileItemModelDirLister::infoMessage, this, &KFileItemModel::infoMessage); + connect(m_dirLister, &KFileItemModelDirLister::errorMessage, this, &KFileItemModel::errorMessage); + connect(m_dirLister, static_cast<void(KFileItemModelDirLister::*)(const QUrl&, const QUrl&)>(&KFileItemModelDirLister::redirection), this, &KFileItemModel::directoryRedirection); + connect(m_dirLister, &KFileItemModelDirLister::urlIsFileError, this, &KFileItemModel::urlIsFileError); // Apply default roles that should be determined resetRoles(); @@ -94,7 +95,7 @@ KFileItemModel::KFileItemModel(QObject* parent) : m_maximumUpdateIntervalTimer = new QTimer(this); m_maximumUpdateIntervalTimer->setInterval(2000); m_maximumUpdateIntervalTimer->setSingleShot(true); - connect(m_maximumUpdateIntervalTimer, SIGNAL(timeout()), this, SLOT(dispatchPendingItemsToInsert())); + connect(m_maximumUpdateIntervalTimer, &QTimer::timeout, this, &KFileItemModel::dispatchPendingItemsToInsert); // When changing the value of an item which represents the sort-role a resorting must be // triggered. Especially in combination with KFileItemModelRolesUpdater this might be done @@ -103,9 +104,10 @@ KFileItemModel::KFileItemModel(QObject* parent) : m_resortAllItemsTimer = new QTimer(this); m_resortAllItemsTimer->setInterval(500); m_resortAllItemsTimer->setSingleShot(true); - connect(m_resortAllItemsTimer, SIGNAL(timeout()), this, SLOT(resortAllItems())); + connect(m_resortAllItemsTimer, &QTimer::timeout, this, &KFileItemModel::resortAllItems); - connect(KGlobalSettings::self(), SIGNAL(naturalSortingChanged()), this, SLOT(slotNaturalSortingChanged())); + connect(KGlobalSettings::self(), &KGlobalSettings::naturalSortingChanged, + this, &KFileItemModel::slotNaturalSortingChanged); } KFileItemModel::~KFileItemModel() @@ -363,7 +365,7 @@ KFileItem KFileItemModel::fileItem(const KUrl& url) const int KFileItemModel::index(const KFileItem& item) const { - return index(item.url()); + return index(KUrl(item.url())); } int KFileItemModel::index(const KUrl& url) const @@ -915,7 +917,7 @@ void KFileItemModel::slotItemsAdded(const KUrl& directoryUrl, const KFileItemLis // might result in emitting the same items twice due to the Keep-parameter. // This case happens if an item gets expanded, collapsed and expanded again // before the items could be loaded for the first expansion. - if (index(items.first().url()) >= 0) { + if (index(KUrl(items.first().url())) >= 0) { // The items are already part of the model. return; } @@ -1510,8 +1512,8 @@ QHash<QByteArray, QVariant> KFileItemModel::retrieveData(const KFileItem& item, // Don't use KFileItem::timeString() as this is too expensive when // having several thousands of items. Instead the formatting of the // date-time will be done on-demand by the view when the date will be shown. - const KDateTime dateTime = item.time(KFileItem::ModificationTime); - data.insert(sharedValue("date"), dateTime.dateTime()); + const QDateTime dateTime = item.time(KFileItem::ModificationTime); + data.insert(sharedValue("date"), dateTime); } if (m_requestRole[PermissionsRole]) { @@ -1536,7 +1538,7 @@ QHash<QByteArray, QVariant> KFileItemModel::retrieveData(const KFileItem& item, if (m_requestRole[PathRole]) { QString path; - if (item.url().protocol() == QLatin1String("trash")) { + if (item.url().scheme() == QLatin1String("trash")) { path = item.entry().stringValue(KIO::UDSEntry::UDS_EXTRA); } else { // For performance reasons cache the home-path in a static QString @@ -1715,8 +1717,8 @@ int KFileItemModel::sortRoleCompare(const ItemData* a, const ItemData* b) const } case DateRole: { - const KDateTime dateTimeA = itemA.time(KFileItem::ModificationTime); - const KDateTime dateTimeB = itemB.time(KFileItem::ModificationTime); + const QDateTime dateTimeA = itemA.time(KFileItem::ModificationTime); + const QDateTime dateTimeB = itemB.time(KFileItem::ModificationTime); if (dateTimeA < dateTimeB) { result = -1; } else if (dateTimeA > dateTimeB) { @@ -1908,7 +1910,7 @@ QList<QPair<int, QVariant> > KFileItemModel::dateRoleGroups() const const int maxIndex = count() - 1; QList<QPair<int, QVariant> > groups; - const QDate currentDate = KDateTime::currentLocalDateTime().date(); + const QDate currentDate = QDate::currentDate(); QDate previousModifiedDate; QString groupValue; @@ -1917,7 +1919,7 @@ QList<QPair<int, QVariant> > KFileItemModel::dateRoleGroups() const continue; } - const KDateTime modifiedTime = m_itemData.at(i)->item.time(KFileItem::ModificationTime); + const QDateTime modifiedTime = m_itemData.at(i)->item.time(KFileItem::ModificationTime); const QDate modifiedDate = modifiedTime.date(); if (modifiedDate == previousModifiedDate) { // The current item is in the same group as the previous item @@ -2004,7 +2006,7 @@ QList<QPair<int, QVariant> > KFileItemModel::permissionRoleGroups() const } permissionsString = newPermissionsString; - const QFileInfo info(itemData->item.url().pathOrUrl()); + const QFileInfo info(itemData->item.url().toLocalFile()); // Set user string QString user; @@ -2245,4 +2247,3 @@ bool KFileItemModel::isConsistent() const return true; } -#include "kfileitemmodel.moc" diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index 0865d40e7..256527c9e 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -26,6 +26,8 @@ #include <KDebug> #include <KFileItem> #include <KGlobal> +#include <KIconLoader> +#include <KJobWidgets> #include <KIO/JobUiDelegate> #include <KIO/PreviewJob> @@ -42,9 +44,8 @@ #ifdef HAVE_BALOO #include "private/kbaloorolesprovider.h" - #include <baloo/file.h> - #include <baloo/filefetchjob.h> - #include <baloo/filemonitor.h> + #include <Baloo/File> + #include <Baloo/FileMonitor> #endif // #define KFILEITEMMODELROLESUPDATER_DEBUG @@ -95,29 +96,29 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel* model, QO { Q_ASSERT(model); - const KConfigGroup globalConfig(KGlobal::config(), "PreviewSettings"); + const KConfigGroup globalConfig(KSharedConfig::openConfig(), "PreviewSettings"); m_enabledPlugins = globalConfig.readEntry("Plugins", QStringList() << "directorythumbnail" << "imagethumbnail" << "jpegthumbnail"); - connect(m_model, SIGNAL(itemsInserted(KItemRangeList)), - this, SLOT(slotItemsInserted(KItemRangeList))); - connect(m_model, SIGNAL(itemsRemoved(KItemRangeList)), - this, SLOT(slotItemsRemoved(KItemRangeList))); - connect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); - connect(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)), - this, SLOT(slotItemsMoved(KItemRange,QList<int>))); - connect(m_model, SIGNAL(sortRoleChanged(QByteArray,QByteArray)), - this, SLOT(slotSortRoleChanged(QByteArray,QByteArray))); + connect(m_model, &KFileItemModel::itemsInserted, + this, &KFileItemModelRolesUpdater::slotItemsInserted); + connect(m_model, &KFileItemModel::itemsRemoved, + this, &KFileItemModelRolesUpdater::slotItemsRemoved); + connect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); + connect(m_model, &KFileItemModel::itemsMoved, + this, &KFileItemModelRolesUpdater::slotItemsMoved); + connect(m_model, &KFileItemModel::sortRoleChanged, + this, &KFileItemModelRolesUpdater::slotSortRoleChanged); // Use a timer to prevent that each call of slotItemsChanged() results in a synchronous // resolving of the roles. Postpone the resolving until no update has been done for 1 second. m_recentlyChangedItemsTimer = new QTimer(this); m_recentlyChangedItemsTimer->setInterval(1000); m_recentlyChangedItemsTimer->setSingleShot(true); - connect(m_recentlyChangedItemsTimer, SIGNAL(timeout()), this, SLOT(resolveRecentlyChangedItems())); + connect(m_recentlyChangedItemsTimer, &QTimer::timeout, this, &KFileItemModelRolesUpdater::resolveRecentlyChangedItems); m_resolvableRoles.insert("size"); m_resolvableRoles.insert("type"); @@ -127,8 +128,8 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel* model, QO #endif m_directoryContentsCounter = new KDirectoryContentsCounter(m_model, this); - connect(m_directoryContentsCounter, SIGNAL(result(QString,int)), - this, SLOT(slotDirectoryContentsCountReceived(QString,int))); + connect(m_directoryContentsCounter, &KDirectoryContentsCounter::result, + this, &KFileItemModelRolesUpdater::slotDirectoryContentsCountReceived); } KFileItemModelRolesUpdater::~KFileItemModelRolesUpdater() @@ -280,8 +281,8 @@ void KFileItemModelRolesUpdater::setRoles(const QSet<QByteArray>& roles) if (hasBalooRole && !m_balooFileMonitor) { m_balooFileMonitor = new Baloo::FileMonitor(this); - connect(m_balooFileMonitor, SIGNAL(fileMetaDataChanged(QString)), - this, SLOT(applyChangedBalooRoles(QString))); + connect(m_balooFileMonitor, &Baloo::FileMonitor::fileMetaDataChanged, + this, &KFileItemModelRolesUpdater::applyChangedBalooRoles); } else if (!hasBalooRole && m_balooFileMonitor) { delete m_balooFileMonitor; m_balooFileMonitor = 0; @@ -543,11 +544,11 @@ void KFileItemModelRolesUpdater::slotGotPreview(const KFileItem& item, const QPi data.insert("iconPixmap", scaledPixmap); - disconnect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + disconnect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); m_model->setData(index, data); - connect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + connect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); m_finishedItems.insert(item); } @@ -565,11 +566,11 @@ void KFileItemModelRolesUpdater::slotPreviewFailed(const KFileItem& item) QHash<QByteArray, QVariant> data; data.insert("iconPixmap", QPixmap()); - disconnect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + disconnect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); m_model->setData(index, data); - connect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + connect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); applyResolvedRoles(index, ResolveAll); m_finishedItems.insert(item); @@ -625,11 +626,11 @@ void KFileItemModelRolesUpdater::resolveNextSortRole() m_state = Idle; // Prevent that we try to update the items twice. - disconnect(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)), - this, SLOT(slotItemsMoved(KItemRange,QList<int>))); + disconnect(m_model, &KFileItemModel::itemsMoved, + this, &KFileItemModelRolesUpdater::slotItemsMoved); applySortProgressToModel(); - connect(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)), - this, SLOT(slotItemsMoved(KItemRange,QList<int>))); + connect(m_model, &KFileItemModel::itemsMoved, + this, &KFileItemModelRolesUpdater::slotItemsMoved); startUpdating(); } } @@ -665,15 +666,15 @@ void KFileItemModelRolesUpdater::resolveNextPendingRoles() QHash<QByteArray, QVariant> data; data.insert("iconPixmap", QPixmap()); - disconnect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + disconnect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); for (int index = 0; index <= m_model->count(); ++index) { if (m_model->data(index).contains("iconPixmap")) { m_model->setData(index, data); } } - connect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + connect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); } m_clearPreviews = false; @@ -703,21 +704,8 @@ void KFileItemModelRolesUpdater::applyChangedBalooRoles(const QString& itemUrl) return; } - Baloo::FileFetchJob* job = new Baloo::FileFetchJob(item.localPath()); - connect(job, SIGNAL(finished(KJob*)), this, SLOT(applyChangedBalooRolesJobFinished(KJob*))); - job->setProperty("item", QVariant::fromValue(item)); - job->start(); -#else -#ifndef Q_CC_MSVC - Q_UNUSED(itemUrl); -#endif -#endif -} - -void KFileItemModelRolesUpdater::applyChangedBalooRolesJobFinished(KJob* kjob) -{ -#ifdef HAVE_BALOO - const KFileItem item = kjob->property("item").value<KFileItem>(); + Baloo::File file(item.localPath()); + file.load(); const KBalooRolesProvider& rolesProvider = KBalooRolesProvider::instance(); QHash<QByteArray, QVariant> data; @@ -729,19 +717,22 @@ void KFileItemModelRolesUpdater::applyChangedBalooRolesJobFinished(KJob* kjob) data.insert(role, QVariant()); } - Baloo::FileFetchJob* job = static_cast<Baloo::FileFetchJob*>(kjob); - QHashIterator<QByteArray, QVariant> it(rolesProvider.roleValues(job->file(), m_roles)); + QHashIterator<QByteArray, QVariant> it(rolesProvider.roleValues(file, m_roles)); while (it.hasNext()) { it.next(); data.insert(it.key(), it.value()); } - disconnect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + disconnect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); const int index = m_model->index(item); m_model->setData(index, data); - connect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + connect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); +#else +#ifndef Q_CC_MSVC + Q_UNUSED(itemUrl); +#endif #endif } @@ -762,11 +753,11 @@ void KFileItemModelRolesUpdater::slotDirectoryContentsCountReceived(const QStrin data.insert("isExpandable", count > 0); } - disconnect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + disconnect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); m_model->setData(index, data); - connect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + connect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); } } } @@ -897,15 +888,15 @@ void KFileItemModelRolesUpdater::startPreviewJob() job->setIgnoreMaximumSize(itemSubSet.first().isLocalFile()); if (job->ui()) { - job->ui()->setWindow(qApp->activeWindow()); + KJobWidgets::setWindow(job, qApp->activeWindow()); } - connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)), - this, SLOT(slotGotPreview(KFileItem,QPixmap))); - connect(job, SIGNAL(failed(KFileItem)), - this, SLOT(slotPreviewFailed(KFileItem))); - connect(job, SIGNAL(finished(KJob*)), - this, SLOT(slotPreviewJobFinished())); + connect(job, &KIO::PreviewJob::gotPreview, + this, &KFileItemModelRolesUpdater::slotGotPreview); + connect(job, &KIO::PreviewJob::failed, + this, &KFileItemModelRolesUpdater::slotPreviewFailed); + connect(job, &KIO::PreviewJob::finished, + this, &KFileItemModelRolesUpdater::slotPreviewJobFinished); m_previewJob = job; } @@ -998,11 +989,11 @@ void KFileItemModelRolesUpdater::applySortRole(int index) data = rolesData(item); } - disconnect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + disconnect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); m_model->setData(index, data); - connect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + connect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); } void KFileItemModelRolesUpdater::applySortProgressToModel() @@ -1042,11 +1033,11 @@ bool KFileItemModelRolesUpdater::applyResolvedRoles(int index, ResolveHint hint) data.insert("iconPixmap", QPixmap()); } - disconnect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + disconnect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); m_model->setData(index, data); - connect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); + connect(m_model, &KFileItemModel::itemsChanged, + this, &KFileItemModelRolesUpdater::slotItemsChanged); return true; } @@ -1099,12 +1090,12 @@ void KFileItemModelRolesUpdater::updateAllPreviews() void KFileItemModelRolesUpdater::killPreviewJob() { if (m_previewJob) { - disconnect(m_previewJob, SIGNAL(gotPreview(KFileItem,QPixmap)), - this, SLOT(slotGotPreview(KFileItem,QPixmap))); - disconnect(m_previewJob, SIGNAL(failed(KFileItem)), - this, SLOT(slotPreviewFailed(KFileItem))); - disconnect(m_previewJob, SIGNAL(finished(KJob*)), - this, SLOT(slotPreviewJobFinished())); + disconnect(m_previewJob, &KIO::PreviewJob::gotPreview, + this, &KFileItemModelRolesUpdater::slotGotPreview); + disconnect(m_previewJob, &KIO::PreviewJob::failed, + this, &KFileItemModelRolesUpdater::slotPreviewFailed); + disconnect(m_previewJob, &KIO::PreviewJob::finished, + this, &KFileItemModelRolesUpdater::slotPreviewJobFinished); m_previewJob->kill(); m_previewJob = 0; m_pendingPreviewItems.clear(); @@ -1168,4 +1159,3 @@ QList<int> KFileItemModelRolesUpdater::indexesToResolve() const return result; } -#include "kfileitemmodelrolesupdater.moc" diff --git a/src/kitemviews/kfileitemmodelrolesupdater.h b/src/kitemviews/kfileitemmodelrolesupdater.h index a9e979ae1..4a96b1f49 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.h +++ b/src/kitemviews/kfileitemmodelrolesupdater.h @@ -38,6 +38,10 @@ class KJob; class QPixmap; class QTimer; +namespace KIO { + class PreviewJob; +} + #ifdef HAVE_BALOO namespace Baloo { @@ -201,7 +205,6 @@ private slots: void resolveRecentlyChangedItems(); void applyChangedBalooRoles(const QString& file); - void applyChangedBalooRolesJobFinished(KJob* job); void slotDirectoryContentsCountReceived(const QString& path, int count); @@ -316,7 +319,7 @@ private: // A new preview job will be started from them once the first one finishes. KFileItemList m_pendingPreviewItems; - KJob* m_previewJob; + KIO::PreviewJob* m_previewJob; // When downloading or copying large files, the slot slotItemsChanged() // will be called periodically within a quite short delay. To prevent diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index 8498286c9..5e45a1766 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -89,10 +89,10 @@ KItemListContainer::KItemListContainer(KItemListController* controller, QWidget* slotViewChanged(controller->view(), 0); } - connect(controller, SIGNAL(modelChanged(KItemModelBase*,KItemModelBase*)), - this, SLOT(slotModelChanged(KItemModelBase*,KItemModelBase*))); - connect(controller, SIGNAL(viewChanged(KItemListView*,KItemListView*)), - this, SLOT(slotViewChanged(KItemListView*,KItemListView*))); + connect(controller, &KItemListController::modelChanged, + this, &KItemListContainer::slotModelChanged); + connect(controller, &KItemListController::viewChanged, + this, &KItemListContainer::slotViewChanged); } KItemListContainer::~KItemListContainer() @@ -185,11 +185,15 @@ void KItemListContainer::wheelEvent(QWheelEvent* event) KItemListSmoothScroller* smoothScroller = scrollHorizontally ? m_horizontalSmoothScroller : m_verticalSmoothScroller; - const int numDegrees = event->delta() / 8; - const int numSteps = numDegrees / 15; - const QScrollBar* scrollBar = smoothScroller->scrollBar(); - smoothScroller->scrollTo(scrollBar->value() - numSteps * scrollBar->pageStep() / 4); + if (!event->pixelDelta().isNull()) { + const int numPixels = event->pixelDelta().y(); + smoothScroller->scrollTo(scrollBar->value() - numPixels); + } else { + const int numDegrees = event->angleDelta().y() / 8; + const int numSteps = numDegrees / 15; + smoothScroller->scrollTo(scrollBar->value() - numSteps * scrollBar->pageStep() / 4); + } event->accept(); } @@ -211,23 +215,33 @@ void KItemListContainer::slotViewChanged(KItemListView* current, KItemListView* QGraphicsScene* scene = static_cast<QGraphicsView*>(viewport())->scene(); if (previous) { scene->removeItem(previous); - disconnect(previous, SIGNAL(scrollOrientationChanged(Qt::Orientation,Qt::Orientation)), this, SLOT(slotScrollOrientationChanged(Qt::Orientation,Qt::Orientation))); - disconnect(previous, SIGNAL(scrollOffsetChanged(qreal,qreal)), this, SLOT(updateScrollOffsetScrollBar())); - disconnect(previous, SIGNAL(maximumScrollOffsetChanged(qreal,qreal)), this, SLOT(updateScrollOffsetScrollBar())); - disconnect(previous, SIGNAL(itemOffsetChanged(qreal,qreal)), this, SLOT(updateItemOffsetScrollBar())); - disconnect(previous, SIGNAL(maximumItemOffsetChanged(qreal,qreal)), this, SLOT(updateItemOffsetScrollBar())); - disconnect(previous, SIGNAL(scrollTo(qreal)), this, SLOT(scrollTo(qreal))); + disconnect(previous, &KItemListView::scrollOrientationChanged, + this, &KItemListContainer::slotScrollOrientationChanged); + disconnect(previous, &KItemListView::scrollOffsetChanged, + this, &KItemListContainer::updateScrollOffsetScrollBar); + disconnect(previous, &KItemListView::maximumScrollOffsetChanged, + this, &KItemListContainer::updateScrollOffsetScrollBar); + disconnect(previous, &KItemListView::itemOffsetChanged, + this, &KItemListContainer::updateItemOffsetScrollBar); + disconnect(previous, &KItemListView::maximumItemOffsetChanged, + this, &KItemListContainer::updateItemOffsetScrollBar); + disconnect(previous, &KItemListView::scrollTo, this, &KItemListContainer::scrollTo); m_horizontalSmoothScroller->setTargetObject(0); m_verticalSmoothScroller->setTargetObject(0); } if (current) { scene->addItem(current); - connect(current, SIGNAL(scrollOrientationChanged(Qt::Orientation,Qt::Orientation)), this, SLOT(slotScrollOrientationChanged(Qt::Orientation,Qt::Orientation))); - connect(current, SIGNAL(scrollOffsetChanged(qreal,qreal)), this, SLOT(updateScrollOffsetScrollBar())); - connect(current, SIGNAL(maximumScrollOffsetChanged(qreal,qreal)), this, SLOT(updateScrollOffsetScrollBar())); - connect(current, SIGNAL(itemOffsetChanged(qreal,qreal)), this, SLOT(updateItemOffsetScrollBar())); - connect(current, SIGNAL(maximumItemOffsetChanged(qreal,qreal)), this, SLOT(updateItemOffsetScrollBar())); - connect(current, SIGNAL(scrollTo(qreal)), this, SLOT(scrollTo(qreal))); + connect(current, &KItemListView::scrollOrientationChanged, + this, &KItemListContainer::slotScrollOrientationChanged); + connect(current, &KItemListView::scrollOffsetChanged, + this, &KItemListContainer::updateScrollOffsetScrollBar); + connect(current, &KItemListView::maximumScrollOffsetChanged, + this, &KItemListContainer::updateScrollOffsetScrollBar); + connect(current, &KItemListView::itemOffsetChanged, + this, &KItemListContainer::updateItemOffsetScrollBar); + connect(current, &KItemListView::maximumItemOffsetChanged, + this, &KItemListContainer::updateItemOffsetScrollBar); + connect(current, &KItemListView::scrollTo, this, &KItemListContainer::scrollTo); m_horizontalSmoothScroller->setTargetObject(current); m_verticalSmoothScroller->setTargetObject(current); updateSmoothScrollers(current->scrollOrientation()); @@ -403,4 +417,3 @@ void KItemListContainer::updateScrollOffsetScrollBarPolicy() } } -#include "kitemlistcontainer.moc" diff --git a/src/kitemviews/kitemlistcontainer.h b/src/kitemviews/kitemlistcontainer.h index 474a9ecc0..e599992df 100644 --- a/src/kitemviews/kitemlistcontainer.h +++ b/src/kitemviews/kitemlistcontainer.h @@ -32,7 +32,6 @@ class KItemListController; class KItemListSmoothScroller; class KItemListView; class KItemModelBase; -class QPropertyAnimation; /** * @brief Provides a QWidget based scrolling view for a KItemListController. diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index 8e2ef5ef3..1cd06c7e1 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -61,15 +61,15 @@ KItemListController::KItemListController(KItemModelBase* model, KItemListView* v m_keyboardAnchorIndex(-1), m_keyboardAnchorPos(0) { - connect(m_keyboardManager, SIGNAL(changeCurrentItem(QString,bool)), - this, SLOT(slotChangeCurrentItem(QString,bool))); - connect(m_selectionManager, SIGNAL(currentChanged(int,int)), - m_keyboardManager, SLOT(slotCurrentChanged(int,int))); + connect(m_keyboardManager, &KItemListKeyboardSearchManager::changeCurrentItem, + this, &KItemListController::slotChangeCurrentItem); + connect(m_selectionManager, &KItemListSelectionManager::currentChanged, + m_keyboardManager, &KItemListKeyboardSearchManager::slotCurrentChanged); m_autoActivationTimer = new QTimer(this); m_autoActivationTimer->setSingleShot(true); m_autoActivationTimer->setInterval(-1); - connect(m_autoActivationTimer, SIGNAL(timeout()), this, SLOT(slotAutoActivationTimeout())); + connect(m_autoActivationTimer, &QTimer::timeout, this, &KItemListController::slotAutoActivationTimeout); setModel(model); setView(view); @@ -127,7 +127,7 @@ void KItemListController::setView(KItemListView* view) KItemListView* oldView = m_view; if (oldView) { - disconnect(oldView, SIGNAL(scrollOffsetChanged(qreal,qreal)), this, SLOT(slotViewScrollOffsetChanged(qreal,qreal))); + disconnect(oldView, &KItemListView::scrollOffsetChanged, this, &KItemListController::slotViewScrollOffsetChanged); oldView->deleteLater(); } @@ -137,7 +137,7 @@ void KItemListController::setView(KItemListView* view) m_view->setParent(this); m_view->setController(this); m_view->setModel(m_model); - connect(m_view, SIGNAL(scrollOffsetChanged(qreal,qreal)), this, SLOT(slotViewScrollOffsetChanged(qreal,qreal))); + connect(m_view, &KItemListView::scrollOffsetChanged, this, &KItemListController::slotViewScrollOffsetChanged); updateExtendedSelectionRegion(); } @@ -538,8 +538,7 @@ bool KItemListController::mousePressEvent(QGraphicsSceneMouseEvent* event, const m_pressedIndex = m_view->itemAt(m_pressedMousePos); emit mouseButtonPressed(m_pressedIndex, event->buttons()); - // TODO: Qt5: Replace Qt::XButton1 by Qt::BackButton and Qt::XButton2 by Qt::ForwardButton - if (event->buttons() & (Qt::XButton1 | Qt::XButton2)) { + if (event->buttons() & (Qt::BackButton | Qt::ForwardButton)) { // Do not select items when clicking the back/forward buttons, see // https://bugs.kde.org/show_bug.cgi?id=327412. return true; @@ -655,7 +654,7 @@ bool KItemListController::mousePressEvent(QGraphicsSceneMouseEvent* event, const rubberBand->setStartPosition(startPos); rubberBand->setEndPosition(startPos); rubberBand->setActive(true); - connect(rubberBand, SIGNAL(endPositionChanged(QPointF,QPointF)), this, SLOT(slotRubberBandChanged())); + connect(rubberBand, &KItemListRubberBand::endPositionChanged, this, &KItemListController::slotRubberBandChanged); m_view->setAutoScroll(true); } @@ -743,7 +742,7 @@ bool KItemListController::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, con KItemListRubberBand* rubberBand = m_view->rubberBand(); if (rubberBand->isActive()) { - disconnect(rubberBand, SIGNAL(endPositionChanged(QPointF,QPointF)), this, SLOT(slotRubberBandChanged())); + disconnect(rubberBand, &KItemListRubberBand::endPositionChanged, this, &KItemListController::slotRubberBandChanged); rubberBand->setActive(false); m_oldSelection.clear(); m_view->setAutoScroll(false); @@ -1310,4 +1309,3 @@ void KItemListController::updateExtendedSelectionRegion() } } -#include "kitemlistcontroller.moc" diff --git a/src/kitemviews/kitemlistcontroller.h b/src/kitemviews/kitemlistcontroller.h index e9b70cdda..b07f117d0 100644 --- a/src/kitemviews/kitemlistcontroller.h +++ b/src/kitemviews/kitemlistcontroller.h @@ -44,7 +44,6 @@ class QGraphicsSceneWheelEvent; class QHideEvent; class QInputMethodEvent; class QKeyEvent; -class QMimeData; class QShowEvent; class QTransform; diff --git a/src/kitemviews/kitemlistgroupheader.cpp b/src/kitemviews/kitemlistgroupheader.cpp index 17c95a97c..accaf9ecf 100644 --- a/src/kitemviews/kitemlistgroupheader.cpp +++ b/src/kitemviews/kitemlistgroupheader.cpp @@ -233,4 +233,3 @@ QColor KItemListGroupHeader::baseColor() const return styleOption().palette.color(group, normalBaseColorRole()); } -#include "kitemlistgroupheader.moc" diff --git a/src/kitemviews/kitemlistheader.cpp b/src/kitemviews/kitemlistheader.cpp index e89ece0a1..a3fa14d35 100644 --- a/src/kitemviews/kitemlistheader.cpp +++ b/src/kitemviews/kitemlistheader.cpp @@ -81,8 +81,7 @@ KItemListHeader::KItemListHeader(KItemListView* listView) : m_headerWidget = m_view->m_headerWidget; Q_ASSERT(m_headerWidget); - connect(m_headerWidget, SIGNAL(columnWidthChanged(QByteArray,qreal,qreal)), - this, SIGNAL(columnWidthChanged(QByteArray,qreal,qreal))); + connect(m_headerWidget, &KItemListHeaderWidget::columnWidthChanged, + this, &KItemListHeader::columnWidthChanged); } -#include "kitemlistheader.moc" diff --git a/src/kitemviews/kitemlistselectionmanager.cpp b/src/kitemviews/kitemlistselectionmanager.cpp index 1f0a89d06..ba524a6bf 100644 --- a/src/kitemviews/kitemlistselectionmanager.cpp +++ b/src/kitemviews/kitemlistselectionmanager.cpp @@ -396,4 +396,4 @@ int KItemListSelectionManager::indexAfterRangesRemoving(int index, const KItemRa } return qBound(-1, index - dec, m_model->count() - 1); } -#include "kitemlistselectionmanager.moc" + diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 756f9e39a..8c93361e0 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -58,7 +58,7 @@ namespace { } #ifndef QT_NO_ACCESSIBILITY -QAccessibleInterface* accessibleInterfaceFactory(const QString &key, QObject *object) +QAccessibleInterface* accessibleInterfaceFactory(const QString& key, QObject* object) { Q_UNUSED(key) @@ -114,16 +114,16 @@ KItemListView::KItemListView(QGraphicsWidget* parent) : m_layouter = new KItemListViewLayouter(m_sizeHintResolver, this); m_animation = new KItemListViewAnimation(this); - connect(m_animation, SIGNAL(finished(QGraphicsWidget*,KItemListViewAnimation::AnimationType)), - this, SLOT(slotAnimationFinished(QGraphicsWidget*,KItemListViewAnimation::AnimationType))); + connect(m_animation, &KItemListViewAnimation::finished, + this, &KItemListView::slotAnimationFinished); m_layoutTimer = new QTimer(this); m_layoutTimer->setInterval(300); m_layoutTimer->setSingleShot(true); - connect(m_layoutTimer, SIGNAL(timeout()), this, SLOT(slotLayoutTimerFinished())); + connect(m_layoutTimer, &QTimer::timeout, this, &KItemListView::slotLayoutTimerFinished); m_rubberBand = new KItemListRubberBand(this); - connect(m_rubberBand, SIGNAL(activationChanged(bool)), this, SLOT(slotRubberBandActivationChanged(bool))); + connect(m_rubberBand, &KItemListRubberBand::activationChanged, this, &KItemListView::slotRubberBandActivationChanged); m_headerWidget = new KItemListHeaderWidget(this); m_headerWidget->setVisible(false); @@ -267,7 +267,7 @@ void KItemListView::setAutoScroll(bool enabled) if (enabled && !m_autoScrollTimer) { m_autoScrollTimer = new QTimer(this); m_autoScrollTimer->setSingleShot(true); - connect(m_autoScrollTimer, SIGNAL(timeout()), this, SLOT(triggerAutoScrolling())); + connect(m_autoScrollTimer, &QTimer::timeout, this, &KItemListView::triggerAutoScrolling); m_autoScrollTimer->start(InitialAutoScrollDelay); } else if (!enabled && m_autoScrollTimer) { delete m_autoScrollTimer; @@ -572,26 +572,26 @@ void KItemListView::setHeaderVisible(bool visible) m_headerWidget->setColumns(m_visibleRoles); m_headerWidget->setZValue(1); - connect(m_headerWidget, SIGNAL(columnWidthChanged(QByteArray,qreal,qreal)), - this, SLOT(slotHeaderColumnWidthChanged(QByteArray,qreal,qreal))); - connect(m_headerWidget, SIGNAL(columnMoved(QByteArray,int,int)), - this, SLOT(slotHeaderColumnMoved(QByteArray,int,int))); - connect(m_headerWidget, SIGNAL(sortOrderChanged(Qt::SortOrder,Qt::SortOrder)), - this, SIGNAL(sortOrderChanged(Qt::SortOrder,Qt::SortOrder))); - connect(m_headerWidget, SIGNAL(sortRoleChanged(QByteArray,QByteArray)), - this, SIGNAL(sortRoleChanged(QByteArray,QByteArray))); + connect(m_headerWidget, &KItemListHeaderWidget::columnWidthChanged, + this, &KItemListView::slotHeaderColumnWidthChanged); + connect(m_headerWidget, &KItemListHeaderWidget::columnMoved, + this, &KItemListView::slotHeaderColumnMoved); + connect(m_headerWidget, &KItemListHeaderWidget::sortOrderChanged, + this, &KItemListView::sortOrderChanged); + connect(m_headerWidget, &KItemListHeaderWidget::sortRoleChanged, + this, &KItemListView::sortRoleChanged); m_layouter->setHeaderHeight(headerSize.height()); m_headerWidget->setVisible(true); } else if (!visible && m_headerWidget->isVisible()) { - disconnect(m_headerWidget, SIGNAL(columnWidthChanged(QByteArray,qreal,qreal)), - this, SLOT(slotHeaderColumnWidthChanged(QByteArray,qreal,qreal))); - disconnect(m_headerWidget, SIGNAL(columnMoved(QByteArray,int,int)), - this, SLOT(slotHeaderColumnMoved(QByteArray,int,int))); - disconnect(m_headerWidget, SIGNAL(sortOrderChanged(Qt::SortOrder,Qt::SortOrder)), - this, SIGNAL(sortOrderChanged(Qt::SortOrder,Qt::SortOrder))); - disconnect(m_headerWidget, SIGNAL(sortRoleChanged(QByteArray,QByteArray)), - this, SIGNAL(sortRoleChanged(QByteArray,QByteArray))); + disconnect(m_headerWidget, &KItemListHeaderWidget::columnWidthChanged, + this, &KItemListView::slotHeaderColumnWidthChanged); + disconnect(m_headerWidget, &KItemListHeaderWidget::columnMoved, + this, &KItemListView::slotHeaderColumnMoved); + disconnect(m_headerWidget, &KItemListHeaderWidget::sortOrderChanged, + this, &KItemListView::sortOrderChanged); + disconnect(m_headerWidget, &KItemListHeaderWidget::sortRoleChanged, + this, &KItemListView::sortRoleChanged); m_layouter->setHeaderHeight(0); m_headerWidget->setVisible(false); @@ -637,10 +637,10 @@ void KItemListView::editRole(int index, const QByteArray& role) m_editingRole = true; widget->setEditedRole(role); - connect(widget, SIGNAL(roleEditingCanceled(int,QByteArray,QVariant)), - this, SLOT(slotRoleEditingCanceled(int,QByteArray,QVariant))); - connect(widget, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), - this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant))); + connect(widget, &KItemListWidget::roleEditingCanceled, + this, &KItemListView::slotRoleEditingCanceled); + connect(widget, &KItemListWidget::roleEditingFinished, + this, &KItemListView::slotRoleEditingFinished); } void KItemListView::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) @@ -936,7 +936,7 @@ void KItemListView::dragEnterEvent(QGraphicsSceneDragDropEvent* event) setAutoScroll(true); } -void KItemListView::dragMoveEvent(QGraphicsSceneDragDropEvent *event) +void KItemListView::dragMoveEvent(QGraphicsSceneDragDropEvent* event) { QGraphicsWidget::dragMoveEvent(event); @@ -946,7 +946,7 @@ void KItemListView::dragMoveEvent(QGraphicsSceneDragDropEvent *event) } } -void KItemListView::dragLeaveEvent(QGraphicsSceneDragDropEvent *event) +void KItemListView::dragLeaveEvent(QGraphicsSceneDragDropEvent* event) { QGraphicsWidget::dragLeaveEvent(event); setAutoScroll(false); @@ -1268,8 +1268,12 @@ void KItemListView::slotItemsChanged(const KItemRangeList& itemRanges, updateVisibleGroupHeaders(); doLayout(NoAnimation); } + + QAccessibleTableModelChangeEvent ev(this, QAccessibleTableModelChangeEvent::DataChanged); + ev.setFirstRow(itemRange.index); + ev.setLastRow(itemRange.index + itemRange.count); + QAccessible::updateAccessibility(&ev); } - QAccessible::updateAccessibility(this, 0, QAccessible::TableModelChanged); } void KItemListView::slotGroupsChanged() @@ -1345,7 +1349,10 @@ void KItemListView::slotCurrentChanged(int current, int previous) currentWidget->setCurrent(true); } } - QAccessible::updateAccessibility(this, current+1, QAccessible::Focus); + + QAccessibleEvent ev(this, QAccessible::Focus); + ev.setChild(current); + QAccessible::updateAccessibility(&ev); } void KItemListView::slotSelectionChanged(const KItemSet& current, const KItemSet& previous) @@ -1412,12 +1419,12 @@ void KItemListView::slotRubberBandPosChanged() void KItemListView::slotRubberBandActivationChanged(bool active) { if (active) { - connect(m_rubberBand, SIGNAL(startPositionChanged(QPointF,QPointF)), this, SLOT(slotRubberBandPosChanged())); - connect(m_rubberBand, SIGNAL(endPositionChanged(QPointF,QPointF)), this, SLOT(slotRubberBandPosChanged())); + connect(m_rubberBand, &KItemListRubberBand::startPositionChanged, this, &KItemListView::slotRubberBandPosChanged); + connect(m_rubberBand, &KItemListRubberBand::endPositionChanged, this, &KItemListView::slotRubberBandPosChanged); m_skipAutoScrollForRubberBand = true; } else { - disconnect(m_rubberBand, SIGNAL(startPositionChanged(QPointF,QPointF)), this, SLOT(slotRubberBandPosChanged())); - disconnect(m_rubberBand, SIGNAL(endPositionChanged(QPointF,QPointF)), this, SLOT(slotRubberBandPosChanged())); + disconnect(m_rubberBand, &KItemListRubberBand::startPositionChanged, this, &KItemListView::slotRubberBandPosChanged); + disconnect(m_rubberBand, &KItemListRubberBand::endPositionChanged, this, &KItemListView::slotRubberBandPosChanged); m_skipAutoScrollForRubberBand = false; } @@ -1544,16 +1551,16 @@ void KItemListView::setController(KItemListController* controller) KItemListController* previous = m_controller; if (previous) { KItemListSelectionManager* selectionManager = previous->selectionManager(); - disconnect(selectionManager, SIGNAL(currentChanged(int,int)), this, SLOT(slotCurrentChanged(int,int))); - disconnect(selectionManager, SIGNAL(selectionChanged(KItemSet,KItemSet)), this, SLOT(slotSelectionChanged(KItemSet,KItemSet))); + disconnect(selectionManager, &KItemListSelectionManager::currentChanged, this, &KItemListView::slotCurrentChanged); + disconnect(selectionManager, &KItemListSelectionManager::selectionChanged, this, &KItemListView::slotSelectionChanged); } m_controller = controller; if (controller) { KItemListSelectionManager* selectionManager = controller->selectionManager(); - connect(selectionManager, SIGNAL(currentChanged(int,int)), this, SLOT(slotCurrentChanged(int,int))); - connect(selectionManager, SIGNAL(selectionChanged(KItemSet,KItemSet)), this, SLOT(slotSelectionChanged(KItemSet,KItemSet))); + connect(selectionManager, &KItemListSelectionManager::currentChanged, this, &KItemListView::slotCurrentChanged); + connect(selectionManager, &KItemListSelectionManager::selectionChanged, this, &KItemListView::slotSelectionChanged); } onControllerChanged(controller, previous); @@ -1569,22 +1576,22 @@ void KItemListView::setModel(KItemModelBase* model) KItemModelBase* previous = m_model; if (m_model) { - disconnect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); - disconnect(m_model, SIGNAL(itemsInserted(KItemRangeList)), - this, SLOT(slotItemsInserted(KItemRangeList))); - disconnect(m_model, SIGNAL(itemsRemoved(KItemRangeList)), - this, SLOT(slotItemsRemoved(KItemRangeList))); - disconnect(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)), - this, SLOT(slotItemsMoved(KItemRange,QList<int>))); - disconnect(m_model, SIGNAL(groupsChanged()), - this, SLOT(slotGroupsChanged())); - disconnect(m_model, SIGNAL(groupedSortingChanged(bool)), - this, SLOT(slotGroupedSortingChanged(bool))); - disconnect(m_model, SIGNAL(sortOrderChanged(Qt::SortOrder,Qt::SortOrder)), - this, SLOT(slotSortOrderChanged(Qt::SortOrder,Qt::SortOrder))); - disconnect(m_model, SIGNAL(sortRoleChanged(QByteArray,QByteArray)), - this, SLOT(slotSortRoleChanged(QByteArray,QByteArray))); + disconnect(m_model, &KItemModelBase::itemsChanged, + this, &KItemListView::slotItemsChanged); + disconnect(m_model, &KItemModelBase::itemsInserted, + this, &KItemListView::slotItemsInserted); + disconnect(m_model, &KItemModelBase::itemsRemoved, + this, &KItemListView::slotItemsRemoved); + disconnect(m_model, &KItemModelBase::itemsMoved, + this, &KItemListView::slotItemsMoved); + disconnect(m_model, &KItemModelBase::groupsChanged, + this, &KItemListView::slotGroupsChanged); + disconnect(m_model, &KItemModelBase::groupedSortingChanged, + this, &KItemListView::slotGroupedSortingChanged); + disconnect(m_model, &KItemModelBase::sortOrderChanged, + this, &KItemListView::slotSortOrderChanged); + disconnect(m_model, &KItemModelBase::sortRoleChanged, + this, &KItemListView::slotSortRoleChanged); m_sizeHintResolver->itemsRemoved(KItemRangeList() << KItemRange(0, m_model->count())); } @@ -1594,22 +1601,22 @@ void KItemListView::setModel(KItemModelBase* model) m_grouped = model->groupedSorting(); if (m_model) { - connect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged(KItemRangeList,QSet<QByteArray>))); - connect(m_model, SIGNAL(itemsInserted(KItemRangeList)), - this, SLOT(slotItemsInserted(KItemRangeList))); - connect(m_model, SIGNAL(itemsRemoved(KItemRangeList)), - this, SLOT(slotItemsRemoved(KItemRangeList))); - connect(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)), - this, SLOT(slotItemsMoved(KItemRange,QList<int>))); - connect(m_model, SIGNAL(groupsChanged()), - this, SLOT(slotGroupsChanged())); - connect(m_model, SIGNAL(groupedSortingChanged(bool)), - this, SLOT(slotGroupedSortingChanged(bool))); - connect(m_model, SIGNAL(sortOrderChanged(Qt::SortOrder,Qt::SortOrder)), - this, SLOT(slotSortOrderChanged(Qt::SortOrder,Qt::SortOrder))); - connect(m_model, SIGNAL(sortRoleChanged(QByteArray,QByteArray)), - this, SLOT(slotSortRoleChanged(QByteArray,QByteArray))); + connect(m_model, &KItemModelBase::itemsChanged, + this, &KItemListView::slotItemsChanged); + connect(m_model, &KItemModelBase::itemsInserted, + this, &KItemListView::slotItemsInserted); + connect(m_model, &KItemModelBase::itemsRemoved, + this, &KItemListView::slotItemsRemoved); + connect(m_model, &KItemModelBase::itemsMoved, + this, &KItemListView::slotItemsMoved); + connect(m_model, &KItemModelBase::groupsChanged, + this, &KItemListView::slotGroupsChanged); + connect(m_model, &KItemModelBase::groupedSortingChanged, + this, &KItemListView::slotGroupedSortingChanged); + connect(m_model, &KItemModelBase::sortOrderChanged, + this, &KItemListView::slotSortOrderChanged); + connect(m_model, &KItemModelBase::sortRoleChanged, + this, &KItemListView::slotSortRoleChanged); const int itemCount = m_model->count(); if (itemCount > 0) { @@ -2023,7 +2030,7 @@ void KItemListView::updateGroupHeaderForWidget(KItemListWidget* widget) groupHeader = groupHeaderCreator()->create(this); groupHeader->setParentItem(widget); m_visibleGroups.insert(widget, groupHeader); - connect(widget, SIGNAL(geometryChanged()), this, SLOT(slotGeometryOfGroupHeaderParentChanged())); + connect(widget, &KItemListWidget::geometryChanged, this, &KItemListView::slotGeometryOfGroupHeaderParentChanged); } Q_ASSERT(groupHeader->parentItem() == widget); @@ -2070,7 +2077,7 @@ void KItemListView::recycleGroupHeaderForWidget(KItemListWidget* widget) header->setParentItem(0); groupHeaderCreator()->recycle(header); m_visibleGroups.remove(widget); - disconnect(widget, SIGNAL(geometryChanged()), this, SLOT(slotGeometryOfGroupHeaderParentChanged())); + disconnect(widget, &KItemListWidget::geometryChanged, this, &KItemListView::slotGeometryOfGroupHeaderParentChanged); } } @@ -2624,8 +2631,8 @@ void KItemListView::disconnectRoleEditingSignals(int index) return; } - widget->disconnect(SIGNAL(roleEditingCanceled(int,QByteArray,QVariant)), this); - widget->disconnect(SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), this); + disconnect(widget, &KItemListWidget::roleEditingCanceled, this, nullptr); + disconnect(widget, &KItemListWidget::roleEditingFinished, this, nullptr); } int KItemListView::calculateAutoScrollingIncrement(int pos, int range, int oldInc) @@ -2719,4 +2726,3 @@ void KItemListGroupHeaderCreatorBase::recycle(KItemListGroupHeader* header) pushRecycleableWidget(header); } -#include "kitemlistview.moc" diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h index cf6f27c03..c8054a691 100644 --- a/src/kitemviews/kitemlistview.h +++ b/src/kitemviews/kitemlistview.h @@ -44,7 +44,6 @@ class KItemListViewLayouter; class KItemListWidget; class KItemListWidgetInformant; class KItemListWidgetCreatorBase; -class KItemListViewCreatorBase; class QTimer; /** diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index d9ddd58f8..8efa60fff 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -27,7 +27,7 @@ #include "kitemlistview.h" #include "private/kitemlistviewlayouter.h" -#include <QtGui/qaccessible2.h> +#include <QtGui/qaccessible.h> #include <qgraphicsscene.h> #include <qgraphicsview.h> @@ -40,35 +40,52 @@ KItemListView* KItemListViewAccessible::view() const } KItemListViewAccessible::KItemListViewAccessible(KItemListView* view_) : - QAccessibleObjectEx(view_) + QAccessibleObject(view_) { Q_ASSERT(view()); + m_cells.resize(childCount()); } -void KItemListViewAccessible::modelReset() +KItemListViewAccessible::~KItemListViewAccessible() { + foreach (QAccessibleInterface* child, m_cells) { + if (child) { + QAccessible::Id childId = QAccessible::uniqueId(child); + QAccessible::deleteAccessibleInterface(childId); + } + } } -QAccessible::Role KItemListViewAccessible::cellRole() const +void* KItemListViewAccessible::interface_cast(QAccessible::InterfaceType type) { - return QAccessible::Cell; + if (type == QAccessible::TableInterface) { + return static_cast<QAccessibleTableInterface*>(this); + } + return Q_NULLPTR; } -QAccessibleTable2CellInterface* KItemListViewAccessible::cell(int index) const +void KItemListViewAccessible::modelReset() +{ +} + +QAccessibleInterface* KItemListViewAccessible::cell(int index) const { if (index < 0 || index >= view()->model()->count()) { return 0; - } else { - return new KItemListAccessibleCell(view(), index); } -} -QVariant KItemListViewAccessible::invokeMethodEx(Method, int, const QVariantList&) -{ - return QVariant(); + if (m_cells.size() < index - 1) + m_cells.resize(childCount()); + + QAccessibleInterface* child = m_cells.at(index); + if (!child) { + child = new KItemListAccessibleCell(view(), index); + QAccessible::registerAccessibleInterface(child); + } + return child; } -QAccessibleTable2CellInterface* KItemListViewAccessible::cellAt(int row, int column) const +QAccessibleInterface* KItemListViewAccessible::cellAt(int row, int column) const { return cell(columnCount() * row + column); } @@ -127,9 +144,9 @@ QString KItemListViewAccessible::rowDescription(int) const return QString(); } -QList<QAccessibleTable2CellInterface*> KItemListViewAccessible::selectedCells() const +QList<QAccessibleInterface*> KItemListViewAccessible::selectedCells() const { - QList<QAccessibleTable2CellInterface*> cells; + QList<QAccessibleInterface*> cells; Q_FOREACH (int index, view()->controller()->selectionManager()->selectedItems()) { cells.append(cell(index)); } @@ -181,42 +198,31 @@ bool KItemListViewAccessible::unselectColumn(int) return true; } -QAccessible2::TableModelChange KItemListViewAccessible::modelChange() const +void KItemListViewAccessible::modelChange(QAccessibleTableModelChangeEvent* /*event*/) +{} + +QAccessible::Role KItemListViewAccessible::role() const { - QAccessible2::TableModelChange change; - change.lastRow = rowCount(); - change.lastColumn = columnCount(); - return change; + return QAccessible::Table; } -QAccessible::Role KItemListViewAccessible::role(int child) const +QAccessible::State KItemListViewAccessible::state() const { - Q_ASSERT(child >= 0); - - if (child > 0) { - return QAccessible::Cell; - } else { - return QAccessible::Table; - } + QAccessible::State s; + return s; } -QAccessible::State KItemListViewAccessible::state(int child) const +QAccessibleInterface* KItemListViewAccessible::childAt(int x, int y) const { - if (child) { - QAccessibleInterface* interface = 0; - navigate(Child, child, &interface); - if (interface) { - return interface->state(0); - } - } - - return QAccessible::Normal | QAccessible::HasInvokeExtension; + const QPointF point = QPointF(x, y); + int itemIndex = view()->itemAt(view()->mapFromScene(point)); + return child(itemIndex); } -int KItemListViewAccessible::childAt(int x, int y) const +QAccessibleInterface* KItemListViewAccessible::parent() const { - const QPointF point = QPointF(x,y); - return view()->itemAt(view()->mapFromScene(point)); + // FIXME: return KItemListContainerAccessible here + return Q_NULLPTR; } int KItemListViewAccessible::childCount() const @@ -227,18 +233,16 @@ int KItemListViewAccessible::childCount() const int KItemListViewAccessible::indexOfChild(const QAccessibleInterface* interface) const { const KItemListAccessibleCell* widget = static_cast<const KItemListAccessibleCell*>(interface); - return widget->index() + 1; + return widget->index(); } -QString KItemListViewAccessible::text(Text, int child) const +QString KItemListViewAccessible::text(QAccessible::Text) const { - Q_ASSERT(child == 0); return QString(); } -QRect KItemListViewAccessible::rect(int child) const +QRect KItemListViewAccessible::rect() const { - Q_UNUSED(child) if (!view()->isVisible()) { return QRect(); } @@ -253,50 +257,14 @@ QRect KItemListViewAccessible::rect(int child) const } } -int KItemListViewAccessible::navigate(RelationFlag relation, int index, QAccessibleInterface** interface) const +QAccessibleInterface* KItemListViewAccessible::child(int index) const { - *interface = 0; - - switch (relation) { - case QAccessible::Child: - Q_ASSERT(index > 0); - *interface = cell(index - 1); - if (*interface) { - return 0; - } - break; - - default: - break; + if (index >= 0 && index < childCount()) { + return cell(index); } - - return -1; + return Q_NULLPTR; } -QAccessible::Relation KItemListViewAccessible::relationTo(int, const QAccessibleInterface*, int) const -{ - return QAccessible::Unrelated; -} - -#ifndef QT_NO_ACTION - -int KItemListViewAccessible::userActionCount(int) const -{ - return 0; -} - -QString KItemListViewAccessible::actionText(int, Text, int) const -{ - return QString(); -} - -bool KItemListViewAccessible::doAction(int, int, const QVariantList&) -{ - return false; -} - -#endif - // Table Cell KItemListAccessibleCell::KItemListAccessibleCell(KItemListView* view, int index) : @@ -306,6 +274,14 @@ KItemListAccessibleCell::KItemListAccessibleCell(KItemListView* view, int index) Q_ASSERT(index >= 0 && index < view->model()->count()); } +void* KItemListAccessibleCell::interface_cast(QAccessible::InterfaceType type) +{ + if (type == QAccessible::TableCellInterface) { + return static_cast<QAccessibleTableCellInterface*>(this); + } + return Q_NULLPTR; +} + int KItemListAccessibleCell::columnExtent() const { return 1; @@ -341,52 +317,39 @@ bool KItemListAccessibleCell::isSelected() const return m_view->controller()->selectionManager()->isSelected(m_index); } -void KItemListAccessibleCell::rowColumnExtents(int* row, int* column, int* rowExtents, int* columnExtents, bool* selected) const +QAccessibleInterface* KItemListAccessibleCell::table() const { - const KItemListViewLayouter* layouter = m_view->m_layouter; - *row = layouter->itemRow(m_index); - *column = layouter->itemColumn(m_index); - *rowExtents = 1; - *columnExtents = 1; - *selected = isSelected(); + return QAccessible::queryAccessibleInterface(m_view); } -QAccessibleTable2Interface* KItemListAccessibleCell::table() const +QAccessible::Role KItemListAccessibleCell::role() const { - return QAccessible::queryAccessibleInterface(m_view)->table2Interface(); -} - -QAccessible::Role KItemListAccessibleCell::role(int child) const -{ - Q_ASSERT(child == 0); return QAccessible::Cell; } -QAccessible::State KItemListAccessibleCell::state(int child) const +QAccessible::State KItemListAccessibleCell::state() const { - Q_ASSERT(child == 0); - QAccessible::State state = Normal; + QAccessible::State state; + state.selectable = true; if (isSelected()) { - state |= Selected; + state.selected = true; } + state.focusable = true; if (m_view->controller()->selectionManager()->currentItem() == m_index) { - state |= Focused; + state.focused = true; } - state |= Selectable; - state |= Focusable; - if (m_view->controller()->selectionBehavior() == KItemListController::MultiSelection) { - state |= MultiSelectable; + state.multiSelectable = true; } if (m_view->model()->isExpandable(m_index)) { if (m_view->model()->isExpanded(m_index)) { - state |= Expanded; + state.expanded = true; } else { - state |= Collapsed; + state.collapsed = true; } } @@ -398,7 +361,7 @@ bool KItemListAccessibleCell::isExpandable() const return m_view->model()->isExpandable(m_index); } -QRect KItemListAccessibleCell::rect(int) const +QRect KItemListAccessibleCell::rect() const { QRect rect = m_view->itemRect(m_index).toRect(); @@ -411,13 +374,9 @@ QRect KItemListAccessibleCell::rect(int) const return rect; } -QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const +QString KItemListAccessibleCell::text(QAccessible::Text t) const { - Q_ASSERT(child == 0); - Q_UNUSED(child) - switch (t) { - case QAccessible::Value: case QAccessible::Name: { const QHash<QByteArray, QVariant> data = m_view->model()->data(m_index); return data["text"].toString(); @@ -430,9 +389,13 @@ QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const return QString(); } -void KItemListAccessibleCell::setText(QAccessible::Text, int child, const QString&) +void KItemListAccessibleCell::setText(QAccessible::Text, const QString&) { - Q_ASSERT(child == 0); +} + +QAccessibleInterface* KItemListAccessibleCell::child(int) const +{ + return Q_NULLPTR; } bool KItemListAccessibleCell::isValid() const @@ -440,9 +403,9 @@ bool KItemListAccessibleCell::isValid() const return m_view && (m_index >= 0) && (m_index < m_view->model()->count()); } -int KItemListAccessibleCell::childAt(int, int) const +QAccessibleInterface* KItemListAccessibleCell::childAt(int, int) const { - return 0; + return Q_NULLPTR; } int KItemListAccessibleCell::childCount() const @@ -456,43 +419,11 @@ int KItemListAccessibleCell::indexOfChild(const QAccessibleInterface* child) con return -1; } -int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessibleInterface** interface) const -{ - if (relation == Ancestor && index == 1) { - *interface = new KItemListViewAccessible(m_view); - return 0; - } - - *interface = 0; - return -1; -} - -QAccessible::Relation KItemListAccessibleCell::relationTo(int child, const QAccessibleInterface* , int otherChild) const -{ - Q_ASSERT(child == 0); - Q_ASSERT(otherChild == 0); - return QAccessible::Unrelated; -} - -#ifndef QT_NO_ACTION - -int KItemListAccessibleCell::userActionCount(int) const +QAccessibleInterface* KItemListAccessibleCell::parent() const { - return 0; -} - -QString KItemListAccessibleCell::actionText(int, Text, int) const -{ - return QString(); + return QAccessible::queryAccessibleInterface(m_view); } -bool KItemListAccessibleCell::doAction(int, int, const QVariantList&) -{ - return false; -} - -#endif - int KItemListAccessibleCell::index() const { return m_index; @@ -505,7 +436,7 @@ QObject* KItemListAccessibleCell::object() const // Container Interface KItemListContainerAccessible::KItemListContainerAccessible(KItemListContainer* container) : - QAccessibleWidgetEx(container) + QAccessibleWidget(container) { } @@ -521,20 +452,17 @@ int KItemListContainerAccessible::childCount() const int KItemListContainerAccessible::indexOfChild(const QAccessibleInterface* child) const { if (child->object() == container()->controller()->view()) { - return 1; - } else { - return -1; + return 0; } + return -1; } -int KItemListContainerAccessible::navigate(QAccessible::RelationFlag relation, int index, QAccessibleInterface** target) const +QAccessibleInterface* KItemListContainerAccessible::child(int index) const { - if (relation == QAccessible::Child) { - *target = new KItemListViewAccessible(container()->controller()->view()); - return 0; - } else { - return QAccessibleWidgetEx::navigate(relation, index, target); + if (index == 0) { + return QAccessible::queryAccessibleInterface(container()->controller()->view()); } + return Q_NULLPTR; } const KItemListContainer* KItemListContainerAccessible::container() const diff --git a/src/kitemviews/kitemlistviewaccessible.h b/src/kitemviews/kitemlistviewaccessible.h index c2213cd67..674f1d1af 100644 --- a/src/kitemviews/kitemlistviewaccessible.h +++ b/src/kitemviews/kitemlistviewaccessible.h @@ -22,118 +22,104 @@ #ifndef QT_NO_ACCESSIBILITY +#include <libdolphin_export.h> + #include <QtCore/qpointer.h> #include <QtGui/qaccessible.h> -#include <QtGui/qaccessible2.h> -#include <QtGui/qaccessiblewidget.h> #include <QtGui/qaccessibleobject.h> +#include <QtWidgets/qaccessiblewidget.h> class KItemListView; class KItemListContainer; -class KItemListViewAccessible: public QAccessibleTable2Interface, public QAccessibleObjectEx +class LIBDOLPHINPRIVATE_EXPORT KItemListViewAccessible: public QAccessibleObject, public QAccessibleTableInterface { - Q_ACCESSIBLE_OBJECT - public: explicit KItemListViewAccessible(KItemListView* view); + ~KItemListViewAccessible(); - Role role(int child) const; - State state(int child) const; - QString text(Text t, int child) const; - QRect rect(int child) const; - - int childAt(int x, int y) const; - int childCount() const; - int indexOfChild(const QAccessibleInterface*) const; + void* interface_cast(QAccessible::InterfaceType type) Q_DECL_OVERRIDE; - int navigate(RelationFlag relation, int index, QAccessibleInterface** interface) const; - Relation relationTo(int child, const QAccessibleInterface* other, int otherChild) const; + QAccessible::Role role() const Q_DECL_OVERRIDE; + QAccessible::State state() const Q_DECL_OVERRIDE; + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + QRect rect() const Q_DECL_OVERRIDE; -#ifndef QT_NO_ACTION - int userActionCount(int child) const; - QString actionText(int action, Text t, int child) const; - bool doAction(int action, int child, const QVariantList& params); -#endif - QVariant invokeMethodEx(Method, int, const QVariantList&); + QAccessibleInterface* child(int index) const Q_DECL_OVERRIDE; + int childCount() const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface*) const Q_DECL_OVERRIDE; + QAccessibleInterface* childAt(int x, int y) const Q_DECL_OVERRIDE; + QAccessibleInterface* parent() const Q_DECL_OVERRIDE; - // Table2 interface - virtual QAccessibleTable2CellInterface* cellAt(int row, int column) const; - virtual QAccessibleInterface* caption() const; - virtual QAccessibleInterface* summary() const; - virtual QString columnDescription(int column) const; - virtual QString rowDescription(int row) const; - virtual int columnCount() const; - virtual int rowCount() const; - virtual QAccessible2::TableModelChange modelChange() const; - virtual void rowsInserted(const QModelIndex&, int, int) {} - virtual void rowsRemoved(const QModelIndex&, int, int) {} - virtual void columnsInserted(const QModelIndex&, int, int) {} - virtual void columnsRemoved(const QModelIndex&, int, int) {} - virtual void rowsMoved(const QModelIndex&, int, int, const QModelIndex&, int) {} - virtual void columnsMoved(const QModelIndex&, int, int, const QModelIndex&, int) {} + // Table interface + virtual QAccessibleInterface* cellAt(int row, int column) const Q_DECL_OVERRIDE; + virtual QAccessibleInterface* caption() const Q_DECL_OVERRIDE; + virtual QAccessibleInterface* summary() const Q_DECL_OVERRIDE; + virtual QString columnDescription(int column) const Q_DECL_OVERRIDE; + virtual QString rowDescription(int row) const Q_DECL_OVERRIDE; + virtual int columnCount() const Q_DECL_OVERRIDE; + virtual int rowCount() const Q_DECL_OVERRIDE; // Selection - virtual int selectedCellCount() const; - virtual int selectedColumnCount() const; - virtual int selectedRowCount() const; - virtual QList<QAccessibleTable2CellInterface*> selectedCells() const; - virtual QList<int> selectedColumns() const; - virtual QList<int> selectedRows() const; - virtual bool isColumnSelected(int column) const; - virtual bool isRowSelected(int row) const; - virtual bool selectRow(int row); - virtual bool selectColumn(int column); - virtual bool unselectRow(int row); - virtual bool unselectColumn(int column); + virtual int selectedCellCount() const Q_DECL_OVERRIDE; + virtual int selectedColumnCount() const Q_DECL_OVERRIDE; + virtual int selectedRowCount() const Q_DECL_OVERRIDE; + virtual QList<QAccessibleInterface*> selectedCells() const Q_DECL_OVERRIDE; + virtual QList<int> selectedColumns() const Q_DECL_OVERRIDE; + virtual QList<int> selectedRows() const Q_DECL_OVERRIDE; + virtual bool isColumnSelected(int column) const Q_DECL_OVERRIDE; + virtual bool isRowSelected(int row) const Q_DECL_OVERRIDE; + virtual bool selectRow(int row) Q_DECL_OVERRIDE; + virtual bool selectColumn(int column) Q_DECL_OVERRIDE; + virtual bool unselectRow(int row) Q_DECL_OVERRIDE; + virtual bool unselectColumn(int column) Q_DECL_OVERRIDE; + virtual void modelChange(QAccessibleTableModelChangeEvent*) Q_DECL_OVERRIDE; KItemListView* view() const; protected: virtual void modelReset(); /** - * Create an QAccessibleTable2CellInterface representing the table + * Create an QAccessibleTableCellInterface representing the table * cell at the @index. Index is 0-based. */ - inline QAccessibleTable2CellInterface* cell(int index) const; - inline QAccessible::Role cellRole() const; + inline QAccessibleInterface* cell(int index) const; + +private: + mutable QVector<QAccessibleInterface*> m_cells; }; -class KItemListAccessibleCell: public QAccessibleTable2CellInterface +class LIBDOLPHINPRIVATE_EXPORT KItemListAccessibleCell: public QAccessibleInterface, public QAccessibleTableCellInterface { public: KItemListAccessibleCell(KItemListView* view, int m_index); - QObject* object() const; - Role role(int) const; - State state(int) const; - QRect rect(int) const; - bool isValid() const; - int childAt(int, int) const; - int childCount() const; - int indexOfChild(const QAccessibleInterface*) const; - QString text(Text t, int child) const; - void setText(Text t, int child, const QString& text); - int navigate(RelationFlag relation, int m_index, QAccessibleInterface** interface) const; - Relation relationTo(int child, const QAccessibleInterface* other, int otherChild) const; - bool isExpandable() const; + void* interface_cast(QAccessible::InterfaceType type) Q_DECL_OVERRIDE; + QObject* object() const Q_DECL_OVERRIDE; + bool isValid() const Q_DECL_OVERRIDE; + QAccessible::Role role() const Q_DECL_OVERRIDE; + QAccessible::State state() const Q_DECL_OVERRIDE; + QRect rect() const Q_DECL_OVERRIDE; + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + void setText(QAccessible::Text t, const QString& text) Q_DECL_OVERRIDE; -#ifndef QT_NO_ACTION - int userActionCount(int child) const; - QString actionText(int action, Text t, int child) const; - bool doAction(int action, int child, const QVariantList& params); -#endif + QAccessibleInterface* child(int index) const Q_DECL_OVERRIDE; + int childCount() const Q_DECL_OVERRIDE; + QAccessibleInterface* childAt(int x, int y) const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface*) const Q_DECL_OVERRIDE; + + QAccessibleInterface* parent() const Q_DECL_OVERRIDE; + bool isExpandable() const; // Cell Interface - virtual int columnExtent() const; - virtual QList<QAccessibleInterface*> columnHeaderCells() const; - virtual int columnIndex() const; - virtual int rowExtent() const; - virtual QList<QAccessibleInterface*> rowHeaderCells() const; - virtual int rowIndex() const; - virtual bool isSelected() const; - virtual void rowColumnExtents(int* row, int* column, int* rowExtents, int* columnExtents, bool* selected) const; - virtual QAccessibleTable2Interface* table() const; + virtual int columnExtent() const Q_DECL_OVERRIDE; + virtual QList<QAccessibleInterface*> columnHeaderCells() const Q_DECL_OVERRIDE; + virtual int columnIndex() const Q_DECL_OVERRIDE; + virtual int rowExtent() const Q_DECL_OVERRIDE; + virtual QList<QAccessibleInterface*> rowHeaderCells() const Q_DECL_OVERRIDE; + virtual int rowIndex() const Q_DECL_OVERRIDE; + virtual bool isSelected() const Q_DECL_OVERRIDE; + virtual QAccessibleInterface* table() const Q_DECL_OVERRIDE; inline int index() const; @@ -142,17 +128,15 @@ private: int m_index; }; -class KItemListContainerAccessible : public QAccessibleWidgetEx +class LIBDOLPHINPRIVATE_EXPORT KItemListContainerAccessible : public QAccessibleWidget { - Q_ACCESSIBLE_OBJECT - public: explicit KItemListContainerAccessible(KItemListContainer* container); virtual ~KItemListContainerAccessible(); - int childCount() const; - int indexOfChild(const QAccessibleInterface* child) const; - int navigate(RelationFlag relation, int entry, QAccessibleInterface** target) const; + QAccessibleInterface* child(int index) const Q_DECL_OVERRIDE; + int childCount() const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface* child) const Q_DECL_OVERRIDE; private: const KItemListContainer* container() const; diff --git a/src/kitemviews/kitemlistwidget.cpp b/src/kitemviews/kitemlistwidget.cpp index e7d2951b9..df19d49b1 100644 --- a/src/kitemviews/kitemlistwidget.cpp +++ b/src/kitemviews/kitemlistwidget.cpp @@ -252,7 +252,7 @@ void KItemListWidget::setHovered(bool hovered) m_hoverAnimation = new QPropertyAnimation(this, "hoverOpacity", this); const int duration = (KGlobalSettings::graphicEffectsLevel() == KGlobalSettings::NoEffects) ? 1 : 200; m_hoverAnimation->setDuration(duration); - connect(m_hoverAnimation, SIGNAL(finished()), this, SLOT(slotHoverAnimationFinished())); + connect(m_hoverAnimation, &QPropertyAnimation::finished, this, &KItemListWidget::slotHoverAnimationFinished); } m_hoverAnimation->stop(); @@ -526,4 +526,3 @@ void KItemListWidget::drawItemStyleOption(QPainter* painter, QWidget* widget, QS widget->style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &viewItemOption, painter, widget); } -#include "kitemlistwidget.moc" diff --git a/src/kitemviews/kitemmodelbase.cpp b/src/kitemviews/kitemmodelbase.cpp index 4312640e4..bf41b1c84 100644 --- a/src/kitemviews/kitemmodelbase.cpp +++ b/src/kitemviews/kitemmodelbase.cpp @@ -159,4 +159,3 @@ void KItemModelBase::onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder pre Q_UNUSED(previous); } -#include "kitemmodelbase.moc" diff --git a/src/kitemviews/kstandarditemlistgroupheader.cpp b/src/kitemviews/kstandarditemlistgroupheader.cpp index 1e23c0a56..99457c9b8 100644 --- a/src/kitemviews/kstandarditemlistgroupheader.cpp +++ b/src/kitemviews/kstandarditemlistgroupheader.cpp @@ -122,4 +122,3 @@ void KStandardItemListGroupHeader::updateCache() } } -#include "kstandarditemlistgroupheader.moc" diff --git a/src/kitemviews/kstandarditemlistview.cpp b/src/kitemviews/kstandarditemlistview.cpp index 135cd0b7d..1c07d5327 100644 --- a/src/kitemviews/kstandarditemlistview.cpp +++ b/src/kitemviews/kstandarditemlistview.cpp @@ -179,4 +179,3 @@ void KStandardItemListView::updateLayoutOfVisibleItems() } } -#include "kstandarditemlistview.moc" diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp index 6407efc22..eaed056e5 100644 --- a/src/kitemviews/kstandarditemlistwidget.cpp +++ b/src/kitemviews/kstandarditemlistwidget.cpp @@ -22,7 +22,7 @@ #include "kfileitemlistview.h" #include "kfileitemmodel.h" -#include <KIcon> +#include <QIcon> #include <KIconEffect> #include <KIconLoader> #include <KLocale> @@ -758,10 +758,10 @@ void KStandardItemListWidget::editedRoleChanged(const QByteArray& current, const if (m_roleEditor) { emit roleEditingCanceled(index(), current, data().value(current)); - disconnect(m_roleEditor, SIGNAL(roleEditingCanceled(QByteArray,QVariant)), - this, SLOT(slotRoleEditingCanceled(QByteArray,QVariant))); - disconnect(m_roleEditor, SIGNAL(roleEditingFinished(QByteArray,QVariant)), - this, SLOT(slotRoleEditingFinished(QByteArray,QVariant))); + disconnect(m_roleEditor, &KItemListRoleEditor::roleEditingCanceled, + this, &KStandardItemListWidget::slotRoleEditingCanceled); + disconnect(m_roleEditor, &KItemListRoleEditor::roleEditingFinished, + this, &KStandardItemListWidget::slotRoleEditingFinished); if (m_oldRoleEditor) { m_oldRoleEditor->deleteLater(); @@ -796,10 +796,10 @@ void KStandardItemListWidget::editedRoleChanged(const QByteArray& current, const m_roleEditor->setTextCursor(cursor); } - connect(m_roleEditor, SIGNAL(roleEditingCanceled(QByteArray,QVariant)), - this, SLOT(slotRoleEditingCanceled(QByteArray,QVariant))); - connect(m_roleEditor, SIGNAL(roleEditingFinished(QByteArray,QVariant)), - this, SLOT(slotRoleEditingFinished(QByteArray,QVariant))); + connect(m_roleEditor, &KItemListRoleEditor::roleEditingCanceled, + this, &KStandardItemListWidget::slotRoleEditingCanceled); + connect(m_roleEditor, &KItemListRoleEditor::roleEditingFinished, + this, &KStandardItemListWidget::slotRoleEditingFinished); // Adjust the geometry of the editor QRectF rect = roleEditingRect(current); @@ -836,14 +836,14 @@ void KStandardItemListWidget::showEvent(QShowEvent* event) const KUrl itemUrl = data().value("url").value<KUrl>(); m_isCut = clipboard->isCut(itemUrl); - connect(clipboard, SIGNAL(cutItemsChanged()), - this, SLOT(slotCutItemsChanged())); + connect(clipboard, &KFileItemClipboard::cutItemsChanged, + this, &KStandardItemListWidget::slotCutItemsChanged); } void KStandardItemListWidget::hideEvent(QHideEvent* event) { - disconnect(KFileItemClipboard::instance(), SIGNAL(cutItemsChanged()), - this, SLOT(slotCutItemsChanged())); + disconnect(KFileItemClipboard::instance(), &KFileItemClipboard::cutItemsChanged, + this, &KStandardItemListWidget::slotCutItemsChanged); KItemListWidget::hideEvent(event); } @@ -1415,10 +1415,10 @@ QRectF KStandardItemListWidget::roleEditingRect(const QByteArray& role) const void KStandardItemListWidget::closeRoleEditor() { - disconnect(m_roleEditor, SIGNAL(roleEditingCanceled(QByteArray,QVariant)), - this, SLOT(slotRoleEditingCanceled(QByteArray,QVariant))); - disconnect(m_roleEditor, SIGNAL(roleEditingFinished(QByteArray,QVariant)), - this, SLOT(slotRoleEditingFinished(QByteArray,QVariant))); + disconnect(m_roleEditor, &KItemListRoleEditor::roleEditingCanceled, + this, &KStandardItemListWidget::slotRoleEditingCanceled); + disconnect(m_roleEditor, &KItemListRoleEditor::roleEditingFinished, + this, &KStandardItemListWidget::slotRoleEditingFinished); if (m_roleEditor->hasFocus()) { // If the editing was not ended by a FocusOut event, we have @@ -1440,7 +1440,7 @@ QPixmap KStandardItemListWidget::pixmapForIcon(const QString& name, const QStrin QPixmap pixmap; if (!QPixmapCache::find(key, pixmap)) { - const KIcon icon(name); + const QIcon icon = QIcon::fromTheme(name); int requestedSize; if (size <= KIconLoader::SizeSmall) { @@ -1497,4 +1497,3 @@ qreal KStandardItemListWidget::columnPadding(const KItemListStyleOption& option) return option.padding * 6; } -#include "kstandarditemlistwidget.moc" diff --git a/src/kitemviews/kstandarditemmodel.cpp b/src/kitemviews/kstandarditemmodel.cpp index e8c1b6204..060440aec 100644 --- a/src/kitemviews/kstandarditemmodel.cpp +++ b/src/kitemviews/kstandarditemmodel.cpp @@ -237,5 +237,3 @@ void KStandardItemModel::onItemRemoved(int index, KStandardItem* removedItem) Q_UNUSED(removedItem); } - -#include "kstandarditemmodel.moc" diff --git a/src/kitemviews/private/kbaloorolesprovider.cpp b/src/kitemviews/private/kbaloorolesprovider.cpp index c0ae0c544..74f789e23 100644 --- a/src/kitemviews/private/kbaloorolesprovider.cpp +++ b/src/kitemviews/private/kbaloorolesprovider.cpp @@ -24,8 +24,9 @@ #include <KGlobal> #include <KLocale> -#include <baloo/file.h> -#include <kfilemetadata/propertyinfo.h> +#include <Baloo/File> +#include <KFileMetaData/PropertyInfo> +#include <KFileMetaData/UserMetaData> #include <QTime> #include <QMap> @@ -99,14 +100,15 @@ QHash<QByteArray, QVariant> KBalooRolesProvider::roleValues(const Baloo::File& f } } + KFileMetaData::UserMetaData md(file.path()); if (roles.contains("tags")) { - values.insert("tags", tagsFromValues(file.tags())); + values.insert("tags", tagsFromValues(md.tags())); } if (roles.contains("rating")) { - values.insert("rating", QString::number(file.rating())); + values.insert("rating", QString::number(md.rating())); } if (roles.contains("comment")) { - values.insert("comment", file.userComment()); + values.insert("comment", md.userComment()); } return values; diff --git a/src/kitemviews/private/kdirectorycontentscounter.cpp b/src/kitemviews/private/kdirectorycontentscounter.cpp index 7d1e76999..cd448e233 100644 --- a/src/kitemviews/private/kdirectorycontentscounter.cpp +++ b/src/kitemviews/private/kdirectorycontentscounter.cpp @@ -35,8 +35,8 @@ KDirectoryContentsCounter::KDirectoryContentsCounter(KFileItemModel* model, QObj m_dirWatcher(0), m_watchedDirs() { - connect(m_model, SIGNAL(itemsRemoved(KItemRangeList)), - this, SLOT(slotItemsRemoved())); + connect(m_model, &KFileItemModel::itemsRemoved, + this, &KDirectoryContentsCounter::slotItemsRemoved); if (!m_workerThread) { m_workerThread = new QThread(); @@ -47,13 +47,13 @@ KDirectoryContentsCounter::KDirectoryContentsCounter(KFileItemModel* model, QObj m_worker->moveToThread(m_workerThread); ++m_workersCount; - connect(this, SIGNAL(requestDirectoryContentsCount(QString,KDirectoryContentsCounterWorker::Options)), - m_worker, SLOT(countDirectoryContents(QString,KDirectoryContentsCounterWorker::Options))); - connect(m_worker, SIGNAL(result(QString,int)), - this, SLOT(slotResult(QString,int))); + connect(this, &KDirectoryContentsCounter::requestDirectoryContentsCount, + m_worker, &KDirectoryContentsCounterWorker::countDirectoryContents); + connect(m_worker, &KDirectoryContentsCounterWorker::result, + this, &KDirectoryContentsCounter::slotResult); m_dirWatcher = new KDirWatch(this); - connect(m_dirWatcher, SIGNAL(dirty(QString)), this, SLOT(slotDirWatchDirty(QString))); + connect(m_dirWatcher, &KDirWatch::dirty, this, &KDirectoryContentsCounter::slotDirWatchDirty); } KDirectoryContentsCounter::~KDirectoryContentsCounter() diff --git a/src/kitemviews/private/kfileitemclipboard.cpp b/src/kitemviews/private/kfileitemclipboard.cpp index 0dcc81f4f..1fb147716 100644 --- a/src/kitemviews/private/kfileitemclipboard.cpp +++ b/src/kitemviews/private/kfileitemclipboard.cpp @@ -79,8 +79,7 @@ KFileItemClipboard::KFileItemClipboard() : { updateCutItems(); - connect(QApplication::clipboard(), SIGNAL(dataChanged()), - this, SLOT(updateCutItems())); + connect(QApplication::clipboard(), &QClipboard::dataChanged, + this, &KFileItemClipboard::updateCutItems); } -#include "kfileitemclipboard.moc" diff --git a/src/kitemviews/private/kfileitemmodeldirlister.cpp b/src/kitemviews/private/kfileitemmodeldirlister.cpp index 3d36386a9..9dfd17d8e 100644 --- a/src/kitemviews/private/kfileitemmodeldirlister.cpp +++ b/src/kitemviews/private/kfileitemmodeldirlister.cpp @@ -45,4 +45,3 @@ void KFileItemModelDirLister::handleError(KIO::Job* job) } } -#include "kfileitemmodeldirlister.moc" diff --git a/src/kitemviews/private/kfileitemmodeldirlister.h b/src/kitemviews/private/kfileitemmodeldirlister.h index 688ee9c5b..da01d20bd 100644 --- a/src/kitemviews/private/kfileitemmodeldirlister.h +++ b/src/kitemviews/private/kfileitemmodeldirlister.h @@ -22,6 +22,7 @@ #include <libdolphin_export.h> #include <KDirLister> +#include <KUrl> /** * @brief Extends the class KDirLister by emitting a signal when an diff --git a/src/kitemviews/private/kfileitemmodelsortalgorithm.h b/src/kitemviews/private/kfileitemmodelsortalgorithm.h index 1d5689432..3c875ce5a 100644 --- a/src/kitemviews/private/kfileitemmodelsortalgorithm.h +++ b/src/kitemviews/private/kfileitemmodelsortalgorithm.h @@ -23,6 +23,7 @@ #define KFILEITEMMODELSORTALGORITHM_H #include <QtCore> +#include <QtConcurrent/QtConcurrent> #include <algorithm> diff --git a/src/kitemviews/private/kitemlistheaderwidget.cpp b/src/kitemviews/private/kitemlistheaderwidget.cpp index 1f210ab5a..6b6530fd2 100644 --- a/src/kitemviews/private/kitemlistheaderwidget.cpp +++ b/src/kitemviews/private/kitemlistheaderwidget.cpp @@ -19,8 +19,7 @@ #include "kitemlistheaderwidget.h" -#include <KAction> -#include <KMenu> +#include <QMenu> #include <kitemviews/kitemmodelbase.h> #include <QApplication> @@ -62,19 +61,19 @@ void KItemListHeaderWidget::setModel(KItemModelBase* model) } if (m_model) { - disconnect(m_model, SIGNAL(sortRoleChanged(QByteArray,QByteArray)), - this, SLOT(slotSortRoleChanged(QByteArray,QByteArray))); - disconnect(m_model, SIGNAL(sortOrderChanged(Qt::SortOrder,Qt::SortOrder)), - this, SLOT(slotSortOrderChanged(Qt::SortOrder,Qt::SortOrder))); + disconnect(m_model, &KItemModelBase::sortRoleChanged, + this, &KItemListHeaderWidget::slotSortRoleChanged); + disconnect(m_model, &KItemModelBase::sortOrderChanged, + this, &KItemListHeaderWidget::slotSortOrderChanged); } m_model = model; if (m_model) { - connect(m_model, SIGNAL(sortRoleChanged(QByteArray,QByteArray)), - this, SLOT(slotSortRoleChanged(QByteArray,QByteArray))); - connect(m_model, SIGNAL(sortOrderChanged(Qt::SortOrder,Qt::SortOrder)), - this, SLOT(slotSortOrderChanged(Qt::SortOrder,Qt::SortOrder))); + connect(m_model, &KItemModelBase::sortRoleChanged, + this, &KItemListHeaderWidget::slotSortRoleChanged); + connect(m_model, &KItemModelBase::sortOrderChanged, + this, &KItemListHeaderWidget::slotSortOrderChanged); } } @@ -569,4 +568,3 @@ qreal KItemListHeaderWidget::roleXPosition(const QByteArray& role) const return -1; } -#include "kitemlistheaderwidget.moc" diff --git a/src/kitemviews/private/kitemlistroleeditor.cpp b/src/kitemviews/private/kitemlistroleeditor.cpp index 0a48f1ba0..6e7e89c17 100644 --- a/src/kitemviews/private/kitemlistroleeditor.cpp +++ b/src/kitemviews/private/kitemlistroleeditor.cpp @@ -38,7 +38,7 @@ KItemListRoleEditor::KItemListRoleEditor(QWidget *parent) : parent->installEventFilter(this); } - connect(this, SIGNAL(textChanged()), this, SLOT(autoAdjustSize())); + connect(this, &KItemListRoleEditor::textChanged, this, &KItemListRoleEditor::autoAdjustSize); } KItemListRoleEditor::~KItemListRoleEditor() @@ -148,4 +148,3 @@ void KItemListRoleEditor::emitRoleEditingFinished() } } -#include "kitemlistroleeditor.moc" diff --git a/src/kitemviews/private/kitemlistrubberband.cpp b/src/kitemviews/private/kitemlistrubberband.cpp index 58567c460..702873126 100644 --- a/src/kitemviews/private/kitemlistrubberband.cpp +++ b/src/kitemviews/private/kitemlistrubberband.cpp @@ -88,4 +88,3 @@ bool KItemListRubberBand::isActive() const return m_active; } -#include "kitemlistrubberband.moc" diff --git a/src/kitemviews/private/kitemlistselectiontoggle.cpp b/src/kitemviews/private/kitemlistselectiontoggle.cpp index accbe5181..c33c15ec2 100644 --- a/src/kitemviews/private/kitemlistselectiontoggle.cpp +++ b/src/kitemviews/private/kitemlistselectiontoggle.cpp @@ -115,4 +115,3 @@ int KItemListSelectionToggle::iconSize() const return iconSize; } -#include "kitemlistselectiontoggle.moc" diff --git a/src/kitemviews/private/kitemlistselectiontoggle.h b/src/kitemviews/private/kitemlistselectiontoggle.h index 758dc63bb..8a1a857f6 100644 --- a/src/kitemviews/private/kitemlistselectiontoggle.h +++ b/src/kitemviews/private/kitemlistselectiontoggle.h @@ -25,7 +25,6 @@ #include <QGraphicsWidget> #include <QPixmap> -class QPropertyAnimation; /** * @brief Allows to toggle between the selected and unselected state of an item. diff --git a/src/kitemviews/private/kitemlistsmoothscroller.cpp b/src/kitemviews/private/kitemlistsmoothscroller.cpp index 491461b80..24eea0cef 100644 --- a/src/kitemviews/private/kitemlistsmoothscroller.cpp +++ b/src/kitemviews/private/kitemlistsmoothscroller.cpp @@ -38,8 +38,8 @@ KItemListSmoothScroller::KItemListSmoothScroller(QScrollBar* scrollBar, m_animation = new QPropertyAnimation(this); const int duration = (KGlobalSettings::graphicEffectsLevel() == KGlobalSettings::NoEffects) ? 1 : 100; m_animation->setDuration(duration); - connect(m_animation, SIGNAL(stateChanged(QAbstractAnimation::State,QAbstractAnimation::State)), - this, SLOT(slotAnimationStateChanged(QAbstractAnimation::State,QAbstractAnimation::State))); + connect(m_animation, &QPropertyAnimation::stateChanged, + this, &KItemListSmoothScroller::slotAnimationStateChanged); m_scrollBar->installEventFilter(this); } @@ -209,4 +209,3 @@ void KItemListSmoothScroller::handleWheelEvent(QWheelEvent* event) event->accept(); } -#include "kitemlistsmoothscroller.moc" diff --git a/src/kitemviews/private/kitemlistviewanimation.cpp b/src/kitemviews/private/kitemlistviewanimation.cpp index 5a00c8c3a..336ba38ad 100644 --- a/src/kitemviews/private/kitemlistviewanimation.cpp +++ b/src/kitemviews/private/kitemlistviewanimation.cpp @@ -172,7 +172,7 @@ void KItemListViewAnimation::start(QGraphicsWidget* widget, AnimationType type, } Q_ASSERT(propertyAnim); - connect(propertyAnim, SIGNAL(finished()), this, SLOT(slotFinished())); + connect(propertyAnim, &QPropertyAnimation::finished, this, &KItemListViewAnimation::slotFinished); m_animation[type].insert(widget, propertyAnim); propertyAnim->start(); @@ -242,4 +242,3 @@ void KItemListViewAnimation::slotFinished() Q_ASSERT(false); } -#include "kitemlistviewanimation.moc" diff --git a/src/kitemviews/private/kitemlistviewanimation.h b/src/kitemviews/private/kitemlistviewanimation.h index a3aceb0f5..e2e533850 100644 --- a/src/kitemviews/private/kitemlistviewanimation.h +++ b/src/kitemviews/private/kitemlistviewanimation.h @@ -28,7 +28,6 @@ class KItemListView; class QGraphicsWidget; -class QPointF; class QPropertyAnimation; /** diff --git a/src/kitemviews/private/kitemlistviewlayouter.cpp b/src/kitemviews/private/kitemlistviewlayouter.cpp index 04325c7d0..e2dcc62e7 100644 --- a/src/kitemviews/private/kitemlistviewlayouter.cpp +++ b/src/kitemviews/private/kitemlistviewlayouter.cpp @@ -621,4 +621,3 @@ qreal KItemListViewLayouter::minimumGroupHeaderWidth() const return 100; } -#include "kitemlistviewlayouter.moc" diff --git a/src/main.cpp b/src/main.cpp index 3ce3204e9..ca047bd16 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -22,20 +22,22 @@ #include "dolphinmainwindow.h" -#include <KAboutData> +#include <k4aboutdata.h> #include <KCmdLineArgs> #include <KLocale> #include <kmainwindow.h> +#include <kdemacros.h> +#include <kdeversion.h> #include <KDebug> extern "C" KDE_EXPORT int kdemain(int argc, char **argv) { - KAboutData about("dolphin", 0, + K4AboutData about("dolphin", 0, ki18nc("@title", "Dolphin"), - KDE_VERSION_STRING, + "4.60", ki18nc("@title", "File Manager"), - KAboutData::License_GPL, + K4AboutData::License_GPL, ki18nc("@info:credit", "(C) 2006-2014 Peter Penz, Frank Reininghaus, and Emmanuel Pescosta")); about.setHomepage("http://dolphin.kde.org"); about.addAuthor(ki18nc("@info:credit", "Emmanuel Pescosta"), diff --git a/src/dolphin.desktop b/src/org.kde.dolphin.desktop index 364bf7920..84325c87f 100755 --- a/src/dolphin.desktop +++ b/src/org.kde.dolphin.desktop @@ -186,3 +186,4 @@ GenericName[zh_TW]=檔案管理員 Terminal=false MimeType=inode/directory; InitialPreference=10 +X-DBUS-ServiceName=org.kde.dolphin diff --git a/src/panels/folders/foldersitemlistwidget.cpp b/src/panels/folders/foldersitemlistwidget.cpp index b4f9a5be8..5b2b20698 100644 --- a/src/panels/folders/foldersitemlistwidget.cpp +++ b/src/panels/folders/foldersitemlistwidget.cpp @@ -33,4 +33,3 @@ QPalette::ColorRole FoldersItemListWidget::normalTextColorRole() const return QPalette::WindowText; } -#include "foldersitemlistwidget.moc" diff --git a/src/panels/folders/folderspanel.cpp b/src/panels/folders/folderspanel.cpp index 46c1b3450..afeeb64a9 100644 --- a/src/panels/folders/folderspanel.cpp +++ b/src/panels/folders/folderspanel.cpp @@ -33,7 +33,10 @@ #include <kitemviews/kfileitemmodel.h> #include <KFileItem> -#include <konq_operations.h> +#include <KJobWidgets> +#include <KJobUiDelegate> +#include <KIO/CopyJob> +#include <KIO/FileUndoManager> #include <QApplication> #include <QBoxLayout> @@ -58,7 +61,7 @@ FoldersPanel::FoldersPanel(QWidget* parent) : FoldersPanel::~FoldersPanel() { - FoldersPanelSettings::self()->writeConfig(); + FoldersPanelSettings::self()->save(); if (m_controller) { KItemListView* view = m_controller->view(); @@ -137,15 +140,15 @@ void FoldersPanel::showEvent(QShowEvent* event) // opening the folders panel. view->setOpacity(0); - connect(view, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), - this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant))); + connect(view, &KFileItemListView::roleEditingFinished, + this, &FoldersPanel::slotRoleEditingFinished); m_model = new KFileItemModel(this); m_model->setShowDirectoriesOnly(true); m_model->setShowHiddenFiles(FoldersPanelSettings::hiddenFilesShown()); // Use a QueuedConnection to give the view the possibility to react first on the // finished loading. - connect(m_model, SIGNAL(directoryLoadingCompleted()), this, SLOT(slotLoadingCompleted()), Qt::QueuedConnection); + connect(m_model, &KFileItemModel::directoryLoadingCompleted, this, &FoldersPanel::slotLoadingCompleted, Qt::QueuedConnection); m_controller = new KItemListController(m_model, view, this); m_controller->setSelectionBehavior(KItemListController::SingleSelection); @@ -154,11 +157,11 @@ void FoldersPanel::showEvent(QShowEvent* event) m_controller->setAutoActivationDelay(750); m_controller->setSingleClickActivationEnforced(true); - connect(m_controller, SIGNAL(itemActivated(int)), this, SLOT(slotItemActivated(int))); - connect(m_controller, SIGNAL(itemMiddleClicked(int)), this, SLOT(slotItemMiddleClicked(int))); - connect(m_controller, SIGNAL(itemContextMenuRequested(int,QPointF)), this, SLOT(slotItemContextMenuRequested(int,QPointF))); - connect(m_controller, SIGNAL(viewContextMenuRequested(QPointF)), this, SLOT(slotViewContextMenuRequested(QPointF))); - connect(m_controller, SIGNAL(itemDropEvent(int,QGraphicsSceneDragDropEvent*)), this, SLOT(slotItemDropEvent(int,QGraphicsSceneDragDropEvent*))); + connect(m_controller, &KItemListController::itemActivated, this, &FoldersPanel::slotItemActivated); + connect(m_controller, &KItemListController::itemMiddleClicked, this, &FoldersPanel::slotItemMiddleClicked); + connect(m_controller, &KItemListController::itemContextMenuRequested, this, &FoldersPanel::slotItemContextMenuRequested); + connect(m_controller, &KItemListController::viewContextMenuRequested, this, &FoldersPanel::slotViewContextMenuRequested); + connect(m_controller, &KItemListController::itemDropEvent, this, &FoldersPanel::slotItemDropEvent); KItemListContainer* container = new KItemListContainer(m_controller, this); container->setEnabledFrame(false); @@ -250,7 +253,14 @@ void FoldersPanel::slotRoleEditingFinished(int index, const QByteArray& role, co const KFileItem item = m_model->fileItem(index); const QString newName = value.toString(); if (!newName.isEmpty() && newName != item.text() && newName != QLatin1String(".") && newName != QLatin1String("..")) { - KonqOperations::rename(this, item.url(), newName); + const QUrl oldUrl = item.url(); + QUrl newUrl = oldUrl.adjusted(QUrl::RemoveFilename); + newUrl.setPath(newUrl.path() + KIO::encodeFileName(newName)); + + KIO::Job* job = KIO::moveAs(oldUrl, newUrl); + KJobWidgets::setWindow(job, this); + KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Rename, QList<QUrl>() << oldUrl, newUrl, job); + job->ui()->setAutoErrorHandlingEnabled(true); } } } @@ -328,4 +338,3 @@ void FoldersPanel::updateCurrentItem(int index) m_controller->view()->scrollToItem(index); } -#include "folderspanel.moc" diff --git a/src/panels/folders/treeviewcontextmenu.cpp b/src/panels/folders/treeviewcontextmenu.cpp index 83ffa87a7..56e6d44b3 100644 --- a/src/panels/folders/treeviewcontextmenu.cpp +++ b/src/panels/folders/treeviewcontextmenu.cpp @@ -22,18 +22,27 @@ #include <KFileItem> #include <KIconLoader> +#include <KIO/CopyJob> #include <KIO/DeleteJob> -#include <KMenu> -#include <konqmimedata.h> +#include <KIO/JobUiDelegate> +#include <QMenu> +#include <QIcon> +#include <KJobWidgets> +#include <KSharedConfig> +#include <KConfigGroup> +#include <kurlmimedata.h> #include <KFileItemListProperties> #include <konq_operations.h> #include <KLocale> +#include <KIO/Paste> +#include <KIO/FileUndoManager> #include <KPropertiesDialog> #include "folderspanel.h" #include <QApplication> #include <QClipboard> +#include <QMimeData> TreeViewContextMenu::TreeViewContextMenu(FoldersPanel* parent, const KFileItem& fileInfo) : @@ -49,22 +58,22 @@ TreeViewContextMenu::~TreeViewContextMenu() void TreeViewContextMenu::open() { - KMenu* popup = new KMenu(m_parent); + QMenu* popup = new QMenu(m_parent); if (!m_fileItem.isNull()) { KFileItemListProperties capabilities(KFileItemList() << m_fileItem); // insert 'Cut', 'Copy' and 'Paste' - QAction* cutAction = new QAction(KIcon("edit-cut"), i18nc("@action:inmenu", "Cut"), this); + QAction* cutAction = new QAction(QIcon::fromTheme("edit-cut"), i18nc("@action:inmenu", "Cut"), this); cutAction->setEnabled(capabilities.supportsMoving()); - connect(cutAction, SIGNAL(triggered()), this, SLOT(cut())); + connect(cutAction, &QAction::triggered, this, &TreeViewContextMenu::cut); - QAction* copyAction = new QAction(KIcon("edit-copy"), i18nc("@action:inmenu", "Copy"), this); - connect(copyAction, SIGNAL(triggered()), this, SLOT(copy())); + QAction* copyAction = new QAction(QIcon::fromTheme("edit-copy"), i18nc("@action:inmenu", "Copy"), this); + connect(copyAction, &QAction::triggered, this, &TreeViewContextMenu::copy); const QPair<bool, QString> pasteInfo = KonqOperations::pasteInfo(m_fileItem.url()); - QAction* pasteAction = new QAction(KIcon("edit-paste"), pasteInfo.second, this); - connect(pasteAction, SIGNAL(triggered()), this, SLOT(paste())); + QAction* pasteAction = new QAction(QIcon::fromTheme("edit-paste"), pasteInfo.second, this); + connect(pasteAction, &QAction::triggered, this, &TreeViewContextMenu::paste); pasteAction->setEnabled(pasteInfo.first); popup->addAction(cutAction); @@ -75,8 +84,8 @@ void TreeViewContextMenu::open() // insert 'Rename' QAction* renameAction = new QAction(i18nc("@action:inmenu", "Rename..."), this); renameAction->setEnabled(capabilities.supportsMoving()); - renameAction->setIcon(KIcon("edit-rename")); - connect(renameAction, SIGNAL(triggered()), this, SLOT(rename())); + renameAction->setIcon(QIcon::fromTheme("edit-rename")); + connect(renameAction, &QAction::triggered, this, &TreeViewContextMenu::rename); popup->addAction(renameAction); // insert 'Move to Trash' and (optionally) 'Delete' @@ -86,20 +95,20 @@ void TreeViewContextMenu::open() const KUrl url = m_fileItem.url(); if (url.isLocalFile()) { - QAction* moveToTrashAction = new QAction(KIcon("user-trash"), + QAction* moveToTrashAction = new QAction(QIcon::fromTheme("user-trash"), i18nc("@action:inmenu", "Move to Trash"), this); const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving(); moveToTrashAction->setEnabled(enableMoveToTrash); - connect(moveToTrashAction, SIGNAL(triggered()), this, SLOT(moveToTrash())); + connect(moveToTrashAction, &QAction::triggered, this, &TreeViewContextMenu::moveToTrash); popup->addAction(moveToTrashAction); } else { showDeleteCommand = true; } if (showDeleteCommand) { - QAction* deleteAction = new QAction(KIcon("edit-delete"), i18nc("@action:inmenu", "Delete"), this); + QAction* deleteAction = new QAction(QIcon::fromTheme("edit-delete"), i18nc("@action:inmenu", "Delete"), this); deleteAction->setEnabled(capabilities.supportsDeleting()); - connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteItem())); + connect(deleteAction, &QAction::triggered, this, &TreeViewContextMenu::deleteItem); popup->addAction(deleteAction); } @@ -111,7 +120,7 @@ void TreeViewContextMenu::open() showHiddenFilesAction->setCheckable(true); showHiddenFilesAction->setChecked(m_parent->showHiddenFiles()); popup->addAction(showHiddenFilesAction); - connect(showHiddenFilesAction, SIGNAL(toggled(bool)), this, SLOT(setShowHiddenFiles(bool))); + connect(showHiddenFilesAction, &QAction::toggled, this, &TreeViewContextMenu::setShowHiddenFiles); // insert 'Automatic Scrolling' QAction* autoScrollingAction = new QAction(i18nc("@action:inmenu", "Automatic Scrolling"), this); @@ -120,13 +129,13 @@ void TreeViewContextMenu::open() // TODO: Temporary disabled. Horizontal autoscrolling will be implemented later either // in KItemViews or manually as part of the FoldersPanel //popup->addAction(autoScrollingAction); - connect(autoScrollingAction, SIGNAL(toggled(bool)), this, SLOT(setAutoScrolling(bool))); + connect(autoScrollingAction, &QAction::toggled, this, &TreeViewContextMenu::setAutoScrolling); if (!m_fileItem.isNull()) { // insert 'Properties' entry QAction* propertiesAction = new QAction(i18nc("@action:inmenu", "Properties"), this); - propertiesAction->setIcon(KIcon("document-properties")); - connect(propertiesAction, SIGNAL(triggered()), this, SLOT(showProperties())); + propertiesAction->setIcon(QIcon::fromTheme("document-properties")); + connect(propertiesAction, &QAction::triggered, this, &TreeViewContextMenu::showProperties); popup->addAction(propertiesAction); } @@ -138,7 +147,7 @@ void TreeViewContextMenu::open() } } - QWeakPointer<KMenu> popupPtr = popup; + QWeakPointer<QMenu> popupPtr = popup; popup->exec(QCursor::pos()); if (popupPtr.data()) { popupPtr.data()->deleteLater(); @@ -152,7 +161,8 @@ void TreeViewContextMenu::populateMimeData(QMimeData* mimeData, bool cut) KUrl::List mostLocalUrls; bool dummy; mostLocalUrls.append(m_fileItem.mostLocalUrl(dummy)); - KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, cut); + KIO::setClipboardDataCut(mimeData, cut); + KUrlMimeData::setUrls(kdeUrls, mostLocalUrls, mimeData); } void TreeViewContextMenu::cut() @@ -181,12 +191,27 @@ void TreeViewContextMenu::rename() void TreeViewContextMenu::moveToTrash() { - KonqOperations::del(m_parent, KonqOperations::TRASH, m_fileItem.url()); + KUrl::List list = KUrl::List() << m_fileItem.url(); + KIO::JobUiDelegate uiDelegate; + uiDelegate.setWindow(m_parent); + if (uiDelegate.askDeleteConfirmation(list, KIO::JobUiDelegate::Trash, KIO::JobUiDelegate::DefaultConfirmation)) { + KIO::Job* job = KIO::trash(list); + KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Trash, list, KUrl("trash:/"), job); + KJobWidgets::setWindow(job, m_parent); + job->ui()->setAutoErrorHandlingEnabled(true); + } } void TreeViewContextMenu::deleteItem() { - KonqOperations::del(m_parent, KonqOperations::DEL, m_fileItem.url()); + KUrl::List list = KUrl::List() << m_fileItem.url(); + KIO::JobUiDelegate uiDelegate; + uiDelegate.setWindow(m_parent); + if (uiDelegate.askDeleteConfirmation(list, KIO::JobUiDelegate::Delete, KIO::JobUiDelegate::DefaultConfirmation)) { + KIO::Job* job = KIO::del(list); + KJobWidgets::setWindow(job, m_parent); + job->ui()->setAutoErrorHandlingEnabled(true); + } } void TreeViewContextMenu::showProperties() @@ -206,4 +231,3 @@ void TreeViewContextMenu::setAutoScrolling(bool enable) m_parent->setAutoScrolling(enable); } -#include "treeviewcontextmenu.moc" diff --git a/src/panels/folders/treeviewcontextmenu.h b/src/panels/folders/treeviewcontextmenu.h index 0b3fd79bd..598ffaed6 100644 --- a/src/panels/folders/treeviewcontextmenu.h +++ b/src/panels/folders/treeviewcontextmenu.h @@ -23,6 +23,7 @@ #include <QObject> #include <KFileItem> +class QMimeData; class FoldersPanel; /** diff --git a/src/panels/information/filemetadataconfigurationdialog.cpp b/src/panels/information/filemetadataconfigurationdialog.cpp index 4ad9066c4..15f1f4f5f 100644 --- a/src/panels/information/filemetadataconfigurationdialog.cpp +++ b/src/panels/information/filemetadataconfigurationdialog.cpp @@ -22,7 +22,7 @@ #ifndef HAVE_BALOO #include <kfilemetadataconfigurationwidget.h> #else -#include <baloo/filemetadataconfigwidget.h> +#include <Baloo/FileMetaDataConfigWidget> #endif #include <KLocale> @@ -99,4 +99,3 @@ QString FileMetaDataConfigurationDialog::description() const return m_descriptionLabel->text(); } -#include "filemetadataconfigurationdialog.moc" diff --git a/src/panels/information/informationpanel.cpp b/src/panels/information/informationpanel.cpp index eda74f3b5..5c4da7fbc 100644 --- a/src/panels/information/informationpanel.cpp +++ b/src/panels/information/informationpanel.cpp @@ -22,10 +22,12 @@ #include "informationpanelcontent.h" #include <KIO/Job> #include <KIO/JobUiDelegate> +#include <KJobWidgets> #include <KDirNotify> #include <QApplication> #include <QShowEvent> #include <QVBoxLayout> +#include <QTimer> InformationPanel::InformationPanel(QWidget* parent) : Panel(parent), @@ -184,10 +186,10 @@ void InformationPanel::showItemInfo() // an item for the currently shown directory. m_folderStatJob = KIO::stat(url(), KIO::HideProgressInfo); if (m_folderStatJob->ui()) { - m_folderStatJob->ui()->setWindow(this); + KJobWidgets::setWindow(m_folderStatJob, this); } - connect(m_folderStatJob, SIGNAL(result(KJob*)), - this, SLOT(slotFolderStatFinished(KJob*))); + connect(m_folderStatJob, &KIO::Job::result, + this, &InformationPanel::slotFolderStatFinished); } else { m_content->showItem(item); } @@ -322,35 +324,35 @@ void InformationPanel::init() m_infoTimer = new QTimer(this); m_infoTimer->setInterval(300); m_infoTimer->setSingleShot(true); - connect(m_infoTimer, SIGNAL(timeout()), - this, SLOT(slotInfoTimeout())); + connect(m_infoTimer, &QTimer::timeout, + this, &InformationPanel::slotInfoTimeout); m_urlChangedTimer = new QTimer(this); m_urlChangedTimer->setInterval(200); m_urlChangedTimer->setSingleShot(true); - connect(m_urlChangedTimer, SIGNAL(timeout()), - this, SLOT(showItemInfo())); + connect(m_urlChangedTimer, &QTimer::timeout, + this, &InformationPanel::showItemInfo); m_resetUrlTimer = new QTimer(this); m_resetUrlTimer->setInterval(1000); m_resetUrlTimer->setSingleShot(true); - connect(m_resetUrlTimer, SIGNAL(timeout()), - this, SLOT(reset())); + connect(m_resetUrlTimer, &QTimer::timeout, + this, &InformationPanel::reset); Q_ASSERT(m_urlChangedTimer->interval() < m_infoTimer->interval()); Q_ASSERT(m_urlChangedTimer->interval() < m_resetUrlTimer->interval()); org::kde::KDirNotify* dirNotify = new org::kde::KDirNotify(QString(), QString(), QDBusConnection::sessionBus(), this); - connect(dirNotify, SIGNAL(FileRenamed(QString,QString)), SLOT(slotFileRenamed(QString,QString))); - connect(dirNotify, SIGNAL(FilesAdded(QString)), SLOT(slotFilesAdded(QString))); - connect(dirNotify, SIGNAL(FilesChanged(QStringList)), SLOT(slotFilesChanged(QStringList))); - connect(dirNotify, SIGNAL(FilesRemoved(QStringList)), SLOT(slotFilesRemoved(QStringList))); - connect(dirNotify, SIGNAL(enteredDirectory(QString)), SLOT(slotEnteredDirectory(QString))); - connect(dirNotify, SIGNAL(leftDirectory(QString)), SLOT(slotLeftDirectory(QString))); + connect(dirNotify, &OrgKdeKDirNotifyInterface::FileRenamed, this, &InformationPanel::slotFileRenamed); + connect(dirNotify, &OrgKdeKDirNotifyInterface::FilesAdded, this, &InformationPanel::slotFilesAdded); + connect(dirNotify, &OrgKdeKDirNotifyInterface::FilesChanged, this, &InformationPanel::slotFilesChanged); + connect(dirNotify, &OrgKdeKDirNotifyInterface::FilesRemoved, this, &InformationPanel::slotFilesRemoved); + connect(dirNotify, &OrgKdeKDirNotifyInterface::enteredDirectory, this, &InformationPanel::slotEnteredDirectory); + connect(dirNotify, &OrgKdeKDirNotifyInterface::leftDirectory, this, &InformationPanel::slotLeftDirectory); m_content = new InformationPanelContent(this); - connect(m_content, SIGNAL(urlActivated(KUrl)), this, SIGNAL(urlActivated(KUrl))); + connect(m_content, &InformationPanelContent::urlActivated, this, &InformationPanel::urlActivated); QVBoxLayout* layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); @@ -359,4 +361,3 @@ void InformationPanel::init() m_initialized = true; } -#include "informationpanel.moc" diff --git a/src/panels/information/informationpanelcontent.cpp b/src/panels/information/informationpanelcontent.cpp index 4fb0d9442..259b672d3 100644 --- a/src/panels/information/informationpanelcontent.cpp +++ b/src/panels/information/informationpanelcontent.cpp @@ -24,17 +24,19 @@ #include <KGlobalSettings> #include <KIO/JobUiDelegate> #include <KIO/PreviewJob> +#include <KJobWidgets> #include <KIconEffect> #include <KIconLoader> +#include <QIcon> #include <KLocale> -#include <KMenu> +#include <QMenu> #include <kseparator.h> #include <KStringHandler> #ifndef HAVE_BALOO #include <KFileMetaDataWidget> #else -#include <baloo/filemetadatawidget.h> +#include <Baloo/FileMetaDataWidget> #endif #include <panels/places/placesitem.h> @@ -81,8 +83,8 @@ InformationPanelContent::InformationPanelContent(QWidget* parent) : m_outdatedPreviewTimer = new QTimer(this); m_outdatedPreviewTimer->setInterval(300); m_outdatedPreviewTimer->setSingleShot(true); - connect(m_outdatedPreviewTimer, SIGNAL(timeout()), - this, SLOT(markOutdatedPreview())); + connect(m_outdatedPreviewTimer, &QTimer::timeout, + this, &InformationPanelContent::markOutdatedPreview); QVBoxLayout* layout = new QVBoxLayout(this); layout->setSpacing(KDialog::spacingHint()); @@ -97,8 +99,8 @@ InformationPanelContent::InformationPanelContent(QWidget* parent) : m_phononWidget = new PhononWidget(parent); m_phononWidget->hide(); m_phononWidget->setMinimumWidth(minPreviewWidth); - connect(m_phononWidget, SIGNAL(hasVideoChanged(bool)), - this, SLOT(slotHasVideoChanged(bool))); + connect(m_phononWidget, &PhononWidget::hasVideoChanged, + this, &InformationPanelContent::slotHasVideoChanged); // name m_nameLabel = new QLabel(parent); @@ -114,12 +116,15 @@ InformationPanelContent::InformationPanelContent(QWidget* parent) : #ifndef HAVE_BALOO m_metaDataWidget = new KFileMetaDataWidget(parent); + connect(m_metaDataWidget, &KFileMetaDataWidget::urlActivated, + this, &InformationPanelContent::urlActivated); #else m_metaDataWidget = new Baloo::FileMetaDataWidget(parent); + connect(m_metaDataWidget, &Baloo::FileMetaDataWidget::urlActivated, + this, &InformationPanelContent::urlActivated); #endif m_metaDataWidget->setFont(KGlobalSettings::smallestReadableFont()); m_metaDataWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); - connect(m_metaDataWidget, SIGNAL(urlActivated(KUrl)), this, SIGNAL(urlActivated(KUrl))); // Encapsulate the MetaDataWidget inside a container that has a dummy widget // at the bottom. This prevents that the meta data widget gets vertically stretched @@ -154,7 +159,7 @@ InformationPanelContent::InformationPanelContent(QWidget* parent) : InformationPanelContent::~InformationPanelContent() { - InformationPanelSettings::self()->writeConfig(); + InformationPanelSettings::self()->save(); } void InformationPanelContent::showItem(const KFileItem& item) @@ -193,13 +198,13 @@ void InformationPanelContent::showItem(const KFileItem& item) m_previewJob->setScaleType(KIO::PreviewJob::Unscaled); m_previewJob->setIgnoreMaximumSize(item.isLocalFile()); if (m_previewJob->ui()) { - m_previewJob->ui()->setWindow(this); + KJobWidgets::setWindow(m_previewJob, this); } - connect(m_previewJob, SIGNAL(gotPreview(KFileItem,QPixmap)), - this, SLOT(showPreview(KFileItem,QPixmap))); - connect(m_previewJob, SIGNAL(failed(KFileItem)), - this, SLOT(showIcon(KFileItem))); + connect(m_previewJob.data(), &KIO::PreviewJob::gotPreview, + this, &InformationPanelContent::showPreview); + connect(m_previewJob.data(), &KIO::PreviewJob::failed, + this, &InformationPanelContent::showIcon); } } @@ -284,15 +289,15 @@ bool InformationPanelContent::eventFilter(QObject* obj, QEvent* event) void InformationPanelContent::configureSettings(const QList<QAction*>& customContextMenuActions) { - KMenu popup(this); + QMenu popup(this); QAction* previewAction = popup.addAction(i18nc("@action:inmenu", "Preview")); - previewAction->setIcon(KIcon("view-preview")); + previewAction->setIcon(QIcon::fromTheme("view-preview")); previewAction->setCheckable(true); previewAction->setChecked(InformationPanelSettings::previewsShown()); QAction* configureAction = popup.addAction(i18nc("@action:inmenu", "Configure...")); - configureAction->setIcon(KIcon("configure")); + configureAction->setIcon(QIcon::fromTheme("configure")); popup.addSeparator(); foreach (QAction* action, customContextMenuActions) { @@ -319,7 +324,7 @@ void InformationPanelContent::configureSettings(const QList<QAction*>& customCon dialog->show(); dialog->raise(); dialog->activateWindow(); - connect(dialog, SIGNAL(destroyed()), this, SLOT(refreshMetaData())); + connect(dialog, &FileMetaDataConfigurationDialog::destroyed, this, &InformationPanelContent::refreshMetaData); } } @@ -327,8 +332,10 @@ void InformationPanelContent::showIcon(const KFileItem& item) { m_outdatedPreviewTimer->stop(); if (!applyPlace(item.targetUrl())) { - KIcon icon(item.iconName(), KIconLoader::global(), item.overlays()); - m_preview->setPixmap(icon.pixmap(KIconLoader::SizeEnormous)); + const QPixmap icon = KIconLoader::global()->loadIcon(item.iconName(), KIconLoader::Desktop, + KIconLoader::SizeEnormous, KIconLoader::DefaultState, + item.overlays()); + m_preview->setPixmap(icon); } } @@ -371,7 +378,7 @@ bool InformationPanelContent::applyPlace(const KUrl& url) const PlacesItem* item = m_placesItemModel->placesItem(i); if (item->url().equals(url, KUrl::CompareWithoutTrailingSlash)) { setNameLabelText(item->text()); - m_preview->setPixmap(KIcon(item->icon()).pixmap(128, 128)); + m_preview->setPixmap(QIcon::fromTheme(item->icon()).pixmap(128, 128)); return true; } } @@ -435,4 +442,3 @@ void InformationPanelContent::adjustWidgetSizes(int width) } } -#include "informationpanelcontent.moc" diff --git a/src/panels/information/phononwidget.cpp b/src/panels/information/phononwidget.cpp index a36ada180..16dbabfed 100644 --- a/src/panels/information/phononwidget.cpp +++ b/src/panels/information/phononwidget.cpp @@ -32,7 +32,8 @@ #include <QToolButton> #include <KDialog> -#include <KIcon> +#include <QIcon> +#include <KIconLoader> #include <KUrl> #include <KLocale> @@ -128,16 +129,16 @@ void PhononWidget::showEvent(QShowEvent *event) m_playButton->setToolTip(i18n("play")); m_playButton->setIconSize(buttonSize); - m_playButton->setIcon(KIcon("media-playback-start")); + m_playButton->setIcon(QIcon::fromTheme("media-playback-start")); m_playButton->setAutoRaise(true); - connect(m_playButton, SIGNAL(clicked()), this, SLOT(play())); + connect(m_playButton, &QToolButton::clicked, this, &PhononWidget::play); m_stopButton->setToolTip(i18n("stop")); m_stopButton->setIconSize(buttonSize); - m_stopButton->setIcon(KIcon("media-playback-stop")); + m_stopButton->setIcon(QIcon::fromTheme("media-playback-stop")); m_stopButton->setAutoRaise(true); m_stopButton->hide(); - connect(m_stopButton, SIGNAL(clicked()), this, SLOT(stop())); + connect(m_stopButton, &QToolButton::clicked, this, &PhononWidget::stop); m_seekSlider->setIconVisible(false); @@ -177,10 +178,10 @@ void PhononWidget::play() { if (!m_media) { m_media = new Phonon::MediaObject(this); - connect(m_media, SIGNAL(stateChanged(Phonon::State,Phonon::State)), - this, SLOT(stateChanged(Phonon::State))); - connect(m_media, SIGNAL(hasVideoChanged(bool)), - this, SLOT(slotHasVideoChanged(bool))); + connect(m_media, &Phonon::MediaObject::stateChanged, + this, &PhononWidget::stateChanged); + connect(m_media, &Phonon::MediaObject::hasVideoChanged, + this, &PhononWidget::slotHasVideoChanged); m_seekSlider->setMediaObject(m_media); } diff --git a/src/panels/information/pixmapviewer.cpp b/src/panels/information/pixmapviewer.cpp index 45a8c17e2..7b3a212f2 100644 --- a/src/panels/information/pixmapviewer.cpp +++ b/src/panels/information/pixmapviewer.cpp @@ -39,8 +39,8 @@ PixmapViewer::PixmapViewer(QWidget* parent, Transition transition) : m_animation.setCurveShape(QTimeLine::LinearCurve); if (m_transition != NoTransition) { - connect(&m_animation, SIGNAL(valueChanged(qreal)), this, SLOT(update())); - connect(&m_animation, SIGNAL(finished()), this, SLOT(checkPendingPixmaps())); + connect(&m_animation, &QTimeLine::valueChanged, this, static_cast<void(PixmapViewer::*)()>(&PixmapViewer::update)); + connect(&m_animation, &QTimeLine::finished, this, &PixmapViewer::checkPendingPixmaps); } } @@ -129,4 +129,3 @@ void PixmapViewer::checkPendingPixmaps() } } -#include "pixmapviewer.moc" diff --git a/src/panels/panel.cpp b/src/panels/panel.cpp index 14b7c0230..767313445 100644 --- a/src/panels/panel.cpp +++ b/src/panels/panel.cpp @@ -76,4 +76,3 @@ void Panel::readSettings() } -#include "panel.moc" diff --git a/src/panels/places/placesitem.cpp b/src/panels/places/placesitem.cpp index 173da29c5..b82e50256 100644 --- a/src/panels/places/placesitem.cpp +++ b/src/panels/places/placesitem.cpp @@ -25,7 +25,7 @@ #include <KBookmarkManager> #include <KDebug> #include <KDirLister> -#include <KIcon> +#include <QIcon> #include <KLocale> #include "placesitemsignalhandler.h" #include <QDateTime> @@ -69,8 +69,8 @@ void PlacesItem::setUrl(const KUrl& url) m_trashDirLister = new KDirLister(); m_trashDirLister->setAutoErrorHandlingEnabled(false, 0); m_trashDirLister->setDelayedMimeTypes(true); - QObject::connect(m_trashDirLister, SIGNAL(completed()), - m_signalHandler, SLOT(onTrashDirListerCompleted())); + QObject::connect(m_trashDirLister.data(), static_cast<void(KDirLister::*)()>(&KDirLister::completed), + m_signalHandler.data(), &PlacesItemSignalHandler::onTrashDirListerCompleted); m_trashDirLister->openUrl(url); } @@ -271,8 +271,8 @@ void PlacesItem::initializeDevice(const QString& udi) if (m_access) { setUrl(m_access->filePath()); - QObject::connect(m_access, SIGNAL(accessibilityChanged(bool,QString)), - m_signalHandler, SLOT(onAccessibilityChanged())); + QObject::connect(m_access.data(), &Solid::StorageAccess::accessibilityChanged, + m_signalHandler.data(), &PlacesItemSignalHandler::onAccessibilityChanged); } else if (m_disc && (m_disc->availableContent() & Solid::OpticalDisc::Audio) != 0) { Solid::Block *block = m_device.as<Solid::Block>(); if (block) { diff --git a/src/panels/places/placesitemeditdialog.cpp b/src/panels/places/placesitemeditdialog.cpp index 08c910d17..9a239b786 100644 --- a/src/panels/places/placesitemeditdialog.cpp +++ b/src/panels/places/placesitemeditdialog.cpp @@ -24,9 +24,11 @@ #include "placesitemeditdialog.h" #include <KAboutData> +#include <k4aboutdata.h> #include <KComponentData> #include <KDebug> #include <KFile> +#include <KGlobal> #include <KIconButton> #include <KLineEdit> #include <KLocale> @@ -36,9 +38,12 @@ #include <QEvent> #include <QFormLayout> #include <QVBoxLayout> +#include <KConfigGroup> +#include <QDialogButtonBox> +#include <QPushButton> PlacesItemEditDialog::PlacesItemEditDialog(QWidget* parent) : - KDialog(parent), + QDialog(parent), m_icon(), m_text(), m_url(), @@ -48,9 +53,6 @@ PlacesItemEditDialog::PlacesItemEditDialog(QWidget* parent) : m_iconButton(0), m_appLocal(0) { - setButtons( Ok | Cancel ); - setModal(true); - setDefaultButton(Ok); } void PlacesItemEditDialog::setIcon(const QString& icon) @@ -108,7 +110,7 @@ bool PlacesItemEditDialog::event(QEvent* event) void PlacesItemEditDialog::slotUrlChanged(const QString& text) { - enableButtonOk(!text.isEmpty()); + m_okButton->setEnabled(!text.isEmpty()); } PlacesItemEditDialog::~PlacesItemEditDialog() @@ -117,7 +119,21 @@ PlacesItemEditDialog::~PlacesItemEditDialog() void PlacesItemEditDialog::initialize() { + QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel); + m_okButton = buttonBox->button(QDialogButtonBox::Ok); + m_okButton->setDefault(true); + m_okButton->setShortcut(Qt::CTRL | Qt::Key_Return); + connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); + connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); + setModal(true); + m_okButton->setDefault(true); + + QVBoxLayout *mainLayout = new QVBoxLayout; + setLayout(mainLayout); QWidget* mainWidget = new QWidget(this); + mainLayout->addWidget(mainWidget); + mainLayout->addWidget(buttonBox); + QVBoxLayout* vBox = new QVBoxLayout(mainWidget); QFormLayout* formLayout = new QFormLayout(); @@ -133,7 +149,7 @@ void PlacesItemEditDialog::initialize() formLayout->addRow(i18nc("@label", "Location:"), m_urlEdit); // Provide room for at least 40 chars (average char width is half of height) m_urlEdit->setMinimumWidth(m_urlEdit->fontMetrics().height() * (40 / 2)); - connect(m_urlEdit->lineEdit(), SIGNAL(textChanged(QString)), this, SLOT(slotUrlChanged(QString))); + connect(m_urlEdit->lineEdit(), &KLineEdit::textChanged, this, &PlacesItemEditDialog::slotUrlChanged); m_iconButton = new KIconButton(mainWidget); formLayout->addRow(i18nc("@label", "Choose an icon:"), m_iconButton); @@ -164,7 +180,5 @@ void PlacesItemEditDialog::initialize() m_textEdit->setFocus(); } - setMainWidget(mainWidget); } -#include "placesitemeditdialog.moc" diff --git a/src/panels/places/placesitemeditdialog.h b/src/panels/places/placesitemeditdialog.h index bf348479c..3944b5a35 100644 --- a/src/panels/places/placesitemeditdialog.h +++ b/src/panels/places/placesitemeditdialog.h @@ -24,15 +24,16 @@ #ifndef PLACESITEMEDITDIALOG_H #define PLACESITEMEDITDIALOG_H -#include <KDialog> +#include <QDialog> #include <KUrl> class KIconButton; class KLineEdit; class KUrlRequester; class QCheckBox; +class QPushButton; -class PlacesItemEditDialog: public KDialog +class PlacesItemEditDialog: public QDialog { Q_OBJECT @@ -71,6 +72,7 @@ private: KLineEdit* m_textEdit; KIconButton* m_iconButton; QCheckBox* m_appLocal; + QPushButton *m_okButton; }; #endif diff --git a/src/panels/places/placesitemlistgroupheader.cpp b/src/panels/places/placesitemlistgroupheader.cpp index ec7c4b18c..e17fd4d66 100644 --- a/src/panels/places/placesitemlistgroupheader.cpp +++ b/src/panels/places/placesitemlistgroupheader.cpp @@ -42,4 +42,3 @@ QPalette::ColorRole PlacesItemListGroupHeader::normalTextColorRole() const return QPalette::WindowText; } -#include "placesitemlistgroupheader.moc" diff --git a/src/panels/places/placesitemlistwidget.cpp b/src/panels/places/placesitemlistwidget.cpp index e33d1daf9..83b00d798 100644 --- a/src/panels/places/placesitemlistwidget.cpp +++ b/src/panels/places/placesitemlistwidget.cpp @@ -40,4 +40,3 @@ QPalette::ColorRole PlacesItemListWidget::normalTextColorRole() const return QPalette::WindowText; } -#include "placesitemlistwidget.moc" diff --git a/src/panels/places/placesitemmodel.cpp b/src/panels/places/placesitemmodel.cpp index 6accdc837..aa7f720b4 100644 --- a/src/panels/places/placesitemmodel.cpp +++ b/src/panels/places/placesitemmodel.cpp @@ -30,11 +30,12 @@ #include <KBookmarkManager> #include <KComponentData> #include <KDebug> -#include <KIcon> +#include <QIcon> #include <kprotocolinfo.h> #include <KLocale> -#include <KStandardDirs> +#include <QStandardPaths> #include <KUser> +#include <KGlobal> #include "placesitem.h" #include <QAction> #include <QDate> @@ -52,8 +53,8 @@ #include <views/viewproperties.h> #ifdef HAVE_BALOO - #include <baloo/query.h> - #include <baloo/indexerconfig.h> + #include <Baloo/Query> + #include <Baloo/IndexerConfig> #endif namespace { @@ -64,7 +65,7 @@ namespace { // be independent from changes in the Baloo-search-URL-syntax. // Hence a prefix to the application-name of the stored bookmarks is // added, which is only read by PlacesItemModel. - const char* AppNamePrefix = "-places-panel"; + const char AppNamePrefix[] = "-places-panel"; } PlacesItemModel::PlacesItemModel(QObject* parent) : @@ -86,7 +87,7 @@ PlacesItemModel::PlacesItemModel(QObject* parent) : Baloo::IndexerConfig config; m_fileIndexingEnabled = config.fileIndexingEnabled(); #endif - const QString file = KStandardDirs::locateLocal("data", "kfileplaces/bookmarks.xml"); + const QString file = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kfileplaces/bookmarks.xml"); m_bookmarkManager = KBookmarkManager::managerForFile(file, "kfilePlaces"); createSystemBookmarks(); @@ -98,17 +99,17 @@ PlacesItemModel::PlacesItemModel(QObject* parent) : m_saveBookmarksTimer = new QTimer(this); m_saveBookmarksTimer->setInterval(syncBookmarksTimeout); m_saveBookmarksTimer->setSingleShot(true); - connect(m_saveBookmarksTimer, SIGNAL(timeout()), this, SLOT(saveBookmarks())); + connect(m_saveBookmarksTimer, &QTimer::timeout, this, &PlacesItemModel::saveBookmarks); m_updateBookmarksTimer = new QTimer(this); m_updateBookmarksTimer->setInterval(syncBookmarksTimeout); m_updateBookmarksTimer->setSingleShot(true); - connect(m_updateBookmarksTimer, SIGNAL(timeout()), this, SLOT(updateBookmarks())); + connect(m_updateBookmarksTimer, &QTimer::timeout, this, &PlacesItemModel::updateBookmarks); - connect(m_bookmarkManager, SIGNAL(changed(QString,QString)), - m_updateBookmarksTimer, SLOT(start())); - connect(m_bookmarkManager, SIGNAL(bookmarksChanged(QString)), - m_updateBookmarksTimer, SLOT(start())); + connect(m_bookmarkManager, &KBookmarkManager::changed, + m_updateBookmarksTimer, static_cast<void(QTimer::*)()>(&QTimer::start)); + connect(m_bookmarkManager, &KBookmarkManager::bookmarksChanged, + m_updateBookmarksTimer, static_cast<void(QTimer::*)()>(&QTimer::start)); } PlacesItemModel::~PlacesItemModel() @@ -254,7 +255,7 @@ QAction* PlacesItemModel::ejectAction(int index) const { const PlacesItem* item = placesItem(index); if (item && item->device().is<Solid::OpticalDisc>()) { - return new QAction(KIcon("media-eject"), i18nc("@item", "Eject '%1'", item->text()), 0); + return new QAction(QIcon::fromTheme("media-eject"), i18nc("@item", "Eject '%1'", item->text()), 0); } return 0; @@ -303,7 +304,7 @@ QAction* PlacesItemModel::teardownAction(int index) const return new QAction(text, 0); } - return new QAction(KIcon(iconName), text, 0); + return new QAction(QIcon::fromTheme(iconName), text, 0); } void PlacesItemModel::requestEject(int index) @@ -312,9 +313,8 @@ void PlacesItemModel::requestEject(int index) if (item) { Solid::OpticalDrive* drive = item->device().parent().as<Solid::OpticalDrive>(); if (drive) { - connect(drive, SIGNAL(ejectDone(Solid::ErrorType,QVariant,QString)), - this, SLOT(slotStorageTeardownDone(Solid::ErrorType,QVariant)), - Qt::UniqueConnection); + connect(drive, &Solid::OpticalDrive::ejectDone, + this, &PlacesItemModel::slotStorageTeardownDone); drive->eject(); } else { const QString label = item->text(); @@ -330,9 +330,8 @@ void PlacesItemModel::requestTeardown(int index) if (item) { Solid::StorageAccess* access = item->device().as<Solid::StorageAccess>(); if (access) { - connect(access, SIGNAL(teardownDone(Solid::ErrorType,QVariant,QString)), - this, SLOT(slotStorageTeardownDone(Solid::ErrorType,QVariant)), - Qt::UniqueConnection); + connect(access, &Solid::StorageAccess::teardownDone, + this, &PlacesItemModel::slotStorageTeardownDone); access->teardown(); } } @@ -360,9 +359,8 @@ void PlacesItemModel::requestStorageSetup(int index) m_storageSetupInProgress[access] = index; - connect(access, SIGNAL(setupDone(Solid::ErrorType,QVariant,QString)), - this, SLOT(slotStorageSetupDone(Solid::ErrorType,QVariant,QString)), - Qt::UniqueConnection); + connect(access, &Solid::StorageAccess::setupDone, + this, &PlacesItemModel::slotStorageSetupDone); access->setup(); } @@ -602,7 +600,6 @@ void PlacesItemModel::slotStorageSetupDone(Solid::ErrorType error, { Q_UNUSED(udi); - Q_ASSERT(!m_storageSetupInProgress.isEmpty()); const int index = m_storageSetupInProgress.take(sender()); const PlacesItem* item = placesItem(index); if (!item) { @@ -973,8 +970,8 @@ void PlacesItemModel::initializeAvailableDevices() Q_ASSERT(m_predicate.isValid()); Solid::DeviceNotifier* notifier = Solid::DeviceNotifier::instance(); - connect(notifier, SIGNAL(deviceAdded(QString)), this, SLOT(slotDeviceAdded(QString))); - connect(notifier, SIGNAL(deviceRemoved(QString)), this, SLOT(slotDeviceRemoved(QString))); + connect(notifier, &Solid::DeviceNotifier::deviceAdded, this, &PlacesItemModel::slotDeviceAdded); + connect(notifier, &Solid::DeviceNotifier::deviceRemoved, this, &PlacesItemModel::slotDeviceRemoved); const QList<Solid::Device>& deviceList = Solid::Device::listFromQuery(m_predicate); foreach (const Solid::Device& device, deviceList) { @@ -1232,4 +1229,3 @@ void PlacesItemModel::showModelState() } #endif -#include "placesitemmodel.moc" diff --git a/src/panels/places/placesitemsignalhandler.cpp b/src/panels/places/placesitemsignalhandler.cpp index 54a916de7..c9bc0db3f 100644 --- a/src/panels/places/placesitemsignalhandler.cpp +++ b/src/panels/places/placesitemsignalhandler.cpp @@ -47,4 +47,3 @@ void PlacesItemSignalHandler::onTrashDirListerCompleted() } } -#include "placesitemsignalhandler.moc" diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp index 720e07ce3..16686f92e 100644 --- a/src/panels/places/placespanel.cpp +++ b/src/panels/places/placespanel.cpp @@ -27,15 +27,18 @@ #include <KDebug> #include <KDirNotify> -#include <KIcon> +#include <QIcon> #include <KIO/Job> +#include <KIO/EmptyTrashJob> #include <KIO/JobUiDelegate> +#include <KJobWidgets> #include <KLocale> +#include <KIconLoader> #include <kitemviews/kitemlistcontainer.h> #include <kitemviews/kitemlistcontroller.h> #include <kitemviews/kitemlistselectionmanager.h> #include <kitemviews/kstandarditem.h> -#include <KMenu> +#include <QMenu> #include <KMessageBox> #include <KNotification> #include "placesitem.h" @@ -48,6 +51,7 @@ #include <QGraphicsSceneDragDropEvent> #include <QVBoxLayout> #include <QShowEvent> +#include <QMimeData> PlacesPanel::PlacesPanel(QWidget* parent) : Panel(parent), @@ -101,8 +105,8 @@ void PlacesPanel::showEvent(QShowEvent* event) // used at all and stays invisible. m_model = new PlacesItemModel(this); m_model->setGroupedSorting(true); - connect(m_model, SIGNAL(errorMessage(QString)), - this, SIGNAL(errorMessage(QString))); + connect(m_model, &PlacesItemModel::errorMessage, + this, &PlacesPanel::errorMessage); m_view = new PlacesView(); m_view->setWidgetCreator(new KItemListWidgetCreator<PlacesItemListWidget>()); @@ -114,12 +118,12 @@ void PlacesPanel::showEvent(QShowEvent* event) readSettings(); - connect(m_controller, SIGNAL(itemActivated(int)), this, SLOT(slotItemActivated(int))); - connect(m_controller, SIGNAL(itemMiddleClicked(int)), this, SLOT(slotItemMiddleClicked(int))); - connect(m_controller, SIGNAL(itemContextMenuRequested(int,QPointF)), this, SLOT(slotItemContextMenuRequested(int,QPointF))); - connect(m_controller, SIGNAL(viewContextMenuRequested(QPointF)), this, SLOT(slotViewContextMenuRequested(QPointF))); - connect(m_controller, SIGNAL(itemDropEvent(int,QGraphicsSceneDragDropEvent*)), this, SLOT(slotItemDropEvent(int,QGraphicsSceneDragDropEvent*))); - connect(m_controller, SIGNAL(aboveItemDropEvent(int,QGraphicsSceneDragDropEvent*)), this, SLOT(slotAboveItemDropEvent(int,QGraphicsSceneDragDropEvent*))); + connect(m_controller, &KItemListController::itemActivated, this, &PlacesPanel::slotItemActivated); + connect(m_controller, &KItemListController::itemMiddleClicked, this, &PlacesPanel::slotItemMiddleClicked); + connect(m_controller, &KItemListController::itemContextMenuRequested, this, &PlacesPanel::slotItemContextMenuRequested); + connect(m_controller, &KItemListController::viewContextMenuRequested, this, &PlacesPanel::slotViewContextMenuRequested); + connect(m_controller, &KItemListController::itemDropEvent, this, &PlacesPanel::slotItemDropEvent); + connect(m_controller, &KItemListController::aboveItemDropEvent, this, &PlacesPanel::slotAboveItemDropEvent); KItemListContainer* container = new KItemListContainer(m_controller, this); container->setEnabledFrame(false); @@ -151,7 +155,7 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) return; } - KMenu menu(this); + QMenu menu(this); QAction* emptyTrashAction = 0; QAction* addAction = 0; @@ -181,25 +185,25 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) } } else { if (item->url() == KUrl("trash:/")) { - emptyTrashAction = menu.addAction(KIcon("trash-empty"), i18nc("@action:inmenu", "Empty Trash")); + emptyTrashAction = menu.addAction(QIcon::fromTheme("trash-empty"), i18nc("@action:inmenu", "Empty Trash")); emptyTrashAction->setEnabled(item->icon() == "user-trash-full"); menu.addSeparator(); } - addAction = menu.addAction(KIcon("document-new"), i18nc("@item:inmenu", "Add Entry...")); + addAction = menu.addAction(QIcon::fromTheme("document-new"), i18nc("@item:inmenu", "Add Entry...")); mainSeparator = menu.addSeparator(); - editAction = menu.addAction(KIcon("document-properties"), i18nc("@item:inmenu", "Edit '%1'...", label)); + editAction = menu.addAction(QIcon::fromTheme("document-properties"), i18nc("@item:inmenu", "Edit '%1'...", label)); } if (!addAction) { - addAction = menu.addAction(KIcon("document-new"), i18nc("@item:inmenu", "Add Entry...")); + addAction = menu.addAction(QIcon::fromTheme("document-new"), i18nc("@item:inmenu", "Add Entry...")); } QAction* openInNewTabAction = menu.addAction(i18nc("@item:inmenu", "Open '%1' in New Tab", label)); - openInNewTabAction->setIcon(KIcon("tab-new")); + openInNewTabAction->setIcon(QIcon::fromTheme("tab-new")); QAction* removeAction = 0; if (!isDevice && !item->isSystemItem()) { - removeAction = menu.addAction(KIcon("edit-delete"), i18nc("@item:inmenu", "Remove '%1'", label)); + removeAction = menu.addAction(QIcon::fromTheme("edit-delete"), i18nc("@item:inmenu", "Remove '%1'", label)); } QAction* hideAction = menu.addAction(i18nc("@item:inmenu", "Hide '%1'", label)); @@ -217,7 +221,7 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) } menu.addSeparator(); - KMenu* iconSizeSubMenu = new KMenu(i18nc("@item:inmenu", "Icon Size"), &menu); + QMenu* iconSizeSubMenu = new QMenu(i18nc("@item:inmenu", "Icon Size"), &menu); struct IconSizeInfo { @@ -299,9 +303,9 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) void PlacesPanel::slotViewContextMenuRequested(const QPointF& pos) { - KMenu menu(this); + QMenu menu(this); - QAction* addAction = menu.addAction(KIcon("document-new"), i18nc("@item:inmenu", "Add Entry...")); + QAction* addAction = menu.addAction(QIcon::fromTheme("document-new"), i18nc("@item:inmenu", "Add Entry...")); QAction* showAllAction = 0; if (m_model->hiddenCount() > 0) { @@ -340,8 +344,8 @@ void PlacesPanel::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* even } if (m_model->storageSetupNeeded(index)) { - connect(m_model, SIGNAL(storageSetupDone(int,bool)), - this, SLOT(slotItemDropEventStorageSetupDone(int,bool))); + connect(m_model, &PlacesItemModel::storageSetupDone, + this, &PlacesPanel::slotItemDropEventStorageSetupDone); m_itemDropEventIndex = index; @@ -379,8 +383,8 @@ void PlacesPanel::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* even void PlacesPanel::slotItemDropEventStorageSetupDone(int index, bool success) { - disconnect(m_model, SIGNAL(storageSetupDone(int,bool)), - this, SLOT(slotItemDropEventStorageSetupDone(int,bool))); + disconnect(m_model, &PlacesItemModel::storageSetupDone, + this, &PlacesPanel::slotItemDropEventStorageSetupDone); if ((index == m_itemDropEventIndex) && m_itemDropEvent && m_itemDropEventMimeData) { if (success) { @@ -423,13 +427,14 @@ void PlacesPanel::slotTrashUpdated(KJob* job) if (job->error()) { emit errorMessage(job->errorString()); } - org::kde::KDirNotify::emitFilesAdded("trash:/"); + // as long as KIO doesn't do this, do it ourselves + KNotification::event("Trash: emptied", QString(), QPixmap(), 0, KNotification::DefaultEvent); } void PlacesPanel::slotStorageSetupDone(int index, bool success) { - disconnect(m_model, SIGNAL(storageSetupDone(int,bool)), - this, SLOT(slotStorageSetupDone(int,bool))); + disconnect(m_model, &PlacesItemModel::storageSetupDone, + this, &PlacesPanel::slotStorageSetupDone); if (m_triggerStorageSetupButton == Qt::NoButton) { return; @@ -447,21 +452,12 @@ void PlacesPanel::slotStorageSetupDone(int index, bool success) void PlacesPanel::emptyTrash() { - const QString text = i18nc("@info", "Do you really want to empty the Trash? All items will be deleted."); - const bool del = KMessageBox::warningContinueCancel(window(), - text, - QString(), - KGuiItem(i18nc("@action:button", "Empty Trash"), - KIcon("user-trash")) - ) == KMessageBox::Continue; - if (del) { - QByteArray packedArgs; - QDataStream stream(&packedArgs, QIODevice::WriteOnly); - stream << int(1); - KIO::Job *job = KIO::special(KUrl("trash:/"), packedArgs); - KNotification::event("Trash: emptied", QString() , QPixmap() , 0, KNotification::DefaultEvent); - job->ui()->setWindow(parentWidget()); - connect(job, SIGNAL(result(KJob*)), SLOT(slotTrashUpdated(KJob*))); + KIO::JobUiDelegate uiDelegate; + uiDelegate.setWindow(window()); + if (uiDelegate.askDeleteConfirmation(QList<QUrl>(), KIO::JobUiDelegate::EmptyTrash, KIO::JobUiDelegate::DefaultConfirmation)) { + KIO::Job* job = KIO::emptyTrash(); + KJobWidgets::setWindow(job, window()); + connect(job, &KIO::Job::result, this, &PlacesPanel::slotTrashUpdated); } } @@ -471,7 +467,7 @@ void PlacesPanel::addEntry() const KUrl url = m_model->data(index).value("url").value<KUrl>(); QPointer<PlacesItemEditDialog> dialog = new PlacesItemEditDialog(this); - dialog->setCaption(i18nc("@title:window", "Add Places Entry")); + dialog->setWindowTitle(i18nc("@title:window", "Add Places Entry")); dialog->setAllowGlobal(true); dialog->setUrl(url); if (dialog->exec() == QDialog::Accepted) { @@ -487,7 +483,7 @@ void PlacesPanel::editEntry(int index) QHash<QByteArray, QVariant> data = m_model->data(index); QPointer<PlacesItemEditDialog> dialog = new PlacesItemEditDialog(this); - dialog->setCaption(i18nc("@title:window", "Edit Places Entry")); + dialog->setWindowTitle(i18nc("@title:window", "Edit Places Entry")); dialog->setIcon(data.value("iconName").toString()); dialog->setText(data.value("text").toString()); dialog->setUrl(data.value("url").value<KUrl>()); @@ -524,8 +520,8 @@ void PlacesPanel::triggerItem(int index, Qt::MouseButton button) m_triggerStorageSetupButton = button; m_storageSetupFailedUrl = url(); - connect(m_model, SIGNAL(storageSetupDone(int,bool)), - this, SLOT(slotStorageSetupDone(int,bool))); + connect(m_model, &PlacesItemModel::storageSetupDone, + this, &PlacesPanel::slotStorageSetupDone); m_model->requestStorageSetup(index); } else { @@ -543,4 +539,3 @@ void PlacesPanel::triggerItem(int index, Qt::MouseButton button) } -#include "placespanel.moc" diff --git a/src/panels/places/placespanel.h b/src/panels/places/placespanel.h index 16112e8b2..3078f0222 100644 --- a/src/panels/places/placespanel.h +++ b/src/panels/places/placespanel.h @@ -25,7 +25,6 @@ #include <panels/panel.h> class KItemListController; -class PlacesItemEditDialog; class PlacesItem; class PlacesItemModel; class PlacesView; diff --git a/src/panels/places/placesview.cpp b/src/panels/places/placesview.cpp index a298a5250..7c455b4bc 100644 --- a/src/panels/places/placesview.cpp +++ b/src/panels/places/placesview.cpp @@ -49,4 +49,3 @@ int PlacesView::iconSize() const return option.iconSize; } -#include "placesview.moc" diff --git a/src/panels/terminal/terminalpanel.cpp b/src/panels/terminal/terminalpanel.cpp index bfd3002f0..c8352f73a 100644 --- a/src/panels/terminal/terminalpanel.cpp +++ b/src/panels/terminal/terminalpanel.cpp @@ -24,11 +24,12 @@ #include <KPluginLoader> #include <KPluginFactory> #include <KService> -#include <kde_terminal_interface_v2.h> -#include <KParts/Part> +#include <kde_terminal_interface.h> +#include <KParts/ReadOnlyPart> #include <KShell> #include <KIO/Job> #include <KIO/JobUiDelegate> +#include <KJobWidgets> #include <QBoxLayout> #include <QDir> @@ -69,7 +70,7 @@ void TerminalPanel::dockVisibilityChanged() this, SLOT(slotKonsolePartCurrentDirectoryChanged(QString))); // Make sure this terminal does not prevent unmounting any removable drives - changeDir(KUrl::fromPath("/")); + changeDir(QUrl::fromLocalFile("/")); // Because we have disconnected from the part's currentDirectoryChanged() // signal, we have to update m_konsolePartCurrentDirectory manually. If this @@ -109,10 +110,10 @@ void TerminalPanel::showEvent(QShowEvent* event) } m_konsolePart = factory ? (factory->create<KParts::ReadOnlyPart>(this)) : 0; if (m_konsolePart) { - connect(m_konsolePart, SIGNAL(destroyed(QObject*)), this, SLOT(terminalExited())); + connect(m_konsolePart, &KParts::ReadOnlyPart::destroyed, this, &TerminalPanel::terminalExited); m_terminalWidget = m_konsolePart->widget(); m_layout->addWidget(m_terminalWidget); - m_terminal = qobject_cast<TerminalInterfaceV2 *>(m_konsolePart); + m_terminal = qobject_cast<TerminalInterface*>(m_konsolePart); } } if (m_terminal) { @@ -136,9 +137,9 @@ void TerminalPanel::changeDir(const KUrl& url) } else { m_mostLocalUrlJob = KIO::mostLocalUrl(url, KIO::HideProgressInfo); if (m_mostLocalUrlJob->ui()) { - m_mostLocalUrlJob->ui()->setWindow(this); + KJobWidgets::setWindow(m_mostLocalUrlJob, this); } - connect(m_mostLocalUrlJob, SIGNAL(result(KJob*)), this, SLOT(slotMostLocalUrlResult(KJob*))); + connect(m_mostLocalUrlJob, &KIO::StatJob::result, this, &TerminalPanel::slotMostLocalUrlResult); } } @@ -194,4 +195,3 @@ void TerminalPanel::slotKonsolePartCurrentDirectoryChanged(const QString& dir) } } -#include "terminalpanel.moc" diff --git a/src/panels/terminal/terminalpanel.h b/src/panels/terminal/terminalpanel.h index 374476e1c..987ee4753 100644 --- a/src/panels/terminal/terminalpanel.h +++ b/src/panels/terminal/terminalpanel.h @@ -22,7 +22,7 @@ #include <panels/panel.h> -class TerminalInterfaceV2; +class TerminalInterface; class QVBoxLayout; class QWidget; @@ -78,7 +78,7 @@ private: KIO::StatJob* m_mostLocalUrlJob; QVBoxLayout* m_layout; - TerminalInterfaceV2* m_terminal; + TerminalInterface* m_terminal; QWidget* m_terminalWidget; KParts::ReadOnlyPart* m_konsolePart; QString m_konsolePartCurrentDirectory; diff --git a/src/search/dolphinfacetswidget.cpp b/src/search/dolphinfacetswidget.cpp index f20ae68d5..8e1a9c470 100644 --- a/src/search/dolphinfacetswidget.cpp +++ b/src/search/dolphinfacetswidget.cpp @@ -295,9 +295,8 @@ QRadioButton* DolphinFacetsWidget::createRadioButton(const QString& text, QButtonGroup* group) { QRadioButton* button = new QRadioButton(text); - connect(button, SIGNAL(clicked()), this, SIGNAL(facetChanged())); + connect(button, &QRadioButton::clicked, this, &DolphinFacetsWidget::facetChanged); group->addButton(button); return button; } -#include "dolphinfacetswidget.moc" diff --git a/src/search/dolphinfacetswidget.h b/src/search/dolphinfacetswidget.h index 757dcd482..03fb1279d 100644 --- a/src/search/dolphinfacetswidget.h +++ b/src/search/dolphinfacetswidget.h @@ -24,11 +24,10 @@ #include <config-baloo.h> #ifdef HAVE_BALOO - #include <baloo/term.h> + #include <Baloo/Term> #endif class QButtonGroup; -class QCheckBox; class QDate; class QRadioButton; diff --git a/src/search/dolphinsearchbox.cpp b/src/search/dolphinsearchbox.cpp index 46ca01a4c..b8b1dbbca 100644 --- a/src/search/dolphinsearchbox.cpp +++ b/src/search/dolphinsearchbox.cpp @@ -22,10 +22,11 @@ #include "dolphin_searchsettings.h" #include "dolphinfacetswidget.h" -#include <KIcon> +#include <QIcon> #include <KLineEdit> #include <KLocale> #include <KSeparator> +#include <KGlobalSettings> #include <QButtonGroup> #include <QDir> @@ -39,12 +40,14 @@ #include <QToolButton> #include <QVBoxLayout> -#include <config-baloo.h> #ifdef HAVE_BALOO - #include <baloo/query.h> - #include <baloo/term.h> - #include <baloo/indexerconfig.h> + #include <Baloo/NaturalFileQueryParser> + #include <Baloo/QueryBuilder> + #include <Baloo/Query> + #include <Baloo/Term> + #include <Baloo/IndexerConfig> #endif +#include <QFontDatabase> DolphinSearchBox::DolphinSearchBox(QWidget* parent) : QWidget(parent), @@ -251,8 +254,10 @@ void DolphinSearchBox::slotConfigurationChanged() } } -void DolphinSearchBox::slotSearchTextChanged(const QString& text) +void DolphinSearchBox::slotSearchTextChanged() { + const QString text = m_searchInput->text(); + if (text.isEmpty()) { m_startSearchTimer->stop(); } else { @@ -261,10 +266,17 @@ void DolphinSearchBox::slotSearchTextChanged(const QString& text) emit searchTextChanged(text); } -void DolphinSearchBox::slotReturnPressed(const QString& text) +void DolphinSearchBox::slotReturnPressed() { emitSearchRequest(); - emit returnPressed(text); + emit returnPressed(m_searchInput->text()); +} + +void DolphinSearchBox::updateSearchInputParsing() +{ +#ifdef HAVE_BALOO + m_searchInput->setParsingEnabled(m_contentButton->isChecked()); +#endif } void DolphinSearchBox::slotFacetsButtonToggled() @@ -287,7 +299,7 @@ void DolphinSearchBox::initButton(QToolButton* button) button->setAutoExclusive(true); button->setAutoRaise(true); button->setCheckable(true); - connect(button, SIGNAL(clicked(bool)), this, SLOT(slotConfigurationChanged())); + connect(button, &QToolButton::clicked, this, &DolphinSearchBox::slotConfigurationChanged); } void DolphinSearchBox::loadSettings() @@ -305,6 +317,7 @@ void DolphinSearchBox::loadSettings() } m_facetsWidget->setVisible(SearchSettings::showFacetsWidget()); + updateSearchInputParsing(); } void DolphinSearchBox::saveSettings() @@ -312,7 +325,7 @@ void DolphinSearchBox::saveSettings() SearchSettings::setLocation(m_fromHereButton->isChecked() ? "FromHere" : "Everywhere"); SearchSettings::setWhat(m_fileNameButton->isChecked() ? "FileName" : "Content"); SearchSettings::setShowFacetsWidget(m_facetsToggleButton->isChecked()); - SearchSettings::self()->writeConfig(); + SearchSettings::self()->save(); } void DolphinSearchBox::init() @@ -320,23 +333,32 @@ void DolphinSearchBox::init() // Create close button QToolButton* closeButton = new QToolButton(this); closeButton->setAutoRaise(true); - closeButton->setIcon(KIcon("dialog-close")); + closeButton->setIcon(QIcon::fromTheme("dialog-close")); closeButton->setToolTip(i18nc("@info:tooltip", "Quit searching")); - connect(closeButton, SIGNAL(clicked()), this, SLOT(emitCloseRequest())); + connect(closeButton, &QToolButton::clicked, this, &DolphinSearchBox::emitCloseRequest); // Create search label m_searchLabel = new QLabel(this); // Create search box +#ifdef HAVE_BALOO + m_queryParser.reset(new Baloo::NaturalFileQueryParser); + m_searchInput = new Baloo::QueryBuilder(m_queryParser.data(), this); + connect(m_searchInput, &Baloo::QueryBuilder::editingFinished, + this, &DolphinSearchBox::slotReturnPressed); + connect(m_searchInput, &Baloo::QueryBuilder::textChanged, + this, &DolphinSearchBox::slotSearchTextChanged); +#else m_searchInput = new KLineEdit(this); m_searchInput->installEventFilter(this); m_searchInput->setClearButtonShown(true); - m_searchInput->setFont(KGlobalSettings::generalFont()); + m_searchInput->setFont(QFontDatabase::systemFont(QFontDatabase::GeneralFont)); + connect(m_searchInput, &KLineEdit::returnPressed, + this, &DolphinSearchBox::slotReturnPressed); + connect(m_searchInput, &KLineEdit::textChanged, + this, &DolphinSearchBox::slotSearchTextChanged); +#endif setFocusProxy(m_searchInput); - connect(m_searchInput, SIGNAL(returnPressed(QString)), - this, SLOT(slotReturnPressed(QString))); - connect(m_searchInput, SIGNAL(textChanged(QString)), - this, SLOT(slotSearchTextChanged(QString))); // Apply layout for the search input QHBoxLayout* searchInputLayout = new QHBoxLayout(); @@ -357,6 +379,8 @@ void DolphinSearchBox::init() QButtonGroup* searchWhatGroup = new QButtonGroup(this); searchWhatGroup->addButton(m_fileNameButton); searchWhatGroup->addButton(m_contentButton); + connect(searchWhatGroup, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), + this, &DolphinSearchBox::updateSearchInputParsing); m_separator = new KSeparator(Qt::Vertical, this); @@ -377,12 +401,12 @@ void DolphinSearchBox::init() m_facetsToggleButton = new QToolButton(this); m_facetsToggleButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); initButton(m_facetsToggleButton); - connect(m_facetsToggleButton, SIGNAL(clicked()), this, SLOT(slotFacetsButtonToggled())); + connect(m_facetsToggleButton, &QToolButton::clicked, this, &DolphinSearchBox::slotFacetsButtonToggled); m_facetsWidget = new DolphinFacetsWidget(this); m_facetsWidget->installEventFilter(this); m_facetsWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum); - connect(m_facetsWidget, SIGNAL(facetChanged()), this, SLOT(slotFacetChanged())); + connect(m_facetsWidget, &DolphinFacetsWidget::facetChanged, this, &DolphinSearchBox::slotFacetChanged); // Apply layout for the options QHBoxLayout* optionsLayout = new QHBoxLayout(); @@ -422,7 +446,7 @@ void DolphinSearchBox::init() m_startSearchTimer = new QTimer(this); m_startSearchTimer->setSingleShot(true); m_startSearchTimer->setInterval(1000); - connect(m_startSearchTimer, SIGNAL(timeout()), this, SLOT(emitSearchRequest())); + connect(m_startSearchTimer, &QTimer::timeout, this, &DolphinSearchBox::emitSearchRequest); updateFacetsToggleButton(); } @@ -433,28 +457,31 @@ KUrl DolphinSearchBox::balooUrlForSearching() const const QString text = m_searchInput->text(); Baloo::Query query; + + if (m_contentButton->isChecked()) { + query = m_queryParser->parse(text, Baloo::NaturalQueryParser::DetectFilenamePattern); + } else { + query.setTerm(Baloo::Term(QLatin1String("filename"), text)); + } + + // Configure the query so that it returns files and takes the rating into account query.addType("File"); query.addType(m_facetsWidget->facetType()); Baloo::Term term(Baloo::Term::And); - Baloo::Term ratingTerm = m_facetsWidget->ratingTerm(); + if (ratingTerm.isValid()) { + term.addSubTerm(query.term()); term.addSubTerm(ratingTerm); - } - if (m_contentButton->isChecked()) { - query.setSearchString(text); - } else if (!text.isEmpty()) { - term.addSubTerm(Baloo::Term(QLatin1String("filename"), text)); + query.setTerm(term); } if (m_fromHereButton->isChecked()) { - query.addCustomOption("includeFolder", m_searchPath.toLocalFile()); + query.setIncludeFolder(m_searchPath.toLocalFile()); } - query.setTerm(term); - return query.toSearchUrl(i18nc("@title UDS_DISPLAY_NAME for a KIO directory listing. %1 is the query the user entered.", "Query Results from '%1'", text)); #else @@ -472,9 +499,9 @@ void DolphinSearchBox::fromBalooSearchUrl(const KUrl& url) // while we adjust the search text and the facet widget. blockSignals(true); - const QVariantHash customOptions = query.customOptions(); - if (customOptions.contains("includeFolder")) { - setSearchPath(customOptions.value("includeFolder").toString()); + const QString customDir = query.includeFolder(); + if (!customDir.isEmpty()) { + setSearchPath(customDir); } else { setSearchPath(QDir::homePath()); } @@ -508,8 +535,7 @@ void DolphinSearchBox::updateFacetsToggleButton() { const bool facetsIsVisible = SearchSettings::showFacetsWidget(); m_facetsToggleButton->setChecked(facetsIsVisible ? true : false); - m_facetsToggleButton->setIcon(KIcon(facetsIsVisible ? "arrow-up-double" : "arrow-down-double")); + m_facetsToggleButton->setIcon(QIcon::fromTheme(facetsIsVisible ? "arrow-up-double" : "arrow-down-double")); m_facetsToggleButton->setText(facetsIsVisible ? i18nc("action:button", "Fewer Options") : i18nc("action:button", "More Options")); } -#include "dolphinsearchbox.moc" diff --git a/src/search/dolphinsearchbox.h b/src/search/dolphinsearchbox.h index 53b12ffab..eba81346d 100644 --- a/src/search/dolphinsearchbox.h +++ b/src/search/dolphinsearchbox.h @@ -24,6 +24,8 @@ #include <QList> #include <QWidget> +#include <config-baloo.h> + class DolphinFacetsWidget; class KLineEdit; class KSeparator; @@ -32,6 +34,11 @@ class QScrollArea; class QLabel; class QVBoxLayout; +namespace Baloo { + class QueryBuilder; + class NaturalQueryParser; +} + /** * @brief Input box for searching files with or without Baloo. * @@ -134,10 +141,11 @@ private slots: void emitSearchRequest(); void emitCloseRequest(); void slotConfigurationChanged(); - void slotSearchTextChanged(const QString& text); - void slotReturnPressed(const QString& text); + void slotSearchTextChanged(); + void slotReturnPressed(); void slotFacetsButtonToggled(); void slotFacetChanged(); + void updateSearchInputParsing(); private: void initButton(QToolButton* button); @@ -164,7 +172,12 @@ private: QVBoxLayout* m_topLayout; QLabel* m_searchLabel; +#ifdef HAVE_BALOO + Baloo::QueryBuilder* m_searchInput; + QScopedPointer<Baloo::NaturalQueryParser> m_queryParser; +#else KLineEdit* m_searchInput; +#endif QScrollArea* m_optionsScrollArea; QToolButton* m_fileNameButton; QToolButton* m_contentButton; diff --git a/src/search/filenamesearchprotocol.cpp b/src/search/filenamesearchprotocol.cpp index 38dd26b23..b56a99580 100644 --- a/src/search/filenamesearchprotocol.cpp +++ b/src/search/filenamesearchprotocol.cpp @@ -25,6 +25,7 @@ #include <KIO/NetAccess> #include <KIO/Job> #include <KUrl> +#include <kdemacros.h> #include <ktemporaryfile.h> #include <QCoreApplication> @@ -44,22 +45,22 @@ FileNameSearchProtocol::~FileNameSearchProtocol() cleanup(); } -void FileNameSearchProtocol::listDir(const KUrl& url) +void FileNameSearchProtocol::listDir(const QUrl& url) { cleanup(); - const QString search = url.queryItem("search"); + const QString search = url.queryItemValue("search"); if (!search.isEmpty()) { m_regExp = new QRegExp(search, Qt::CaseInsensitive, QRegExp::Wildcard); } m_checkContent = false; - const QString checkContent = url.queryItem("checkContent"); + const QString checkContent = url.queryItemValue("checkContent"); if (checkContent == QLatin1String("yes")) { m_checkContent = true; } - const QString urlString = url.queryItem("url"); + const QString urlString = url.queryItemValue("url"); searchDirectory(KUrl(urlString)); cleanup(); @@ -80,8 +81,8 @@ void FileNameSearchProtocol::searchDirectory(const KUrl& directory) dirLister->openUrl(directory); QEventLoop eventLoop; - QObject::connect(dirLister, SIGNAL(canceled()), &eventLoop, SLOT(quit())); - QObject::connect(dirLister, SIGNAL(completed()), &eventLoop, SLOT(quit())); + QObject::connect(dirLister, static_cast<void(KDirLister::*)()>(&KDirLister::canceled), &eventLoop, &QEventLoop::quit); + QObject::connect(dirLister, static_cast<void(KDirLister::*)()>(&KDirLister::completed), &eventLoop, &QEventLoop::quit); eventLoop.exec(); // Visualize all items that match the search pattern @@ -91,7 +92,7 @@ void FileNameSearchProtocol::searchDirectory(const KUrl& directory) bool addItem = false; if (!m_regExp || item.name().contains(*m_regExp)) { addItem = true; - } else if (m_checkContent && item.determineMimeType()->is(QLatin1String("text/plain"))) { + } else if (m_checkContent && item.determineMimeType().inherits(QLatin1String("text/plain"))) { addItem = contentContainsPattern(item.url()); } diff --git a/src/search/filenamesearchprotocol.h b/src/search/filenamesearchprotocol.h index 4a854d729..732aef942 100644 --- a/src/search/filenamesearchprotocol.h +++ b/src/search/filenamesearchprotocol.h @@ -22,7 +22,6 @@ #include <kio/slavebase.h> -class KFileItem; class KUrl; class QRegExp; @@ -39,7 +38,7 @@ public: FileNameSearchProtocol(const QByteArray& pool, const QByteArray& app); virtual ~FileNameSearchProtocol(); - virtual void listDir(const KUrl& url); + virtual void listDir(const QUrl& url) Q_DECL_OVERRIDE; private: void searchDirectory(const KUrl& directory); diff --git a/src/settings/additionalinfodialog.cpp b/src/settings/additionalinfodialog.cpp index 0de639540..9cce603f5 100644 --- a/src/settings/additionalinfodialog.cpp +++ b/src/settings/additionalinfodialog.cpp @@ -28,7 +28,7 @@ #include <QVBoxLayout> #ifdef HAVE_BALOO - #include <baloo/indexerconfig.h> + #include <Baloo/IndexerConfig> #endif AdditionalInfoDialog::AdditionalInfoDialog(QWidget* parent, @@ -81,7 +81,7 @@ AdditionalInfoDialog::AdditionalInfoDialog(QWidget* parent, const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), "AdditionalInfoDialog"); restoreDialogSize(dialogConfig); - connect(this, SIGNAL(okClicked()), this, SLOT(slotOk())); + connect(this, &AdditionalInfoDialog::okClicked, this, &AdditionalInfoDialog::slotOk); } AdditionalInfoDialog::~AdditionalInfoDialog() @@ -110,4 +110,3 @@ void AdditionalInfoDialog::slotOk() } } -#include "additionalinfodialog.moc" diff --git a/src/settings/additionalinfodialog.h b/src/settings/additionalinfodialog.h index dd51768e5..4197d4794 100644 --- a/src/settings/additionalinfodialog.h +++ b/src/settings/additionalinfodialog.h @@ -24,7 +24,6 @@ #include <QList> #include <QListWidget> -class QCheckBox; /** * @brief Dialog for changing the additional information shown in the view. diff --git a/src/settings/applyviewpropsjob.cpp b/src/settings/applyviewpropsjob.cpp index 4bc77caee..d33d4430f 100644 --- a/src/settings/applyviewpropsjob.cpp +++ b/src/settings/applyviewpropsjob.cpp @@ -38,8 +38,8 @@ ApplyViewPropsJob::ApplyViewPropsJob(const KUrl& dir, m_viewProps->setSortOrder(viewProps.sortOrder()); KIO::ListJob* listJob = KIO::listRecursive(dir, KIO::HideProgressInfo); - connect(listJob, SIGNAL(entries(KIO::Job*,KIO::UDSEntryList)), - SLOT(slotEntries(KIO::Job*,KIO::UDSEntryList))); + connect(listJob, &KIO::ListJob::entries, + this, &ApplyViewPropsJob::slotEntries); addSubjob(listJob); } @@ -76,4 +76,3 @@ void ApplyViewPropsJob::slotResult(KJob* job) emitResult(); } -#include "applyviewpropsjob.moc" diff --git a/src/settings/dolphinsettingsdialog.cpp b/src/settings/dolphinsettingsdialog.cpp index 609e2ab92..533a7f089 100644 --- a/src/settings/dolphinsettingsdialog.cpp +++ b/src/settings/dolphinsettingsdialog.cpp @@ -32,7 +32,10 @@ #include <KLocale> #include <KMessageBox> -#include <KIcon> +#include <QIcon> + +#include <QPushButton> +#include <QDialogButtonBox> DolphinSettingsDialog::DolphinSettingsDialog(const KUrl& url, QWidget* parent) : KPageDialog(parent), @@ -43,55 +46,62 @@ DolphinSettingsDialog::DolphinSettingsDialog(const KUrl& url, QWidget* parent) : setMinimumSize(QSize(512, minSize.height())); setFaceType(List); - setCaption(i18nc("@title:window", "Dolphin Preferences")); - setButtons(Ok | Apply | Cancel | Default); - enableButtonApply(false); - setDefaultButton(Ok); + setWindowTitle(i18nc("@title:window", "Dolphin Preferences")); + QDialogButtonBox* box = new QDialogButtonBox(QDialogButtonBox::Ok + | QDialogButtonBox::Apply | QDialogButtonBox::Cancel | QDialogButtonBox::RestoreDefaults); + box->button(QDialogButtonBox::Apply)->setEnabled(false); + box->button(QDialogButtonBox::Ok)->setDefault(true); + setButtonBox(box); + + connect(box->button(QDialogButtonBox::Ok), &QAbstractButton::clicked, this, &DolphinSettingsDialog::applySettings); + connect(box->button(QDialogButtonBox::Apply), &QAbstractButton::clicked, this, &DolphinSettingsDialog::applySettings); + connect(box->button(QDialogButtonBox::RestoreDefaults), &QAbstractButton::clicked, this, &DolphinSettingsDialog::restoreDefaults); // Startup StartupSettingsPage* startupSettingsPage = new StartupSettingsPage(url, this); KPageWidgetItem* startupSettingsFrame = addPage(startupSettingsPage, i18nc("@title:group", "Startup")); - startupSettingsFrame->setIcon(KIcon("go-home")); - connect(startupSettingsPage, SIGNAL(changed()), this, SLOT(enableApply())); + startupSettingsFrame->setIcon(QIcon::fromTheme("go-home")); + connect(startupSettingsPage, &StartupSettingsPage::changed, this, &DolphinSettingsDialog::enableApply); // View Modes ViewSettingsPage* viewSettingsPage = new ViewSettingsPage(this); KPageWidgetItem* viewSettingsFrame = addPage(viewSettingsPage, i18nc("@title:group", "View Modes")); - viewSettingsFrame->setIcon(KIcon("view-choose")); - connect(viewSettingsPage, SIGNAL(changed()), this, SLOT(enableApply())); + viewSettingsFrame->setIcon(QIcon::fromTheme("view-choose")); + connect(viewSettingsPage, &ViewSettingsPage::changed, this, &DolphinSettingsDialog::enableApply); // Navigation NavigationSettingsPage* navigationSettingsPage = new NavigationSettingsPage(this); KPageWidgetItem* navigationSettingsFrame = addPage(navigationSettingsPage, i18nc("@title:group", "Navigation")); - navigationSettingsFrame->setIcon(KIcon("input-mouse")); - connect(navigationSettingsPage, SIGNAL(changed()), this, SLOT(enableApply())); + navigationSettingsFrame->setIcon(QIcon::fromTheme("input-mouse")); + connect(navigationSettingsPage, &NavigationSettingsPage::changed, this, &DolphinSettingsDialog::enableApply); // Services ServicesSettingsPage* servicesSettingsPage = new ServicesSettingsPage(this); KPageWidgetItem* servicesSettingsFrame = addPage(servicesSettingsPage, i18nc("@title:group", "Services")); - servicesSettingsFrame->setIcon(KIcon("services")); - connect(servicesSettingsPage, SIGNAL(changed()), this, SLOT(enableApply())); + servicesSettingsFrame->setIcon(QIcon::fromTheme("services")); + connect(servicesSettingsPage, &ServicesSettingsPage::changed, this, &DolphinSettingsDialog::enableApply); // Trash TrashSettingsPage* trashSettingsPage = new TrashSettingsPage(this); KPageWidgetItem* trashSettingsFrame = addPage(trashSettingsPage, i18nc("@title:group", "Trash")); - trashSettingsFrame->setIcon(KIcon("user-trash")); - connect(trashSettingsPage, SIGNAL(changed()), this, SLOT(enableApply())); + trashSettingsFrame->setIcon(QIcon::fromTheme("user-trash")); + connect(trashSettingsPage, &TrashSettingsPage::changed, this, &DolphinSettingsDialog::enableApply); // General GeneralSettingsPage* generalSettingsPage = new GeneralSettingsPage(url, this); KPageWidgetItem* generalSettingsFrame = addPage(generalSettingsPage, i18nc("@title:group General settings", "General")); - generalSettingsFrame->setIcon(KIcon("system-run")); - connect(generalSettingsPage, SIGNAL(changed()), this, SLOT(enableApply())); + generalSettingsFrame->setIcon(QIcon::fromTheme("system-run")); + connect(generalSettingsPage, &GeneralSettingsPage::changed, this, &DolphinSettingsDialog::enableApply); const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), "SettingsDialog"); - restoreDialogSize(dialogConfig); +#pragma message("TODO: port") + //restoreDialogSize(dialogConfig); m_pages.append(startupSettingsPage); m_pages.append(viewSettingsPage); @@ -104,23 +114,13 @@ DolphinSettingsDialog::DolphinSettingsDialog(const KUrl& url, QWidget* parent) : DolphinSettingsDialog::~DolphinSettingsDialog() { KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), "SettingsDialog"); - saveDialogSize(dialogConfig); -} - -void DolphinSettingsDialog::slotButtonClicked(int button) -{ - if ((button == Ok) || (button == Apply)) { - applySettings(); - } else if (button == Default) { - restoreDefaults(); - } - - KPageDialog::slotButtonClicked(button); +#pragma message("TODO: port") + //saveDialogSize(dialogConfig); } void DolphinSettingsDialog::enableApply() { - enableButtonApply(true); + buttonBox()->button(QDialogButtonBox::Apply)->setEnabled(true); } void DolphinSettingsDialog::applySettings() @@ -138,8 +138,7 @@ void DolphinSettingsDialog::applySettings() settings->setModifiedStartupSettings(false); settings->writeConfig(); } - - enableButtonApply(false); + buttonBox()->button(QDialogButtonBox::Apply)->setEnabled(false); } void DolphinSettingsDialog::restoreDefaults() @@ -149,4 +148,3 @@ void DolphinSettingsDialog::restoreDefaults() } } -#include "dolphinsettingsdialog.moc" diff --git a/src/settings/dolphinsettingsdialog.h b/src/settings/dolphinsettingsdialog.h index 2de195017..56d924c7d 100644 --- a/src/settings/dolphinsettingsdialog.h +++ b/src/settings/dolphinsettingsdialog.h @@ -42,15 +42,9 @@ public: signals: void settingsChanged(); -protected slots: - /** @see KDialog::slotButtonClicked() */ - virtual void slotButtonClicked(int button); - private slots: /** Enables the Apply button. */ void enableApply(); - -private: void applySettings(); void restoreDefaults(); diff --git a/src/settings/general/behaviorsettingspage.cpp b/src/settings/general/behaviorsettingspage.cpp index cbbde1d7c..635a1b2c4 100644 --- a/src/settings/general/behaviorsettingspage.cpp +++ b/src/settings/general/behaviorsettingspage.cpp @@ -79,12 +79,12 @@ BehaviorSettingsPage::BehaviorSettingsPage(const KUrl& url, QWidget* parent) : loadSettings(); - connect(m_localViewProps, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_globalViewProps, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_showToolTips, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_showSelectionToggle, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_naturalSorting, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_renameInline, SIGNAL(toggled(bool)), this, SIGNAL(changed())); + connect(m_localViewProps, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed); + connect(m_globalViewProps, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed); + connect(m_showToolTips, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed); + connect(m_showSelectionToggle, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed); + connect(m_naturalSorting, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed); + connect(m_renameInline, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed); } BehaviorSettingsPage::~BehaviorSettingsPage() @@ -115,7 +115,7 @@ void BehaviorSettingsPage::applySettings() const bool naturalSorting = m_naturalSorting->isChecked(); if (KGlobalSettings::naturalSorting() != naturalSorting) { - KConfigGroup group(KGlobal::config(), "KDE"); + KConfigGroup group(KSharedConfig::openConfig(), "KDE"); group.writeEntry("NaturalSorting", naturalSorting, KConfig::Persistent | KConfig::Global); KGlobalSettings::emitChange(KGlobalSettings::NaturalSortingChanged); } @@ -141,4 +141,3 @@ void BehaviorSettingsPage::loadSettings() m_renameInline->setChecked(GeneralSettings::renameInline()); } -#include "behaviorsettingspage.moc" diff --git a/src/settings/general/behaviorsettingspage.h b/src/settings/general/behaviorsettingspage.h index 7a9c2f027..2221862e0 100644 --- a/src/settings/general/behaviorsettingspage.h +++ b/src/settings/general/behaviorsettingspage.h @@ -23,7 +23,6 @@ #include <settings/settingspagebase.h> #include <KUrl> -class KComboBox; class QCheckBox; class QLabel; class QRadioButton; diff --git a/src/settings/general/configurepreviewplugindialog.cpp b/src/settings/general/configurepreviewplugindialog.cpp index 3ca08dfd0..ce70e2bad 100644 --- a/src/settings/general/configurepreviewplugindialog.cpp +++ b/src/settings/general/configurepreviewplugindialog.cpp @@ -27,6 +27,7 @@ #include <QApplication> #include <QDir> #include <QVBoxLayout> +#include <QUrl> ConfigurePreviewPluginDialog::ConfigurePreviewPluginDialog(const QString& pluginName, const QString& desktopEntryName, @@ -59,7 +60,7 @@ ConfigurePreviewPluginDialog::ConfigurePreviewPluginDialog(const QString& plugin setMainWidget(mainWidget); - connect(this, SIGNAL(okClicked()), this, SLOT(slotOk())); + connect(this, &ConfigurePreviewPluginDialog::okClicked, this, &ConfigurePreviewPluginDialog::slotOk); } ConfigurePreviewPluginDialog::~ConfigurePreviewPluginDialog() @@ -73,9 +74,8 @@ void ConfigurePreviewPluginDialog::slotOk() // for a specific MIME-type should be regenerated. As this is not available yet we // delete the whole thumbnails directory. QApplication::changeOverrideCursor(Qt::BusyCursor); - KIO::NetAccess::del(QString(QDir::homePath() + "/.thumbnails/"), this); + KIO::NetAccess::del(QUrl::fromLocalFile(QDir::homePath() + "/.thumbnails/"), this); QApplication::restoreOverrideCursor(); } -#include "configurepreviewplugindialog.moc" diff --git a/src/settings/general/confirmationssettingspage.cpp b/src/settings/general/confirmationssettingspage.cpp index ab23a1908..532821159 100644 --- a/src/settings/general/confirmationssettingspage.cpp +++ b/src/settings/general/confirmationssettingspage.cpp @@ -68,9 +68,9 @@ ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget* parent) : loadSettings(); - connect(m_confirmMoveToTrash, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_confirmDelete, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_confirmClosingMultipleTabs, SIGNAL(toggled(bool)), this, SIGNAL(changed())); + connect(m_confirmMoveToTrash, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); + connect(m_confirmDelete, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); + connect(m_confirmClosingMultipleTabs, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); } ConfirmationsSettingsPage::~ConfirmationsSettingsPage() @@ -111,4 +111,3 @@ void ConfirmationsSettingsPage::loadSettings() m_confirmClosingMultipleTabs->setChecked(GeneralSettings::confirmClosingMultipleTabs()); } -#include "confirmationssettingspage.moc" diff --git a/src/settings/general/generalsettingspage.cpp b/src/settings/general/generalsettingspage.cpp index 18e152880..3b196e837 100644 --- a/src/settings/general/generalsettingspage.cpp +++ b/src/settings/general/generalsettingspage.cpp @@ -46,22 +46,22 @@ GeneralSettingsPage::GeneralSettingsPage(const KUrl& url, QWidget* parent) : // initialize 'Behavior' tab BehaviorSettingsPage* behaviorPage = new BehaviorSettingsPage(url, tabWidget); tabWidget->addTab(behaviorPage, i18nc("@title:tab Behavior settings", "Behavior")); - connect(behaviorPage, SIGNAL(changed()), this, SIGNAL(changed())); + connect(behaviorPage, &BehaviorSettingsPage::changed, this, &GeneralSettingsPage::changed); // initialize 'Previews' tab PreviewsSettingsPage* previewsPage = new PreviewsSettingsPage(tabWidget); tabWidget->addTab(previewsPage, i18nc("@title:tab Previews settings", "Previews")); - connect(previewsPage, SIGNAL(changed()), this, SIGNAL(changed())); + connect(previewsPage, &PreviewsSettingsPage::changed, this, &GeneralSettingsPage::changed); // initialize 'Context Menu' tab ConfirmationsSettingsPage* confirmationsPage = new ConfirmationsSettingsPage(tabWidget); tabWidget->addTab(confirmationsPage, i18nc("@title:tab Confirmations settings", "Confirmations")); - connect(confirmationsPage, SIGNAL(changed()), this, SIGNAL(changed())); + connect(confirmationsPage, &ConfirmationsSettingsPage::changed, this, &GeneralSettingsPage::changed); // initialize 'Status Bar' tab StatusBarSettingsPage* statusBarPage = new StatusBarSettingsPage(tabWidget); tabWidget->addTab(statusBarPage, i18nc("@title:tab Status Bar settings", "Status Bar")); - connect(statusBarPage, SIGNAL(changed()), this, SIGNAL(changed())); + connect(statusBarPage, &StatusBarSettingsPage::changed, this, &GeneralSettingsPage::changed); m_pages.append(behaviorPage); m_pages.append(previewsPage); @@ -89,4 +89,3 @@ void GeneralSettingsPage::restoreDefaults() } } -#include "generalsettingspage.moc" diff --git a/src/settings/general/previewssettingspage.cpp b/src/settings/general/previewssettingspage.cpp index 38b61b996..7ca5506fa 100644 --- a/src/settings/general/previewssettingspage.cpp +++ b/src/settings/general/previewssettingspage.cpp @@ -65,8 +65,8 @@ PreviewsSettingsPage::PreviewsSettingsPage(QWidget* parent) : m_listView = new QListView(this); ServiceItemDelegate* delegate = new ServiceItemDelegate(m_listView, m_listView); - connect(delegate, SIGNAL(requestServiceConfiguration(QModelIndex)), - this, SLOT(configureService(QModelIndex))); + connect(delegate, &ServiceItemDelegate::requestServiceConfiguration, + this, &PreviewsSettingsPage::configureService); ServiceModel* serviceModel = new ServiceModel(this); QSortFilterProxyModel* proxyModel = new QSortFilterProxyModel(this); @@ -95,8 +95,8 @@ PreviewsSettingsPage::PreviewsSettingsPage(QWidget* parent) : loadSettings(); - connect(m_listView, SIGNAL(clicked(QModelIndex)), this, SIGNAL(changed())); - connect(m_remoteFileSizeBox, SIGNAL(valueChanged(int)), this, SIGNAL(changed())); + connect(m_listView, &QListView::clicked, this, &PreviewsSettingsPage::changed); + connect(m_remoteFileSizeBox, static_cast<void(KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &PreviewsSettingsPage::changed); } PreviewsSettingsPage::~PreviewsSettingsPage() @@ -119,7 +119,7 @@ void PreviewsSettingsPage::applySettings() } } - KConfigGroup globalConfig(KGlobal::config(), QLatin1String("PreviewSettings")); + KConfigGroup globalConfig(KSharedConfig::openConfig(), QLatin1String("PreviewSettings")); globalConfig.writeEntry("Plugins", m_enabledPreviewPlugins); const qulonglong maximumRemoteSize = static_cast<qulonglong>(m_remoteFileSizeBox->value()) * 1024 * 1024; @@ -159,7 +159,7 @@ void PreviewsSettingsPage::loadPreviewPlugins() QAbstractItemModel* model = m_listView->model(); const KService::List plugins = KServiceTypeTrader::self()->query(QLatin1String("ThumbCreator")); - foreach (const KSharedPtr<KService>& service, plugins) { + foreach (const KService::Ptr& service, plugins) { const bool configurable = service->property("Configurable", QVariant::Bool).toBool(); const bool show = m_enabledPreviewPlugins.contains(service->desktopEntryName()); @@ -176,7 +176,7 @@ void PreviewsSettingsPage::loadPreviewPlugins() void PreviewsSettingsPage::loadSettings() { - KConfigGroup globalConfig(KGlobal::config(), "PreviewSettings"); + KConfigGroup globalConfig(KSharedConfig::openConfig(), "PreviewSettings"); m_enabledPreviewPlugins = globalConfig.readEntry("Plugins", QStringList() << QLatin1String("directorythumbnail") << QLatin1String("imagethumbnail") @@ -201,4 +201,3 @@ void PreviewsSettingsPage::loadSettings() m_remoteFileSizeBox->setValue(maxRemoteMByteSize); } -#include "previewssettingspage.moc" diff --git a/src/settings/general/statusbarsettingspage.cpp b/src/settings/general/statusbarsettingspage.cpp index 48622ac4c..78ee3856b 100644 --- a/src/settings/general/statusbarsettingspage.cpp +++ b/src/settings/general/statusbarsettingspage.cpp @@ -43,8 +43,8 @@ StatusBarSettingsPage::StatusBarSettingsPage(QWidget* parent) : loadSettings(); - connect(m_showZoomSlider, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_showSpaceInfo, SIGNAL(toggled(bool)), this, SIGNAL(changed())); + connect(m_showZoomSlider, &QCheckBox::toggled, this, &StatusBarSettingsPage::changed); + connect(m_showSpaceInfo, &QCheckBox::toggled, this, &StatusBarSettingsPage::changed); } StatusBarSettingsPage::~StatusBarSettingsPage() @@ -73,4 +73,3 @@ void StatusBarSettingsPage::loadSettings() m_showSpaceInfo->setChecked(GeneralSettings::showSpaceInfo()); } -#include "statusbarsettingspage.moc" diff --git a/src/settings/kcm/kcmdolphingeneral.cpp b/src/settings/kcm/kcmdolphingeneral.cpp index 26cb580f0..821e37a04 100644 --- a/src/settings/kcm/kcmdolphingeneral.cpp +++ b/src/settings/kcm/kcmdolphingeneral.cpp @@ -24,6 +24,7 @@ #include <KLocale> #include <KPluginFactory> #include <KPluginLoader> +#include <KGlobal> #include <settings/general/behaviorsettingspage.h> #include <settings/general/previewssettingspage.h> @@ -36,12 +37,13 @@ K_PLUGIN_FACTORY(KCMDolphinGeneralConfigFactory, registerPlugin<DolphinGeneralCo K_EXPORT_PLUGIN(KCMDolphinGeneralConfigFactory("kcmdolphingeneral")) DolphinGeneralConfigModule::DolphinGeneralConfigModule(QWidget* parent, const QVariantList& args) : - KCModule(KCMDolphinGeneralConfigFactory::componentData(), parent), + KCModule(parent), m_pages() { Q_UNUSED(args); - KGlobal::locale()->insertCatalog("dolphin"); + //KF5 port: remove this line and define TRANSLATION_DOMAIN in CMakeLists.txt instead +//KLocale::global()->insertCatalog("dolphin"); setButtons(KCModule::Default | KCModule::Help); @@ -54,17 +56,17 @@ DolphinGeneralConfigModule::DolphinGeneralConfigModule(QWidget* parent, const QV // initialize 'Behavior' tab BehaviorSettingsPage* behaviorPage = new BehaviorSettingsPage(QDir::homePath(), tabWidget); tabWidget->addTab(behaviorPage, i18nc("@title:tab Behavior settings", "Behavior")); - connect(behaviorPage, SIGNAL(changed()), this, SLOT(changed())); + connect(behaviorPage, &BehaviorSettingsPage::changed, this, static_cast<void(DolphinGeneralConfigModule::*)()>(&DolphinGeneralConfigModule::changed)); // initialize 'Previews' tab PreviewsSettingsPage* previewsPage = new PreviewsSettingsPage(tabWidget); tabWidget->addTab(previewsPage, i18nc("@title:tab Previews settings", "Previews")); - connect(previewsPage, SIGNAL(changed()), this, SLOT(changed())); + connect(previewsPage, &PreviewsSettingsPage::changed, this, static_cast<void(DolphinGeneralConfigModule::*)()>(&DolphinGeneralConfigModule::changed)); // initialize 'Confirmations' tab ConfirmationsSettingsPage* confirmationsPage = new ConfirmationsSettingsPage(tabWidget); tabWidget->addTab(confirmationsPage, i18nc("@title:tab Confirmations settings", "Confirmations")); - connect(confirmationsPage, SIGNAL(changed()), this, SLOT(changed())); + connect(confirmationsPage, &ConfirmationsSettingsPage::changed, this, static_cast<void(DolphinGeneralConfigModule::*)()>(&DolphinGeneralConfigModule::changed)); m_pages.append(behaviorPage); m_pages.append(previewsPage); diff --git a/src/settings/kcm/kcmdolphingeneral.desktop b/src/settings/kcm/kcmdolphingeneral.desktop index 3573b63a6..6a5927703 100644 --- a/src/settings/kcm/kcmdolphingeneral.desktop +++ b/src/settings/kcm/kcmdolphingeneral.desktop @@ -143,7 +143,7 @@ Comment[zh_TW]=此服務允許設定 Dolphin 的一般設定。 Icon=system-run Type=Service X-KDE-ServiceTypes=KCModule -Exec=kcmshell4 kcmdolphingeneral +Exec=kcmshell5 kcmdolphingeneral X-KDE-Library=kcm_dolphingeneral X-KDE-PluginKeyword=dolphingeneral diff --git a/src/settings/kcm/kcmdolphinnavigation.cpp b/src/settings/kcm/kcmdolphinnavigation.cpp index 36345a515..6265df586 100644 --- a/src/settings/kcm/kcmdolphinnavigation.cpp +++ b/src/settings/kcm/kcmdolphinnavigation.cpp @@ -24,6 +24,7 @@ #include <KLocale> #include <KPluginFactory> #include <KPluginLoader> +#include <KGlobal> #include <settings/navigation/navigationsettingspage.h> @@ -33,12 +34,13 @@ K_PLUGIN_FACTORY(KCMDolphinNavigationConfigFactory, registerPlugin<DolphinNaviga K_EXPORT_PLUGIN(KCMDolphinNavigationConfigFactory("kcmdolphinnavigation")) DolphinNavigationConfigModule::DolphinNavigationConfigModule(QWidget* parent, const QVariantList& args) : - KCModule(KCMDolphinNavigationConfigFactory::componentData(), parent), + KCModule(parent), m_navigation(0) { Q_UNUSED(args); - KGlobal::locale()->insertCatalog("dolphin"); + //KF5 port: remove this line and define TRANSLATION_DOMAIN in CMakeLists.txt instead +//KLocale::global()->insertCatalog("dolphin"); setButtons(KCModule::Default | KCModule::Help); @@ -47,7 +49,7 @@ DolphinNavigationConfigModule::DolphinNavigationConfigModule(QWidget* parent, co topLayout->setSpacing(KDialog::spacingHint()); m_navigation = new NavigationSettingsPage(this); - connect(m_navigation, SIGNAL(changed()), this, SLOT(changed())); + connect(m_navigation, &NavigationSettingsPage::changed, this, static_cast<void(DolphinNavigationConfigModule::*)()>(&DolphinNavigationConfigModule::changed)); topLayout->addWidget(m_navigation, 0, 0); } diff --git a/src/settings/kcm/kcmdolphinnavigation.desktop b/src/settings/kcm/kcmdolphinnavigation.desktop index 372df9eef..9c69c691a 100644 --- a/src/settings/kcm/kcmdolphinnavigation.desktop +++ b/src/settings/kcm/kcmdolphinnavigation.desktop @@ -144,7 +144,7 @@ Comment[zh_TW]=此服務允許設定 Dolphin 的導覽。 Icon=input-mouse Type=Service X-KDE-ServiceTypes=KCModule -Exec=kcmshell4 kcmdolphinnavigation +Exec=kcmshell5 kcmdolphinnavigation X-KDE-Library=kcm_dolphinnavigation X-KDE-PluginKeyword=dolphinnavigation diff --git a/src/settings/kcm/kcmdolphinservices.cpp b/src/settings/kcm/kcmdolphinservices.cpp index 6d8c76192..150ea6d6d 100644 --- a/src/settings/kcm/kcmdolphinservices.cpp +++ b/src/settings/kcm/kcmdolphinservices.cpp @@ -24,6 +24,7 @@ #include <KLocale> #include <KPluginFactory> #include <KPluginLoader> +#include <KGlobal> #include <settings/services/servicessettingspage.h> @@ -33,12 +34,13 @@ K_PLUGIN_FACTORY(KCMDolphinServicesConfigFactory, registerPlugin<DolphinServices K_EXPORT_PLUGIN(KCMDolphinServicesConfigFactory("kcmdolphinservices")) DolphinServicesConfigModule::DolphinServicesConfigModule(QWidget* parent, const QVariantList& args) : - KCModule(KCMDolphinServicesConfigFactory::componentData(), parent), + KCModule(parent), m_services(0) { Q_UNUSED(args); - KGlobal::locale()->insertCatalog("dolphin"); + //KF5 port: remove this line and define TRANSLATION_DOMAIN in CMakeLists.txt instead +//KLocale::global()->insertCatalog("dolphin"); setButtons(KCModule::Default | KCModule::Help); @@ -47,7 +49,7 @@ DolphinServicesConfigModule::DolphinServicesConfigModule(QWidget* parent, const topLayout->setSpacing(KDialog::spacingHint()); m_services = new ServicesSettingsPage(this); - connect(m_services, SIGNAL(changed()), this, SLOT(changed())); + connect(m_services, &ServicesSettingsPage::changed, this, static_cast<void(DolphinServicesConfigModule::*)()>(&DolphinServicesConfigModule::changed)); topLayout->addWidget(m_services, 0, 0); } diff --git a/src/settings/kcm/kcmdolphinservices.desktop b/src/settings/kcm/kcmdolphinservices.desktop index 81d3ce389..25710e019 100644 --- a/src/settings/kcm/kcmdolphinservices.desktop +++ b/src/settings/kcm/kcmdolphinservices.desktop @@ -74,7 +74,7 @@ Name[zh_TW]=Dolphin 服務 Icon=services Type=Service X-KDE-ServiceTypes=KCModule -Exec=kcmshell4 kcmdolphinservices +Exec=kcmshell5 kcmdolphinservices X-KDE-Library=kcm_dolphinservices X-KDE-PluginKeyword=dolphinservices diff --git a/src/settings/kcm/kcmdolphinviewmodes.cpp b/src/settings/kcm/kcmdolphinviewmodes.cpp index a7a9db36d..9f2829c1b 100644 --- a/src/settings/kcm/kcmdolphinviewmodes.cpp +++ b/src/settings/kcm/kcmdolphinviewmodes.cpp @@ -24,7 +24,8 @@ #include <KLocale> #include <KPluginFactory> #include <KPluginLoader> -#include <KIcon> +#include <QIcon> +#include <KGlobal> #include <settings/viewmodes/viewsettingstab.h> @@ -38,12 +39,13 @@ K_PLUGIN_FACTORY(KCMDolphinViewModesConfigFactory, registerPlugin<DolphinViewMod K_EXPORT_PLUGIN(KCMDolphinViewModesConfigFactory("kcmdolphinviewmodes")) DolphinViewModesConfigModule::DolphinViewModesConfigModule(QWidget* parent, const QVariantList& args) : - KCModule(KCMDolphinViewModesConfigFactory::componentData(), parent), + KCModule(parent), m_tabs() { Q_UNUSED(args); - KGlobal::locale()->insertCatalog("dolphin"); + //KF5 port: remove this line and define TRANSLATION_DOMAIN in CMakeLists.txt instead +//KLocale::global()->insertCatalog("dolphin"); setButtons(KCModule::Default | KCModule::Help); @@ -55,18 +57,18 @@ DolphinViewModesConfigModule::DolphinViewModesConfigModule(QWidget* parent, cons // Initialize 'Icons' tab ViewSettingsTab* iconsTab = new ViewSettingsTab(ViewSettingsTab::IconsMode, tabWidget); - tabWidget->addTab(iconsTab, KIcon("view-list-icons"), i18nc("@title:tab", "Icons")); - connect(iconsTab, SIGNAL(changed()), this, SLOT(viewModeChanged())); + tabWidget->addTab(iconsTab, QIcon::fromTheme("view-list-icons"), i18nc("@title:tab", "Icons")); + connect(iconsTab, &ViewSettingsTab::changed, this, &DolphinViewModesConfigModule::viewModeChanged); // Initialize 'Compact' tab ViewSettingsTab* compactTab = new ViewSettingsTab(ViewSettingsTab::CompactMode, tabWidget); - tabWidget->addTab(compactTab, KIcon("view-list-details"), i18nc("@title:tab", "Compact")); - connect(compactTab, SIGNAL(changed()), this, SLOT(viewModeChanged())); + tabWidget->addTab(compactTab, QIcon::fromTheme("view-list-details"), i18nc("@title:tab", "Compact")); + connect(compactTab, &ViewSettingsTab::changed, this, &DolphinViewModesConfigModule::viewModeChanged); // Initialize 'Details' tab ViewSettingsTab* detailsTab = new ViewSettingsTab(ViewSettingsTab::DetailsMode, tabWidget); - tabWidget->addTab(detailsTab, KIcon("view-list-tree"), i18nc("@title:tab", "Details")); - connect(detailsTab, SIGNAL(changed()), this, SLOT(viewModeChanged())); + tabWidget->addTab(detailsTab, QIcon::fromTheme("view-list-tree"), i18nc("@title:tab", "Details")); + connect(detailsTab, &ViewSettingsTab::changed, this, &DolphinViewModesConfigModule::viewModeChanged); m_tabs.append(iconsTab); m_tabs.append(compactTab); diff --git a/src/settings/kcm/kcmdolphinviewmodes.desktop b/src/settings/kcm/kcmdolphinviewmodes.desktop index f5f1fbd22..3856fc676 100644 --- a/src/settings/kcm/kcmdolphinviewmodes.desktop +++ b/src/settings/kcm/kcmdolphinviewmodes.desktop @@ -143,7 +143,7 @@ Comment[zh_TW]=此服務允許設定 Dolphin 的檢視模式。 Icon=view-choose Type=Service X-KDE-ServiceTypes=KCModule -Exec=kcmshell4 kcmdolphinviewmodes +Exec=kcmshell5 kcmdolphinviewmodes X-KDE-Library=kcm_dolphinviewmodes X-KDE-PluginKeyword=dolphinviewmodes diff --git a/src/settings/navigation/navigationsettingspage.cpp b/src/settings/navigation/navigationsettingspage.cpp index 8076d705d..5894599a1 100644 --- a/src/settings/navigation/navigationsettingspage.cpp +++ b/src/settings/navigation/navigationsettingspage.cpp @@ -68,10 +68,10 @@ NavigationSettingsPage::NavigationSettingsPage(QWidget* parent) : loadSettings(); - connect(m_singleClick, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_doubleClick, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_openArchivesAsFolder, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_autoExpandFolders, SIGNAL(toggled(bool)), this, SIGNAL(changed())); + connect(m_singleClick, &QRadioButton::toggled, this, &NavigationSettingsPage::changed); + connect(m_doubleClick, &QRadioButton::toggled, this, &NavigationSettingsPage::changed); + connect(m_openArchivesAsFolder, &QCheckBox::toggled, this, &NavigationSettingsPage::changed); + connect(m_autoExpandFolders, &QCheckBox::toggled, this, &NavigationSettingsPage::changed); } NavigationSettingsPage::~NavigationSettingsPage() @@ -115,4 +115,3 @@ void NavigationSettingsPage::loadSettings() m_autoExpandFolders->setChecked(GeneralSettings::autoExpandFolders()); } -#include "navigationsettingspage.moc" diff --git a/src/settings/serviceitemdelegate.cpp b/src/settings/serviceitemdelegate.cpp index 7538e038b..9b2cbd890 100644 --- a/src/settings/serviceitemdelegate.cpp +++ b/src/settings/serviceitemdelegate.cpp @@ -21,7 +21,7 @@ #include <KDebug> #include <KPushButton> -#include <KIcon> +#include <QIcon> #include "servicemodel.h" @@ -66,16 +66,16 @@ void ServiceItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& o painter->restore(); } -QList<QWidget*> ServiceItemDelegate::createItemWidgets() const +QList<QWidget*> ServiceItemDelegate::createItemWidgets(const QModelIndex&) const { QCheckBox* checkBox = new QCheckBox(); QPalette palette = checkBox->palette(); palette.setColor(QPalette::WindowText, palette.color(QPalette::Text)); checkBox->setPalette(palette); - connect(checkBox, SIGNAL(clicked(bool)), this, SLOT(slotCheckBoxClicked(bool))); + connect(checkBox, &QCheckBox::clicked, this, &ServiceItemDelegate::slotCheckBoxClicked); KPushButton* configureButton = new KPushButton(); - connect(configureButton, SIGNAL(clicked()), this, SLOT(slotConfigureButtonClicked())); + connect(configureButton, &KPushButton::clicked, this, &ServiceItemDelegate::slotConfigureButtonClicked); return QList<QWidget*>() << checkBox << configureButton; } @@ -94,7 +94,7 @@ void ServiceItemDelegate::updateItemWidgets(const QList<QWidget*> widgets, checkBox->setText(model->data(index).toString()); const QString iconName = model->data(index, Qt::DecorationRole).toString(); if (!iconName.isEmpty()) { - checkBox->setIcon(KIcon(iconName)); + checkBox->setIcon(QIcon::fromTheme(iconName)); } checkBox->setChecked(model->data(index, Qt::CheckStateRole).toBool()); @@ -110,7 +110,7 @@ void ServiceItemDelegate::updateItemWidgets(const QList<QWidget*> widgets, // Update the configuration button if (configurable) { configureButton->setEnabled(checkBox->isChecked()); - configureButton->setIcon(KIcon("configure")); + configureButton->setIcon(QIcon::fromTheme("configure")); configureButton->resize(configureButton->sizeHint()); configureButton->move(option.rect.right() - configureButton->width(), (itemHeight - configureButton->height()) / 2); @@ -129,4 +129,3 @@ void ServiceItemDelegate::slotConfigureButtonClicked() emit requestServiceConfiguration(focusedIndex()); } -#include "serviceitemdelegate.moc" diff --git a/src/settings/serviceitemdelegate.h b/src/settings/serviceitemdelegate.h index ea9681a5a..958d0dc57 100644 --- a/src/settings/serviceitemdelegate.h +++ b/src/settings/serviceitemdelegate.h @@ -42,7 +42,7 @@ public: virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; - virtual QList<QWidget*> createItemWidgets() const; + virtual QList<QWidget*> createItemWidgets(const QModelIndex&) const Q_DECL_OVERRIDE; virtual void updateItemWidgets(const QList<QWidget*> widgets, const QStyleOptionViewItem& option, diff --git a/src/settings/servicemodel.cpp b/src/settings/servicemodel.cpp index 315b90dff..e3b015147 100644 --- a/src/settings/servicemodel.cpp +++ b/src/settings/servicemodel.cpp @@ -105,4 +105,3 @@ int ServiceModel::rowCount(const QModelIndex& parent) const return m_items.count(); } -#include "servicemodel.moc" diff --git a/src/settings/services/servicessettingspage.cpp b/src/settings/services/servicessettingspage.cpp index 48e816be7..da49c7d0a 100644 --- a/src/settings/services/servicessettingspage.cpp +++ b/src/settings/services/servicessettingspage.cpp @@ -26,13 +26,13 @@ #include <KConfigGroup> #include <KDesktopFile> #include <kdesktopfileactions.h> -#include <KIcon> +#include <QIcon> #include <KLocale> #include <KMessageBox> -#include <knewstuff3/knewstuffbutton.h> +#include <KNS3/Button> #include <KService> #include <KServiceTypeTrader> -#include <KStandardDirs> +#include <QStandardPaths> #include <settings/serviceitemdelegate.h> #include <settings/servicemodel.h> @@ -49,9 +49,9 @@ namespace { const bool ShowDeleteDefault = false; - const char* VersionControlServicePrefix = "_version_control_"; - const char* DeleteService = "_delete"; - const char* CopyToMoveToService ="_copy_to_move_to"; + const char VersionControlServicePrefix[] = "_version_control_"; + const char DeleteService[] = "_delete"; + const char CopyToMoveToService[] ="_copy_to_move_to"; } ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) : @@ -78,12 +78,12 @@ ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) : m_listView->setModel(m_sortModel); m_listView->setItemDelegate(delegate); m_listView->setVerticalScrollMode(QListView::ScrollPerPixel); - connect(m_listView, SIGNAL(clicked(QModelIndex)), this, SIGNAL(changed())); + connect(m_listView, &QListView::clicked, this, &ServicesSettingsPage::changed); KNS3::Button* downloadButton = new KNS3::Button(i18nc("@action:button", "Download New Services..."), "servicemenu.knsrc", this); - connect(downloadButton, SIGNAL(dialogFinished(KNS3::Entry::List)), this, SLOT(loadServices())); + connect(downloadButton, &KNS3::Button::dialogFinished, this, &ServicesSettingsPage::loadServices); topLayout->addWidget(label); topLayout->addWidget(m_listView); @@ -125,7 +125,7 @@ void ServicesSettingsPage::applySettings() configGroup.sync(); } else if (service == QLatin1String(CopyToMoveToService)) { GeneralSettings::setShowCopyMoveMenu(checked); - GeneralSettings::self()->writeConfig(); + GeneralSettings::self()->save(); } else { showGroup.writeEntry(service, checked); } @@ -135,7 +135,7 @@ void ServicesSettingsPage::applySettings() if (m_enabledVcsPlugins != enabledPlugins) { VersionControlSettings::setEnabledPlugins(enabledPlugins); - VersionControlSettings::self()->writeConfig(); + VersionControlSettings::self()->save(); KMessageBox::information(window(), i18nc("@info", "Dolphin must be restarted to apply the " @@ -194,8 +194,8 @@ void ServicesSettingsPage::loadServices() // Load generic services const KService::List entries = KServiceTypeTrader::self()->query("KonqPopupMenu/Plugin"); - foreach (const KSharedPtr<KService>& service, entries) { - const QString file = KStandardDirs::locate("services", service->entryPath()); + foreach (const KService::Ptr& service, entries) { + const QString file = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kservices5/" % service->entryPath()); const QList<KServiceAction> serviceActions = KDesktopFileActions::userDefinedServices(file, true); @@ -220,7 +220,7 @@ void ServicesSettingsPage::loadServices() // Load service plugins that implement the KFileItemActionPlugin interface const KService::List pluginServices = KServiceTypeTrader::self()->query("KFileItemAction/Plugin"); - foreach (const KSharedPtr<KService>& service, pluginServices) { + foreach (const KService::Ptr& service, pluginServices) { const QString desktopEntryName = service->desktopEntryName(); if (!isInServicesList(desktopEntryName)) { const bool checked = showGroup.readEntry(desktopEntryName, true); @@ -273,4 +273,3 @@ void ServicesSettingsPage::addRow(const QString& icon, m_serviceModel->setData(index, checked, Qt::CheckStateRole); } -#include "servicessettingspage.moc" diff --git a/src/settings/services/servicessettingspage.h b/src/settings/services/servicessettingspage.h index 80af42f88..7a56abd68 100644 --- a/src/settings/services/servicessettingspage.h +++ b/src/settings/services/servicessettingspage.h @@ -24,8 +24,6 @@ #include <QMap> #include <QString> -class QCheckBox; -class QGroupBox; class QListView; class QSortFilterProxyModel; class ServiceModel; diff --git a/src/settings/settingspagebase.cpp b/src/settings/settingspagebase.cpp index 6f8dcbfb6..70549fd2c 100644 --- a/src/settings/settingspagebase.cpp +++ b/src/settings/settingspagebase.cpp @@ -28,4 +28,3 @@ SettingsPageBase::~SettingsPageBase() {} -#include "settingspagebase.moc" diff --git a/src/settings/startup/startupsettingspage.cpp b/src/settings/startup/startupsettingspage.cpp index 693826318..8e8cf9e73 100644 --- a/src/settings/startup/startupsettingspage.cpp +++ b/src/settings/startup/startupsettingspage.cpp @@ -64,24 +64,24 @@ StartupSettingsPage::StartupSettingsPage(const KUrl& url, QWidget* parent) : m_homeUrl = new KLineEdit(homeUrlBox); m_homeUrl->setClearButtonShown(true); - QPushButton* selectHomeUrlButton = new QPushButton(KIcon("folder-open"), QString(), homeUrlBox); + QPushButton* selectHomeUrlButton = new QPushButton(QIcon::fromTheme("folder-open"), QString(), homeUrlBox); #ifndef QT_NO_ACCESSIBILITY selectHomeUrlButton->setAccessibleName(i18nc("@action:button", "Select Home Location")); #endif - connect(selectHomeUrlButton, SIGNAL(clicked()), - this, SLOT(selectHomeUrl())); + connect(selectHomeUrlButton, &QPushButton::clicked, + this, &StartupSettingsPage::selectHomeUrl); KHBox* buttonBox = new KHBox(homeBox); buttonBox->setSpacing(spacing); QPushButton* useCurrentButton = new QPushButton(i18nc("@action:button", "Use Current Location"), buttonBox); - connect(useCurrentButton, SIGNAL(clicked()), - this, SLOT(useCurrentLocation())); + connect(useCurrentButton, &QPushButton::clicked, + this, &StartupSettingsPage::useCurrentLocation); QPushButton* useDefaultButton = new QPushButton(i18nc("@action:button", "Use Default Location"), buttonBox); - connect(useDefaultButton, SIGNAL(clicked()), - this, SLOT(useDefaultLocation())); + connect(useDefaultButton, &QPushButton::clicked, + this, &StartupSettingsPage::useDefaultLocation); QVBoxLayout* homeBoxLayout = new QVBoxLayout(homeBox); homeBoxLayout->addWidget(homeUrlBox); @@ -102,11 +102,11 @@ StartupSettingsPage::StartupSettingsPage(const KUrl& url, QWidget* parent) : loadSettings(); - connect(m_homeUrl, SIGNAL(textChanged(QString)), this, SLOT(slotSettingsChanged())); - connect(m_splitView, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); - connect(m_editableUrl, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); - connect(m_showFullPath, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); - connect(m_filterBar, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); + connect(m_homeUrl, &KLineEdit::textChanged, this, &StartupSettingsPage::slotSettingsChanged); + connect(m_splitView, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged); + connect(m_editableUrl, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged); + connect(m_showFullPath, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged); + connect(m_filterBar, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged); } StartupSettingsPage::~StartupSettingsPage() @@ -181,4 +181,3 @@ void StartupSettingsPage::loadSettings() m_filterBar->setChecked(GeneralSettings::filterBar()); } -#include "startupsettingspage.moc" diff --git a/src/settings/trash/trashsettingspage.cpp b/src/settings/trash/trashsettingspage.cpp index cd699856c..bd01d56b5 100644 --- a/src/settings/trash/trashsettingspage.cpp +++ b/src/settings/trash/trashsettingspage.cpp @@ -45,7 +45,7 @@ TrashSettingsPage::TrashSettingsPage(QWidget* parent) : loadSettings(); - connect(m_proxy, SIGNAL(changed(bool)), this, SIGNAL(changed())); + connect(m_proxy, static_cast<void(KCModuleProxy::*)(bool)>(&KCModuleProxy::changed), this, &TrashSettingsPage::changed); } TrashSettingsPage::~TrashSettingsPage() @@ -67,4 +67,3 @@ void TrashSettingsPage::loadSettings() m_proxy->load(); } -#include "trashsettingspage.moc" diff --git a/src/settings/viewmodes/dolphinfontrequester.cpp b/src/settings/viewmodes/dolphinfontrequester.cpp index 6cb7b9929..278fb0933 100644 --- a/src/settings/viewmodes/dolphinfontrequester.cpp +++ b/src/settings/viewmodes/dolphinfontrequester.cpp @@ -27,6 +27,7 @@ #include <QEvent> #include <QHBoxLayout> #include <QPushButton> +#include <QFontDatabase> DolphinFontRequester::DolphinFontRequester(QWidget* parent) : QWidget(parent), @@ -41,12 +42,12 @@ DolphinFontRequester::DolphinFontRequester(QWidget* parent) : m_modeCombo = new KComboBox(this); m_modeCombo->addItem(i18nc("@item:inlistbox Font", "System Font")); m_modeCombo->addItem(i18nc("@item:inlistbox Font", "Custom Font")); - connect(m_modeCombo, SIGNAL(activated(int)), - this, SLOT(changeMode(int))); + connect(m_modeCombo, static_cast<void(KComboBox::*)(int)>(&KComboBox::activated), + this, &DolphinFontRequester::changeMode); m_chooseFontButton = new QPushButton(i18nc("@action:button Choose font", "Choose..."), this); - connect(m_chooseFontButton, SIGNAL(clicked()), - this, SLOT(openFontDialog())); + connect(m_chooseFontButton, &QPushButton::clicked, + this, &DolphinFontRequester::openFontDialog); changeMode(m_modeCombo->currentIndex()); @@ -72,7 +73,7 @@ DolphinFontRequester::Mode DolphinFontRequester::mode() const QFont DolphinFontRequester::currentFont() const { - return (m_mode == CustomFont) ? m_customFont : KGlobalSettings::generalFont(); + return (m_mode == CustomFont) ? m_customFont : QFontDatabase::systemFont(QFontDatabase::GeneralFont); } void DolphinFontRequester::setCustomFont(const QFont& font) @@ -104,4 +105,3 @@ void DolphinFontRequester::changeMode(int index) emit changed(); } -#include "dolphinfontrequester.moc" diff --git a/src/settings/viewmodes/viewmodesettings.cpp b/src/settings/viewmodes/viewmodesettings.cpp index 5b9334c22..01601f711 100644 --- a/src/settings/viewmodes/viewmodesettings.cpp +++ b/src/settings/viewmodes/viewmodesettings.cpp @@ -125,9 +125,9 @@ int ViewModeSettings::fontWeight() const void ViewModeSettings::readConfig() { switch (m_mode) { - case ViewModeSettings::IconsMode: IconsModeSettings::self()->readConfig(); break; - case ViewModeSettings::CompactMode: CompactModeSettings::self()->readConfig(); break; - case ViewModeSettings::DetailsMode: DetailsModeSettings::self()->readConfig(); break; + case ViewModeSettings::IconsMode: IconsModeSettings::self()->load(); break; + case ViewModeSettings::CompactMode: CompactModeSettings::self()->load(); break; + case ViewModeSettings::DetailsMode: DetailsModeSettings::self()->load(); break; default: Q_ASSERT(false); break; } } @@ -135,9 +135,9 @@ void ViewModeSettings::readConfig() void ViewModeSettings::writeConfig() { switch (m_mode) { - case ViewModeSettings::IconsMode: IconsModeSettings::self()->writeConfig(); break; - case ViewModeSettings::CompactMode: CompactModeSettings::self()->writeConfig(); break; - case ViewModeSettings::DetailsMode: DetailsModeSettings::self()->writeConfig(); break; + case ViewModeSettings::IconsMode: IconsModeSettings::self()->save(); break; + case ViewModeSettings::CompactMode: CompactModeSettings::self()->save(); break; + case ViewModeSettings::DetailsMode: DetailsModeSettings::self()->save(); break; default: Q_ASSERT(false); break; } } diff --git a/src/settings/viewmodes/viewsettingspage.cpp b/src/settings/viewmodes/viewsettingspage.cpp index 4f8a3f00d..941b211ef 100644 --- a/src/settings/viewmodes/viewsettingspage.cpp +++ b/src/settings/viewmodes/viewsettingspage.cpp @@ -42,18 +42,18 @@ ViewSettingsPage::ViewSettingsPage(QWidget* parent) : // Initialize 'Icons' tab ViewSettingsTab* iconsTab = new ViewSettingsTab(ViewSettingsTab::IconsMode, tabWidget); - tabWidget->addTab(iconsTab, KIcon("view-list-icons"), i18nc("@title:tab", "Icons")); - connect(iconsTab, SIGNAL(changed()), this, SIGNAL(changed())); + tabWidget->addTab(iconsTab, QIcon::fromTheme("view-list-icons"), i18nc("@title:tab", "Icons")); + connect(iconsTab, &ViewSettingsTab::changed, this, &ViewSettingsPage::changed); // Initialize 'Compact' tab ViewSettingsTab* compactTab = new ViewSettingsTab(ViewSettingsTab::CompactMode, tabWidget); - tabWidget->addTab(compactTab, KIcon("view-list-details"), i18nc("@title:tab", "Compact")); - connect(compactTab, SIGNAL(changed()), this, SIGNAL(changed())); + tabWidget->addTab(compactTab, QIcon::fromTheme("view-list-details"), i18nc("@title:tab", "Compact")); + connect(compactTab, &ViewSettingsTab::changed, this, &ViewSettingsPage::changed); // Initialize 'Details' tab ViewSettingsTab* detailsTab = new ViewSettingsTab(ViewSettingsTab::DetailsMode, tabWidget); - tabWidget->addTab(detailsTab, KIcon("view-list-tree"), i18nc("@title:tab", "Details")); - connect(detailsTab, SIGNAL(changed()), this, SIGNAL(changed())); + tabWidget->addTab(detailsTab, QIcon::fromTheme("view-list-tree"), i18nc("@title:tab", "Details")); + connect(detailsTab, &ViewSettingsTab::changed, this, &ViewSettingsPage::changed); m_tabs.append(iconsTab); m_tabs.append(compactTab); @@ -80,4 +80,3 @@ void ViewSettingsPage::restoreDefaults() } } -#include "viewsettingspage.moc" diff --git a/src/settings/viewmodes/viewsettingstab.cpp b/src/settings/viewmodes/viewsettingstab.cpp index bc124516d..6f442099f 100644 --- a/src/settings/viewmodes/viewsettingstab.cpp +++ b/src/settings/viewmodes/viewsettingstab.cpp @@ -61,16 +61,16 @@ ViewSettingsTab::ViewSettingsTab(Mode mode, QWidget* parent) : m_defaultSizeSlider->setPageStep(1); m_defaultSizeSlider->setTickPosition(QSlider::TicksBelow); m_defaultSizeSlider->setRange(minRange, maxRange); - connect(m_defaultSizeSlider, SIGNAL(valueChanged(int)), - this, SLOT(slotDefaultSliderMoved(int))); + connect(m_defaultSizeSlider, &QSlider::valueChanged, + this, &ViewSettingsTab::slotDefaultSliderMoved); QLabel* previewLabel = new QLabel(i18nc("@label:listbox", "Preview:"), this); m_previewSizeSlider = new QSlider(Qt::Horizontal, this); m_previewSizeSlider->setPageStep(1); m_previewSizeSlider->setTickPosition(QSlider::TicksBelow); m_previewSizeSlider->setRange(minRange, maxRange); - connect(m_previewSizeSlider, SIGNAL(valueChanged(int)), - this, SLOT(slotPreviewSliderMoved(int))); + connect(m_previewSizeSlider, &QSlider::valueChanged, + this, &ViewSettingsTab::slotPreviewSliderMoved); QGridLayout* layout = new QGridLayout(iconSizeGroup); layout->addWidget(defaultLabel, 0, 0, Qt::AlignRight); @@ -138,20 +138,20 @@ ViewSettingsTab::ViewSettingsTab(Mode mode, QWidget* parent) : loadSettings(); - connect(m_defaultSizeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(changed())); - connect(m_previewSizeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(changed())); - connect(m_fontRequester, SIGNAL(changed()), this, SIGNAL(changed())); + connect(m_defaultSizeSlider, &QSlider::valueChanged, this, &ViewSettingsTab::changed); + connect(m_previewSizeSlider, &QSlider::valueChanged, this, &ViewSettingsTab::changed); + connect(m_fontRequester, &DolphinFontRequester::changed, this, &ViewSettingsTab::changed); switch (m_mode) { case IconsMode: - connect(m_widthBox, SIGNAL(currentIndexChanged(int)), this, SIGNAL(changed())); - connect(m_maxLinesBox, SIGNAL(currentIndexChanged(int)), this, SIGNAL(changed())); + connect(m_widthBox, static_cast<void(KComboBox::*)(int)>(&KComboBox::currentIndexChanged), this, &ViewSettingsTab::changed); + connect(m_maxLinesBox, static_cast<void(KComboBox::*)(int)>(&KComboBox::currentIndexChanged), this, &ViewSettingsTab::changed); break; case CompactMode: - connect(m_widthBox, SIGNAL(currentIndexChanged(int)), this, SIGNAL(changed())); + connect(m_widthBox, static_cast<void(KComboBox::*)(int)>(&KComboBox::currentIndexChanged), this, &ViewSettingsTab::changed); break; case DetailsMode: - connect(m_expandableFolders, SIGNAL(toggled(bool)), this, SIGNAL(changed())); + connect(m_expandableFolders, &QCheckBox::toggled, this, &ViewSettingsTab::changed); break; default: break; @@ -289,4 +289,4 @@ void ViewSettingsTab::showToolTip(QSlider* slider, int value) QHelpEvent toolTipEvent(QEvent::ToolTip, QPoint(0, 0), slider->mapToGlobal(global)); QApplication::sendEvent(slider, &toolTipEvent); } -#include "viewsettingstab.moc" + diff --git a/src/settings/viewpropertiesdialog.cpp b/src/settings/viewpropertiesdialog.cpp index 574f8e18e..576154f2b 100644 --- a/src/settings/viewpropertiesdialog.cpp +++ b/src/settings/viewpropertiesdialog.cpp @@ -34,7 +34,6 @@ #include <KIconLoader> #include <KIO/NetAccess> #include <KMessageBox> -#include <KStandardDirs> #include <KUrl> #include <KComboBox> @@ -92,9 +91,9 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : QLabel* viewModeLabel = new QLabel(i18nc("@label:listbox", "View mode:"), propsGrid); m_viewMode = new KComboBox(propsGrid); - m_viewMode->addItem(KIcon("view-list-icons"), i18nc("@item:inlistbox", "Icons"), DolphinView::IconsView); - m_viewMode->addItem(KIcon("view-list-details"), i18nc("@item:inlistbox", "Compact"), DolphinView::CompactView); - m_viewMode->addItem(KIcon("view-list-tree"), i18nc("@item:inlistbox", "Details"), DolphinView::DetailsView); + m_viewMode->addItem(QIcon::fromTheme("view-list-icons"), i18nc("@item:inlistbox", "Icons"), DolphinView::IconsView); + m_viewMode->addItem(QIcon::fromTheme("view-list-details"), i18nc("@item:inlistbox", "Compact"), DolphinView::CompactView); + m_viewMode->addItem(QIcon::fromTheme("view-list-tree"), i18nc("@item:inlistbox", "Details"), DolphinView::DetailsView); QLabel* sortingLabel = new QLabel(i18nc("@label:listbox", "Sorting:"), propsGrid); QWidget* sortingBox = new QWidget(propsGrid); @@ -138,25 +137,25 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : topLayout->addWidget(propsBox); - connect(m_viewMode, SIGNAL(currentIndexChanged(int)), - this, SLOT(slotViewModeChanged(int))); - connect(m_sorting, SIGNAL(currentIndexChanged(int)), - this, SLOT(slotSortingChanged(int))); - connect(m_sortOrder, SIGNAL(currentIndexChanged(int)), - this, SLOT(slotSortOrderChanged(int))); - connect(m_additionalInfo, SIGNAL(clicked()), - this, SLOT(configureAdditionalInfo())); - connect(m_sortFoldersFirst, SIGNAL(clicked()), - this, SLOT(slotSortFoldersFirstChanged())); - connect(m_previewsShown, SIGNAL(clicked()), - this, SLOT(slotShowPreviewChanged())); - connect(m_showInGroups, SIGNAL(clicked()), - this, SLOT(slotGroupedSortingChanged())); - connect(m_showHiddenFiles, SIGNAL(clicked()), - this, SLOT(slotShowHiddenFilesChanged())); + connect(m_viewMode, static_cast<void(KComboBox::*)(int)>(&KComboBox::currentIndexChanged), + this, &ViewPropertiesDialog::slotViewModeChanged); + connect(m_sorting, static_cast<void(KComboBox::*)(int)>(&KComboBox::currentIndexChanged), + this, &ViewPropertiesDialog::slotSortingChanged); + connect(m_sortOrder, static_cast<void(KComboBox::*)(int)>(&KComboBox::currentIndexChanged), + this, &ViewPropertiesDialog::slotSortOrderChanged); + connect(m_additionalInfo, &QPushButton::clicked, + this, &ViewPropertiesDialog::configureAdditionalInfo); + connect(m_sortFoldersFirst, &QCheckBox::clicked, + this, &ViewPropertiesDialog::slotSortFoldersFirstChanged); + connect(m_previewsShown, &QCheckBox::clicked, + this, &ViewPropertiesDialog::slotShowPreviewChanged); + connect(m_showInGroups, &QCheckBox::clicked, + this, &ViewPropertiesDialog::slotGroupedSortingChanged); + connect(m_showHiddenFiles, &QCheckBox::clicked, + this, &ViewPropertiesDialog::slotShowHiddenFilesChanged); - connect(this, SIGNAL(okClicked()), this, SLOT(slotOk())); - connect(this, SIGNAL(applyClicked()), this, SLOT(slotApply())); + connect(this, &ViewPropertiesDialog::okClicked, this, &ViewPropertiesDialog::slotOk); + connect(this, &ViewPropertiesDialog::applyClicked, this, &ViewPropertiesDialog::slotApply); // Only show the following settings if the view properties are remembered // for each directory: @@ -187,14 +186,14 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : topLayout->addWidget(applyBox); topLayout->addWidget(m_useAsDefault); - connect(m_applyToCurrentFolder, SIGNAL(clicked(bool)), - this, SLOT(markAsDirty(bool))); - connect(m_applyToSubFolders, SIGNAL(clicked(bool)), - this, SLOT(markAsDirty(bool))); - connect(m_applyToAllFolders, SIGNAL(clicked(bool)), - this, SLOT(markAsDirty(bool))); - connect(m_useAsDefault, SIGNAL(clicked(bool)), - this, SLOT(markAsDirty(bool))); + connect(m_applyToCurrentFolder, &QRadioButton::clicked, + this, &ViewPropertiesDialog::markAsDirty); + connect(m_applyToSubFolders, &QRadioButton::clicked, + this, &ViewPropertiesDialog::markAsDirty); + connect(m_applyToAllFolders, &QRadioButton::clicked, + this, &ViewPropertiesDialog::markAsDirty); + connect(m_useAsDefault, &QCheckBox::clicked, + this, &ViewPropertiesDialog::markAsDirty); } main->setLayout(topLayout); @@ -408,4 +407,3 @@ void ViewPropertiesDialog::loadSettings() markAsDirty(false); } -#include "viewpropertiesdialog.moc" diff --git a/src/settings/viewpropsprogressinfo.cpp b/src/settings/viewpropsprogressinfo.cpp index 9b7797d02..13998cf87 100644 --- a/src/settings/viewpropsprogressinfo.cpp +++ b/src/settings/viewpropsprogressinfo.cpp @@ -75,18 +75,18 @@ ViewPropsProgressInfo::ViewPropsProgressInfo(QWidget* parent, // allows to give a progress indication for the user when applying the view // properties later. m_dirSizeJob = KIO::directorySize(dir); - connect(m_dirSizeJob, SIGNAL(result(KJob*)), - this, SLOT(applyViewProperties())); + connect(m_dirSizeJob, &KIO::DirectorySizeJob::result, + this, &ViewPropsProgressInfo::applyViewProperties); // The directory size job cannot emit any progress signal, as it is not aware // about the total number of directories. Therefor a timer is triggered, which // periodically updates the current directory count. m_timer = new QTimer(this); - connect(m_timer, SIGNAL(timeout()), - this, SLOT(updateProgress())); + connect(m_timer, &QTimer::timeout, + this, &ViewPropsProgressInfo::updateProgress); m_timer->start(300); - connect(this, SIGNAL(cancelClicked()), this, SLOT(cancelApplying())); + connect(this, &ViewPropsProgressInfo::cancelClicked, this, &ViewPropsProgressInfo::cancelApplying); } ViewPropsProgressInfo::~ViewPropsProgressInfo() @@ -128,8 +128,8 @@ void ViewPropsProgressInfo::applyViewProperties() m_dirSizeJob = 0; m_applyViewPropsJob = new ApplyViewPropsJob(m_dir, *m_viewProps); - connect(m_applyViewPropsJob, SIGNAL(result(KJob*)), - this, SLOT(close())); + connect(m_applyViewPropsJob, &ApplyViewPropsJob::result, + this, &ViewPropsProgressInfo::close); } void ViewPropsProgressInfo::cancelApplying() @@ -145,4 +145,3 @@ void ViewPropsProgressInfo::cancelApplying() } } -#include "viewpropsprogressinfo.moc" diff --git a/src/statusbar/dolphinstatusbar.cpp b/src/statusbar/dolphinstatusbar.cpp index e0fdc8703..5feeaa361 100644 --- a/src/statusbar/dolphinstatusbar.cpp +++ b/src/statusbar/dolphinstatusbar.cpp @@ -22,9 +22,9 @@ #include "dolphin_generalsettings.h" #include <KIconLoader> -#include <KIcon> +#include <QIcon> #include <KLocale> -#include <KMenu> +#include <QMenu> #include <KVBox> #include "statusbarspaceinfo.h" @@ -72,21 +72,21 @@ DolphinStatusBar::DolphinStatusBar(QWidget* parent) : m_zoomSlider->setPageStep(1); m_zoomSlider->setRange(ZoomLevelInfo::minimumLevel(), ZoomLevelInfo::maximumLevel()); - connect(m_zoomSlider, SIGNAL(valueChanged(int)), this, SIGNAL(zoomLevelChanged(int))); - connect(m_zoomSlider, SIGNAL(valueChanged(int)), this, SLOT(updateZoomSliderToolTip(int))); - connect(m_zoomSlider, SIGNAL(sliderMoved(int)), this, SLOT(showZoomSliderToolTip(int))); + connect(m_zoomSlider, &QSlider::valueChanged, this, &DolphinStatusBar::zoomLevelChanged); + connect(m_zoomSlider, &QSlider::valueChanged, this, &DolphinStatusBar::updateZoomSliderToolTip); + connect(m_zoomSlider, &QSlider::sliderMoved, this, &DolphinStatusBar::showZoomSliderToolTip); // Initialize space information m_spaceInfo = new StatusBarSpaceInfo(this); // Initialize progress information m_stopButton = new QToolButton(this); - m_stopButton->setIcon(KIcon("process-stop")); + m_stopButton->setIcon(QIcon::fromTheme("process-stop")); m_stopButton->setAccessibleName(i18n("Stop")); m_stopButton->setAutoRaise(true); m_stopButton->setToolTip(i18nc("@tooltip", "Stop loading")); m_stopButton->hide(); - connect(m_stopButton, SIGNAL(clicked()), this, SIGNAL(stopPressed())); + connect(m_stopButton, &QToolButton::clicked, this, &DolphinStatusBar::stopPressed); m_progressTextLabel = new QLabel(this); m_progressTextLabel->hide(); @@ -97,12 +97,12 @@ DolphinStatusBar::DolphinStatusBar(QWidget* parent) : m_showProgressBarTimer = new QTimer(this); m_showProgressBarTimer->setInterval(500); m_showProgressBarTimer->setSingleShot(true); - connect(m_showProgressBarTimer, SIGNAL(timeout()), this, SLOT(updateProgressInfo())); + connect(m_showProgressBarTimer, &QTimer::timeout, this, &DolphinStatusBar::updateProgressInfo); m_resetToDefaultTextTimer = new QTimer(this); m_resetToDefaultTextTimer->setInterval(ResetToDefaultTimeout); m_resetToDefaultTextTimer->setSingleShot(true); - connect(m_resetToDefaultTextTimer, SIGNAL(timeout()), this, SLOT(slotResetToDefaultText())); + connect(m_resetToDefaultTextTimer, &QTimer::timeout, this, &DolphinStatusBar::slotResetToDefaultText); // Initialize top layout and size policies const int fontHeight = QFontMetrics(m_label->font()).height(); @@ -259,7 +259,7 @@ void DolphinStatusBar::contextMenuEvent(QContextMenuEvent* event) { Q_UNUSED(event); - KMenu menu(this); + QMenu menu(this); QAction* showZoomSliderAction = menu.addAction(i18nc("@action:inmenu", "Show Zoom Slider")); showZoomSliderAction->setCheckable(true); @@ -357,4 +357,3 @@ void DolphinStatusBar::setExtensionsVisible(bool visible) m_zoomSlider->setVisible(showZoomSlider); } -#include "dolphinstatusbar.moc" diff --git a/src/statusbar/mountpointobserver.cpp b/src/statusbar/mountpointobserver.cpp index 4a23be6b6..df2a4898f 100644 --- a/src/statusbar/mountpointobserver.cpp +++ b/src/statusbar/mountpointobserver.cpp @@ -17,20 +17,21 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ +#include <KIO/FileSystemFreeSpaceJob> + #include "mountpointobserver.h" #include "mountpointobservercache.h" -MountPointObserver::MountPointObserver(const QString& mountPoint, QObject* parent) : +MountPointObserver::MountPointObserver(const QUrl& url, QObject* parent) : QObject(parent), - m_mountPoint(mountPoint), - m_referenceCount(0), - m_spaceInfo(KDiskFreeSpaceInfo::freeSpaceInfo(mountPoint)) + m_url(url), + m_referenceCount(0) { } -MountPointObserver* MountPointObserver::observerForPath(const QString& path) +MountPointObserver* MountPointObserver::observerForUrl(const QUrl& url) { - MountPointObserver* observer = MountPointObserverCache::instance()->observerForPath(path); + MountPointObserver* observer = MountPointObserverCache::instance()->observerForUrl(url); return observer; } @@ -39,10 +40,16 @@ void MountPointObserver::update() if (m_referenceCount == 0) { delete this; } else { - const KDiskFreeSpaceInfo spaceInfo = KDiskFreeSpaceInfo::freeSpaceInfo(m_mountPoint); - if (spaceInfo.size() != m_spaceInfo.size() || spaceInfo.available() != m_spaceInfo.available()) { - m_spaceInfo = spaceInfo; - emit spaceInfoChanged(); - } + KIO::FileSystemFreeSpaceJob* job = KIO::fileSystemFreeSpace(m_url); + connect(job, &KIO::FileSystemFreeSpaceJob::result, this, &MountPointObserver::freeSpaceResult); + } +} + +void MountPointObserver::freeSpaceResult(KIO::Job* job, KIO::filesize_t size, KIO::filesize_t available) +{ + if (!job->error()) { + emit spaceInfoChanged(size, available); + } else { + emit spaceInfoChanged(0, 0); } } diff --git a/src/statusbar/mountpointobserver.h b/src/statusbar/mountpointobserver.h index ac5f8ecc3..c3d2aa677 100644 --- a/src/statusbar/mountpointobserver.h +++ b/src/statusbar/mountpointobserver.h @@ -20,9 +20,10 @@ #ifndef MOUNTPOINTOBSERVER_H #define MOUNTPOINTOBSERVER_H -#include <KDiskFreeSpaceInfo> +#include <KIO/Job> #include <QObject> +#include <QUrl> /** * A MountPointObserver can be used to determine the free space on a mount @@ -52,16 +53,11 @@ class MountPointObserver : public QObject { Q_OBJECT - explicit MountPointObserver(const QString& mountPoint, QObject* parent = 0); + explicit MountPointObserver(const QUrl& url, QObject* parent = 0); virtual ~MountPointObserver() {} public: /** - * Obtains information about the available space on the observed mount point. - */ - KDiskFreeSpaceInfo spaceInfo() const { return m_spaceInfo; } - - /** * Call this function to indicate that the caller intends to continue using this object. An * internal reference count is increased then. When the observer is not needed any more, * deref() should be called, which decreases the reference count again. @@ -80,28 +76,30 @@ public: } /** - * Returns a MountPointObserver for the given \a path. If the caller intends to continue using + * Returns a MountPointObserver for the given \a url. If the caller intends to continue using * the returned object, it must call its ref() method. */ - static MountPointObserver* observerForPath(const QString& path); + static MountPointObserver* observerForUrl(const QUrl& url); signals: /** - * This signal is emitted if the information that spaceInfo() will return has changed. + * This signal is emitted when the size has been retrieved. */ - void spaceInfoChanged(); + void spaceInfoChanged(quint64 size, quint64 available); public slots: /** - * If this slot is invoked, MountPointObserver checks if the available space on the observed - * mount point has changed, and emits spaceInfoChanged() if that is the case. + * If this slot is invoked, MountPointObserver starts a new driveSize job + * to get the drive's size. */ void update(); +private slots: + void freeSpaceResult(KIO::Job* job, KIO::filesize_t size, KIO::filesize_t available); + private: - const QString m_mountPoint; + const QUrl m_url; int m_referenceCount; - KDiskFreeSpaceInfo m_spaceInfo; friend class MountPointObserverCache; }; diff --git a/src/statusbar/mountpointobservercache.cpp b/src/statusbar/mountpointobservercache.cpp index aff0c8e2f..5be2a9f95 100644 --- a/src/statusbar/mountpointobservercache.cpp +++ b/src/statusbar/mountpointobservercache.cpp @@ -51,33 +51,38 @@ MountPointObserverCache* MountPointObserverCache::instance() return &s_MountPointObserverCache->instance; } -MountPointObserver* MountPointObserverCache::observerForPath(const QString& path) +MountPointObserver* MountPointObserverCache::observerForUrl(const QUrl& url) { - // Try to share the observer with other paths that have the same mount point. - QString mountPointPath; - KMountPoint::Ptr mountPoint = KMountPoint::currentMountPoints().findByPath(path); - if (mountPoint) { - mountPointPath = mountPoint->mountPoint(); + QUrl cachedObserverUrl; + // If the url is a local path we can extract the root dir by checking the mount points. + if (url.isLocalFile()) { + // Try to share the observer with other paths that have the same mount point. + KMountPoint::Ptr mountPoint = KMountPoint::currentMountPoints().findByPath(url.toLocalFile()); + if (mountPoint) { + cachedObserverUrl = QUrl::fromLocalFile(mountPoint->mountPoint()); + } else { + // Even if determining the mount point failed, the observer might still + // be able to retrieve information about the url. + cachedObserverUrl = url.toLocalFile(); + } } else { - // Even if determining the mount point failed, KDiskFreeSpaceInfo might still - // be able to retrieve information about the path. - mountPointPath = path; + cachedObserverUrl = url.url(); } - MountPointObserver* observer = m_observerForMountPoint.value(mountPointPath); + MountPointObserver* observer = m_observerForMountPoint.value(cachedObserverUrl); if (!observer) { - observer = new MountPointObserver(mountPointPath, this); - m_observerForMountPoint.insert(mountPointPath, observer); - m_mountPointForObserver.insert(observer, mountPointPath); + observer = new MountPointObserver(cachedObserverUrl, this); + m_observerForMountPoint.insert(cachedObserverUrl, observer); + m_mountPointForObserver.insert(observer, cachedObserverUrl); Q_ASSERT(m_observerForMountPoint.count() == m_mountPointForObserver.count()); - connect(observer, SIGNAL(destroyed(QObject*)), this, SLOT(slotObserverDestroyed(QObject*))); + connect(observer, &MountPointObserver::destroyed, this, &MountPointObserverCache::slotObserverDestroyed); if (!m_updateTimer->isActive()) { m_updateTimer->start(10000); } - connect(m_updateTimer, SIGNAL(timeout()), observer, SLOT(update())); + connect(m_updateTimer, &QTimer::timeout, observer, &MountPointObserver::update); } return observer; @@ -86,9 +91,9 @@ MountPointObserver* MountPointObserverCache::observerForPath(const QString& path void MountPointObserverCache::slotObserverDestroyed(QObject* observer) { Q_ASSERT(m_mountPointForObserver.contains(observer)); - const QString& path = m_mountPointForObserver.value(observer); - Q_ASSERT(m_observerForMountPoint.contains(path)); - m_observerForMountPoint.remove(path); + const QUrl& url = m_mountPointForObserver.value(observer); + Q_ASSERT(m_observerForMountPoint.contains(url)); + m_observerForMountPoint.remove(url); m_mountPointForObserver.remove(observer); Q_ASSERT(m_observerForMountPoint.count() == m_mountPointForObserver.count()); diff --git a/src/statusbar/mountpointobservercache.h b/src/statusbar/mountpointobservercache.h index 425000645..8a1496d89 100644 --- a/src/statusbar/mountpointobservercache.h +++ b/src/statusbar/mountpointobservercache.h @@ -37,9 +37,9 @@ public: static MountPointObserverCache* instance(); /** - * Returns a MountPointObserver for the given \a path. A new observer is created if necessary. + * Returns a MountPointObserver for the given \a url. A new observer is created if necessary. */ - MountPointObserver* observerForPath(const QString& path); + MountPointObserver* observerForUrl(const QUrl& url); private slots: /** @@ -48,8 +48,8 @@ private slots: void slotObserverDestroyed(QObject* observer); private: - QHash<QString, MountPointObserver*> m_observerForMountPoint; - QHash<QObject*, QString> m_mountPointForObserver; + QHash<QUrl, MountPointObserver*> m_observerForMountPoint; + QHash<QObject*, QUrl> m_mountPointForObserver; QTimer* m_updateTimer; friend class MountPointObserverCacheSingleton; diff --git a/src/statusbar/spaceinfoobserver.cpp b/src/statusbar/spaceinfoobserver.cpp index 9125a9308..10efdd7fb 100644 --- a/src/statusbar/spaceinfoobserver.cpp +++ b/src/statusbar/spaceinfoobserver.cpp @@ -25,13 +25,14 @@ SpaceInfoObserver::SpaceInfoObserver(const KUrl& url, QObject* parent) : QObject(parent), - m_mountPointObserver(0) + m_mountPointObserver(0), + m_dataSize(0), + m_dataAvailable(0) { - if (url.isLocalFile()) { - m_mountPointObserver = MountPointObserver::observerForPath(url.toLocalFile()); - m_mountPointObserver->ref(); - connect(m_mountPointObserver, SIGNAL(spaceInfoChanged()), this, SIGNAL(valuesChanged())); - } + m_mountPointObserver = MountPointObserver::observerForUrl(url); + m_mountPointObserver->ref(); + connect(m_mountPointObserver, &MountPointObserver::spaceInfoChanged, this, &SpaceInfoObserver::spaceInfoChanged); + m_mountPointObserver->update(); } SpaceInfoObserver::~SpaceInfoObserver() @@ -44,46 +45,41 @@ SpaceInfoObserver::~SpaceInfoObserver() quint64 SpaceInfoObserver::size() const { - if (m_mountPointObserver && m_mountPointObserver->spaceInfo().isValid()) { - return m_mountPointObserver->spaceInfo().size(); - } else { - return 0; - } + return m_dataSize; } quint64 SpaceInfoObserver::available() const { - if (m_mountPointObserver && m_mountPointObserver->spaceInfo().isValid()) { - return m_mountPointObserver->spaceInfo().available(); - } else { - return 0; - } + return m_dataAvailable; } void SpaceInfoObserver::setUrl(const KUrl& url) { - if (url.isLocalFile()) { - MountPointObserver* newObserver = MountPointObserver::observerForPath(url.toLocalFile()); - if (newObserver != m_mountPointObserver) { - if (m_mountPointObserver) { - disconnect(m_mountPointObserver, SIGNAL(spaceInfoChanged()), this, SIGNAL(valuesChanged())); - m_mountPointObserver->deref(); - m_mountPointObserver = 0; - } - - m_mountPointObserver = newObserver; - m_mountPointObserver->ref(); - connect(m_mountPointObserver, SIGNAL(spaceInfoChanged()), this, SIGNAL(valuesChanged())); - - emit valuesChanged(); - } - } else { + MountPointObserver* newObserver = MountPointObserver::observerForUrl(url); + if (newObserver != m_mountPointObserver) { if (m_mountPointObserver) { - disconnect(m_mountPointObserver, SIGNAL(spaceInfoChanged()), this, SIGNAL(valuesChanged())); + disconnect(m_mountPointObserver, &MountPointObserver::spaceInfoChanged, this, &SpaceInfoObserver::spaceInfoChanged); m_mountPointObserver->deref(); m_mountPointObserver = 0; - - emit valuesChanged(); } + + m_mountPointObserver = newObserver; + m_mountPointObserver->ref(); + connect(m_mountPointObserver, &MountPointObserver::spaceInfoChanged, this, &SpaceInfoObserver::spaceInfoChanged); + + // If newObserver is cached it won't call update until the next timer update, + // so update the observer now. + m_mountPointObserver->update(); + } +} + +void SpaceInfoObserver::spaceInfoChanged(quint64 size, quint64 available) +{ + // Make sure that the size has actually changed + if (m_dataSize != size || m_dataAvailable != available) { + m_dataSize = size; + m_dataAvailable = available; + + emit valuesChanged(); } } diff --git a/src/statusbar/spaceinfoobserver.h b/src/statusbar/spaceinfoobserver.h index d2fb6ebf3..68c559ec9 100644 --- a/src/statusbar/spaceinfoobserver.h +++ b/src/statusbar/spaceinfoobserver.h @@ -22,6 +22,8 @@ #include <QObject> +#include <KIO/Job> + class KUrl; class MountPointObserver; @@ -40,12 +42,18 @@ public: signals: /** - * This signal is emitted if the information that size() and/or available() will return has changed. + * This signal is emitted when the size or available space changes. */ void valuesChanged(); +private slots: + void spaceInfoChanged(quint64 size, quint64 available); + private: MountPointObserver* m_mountPointObserver; + + quint64 m_dataSize; + quint64 m_dataAvailable; }; #endif diff --git a/src/statusbar/statusbarspaceinfo.cpp b/src/statusbar/statusbarspaceinfo.cpp index 3692947b1..43d9f342d 100644 --- a/src/statusbar/statusbarspaceinfo.cpp +++ b/src/statusbar/statusbarspaceinfo.cpp @@ -57,7 +57,7 @@ void StatusBarSpaceInfo::showEvent(QShowEvent* event) KCapacityBar::showEvent(event); m_observer.reset(new SpaceInfoObserver(m_url, this)); slotValuesChanged(); - connect(m_observer.data(), SIGNAL(valuesChanged()), this, SLOT(slotValuesChanged())); + connect(m_observer.data(), &SpaceInfoObserver::valuesChanged, this, &StatusBarSpaceInfo::slotValuesChanged); } void StatusBarSpaceInfo::hideEvent(QHideEvent* event) @@ -87,4 +87,3 @@ void StatusBarSpaceInfo::slotValuesChanged() } } -#include "statusbarspaceinfo.moc" diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index c1f4124ff..60f6517e8 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -1,5 +1,7 @@ set( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} ) -include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_CURRENT_BUILD_DIR}/.. ${KDE4_INCLUDES} ) + +find_package(Qt5Test CONFIG REQUIRED) +include(ECMMarkAsTest) # needed on windows to correctly use the files from dolphinprivate add_definitions(-DLIBDOLPHINPRIVATE_EXPORT=) @@ -9,15 +11,22 @@ set(kitemsettest_SRCS kitemsettest.cpp ../kitemviews/kitemset.cpp ) -kde4_add_unit_test(kitemsettest TEST ${kitemsettest_SRCS}) -target_link_libraries(kitemsettest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) + +add_executable(kitemsettest ${kitemsettest_SRCS}) +add_test(kitemsettest kitemsettest) +ecm_mark_as_test(kitemsettest) +target_link_libraries(kitemsettest dolphinprivate Qt5::Test) # KItemRangeTest set(kitemrangetest_SRCS kitemrangetest.cpp ) -kde4_add_unit_test(kitemrangetest TEST ${kitemrangetest_SRCS}) -target_link_libraries(kitemrangetest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) + +add_executable(kitemrangetest ${kitemrangetest_SRCS}) +add_test(kitemrangetest kitemrangetest) +ecm_mark_as_test(kitemrangetest) +target_link_libraries(kitemrangetest dolphinprivate Qt5::Test) + # KItemListSelectionManagerTest set(kitemlistselectionmanagertest_SRCS @@ -26,8 +35,11 @@ set(kitemlistselectionmanagertest_SRCS ../kitemviews/kitemmodelbase.cpp ../kitemviews/kitemset.cpp ) -kde4_add_unit_test(kitemlistselectionmanagertest TEST ${kitemlistselectionmanagertest_SRCS}) -target_link_libraries(kitemlistselectionmanagertest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) + +add_executable(kitemlistselectionmanagertest ${kitemlistselectionmanagertest_SRCS}) +add_test(kitemlistselectionmanagertest kitemlistselectionmanagertest) +ecm_mark_as_test(kitemlistselectionmanagertest) +target_link_libraries(kitemlistselectionmanagertest dolphinprivate Qt5::Test) # KItemListControllerTest set(kitemlistcontrollertest_SRCS @@ -40,13 +52,16 @@ set(kitemlistcontrollertest_SRCS ../kitemviews/kitemlistview.cpp ../kitemviews/kitemlistcontainer.cpp ../kitemviews/kitemlistwidget.cpp - ../kitemviews/kitemlistviewaccessible.cpp +# ../kitemviews/kitemlistviewaccessible.cpp # TODO: enable once accessibility is ported to Qt5 ../kitemviews/kitemset.cpp ../kitemviews/kstandarditemlistview.cpp ../kitemviews/kstandarditemlistwidget.cpp ) -kde4_add_unit_test(kitemlistcontrollertest TEST ${kitemlistcontrollertest_SRCS}) -target_link_libraries(kitemlistcontrollertest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) + +add_executable(kitemlistcontrollertest ${kitemlistcontrollertest_SRCS}) +add_test(kitemlistcontrollertest kitemlistcontrollertest) +ecm_mark_as_test(kitemlistcontrollertest) +target_link_libraries(kitemlistcontrollertest dolphinprivate Qt5::Test) # KFileItemListViewTest set(kfileitemlistviewtest_SRCS @@ -56,15 +71,18 @@ set(kfileitemlistviewtest_SRCS ../kitemviews/kfileitemlistview.cpp ../kitemviews/kitemmodelbase.cpp ../kitemviews/kitemlistview.cpp - ../kitemviews/kitemlistviewaccessible.cpp +# ../kitemviews/kitemlistviewaccessible.cpp # TODO: enable once accessibility is ported to Qt5 ../kitemviews/kitemlistcontainer.cpp ../kitemviews/kitemlistwidget.cpp ../kitemviews/kitemset.cpp ../kitemviews/kstandarditemlistview.cpp ../kitemviews/kstandarditemlistwidget.cpp ) -kde4_add_unit_test(kfileitemlistviewtest TEST ${kfileitemlistviewtest_SRCS}) -target_link_libraries(kfileitemlistviewtest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) + +add_executable(kfileitemlistviewtest ${kfileitemlistviewtest_SRCS}) +add_test(kfileitemlistviewtest kfileitemlistviewtest) +ecm_mark_as_test(kfileitemlistviewtest) +target_link_libraries(kfileitemlistviewtest dolphinprivate Qt5::Test) # KFileItemModelTest set(kfileitemmodeltest_SRCS @@ -74,8 +92,11 @@ set(kfileitemmodeltest_SRCS ../kitemviews/kitemmodelbase.cpp ../kitemviews/kitemset.cpp ) -kde4_add_unit_test(kfileitemmodeltest TEST ${kfileitemmodeltest_SRCS}) -target_link_libraries(kfileitemmodeltest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) + +add_executable(kfileitemmodeltest ${kfileitemmodeltest_SRCS}) +add_test(kfileitemmodeltest kfileitemmodeltest) +ecm_mark_as_test(kfileitemmodeltest) +target_link_libraries(kfileitemmodeltest dolphinprivate Qt5::Test) # KFileItemModelBenchmark set(kfileitemmodelbenchmark_SRCS @@ -84,30 +105,38 @@ set(kfileitemmodelbenchmark_SRCS ../kitemviews/kfileitemmodel.cpp ../kitemviews/kitemmodelbase.cpp ) -kde4_add_executable(kfileitemmodelbenchmark TEST ${kfileitemmodelbenchmark_SRCS}) -target_link_libraries(kfileitemmodelbenchmark dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) + +add_executable(kfileitemmodelbenchmark ${kfileitemmodelbenchmark_SRCS}) +ecm_mark_as_test(kfileitemmodelbenchmark) +target_link_libraries(kfileitemmodelbenchmark dolphinprivate Qt5::Test) # KItemListKeyboardSearchManagerTest set(kitemlistkeyboardsearchmanagertest_SRCS kitemlistkeyboardsearchmanagertest.cpp ../kitemviews/private/kitemlistkeyboardsearchmanager.cpp ) -kde4_add_unit_test(kitemlistkeyboardsearchmanagertest TEST ${kitemlistkeyboardsearchmanagertest_SRCS}) -target_link_libraries(kitemlistkeyboardsearchmanagertest ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) + +add_executable(kitemlistkeyboardsearchmanagertest ${kitemlistkeyboardsearchmanagertest_SRCS}) +add_test(kitemlistkeyboardsearchmanagertest kitemlistkeyboardsearchmanagertest) +ecm_mark_as_test(kitemlistkeyboardsearchmanagertest) +target_link_libraries(kitemlistkeyboardsearchmanagertest dolphinprivate Qt5::Test) # DolphinSearchBox -if (Baloo_FOUND) +if (KF5Baloo_FOUND) set(dolphinsearchboxtest_SRCS dolphinsearchboxtest.cpp ../search/dolphinfacetswidget.cpp ../search/dolphinsearchbox.cpp ) - kde4_add_kcfg_files(dolphinsearchboxtest_SRCS + kconfig_add_kcfg_files(dolphinsearchboxtest_SRCS ../search/dolphin_searchsettings.kcfgc ) - kde4_add_unit_test(dolphinsearchboxtest TEST ${dolphinsearchboxtest_SRCS}) - target_link_libraries(dolphinsearchboxtest ${KDE4_KIO_LIBS} ${BALOO_LIBRARIES} ${QT_QTTEST_LIBRARY}) -endif (Baloo_FOUND) + + add_executable(dolphinsearchboxtest ${dolphinsearchboxtest_SRCS}) + add_test(dolphinsearchboxtest dolphinsearchboxtest) + ecm_mark_as_test(dolphinsearchboxtest) + target_link_libraries(dolphinsearchboxtest dolphinprivate Qt5::Test) +endif() # KStandardItemModelTest set(kstandarditemmodeltest_SRCS @@ -116,8 +145,11 @@ set(kstandarditemmodeltest_SRCS ../kitemviews/kstandarditemmodel.cpp ../kitemviews/kitemmodelbase.cpp ) -kde4_add_unit_test(kstandarditemmodeltest TEST ${kstandarditemmodeltest_SRCS}) -target_link_libraries(kstandarditemmodeltest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) + +add_executable(kstandarditemmodeltest ${kstandarditemmodeltest_SRCS}) +add_test(kstandarditemmodeltest kstandarditemmodeltest) +ecm_mark_as_test(kstandarditemmodeltest) +target_link_libraries(kstandarditemmodeltest dolphinprivate Qt5::Test) # ViewPropertiesTest set(viewpropertiestest_SRCS @@ -125,9 +157,12 @@ set(viewpropertiestest_SRCS testdir.cpp ../views/viewproperties.cpp ) -kde4_add_kcfg_files(viewpropertiestest_SRCS +kconfig_add_kcfg_files(viewpropertiestest_SRCS ../settings/dolphin_generalsettings.kcfgc ../settings/dolphin_directoryviewpropertysettings.kcfgc ) -kde4_add_unit_test(viewpropertiestest TEST ${viewpropertiestest_SRCS}) -target_link_libraries(viewpropertiestest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) + +add_executable(viewpropertiestest ${viewpropertiestest_SRCS}) +add_test(viewpropertiestest viewpropertiestest) +ecm_mark_as_test(viewpropertiestest) +target_link_libraries(viewpropertiestest dolphinprivate Qt5::Test) diff --git a/src/views/dolphinfileitemlistwidget.cpp b/src/views/dolphinfileitemlistwidget.cpp index 33ee6a277..de927d91f 100644 --- a/src/views/dolphinfileitemlistwidget.cpp +++ b/src/views/dolphinfileitemlistwidget.cpp @@ -19,7 +19,7 @@ #include "dolphinfileitemlistwidget.h" -#include <KIcon> +#include <QIcon> #include <KIconLoader> #include <kversioncontrolplugin2.h> #include <QColor> @@ -123,7 +123,6 @@ QPixmap DolphinFileItemListWidget::overlayForState(KVersionControlPlugin2::ItemV break; } - return KIcon(iconName).pixmap(QSize(overlayHeight, overlayHeight)); + return QIcon::fromTheme(iconName).pixmap(QSize(overlayHeight, overlayHeight)); } -#include "dolphinfileitemlistwidget.moc" diff --git a/src/views/dolphinitemlistview.cpp b/src/views/dolphinitemlistview.cpp index db4dadf2f..cd16aead0 100644 --- a/src/views/dolphinitemlistview.cpp +++ b/src/views/dolphinitemlistview.cpp @@ -31,6 +31,7 @@ #include <kitemviews/kitemliststyleoption.h> #include <KGlobalSettings> +#include <KGlobal> #include <views/viewmodecontroller.h> @@ -94,7 +95,7 @@ void DolphinItemListView::readSettings() updateFont(); updateGridSize(); - const KConfigGroup globalConfig(KGlobal::config(), "PreviewSettings"); + const KConfigGroup globalConfig(KSharedConfig::openConfig(), "PreviewSettings"); const QStringList plugins = globalConfig.readEntry("Plugins", QStringList() << "directorythumbnail" << "imagethumbnail" @@ -106,9 +107,9 @@ void DolphinItemListView::readSettings() void DolphinItemListView::writeSettings() { - IconsModeSettings::self()->writeConfig(); - CompactModeSettings::self()->writeConfig(); - DetailsModeSettings::self()->writeConfig(); + IconsModeSettings::self()->save(); + CompactModeSettings::self()->save(); + DetailsModeSettings::self()->save(); } KItemListWidgetCreatorBase* DolphinItemListView::defaultWidgetCreator() const @@ -262,4 +263,3 @@ ViewModeSettings::ViewMode DolphinItemListView::viewMode() const return mode; } -#include "dolphinitemlistview.moc" diff --git a/src/views/dolphinnewfilemenuobserver.cpp b/src/views/dolphinnewfilemenuobserver.cpp index 7669f1561..855f2675a 100644 --- a/src/views/dolphinnewfilemenuobserver.cpp +++ b/src/views/dolphinnewfilemenuobserver.cpp @@ -36,22 +36,22 @@ DolphinNewFileMenuObserver& DolphinNewFileMenuObserver::instance() void DolphinNewFileMenuObserver::attach(const DolphinNewFileMenu* menu) { - connect(menu, SIGNAL(fileCreated(KUrl)), - this, SIGNAL(itemCreated(KUrl))); - connect(menu, SIGNAL(directoryCreated(KUrl)), - this, SIGNAL(itemCreated(KUrl))); - connect(menu, SIGNAL(errorMessage(QString)), - this, SIGNAL(errorMessage(QString))); + connect(menu, &DolphinNewFileMenu::fileCreated, + this, &DolphinNewFileMenuObserver::itemCreated); + connect(menu, &DolphinNewFileMenu::directoryCreated, + this, &DolphinNewFileMenuObserver::itemCreated); + connect(menu, &DolphinNewFileMenu::errorMessage, + this, &DolphinNewFileMenuObserver::errorMessage); } void DolphinNewFileMenuObserver::detach(const DolphinNewFileMenu* menu) { - disconnect(menu, SIGNAL(fileCreated(KUrl)), - this, SIGNAL(itemCreated(KUrl))); - disconnect(menu, SIGNAL(directoryCreated(KUrl)), - this, SIGNAL(itemCreated(KUrl))); - disconnect(menu, SIGNAL(errorMessage(QString)), - this, SIGNAL(errorMessage(QString))); + disconnect(menu, &DolphinNewFileMenu::fileCreated, + this, &DolphinNewFileMenuObserver::itemCreated); + disconnect(menu, &DolphinNewFileMenu::directoryCreated, + this, &DolphinNewFileMenuObserver::itemCreated); + disconnect(menu, &DolphinNewFileMenu::errorMessage, + this, &DolphinNewFileMenuObserver::errorMessage); } DolphinNewFileMenuObserver::DolphinNewFileMenuObserver() : @@ -63,4 +63,3 @@ DolphinNewFileMenuObserver::~DolphinNewFileMenuObserver() { } -#include "dolphinnewfilemenuobserver.moc" diff --git a/src/views/dolphinnewfilemenuobserver.h b/src/views/dolphinnewfilemenuobserver.h index 239476eb9..b9b18e229 100644 --- a/src/views/dolphinnewfilemenuobserver.h +++ b/src/views/dolphinnewfilemenuobserver.h @@ -25,7 +25,6 @@ #include "libdolphin_export.h" class DolphinNewFileMenu; -class KUrl; /** * @brief Allows to observe new file items that have been created @@ -44,7 +43,7 @@ public: void detach(const DolphinNewFileMenu* menu); signals: - void itemCreated(const KUrl& url); + void itemCreated(const QUrl& url); void errorMessage(const QString& error); private: diff --git a/src/views/dolphinremoteencoding.cpp b/src/views/dolphinremoteencoding.cpp index 04b350eda..97a15313a 100644 --- a/src/views/dolphinremoteencoding.cpp +++ b/src/views/dolphinremoteencoding.cpp @@ -29,13 +29,13 @@ #include <KDebug> #include <KActionMenu> #include <KActionCollection> -#include <KIcon> +#include <QIcon> #include <KLocale> #include <KGlobal> #include <KMimeType> #include <KConfig> #include <KCharsets> -#include <KMenu> +#include <QMenu> #include <KProtocolInfo> #include <KProtocolManager> #include <KIO/Scheduler> @@ -49,10 +49,10 @@ DolphinRemoteEncoding::DolphinRemoteEncoding(QObject* parent, DolphinViewActionH m_loaded(false), m_idDefault(0) { - m_menu = new KActionMenu(KIcon("character-set"), i18n("Select Remote Charset"), this); + m_menu = new KActionMenu(QIcon::fromTheme("character-set"), i18n("Select Remote Charset"), this); m_actionHandler->actionCollection()->addAction("change_remote_encoding", m_menu); - connect(m_menu->menu(), SIGNAL(aboutToShow()), - this, SLOT(slotAboutToShow())); + connect(m_menu->menu(), &QMenu::aboutToShow, + this, &DolphinRemoteEncoding::slotAboutToShow); m_menu->setEnabled(false); m_menu->setDelayed(false); @@ -70,7 +70,7 @@ void DolphinRemoteEncoding::slotReload() void DolphinRemoteEncoding::loadSettings() { m_loaded = true; - m_encodingDescriptions = KGlobal::charsets()->descriptiveEncodingNames(); + m_encodingDescriptions = KCharsets::charsets()->descriptiveEncodingNames(); fillMenu(); } @@ -101,7 +101,7 @@ void DolphinRemoteEncoding::slotAboutToOpenUrl() void DolphinRemoteEncoding::fillMenu() { - KMenu* menu = m_menu->menu(); + QMenu* menu = m_menu->menu(); menu->clear(); @@ -117,7 +117,7 @@ void DolphinRemoteEncoding::fillMenu() menu->addAction(i18n("Default"), this, SLOT(slotDefault()), 0)->setCheckable(true); m_idDefault = m_encodingDescriptions.size() + 2; - connect(menu, SIGNAL(triggered(QAction*)), this, SLOT(slotItemSelected(QAction*))); + connect(menu, &QMenu::triggered, this, &DolphinRemoteEncoding::slotItemSelected); } void DolphinRemoteEncoding::updateMenu() @@ -131,7 +131,7 @@ void DolphinRemoteEncoding::updateMenu() m_menu->menu()->actions().at(i)->setChecked(false); } - const QString charset = KGlobal::charsets()->descriptionForEncoding(KProtocolManager::charsetFor(m_currentURL)); + const QString charset = KCharsets::charsets()->descriptionForEncoding(KProtocolManager::charsetFor(m_currentURL)); if (!charset.isEmpty()) { int id = 0; bool isFound = false; @@ -172,7 +172,7 @@ void DolphinRemoteEncoding::slotItemSelected(QAction* action) KConfig config(("kio_" + m_currentURL.protocol() + "rc").toLatin1()); QString host = m_currentURL.host(); if (m_menu->menu()->actions().at(id)->isChecked()) { - QString charset = KGlobal::charsets()->encodingForName(m_encodingDescriptions.at(id)); + QString charset = KCharsets::charsets()->encodingForName(m_encodingDescriptions.at(id)); KConfigGroup cg(&config, host); cg.writeEntry(DATA_KEY, charset); config.sync(); @@ -235,4 +235,3 @@ void DolphinRemoteEncoding::updateView() m_actionHandler->currentView()->reload(); } -#include "dolphinremoteencoding.moc" diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 1de973bd5..b3df1ebd6 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -32,6 +32,8 @@ #include <QItemSelection> #include <QTimer> #include <QScrollBar> +#include <QPointer> +#include <QMenu> #include <KDesktopFile> #include <KProtocolManager> @@ -49,16 +51,18 @@ #include <kitemviews/kitemlistselectionmanager.h> #include <kitemviews/kitemlistview.h> #include <kitemviews/kitemlistcontroller.h> +#include <KIO/CopyJob> #include <KIO/DeleteJob> #include <KIO/JobUiDelegate> #include <KIO/NetAccess> #include <KIO/PreviewJob> +#include <KIO/Paste> #include <KJob> -#include <KMenu> +#include <QMenu> +#include <KGlobal> #include <KMessageBox> -#include <konq_fileitemcapabilities.h> +#include <KJobWidgets> #include <konq_operations.h> -#include <konqmimedata.h> #include <KToggleAction> #include <KUrl> @@ -75,8 +79,9 @@ #include "zoomlevelinfo.h" #ifdef HAVE_BALOO - #include <baloo/indexerconfig.h> + #include <Baloo/IndexerConfig> #endif +#include <KFormat> namespace { const int MaxModeEnum = DolphinView::CompactView; @@ -114,14 +119,14 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) : // When a new item has been created by the "Create New..." menu, the item should // get selected and it must be assured that the item will get visible. As the // creation is done asynchronously, several signals must be checked: - connect(&DolphinNewFileMenuObserver::instance(), SIGNAL(itemCreated(KUrl)), - this, SLOT(observeCreatedItem(KUrl))); + connect(&DolphinNewFileMenuObserver::instance(), &DolphinNewFileMenuObserver::itemCreated, + this, &DolphinView::observeCreatedItem); m_selectionChangedTimer = new QTimer(this); m_selectionChangedTimer->setSingleShot(true); m_selectionChangedTimer->setInterval(300); - connect(m_selectionChangedTimer, SIGNAL(timeout()), - this, SLOT(emitSelectionChangedSignal())); + connect(m_selectionChangedTimer, &QTimer::timeout, + this, &DolphinView::emitSelectionChangedSignal); m_model = new KFileItemModel(this); m_view = new DolphinItemListView(); @@ -140,60 +145,60 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) : m_container = new KItemListContainer(controller, this); m_container->installEventFilter(this); setFocusProxy(m_container); - connect(m_container->horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(hideToolTip())); - connect(m_container->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(hideToolTip())); + connect(m_container->horizontalScrollBar(), &QScrollBar::valueChanged, this, &DolphinView::hideToolTip); + connect(m_container->verticalScrollBar(), &QScrollBar::valueChanged, this, &DolphinView::hideToolTip); controller->setSelectionBehavior(KItemListController::MultiSelection); - connect(controller, SIGNAL(itemActivated(int)), this, SLOT(slotItemActivated(int))); - connect(controller, SIGNAL(itemsActivated(KItemSet)), this, SLOT(slotItemsActivated(KItemSet))); - connect(controller, SIGNAL(itemMiddleClicked(int)), this, SLOT(slotItemMiddleClicked(int))); - connect(controller, SIGNAL(itemContextMenuRequested(int,QPointF)), this, SLOT(slotItemContextMenuRequested(int,QPointF))); - connect(controller, SIGNAL(viewContextMenuRequested(QPointF)), this, SLOT(slotViewContextMenuRequested(QPointF))); - connect(controller, SIGNAL(headerContextMenuRequested(QPointF)), this, SLOT(slotHeaderContextMenuRequested(QPointF))); - connect(controller, SIGNAL(mouseButtonPressed(int,Qt::MouseButtons)), this, SLOT(slotMouseButtonPressed(int,Qt::MouseButtons))); - connect(controller, SIGNAL(itemHovered(int)), this, SLOT(slotItemHovered(int))); - connect(controller, SIGNAL(itemUnhovered(int)), this, SLOT(slotItemUnhovered(int))); - connect(controller, SIGNAL(itemDropEvent(int,QGraphicsSceneDragDropEvent*)), this, SLOT(slotItemDropEvent(int,QGraphicsSceneDragDropEvent*))); - connect(controller, SIGNAL(escapePressed()), this, SLOT(stopLoading())); - connect(controller, SIGNAL(modelChanged(KItemModelBase*,KItemModelBase*)), this, SLOT(slotModelChanged(KItemModelBase*,KItemModelBase*))); + connect(controller, &KItemListController::itemActivated, this, &DolphinView::slotItemActivated); + connect(controller, &KItemListController::itemsActivated, this, &DolphinView::slotItemsActivated); + connect(controller, &KItemListController::itemMiddleClicked, this, &DolphinView::slotItemMiddleClicked); + connect(controller, &KItemListController::itemContextMenuRequested, this, &DolphinView::slotItemContextMenuRequested); + connect(controller, &KItemListController::viewContextMenuRequested, this, &DolphinView::slotViewContextMenuRequested); + connect(controller, &KItemListController::headerContextMenuRequested, this, &DolphinView::slotHeaderContextMenuRequested); + connect(controller, &KItemListController::mouseButtonPressed, this, &DolphinView::slotMouseButtonPressed); + connect(controller, &KItemListController::itemHovered, this, &DolphinView::slotItemHovered); + connect(controller, &KItemListController::itemUnhovered, this, &DolphinView::slotItemUnhovered); + connect(controller, &KItemListController::itemDropEvent, this, &DolphinView::slotItemDropEvent); + connect(controller, &KItemListController::escapePressed, this, &DolphinView::stopLoading); + connect(controller, &KItemListController::modelChanged, this, &DolphinView::slotModelChanged); - connect(m_model, SIGNAL(directoryLoadingStarted()), this, SLOT(slotDirectoryLoadingStarted())); - connect(m_model, SIGNAL(directoryLoadingCompleted()), this, SLOT(slotDirectoryLoadingCompleted())); - connect(m_model, SIGNAL(directoryLoadingCanceled()), this, SIGNAL(directoryLoadingCanceled())); - connect(m_model, SIGNAL(directoryLoadingProgress(int)), this, SIGNAL(directoryLoadingProgress(int))); - connect(m_model, SIGNAL(directorySortingProgress(int)), this, SIGNAL(directorySortingProgress(int))); - connect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(slotItemsChanged())); - connect(m_model, SIGNAL(itemsRemoved(KItemRangeList)), this, SIGNAL(itemCountChanged())); - connect(m_model, SIGNAL(itemsInserted(KItemRangeList)), this, SIGNAL(itemCountChanged())); - connect(m_model, SIGNAL(infoMessage(QString)), this, SIGNAL(infoMessage(QString))); - connect(m_model, SIGNAL(errorMessage(QString)), this, SIGNAL(errorMessage(QString))); - connect(m_model, SIGNAL(directoryRedirection(KUrl,KUrl)), this, SLOT(slotDirectoryRedirection(KUrl,KUrl))); - connect(m_model, SIGNAL(urlIsFileError(KUrl)), this, SIGNAL(urlIsFileError(KUrl))); + connect(m_model, &KFileItemModel::directoryLoadingStarted, this, &DolphinView::slotDirectoryLoadingStarted); + connect(m_model, &KFileItemModel::directoryLoadingCompleted, this, &DolphinView::slotDirectoryLoadingCompleted); + connect(m_model, &KFileItemModel::directoryLoadingCanceled, this, &DolphinView::directoryLoadingCanceled); + connect(m_model, &KFileItemModel::directoryLoadingProgress, this, &DolphinView::directoryLoadingProgress); + connect(m_model, &KFileItemModel::directorySortingProgress, this, &DolphinView::directorySortingProgress); + connect(m_model, &KFileItemModel::itemsChanged, + this, &DolphinView::slotItemsChanged); + connect(m_model, &KFileItemModel::itemsRemoved, this, &DolphinView::itemCountChanged); + connect(m_model, &KFileItemModel::itemsInserted, this, &DolphinView::itemCountChanged); + connect(m_model, &KFileItemModel::infoMessage, this, &DolphinView::infoMessage); + connect(m_model, &KFileItemModel::errorMessage, this, &DolphinView::errorMessage); + connect(m_model, &KFileItemModel::directoryRedirection, this, &DolphinView::slotDirectoryRedirection); + connect(m_model, &KFileItemModel::urlIsFileError, this, &DolphinView::urlIsFileError); m_view->installEventFilter(this); - connect(m_view, SIGNAL(sortOrderChanged(Qt::SortOrder,Qt::SortOrder)), - this, SLOT(slotSortOrderChangedByHeader(Qt::SortOrder,Qt::SortOrder))); - connect(m_view, SIGNAL(sortRoleChanged(QByteArray,QByteArray)), - this, SLOT(slotSortRoleChangedByHeader(QByteArray,QByteArray))); - connect(m_view, SIGNAL(visibleRolesChanged(QList<QByteArray>,QList<QByteArray>)), - this, SLOT(slotVisibleRolesChangedByHeader(QList<QByteArray>,QList<QByteArray>))); - connect(m_view, SIGNAL(roleEditingCanceled(int,QByteArray,QVariant)), - this, SLOT(slotRoleEditingCanceled())); - connect(m_view->header(), SIGNAL(columnWidthChanged(QByteArray,qreal,qreal)), - this, SLOT(slotHeaderColumnWidthChanged(QByteArray,qreal,qreal))); + connect(m_view, &DolphinItemListView::sortOrderChanged, + this, &DolphinView::slotSortOrderChangedByHeader); + connect(m_view, &DolphinItemListView::sortRoleChanged, + this, &DolphinView::slotSortRoleChangedByHeader); + connect(m_view, &DolphinItemListView::visibleRolesChanged, + this, &DolphinView::slotVisibleRolesChangedByHeader); + connect(m_view, &DolphinItemListView::roleEditingCanceled, + this, &DolphinView::slotRoleEditingCanceled); + connect(m_view->header(), &KItemListHeader::columnWidthChanged, + this, &DolphinView::slotHeaderColumnWidthChanged); KItemListSelectionManager* selectionManager = controller->selectionManager(); - connect(selectionManager, SIGNAL(selectionChanged(KItemSet,KItemSet)), - this, SLOT(slotSelectionChanged(KItemSet,KItemSet))); + connect(selectionManager, &KItemListSelectionManager::selectionChanged, + this, &DolphinView::slotSelectionChanged); m_toolTipManager = new ToolTipManager(this); m_versionControlObserver = new VersionControlObserver(this); m_versionControlObserver->setModel(m_model); - connect(m_versionControlObserver, SIGNAL(infoMessage(QString)), this, SIGNAL(infoMessage(QString))); - connect(m_versionControlObserver, SIGNAL(errorMessage(QString)), this, SIGNAL(errorMessage(QString))); - connect(m_versionControlObserver, SIGNAL(operationCompletedMessage(QString)), this, SIGNAL(operationCompletedMessage(QString))); + connect(m_versionControlObserver, &VersionControlObserver::infoMessage, this, &DolphinView::infoMessage); + connect(m_versionControlObserver, &VersionControlObserver::errorMessage, this, &DolphinView::errorMessage); + connect(m_versionControlObserver, &VersionControlObserver::operationCompletedMessage, this, &DolphinView::operationCompletedMessage); applyViewProperties(); m_topLayout->addWidget(m_container); @@ -295,7 +300,7 @@ void DolphinView::setHiddenFilesShown(bool show) const KFileItemList itemList = selectedItems(); m_selectedUrls.clear(); - m_selectedUrls = itemList.urlList(); + m_selectedUrls = KUrl::List(itemList.urlList()); ViewProperties props(viewPropertiesUrl()); props.setHiddenFilesShown(show); @@ -472,7 +477,7 @@ void DolphinView::reload() const KFileItemList itemList = selectedItems(); m_selectedUrls.clear(); - m_selectedUrls = itemList.urlList(); + m_selectedUrls = KUrl::List(itemList.urlList()); setUrl(url()); loadDirectory(url(), true); @@ -485,7 +490,7 @@ void DolphinView::readSettings() { const int oldZoomLevel = m_view->zoomLevel(); - GeneralSettings::self()->readConfig(); + GeneralSettings::self()->load(); m_view->readSettings(); applyViewProperties(); @@ -500,7 +505,7 @@ void DolphinView::readSettings() void DolphinView::writeSettings() { - GeneralSettings::self()->writeConfig(); + GeneralSettings::self()->save(); m_view->writeSettings(); } @@ -563,11 +568,11 @@ QString DolphinView::statusBarText() const if (fileCount > 0 && folderCount > 0) { summary = i18nc("@info:status folders, files (size)", "%1, %2 (%3)", foldersText, filesText, - KGlobal::locale()->formatByteSize(totalFileSize)); + KFormat().formatByteSize(totalFileSize)); } else if (fileCount > 0) { summary = i18nc("@info:status files (size)", "%1 (%2)", filesText, - KGlobal::locale()->formatByteSize(totalFileSize)); + KFormat().formatByteSize(totalFileSize)); } else if (folderCount > 0) { summary = foldersText; } else { @@ -606,8 +611,8 @@ void DolphinView::setUrl(const KUrl& url) hideToolTip(); - disconnect(m_view, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), - this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant))); + disconnect(m_view, &DolphinItemListView::roleEditingFinished, + this, &DolphinView::slotRoleEditingFinished); // It is important to clear the items from the model before // applying the view properties, otherwise expensive operations @@ -651,8 +656,8 @@ void DolphinView::renameSelectedItems() hideToolTip(); - connect(m_view, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), - this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant))); + connect(m_view, &DolphinItemListView::roleEditingFinished, + this, &DolphinView::slotRoleEditingFinished); } else { RenameDialog* dialog = new RenameDialog(this, items); dialog->setAttribute(Qt::WA_DeleteOnClose); @@ -670,31 +675,35 @@ void DolphinView::renameSelectedItems() void DolphinView::trashSelectedItems() { const KUrl::List list = simplifiedSelectedUrls(); - KonqOperations::del(this, KonqOperations::TRASH, list); + KIO::JobUiDelegate uiDelegate; + uiDelegate.setWindow(window()); + if (uiDelegate.askDeleteConfirmation(list, KIO::JobUiDelegate::Trash, KIO::JobUiDelegate::DefaultConfirmation)) { + KIO::Job* job = KIO::trash(list); + KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Trash, list, KUrl("trash:/"), job); + KJobWidgets::setWindow(job, this); + connect(job, &KIO::Job::result, + this, &DolphinView::slotTrashFileFinished); + } } void DolphinView::deleteSelectedItems() { const KUrl::List list = simplifiedSelectedUrls(); - const bool del = KonqOperations::askDeleteConfirmation(list, - KonqOperations::DEL, - KonqOperations::DEFAULT_CONFIRMATION, - this); - if (del) { + KIO::JobUiDelegate uiDelegate; + uiDelegate.setWindow(window()); + if (uiDelegate.askDeleteConfirmation(list, KIO::JobUiDelegate::Delete, KIO::JobUiDelegate::DefaultConfirmation)) { KIO::Job* job = KIO::del(list); - if (job->ui()) { - job->ui()->setWindow(this); - } - connect(job, SIGNAL(result(KJob*)), - this, SLOT(slotDeleteFileFinished(KJob*))); + KJobWidgets::setWindow(job, this); + connect(job, &KIO::Job::result, + this, &DolphinView::slotDeleteFileFinished); } } void DolphinView::cutSelectedItems() { QMimeData* mimeData = selectionMimeData(); - KonqMimeData::addIsCutSelection(mimeData, true); + KIO::setClipboardDataCut(mimeData, true); QApplication::clipboard()->setMimeData(mimeData); } @@ -865,7 +874,7 @@ void DolphinView::slotHeaderContextMenuRequested(const QPointF& pos) { ViewProperties props(viewPropertiesUrl()); - QPointer<KMenu> menu = new KMenu(QApplication::activeWindow()); + QPointer<QMenu> menu = new QMenu(QApplication::activeWindow()); KItemListView* view = m_container->controller()->view(); const QSet<QByteArray> visibleRolesSet = view->visibleRoles().toSet(); @@ -1047,7 +1056,7 @@ void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* even // Mark the dropped urls as selected. m_clearSelectionBeforeSelectingNewItems = true; m_markFirstNewlySelectedItemAsCurrent = true; - connect(op, SIGNAL(aboutToCreate(KUrl::List)), this, SLOT(slotAboutToCreate(KUrl::List))); + connect(op, static_cast<void(KonqOperations::*)(const KUrl::List&)>(&KonqOperations::aboutToCreate), this, &DolphinView::slotAboutToCreate); } setActive(true); @@ -1056,15 +1065,16 @@ void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* even void DolphinView::slotModelChanged(KItemModelBase* current, KItemModelBase* previous) { if (previous != 0) { - disconnect(previous, SIGNAL(directoryLoadingCompleted()), this, SLOT(slotDirectoryLoadingCompleted())); + Q_ASSERT(qobject_cast<KFileItemModel*>(previous)); + KFileItemModel* fileItemModel = static_cast<KFileItemModel*>(previous); + disconnect(fileItemModel, &KFileItemModel::directoryLoadingCompleted, this, &DolphinView::slotDirectoryLoadingCompleted); m_versionControlObserver->setModel(0); } if (current) { Q_ASSERT(qobject_cast<KFileItemModel*>(current)); - connect(current, SIGNAL(loadingCompleted()), this, SLOT(slotDirectoryLoadingCompleted())); - KFileItemModel* fileItemModel = static_cast<KFileItemModel*>(current); + connect(fileItemModel, &KFileItemModel::directoryLoadingCompleted, this, &DolphinView::slotDirectoryLoadingCompleted); m_versionControlObserver->setModel(fileItemModel); } } @@ -1075,10 +1085,9 @@ void DolphinView::slotMouseButtonPressed(int itemIndex, Qt::MouseButtons buttons hideToolTip(); - // TODO: Qt5: Replace Qt::XButton1 by Qt::BackButton and Qt::XButton2 by Qt::ForwardButton - if (buttons & Qt::XButton1) { + if (buttons & Qt::BackButton) { emit goBackRequested(); - } else if (buttons & Qt::XButton2) { + } else if (buttons & Qt::ForwardButton) { emit goForwardRequested(); } } @@ -1090,7 +1099,7 @@ void DolphinView::slotAboutToCreate(const KUrl::List& urls) markUrlAsCurrent(urls.first()); m_markFirstNewlySelectedItemAsCurrent = false; } - m_selectedUrls << KDirModel::simplifiedUrlList(urls); + m_selectedUrls << KUrl::List(KDirModel::simplifiedUrlList(urls)); } } @@ -1363,6 +1372,15 @@ void DolphinView::calculateItemCount(int& fileCount, } } +void DolphinView::slotTrashFileFinished(KJob* job) +{ + if (job->error() == 0) { + emit operationCompletedMessage(i18nc("@info:status", "Trash operation completed.")); + } else if (job->error() != KIO::ERR_USER_CANCELED) { + emit errorMessage(job->errorString()); + } +} + void DolphinView::slotDeleteFileFinished(KJob* job) { if (job->error() == 0) { @@ -1372,13 +1390,19 @@ void DolphinView::slotDeleteFileFinished(KJob* job) } } -void DolphinView::slotRenamingFailed(const KUrl& oldUrl, const KUrl& newUrl) +void DolphinView::slotRenamingResult(KJob* job) { - const int index = m_model->index(newUrl); - if (index >= 0) { - QHash<QByteArray, QVariant> data; - data.insert("text", oldUrl.fileName()); - m_model->setData(index, data); + if (job->error()) { + KIO::CopyJob *copyJob = qobject_cast<KIO::CopyJob *>(job); + Q_ASSERT(copyJob); + const QUrl newUrl = copyJob->destUrl(); + const int index = m_model->index(KUrl(newUrl)); + if (index >= 0) { + QHash<QByteArray, QVariant> data; + const QUrl oldUrl = copyJob->srcUrls().first(); + data.insert("text", oldUrl.fileName()); + m_model->setData(index, data); + } } } @@ -1450,14 +1474,14 @@ void DolphinView::slotVisibleRolesChangedByHeader(const QList<QByteArray>& curre void DolphinView::slotRoleEditingCanceled() { - disconnect(m_view, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), - this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant))); + disconnect(m_view, &DolphinItemListView::roleEditingFinished, + this, &DolphinView::slotRoleEditingFinished); } void DolphinView::slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& value) { - disconnect(m_view, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), - this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant))); + disconnect(m_view, &DolphinItemListView::roleEditingFinished, + this, &DolphinView::slotRoleEditingFinished); if (index < 0 || index >= m_model->count()) { return; @@ -1469,12 +1493,14 @@ void DolphinView::slotRoleEditingFinished(int index, const QByteArray& role, con if (!newName.isEmpty() && newName != oldItem.text() && newName != QLatin1String(".") && newName != QLatin1String("..")) { const KUrl oldUrl = oldItem.url(); - const KUrl newUrl(url().path(KUrl::AddTrailingSlash) + newName); - const bool newNameExistsAlready = (m_model->index(newUrl) >= 0); + QUrl newUrl = oldUrl.adjusted(QUrl::RemoveFilename); + newUrl.setPath(newUrl.path() + KIO::encodeFileName(newName)); + + const bool newNameExistsAlready = (m_model->index(KUrl(newUrl)) >= 0); if (!newNameExistsAlready) { // Only change the data in the model if no item with the new name // is in the model yet. If there is an item with the new name - // already, calling KonqOperations::rename() will open a dialog + // already, calling KIO::CopyJob will open a dialog // asking for a new name, and KFileItemModel will update the // data when the dir lister signals that the file name has changed. QHash<QByteArray, QVariant> data; @@ -1482,11 +1508,15 @@ void DolphinView::slotRoleEditingFinished(int index, const QByteArray& role, con m_model->setData(index, data); } - KonqOperations* op = KonqOperations::renameV2(this, oldUrl, newName); - if (op && !newNameExistsAlready) { - // Only connect the renamingFailed signal if there is no item with the new name + KIO::Job * job = KIO::moveAs(oldUrl, newUrl); + KJobWidgets::setWindow(job, this); + KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Rename, QList<QUrl>() << oldUrl, newUrl, job); + job->ui()->setAutoErrorHandlingEnabled(true); + + if (!newNameExistsAlready) { + // Only connect the result signal if there is no item with the new name // in the model yet, see bug 328262. - connect(op, SIGNAL(renamingFailed(KUrl,KUrl)), SLOT(slotRenamingFailed(KUrl,KUrl))); + connect(job, &KJob::result, this, &DolphinView::slotRenamingResult); } } } @@ -1627,7 +1657,7 @@ void DolphinView::pasteToUrl(const KUrl& url) if (op) { m_clearSelectionBeforeSelectingNewItems = true; m_markFirstNewlySelectedItemAsCurrent = true; - connect(op, SIGNAL(aboutToCreate(KUrl::List)), this, SLOT(slotAboutToCreate(KUrl::List))); + connect(op, static_cast<void(KonqOperations::*)(const KUrl::List&)>(&KonqOperations::aboutToCreate), this, &DolphinView::slotAboutToCreate); } } @@ -1688,4 +1718,3 @@ KUrl DolphinView::viewPropertiesUrl() const return url; } -#include "dolphinview.moc" diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index 06c09edc3..1616bcaa6 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -30,6 +30,7 @@ #include <KFileItemDelegate> #include <kio/fileundomanager.h> #include <KIO/Job> +#include <KUrl> #include <QBoxLayout> #include <QKeyEvent> @@ -39,8 +40,6 @@ typedef KIO::FileUndoManager::CommandType CommandType; class DolphinItemListView; -class KAction; -class KActionCollection; class KFileItemModel; class KItemListContainer; class KItemModelBase; @@ -619,7 +618,16 @@ private slots: */ void slotDeleteFileFinished(KJob* job); - void slotRenamingFailed(const KUrl& oldUrl, const KUrl& newUrl); + /** + * Indicates in the status bar that the trash operation + * of the job \a job has been finished. + */ + void slotTrashFileFinished(KJob* job); + + /** + * Invoked when the rename job is done, for error handling. + */ + void slotRenamingResult(KJob* job); /** * Invoked when the file item model has started the loading diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp index 48ec95c70..41c3a5dca 100644 --- a/src/views/dolphinviewactionhandler.cpp +++ b/src/views/dolphinviewactionhandler.cpp @@ -27,22 +27,23 @@ #include "views/zoomlevelinfo.h" #include <konq_operations.h> -#include <KAction> +#include <QPointer> + #include <KActionCollection> #include <KActionMenu> #include <kitemviews/kfileitemmodel.h> #include <KLocale> -#include <KMenu> +#include <QMenu> #include <KNewFileMenu> #include <KSelectAction> #include <KToggleAction> #include <KPropertiesDialog> -#include <KIcon> +#include <QIcon> #include <KDebug> #ifdef HAVE_BALOO - #include <baloo/indexerconfig.h> + #include <Baloo/IndexerConfig> #endif DolphinViewActionHandler::DolphinViewActionHandler(KActionCollection* collection, QObject* parent) : @@ -66,26 +67,26 @@ void DolphinViewActionHandler::setCurrentView(DolphinView* view) m_currentView = view; - connect(view, SIGNAL(modeChanged(DolphinView::Mode,DolphinView::Mode)), - this, SLOT(updateViewActions())); - connect(view, SIGNAL(previewsShownChanged(bool)), - this, SLOT(slotPreviewsShownChanged(bool))); - connect(view, SIGNAL(sortOrderChanged(Qt::SortOrder)), - this, SLOT(slotSortOrderChanged(Qt::SortOrder))); - connect(view, SIGNAL(sortFoldersFirstChanged(bool)), - this, SLOT(slotSortFoldersFirstChanged(bool))); - connect(view, SIGNAL(visibleRolesChanged(QList<QByteArray>,QList<QByteArray>)), - this, SLOT(slotVisibleRolesChanged(QList<QByteArray>,QList<QByteArray>))); - connect(view, SIGNAL(groupedSortingChanged(bool)), - this, SLOT(slotGroupedSortingChanged(bool))); - connect(view, SIGNAL(hiddenFilesShownChanged(bool)), - this, SLOT(slotHiddenFilesShownChanged(bool))); - connect(view, SIGNAL(sortRoleChanged(QByteArray)), - this, SLOT(slotSortRoleChanged(QByteArray))); - connect(view, SIGNAL(zoomLevelChanged(int,int)), - this, SLOT(slotZoomLevelChanged(int,int))); - connect(view, SIGNAL(writeStateChanged(bool)), - this, SLOT(slotWriteStateChanged(bool))); + connect(view, &DolphinView::modeChanged, + this, &DolphinViewActionHandler::updateViewActions); + connect(view, &DolphinView::previewsShownChanged, + this, &DolphinViewActionHandler::slotPreviewsShownChanged); + connect(view, &DolphinView::sortOrderChanged, + this, &DolphinViewActionHandler::slotSortOrderChanged); + connect(view, &DolphinView::sortFoldersFirstChanged, + this, &DolphinViewActionHandler::slotSortFoldersFirstChanged); + connect(view, &DolphinView::visibleRolesChanged, + this, &DolphinViewActionHandler::slotVisibleRolesChanged); + connect(view, &DolphinView::groupedSortingChanged, + this, &DolphinViewActionHandler::slotGroupedSortingChanged); + connect(view, &DolphinView::hiddenFilesShownChanged, + this, &DolphinViewActionHandler::slotHiddenFilesShownChanged); + connect(view, &DolphinView::sortRoleChanged, + this, &DolphinViewActionHandler::slotSortRoleChanged); + connect(view, &DolphinView::zoomLevelChanged, + this, &DolphinViewActionHandler::slotZoomLevelChanged); + connect(view, &DolphinView::writeStateChanged, + this, &DolphinViewActionHandler::slotWriteStateChanged); } DolphinView* DolphinViewActionHandler::currentView() @@ -97,51 +98,51 @@ void DolphinViewActionHandler::createActions() { // This action doesn't appear in the GUI, it's for the shortcut only. // KNewFileMenu takes care of the GUI stuff. - KAction* newDirAction = m_actionCollection->addAction("create_dir"); + QAction* newDirAction = m_actionCollection->addAction("create_dir"); newDirAction->setText(i18nc("@action", "Create Folder...")); - newDirAction->setShortcut(Qt::Key_F10); - newDirAction->setIcon(KIcon("folder-new")); + m_actionCollection->setDefaultShortcut(newDirAction, Qt::Key_F10); + newDirAction->setIcon(QIcon::fromTheme("folder-new")); newDirAction->setEnabled(false); // Will be enabled in slotWriteStateChanged(bool) if the current URL is writable - connect(newDirAction, SIGNAL(triggered()), this, SIGNAL(createDirectory())); + connect(newDirAction, &QAction::triggered, this, &DolphinViewActionHandler::createDirectory); // File menu - KAction* rename = m_actionCollection->addAction("rename"); + QAction* rename = m_actionCollection->addAction("rename"); rename->setText(i18nc("@action:inmenu File", "Rename...")); - rename->setShortcut(Qt::Key_F2); - rename->setIcon(KIcon("edit-rename")); - connect(rename, SIGNAL(triggered()), this, SLOT(slotRename())); + m_actionCollection->setDefaultShortcut(rename, Qt::Key_F2); + rename->setIcon(QIcon::fromTheme("edit-rename")); + connect(rename, &QAction::triggered, this, &DolphinViewActionHandler::slotRename); - KAction* moveToTrash = m_actionCollection->addAction("move_to_trash"); + QAction* moveToTrash = m_actionCollection->addAction("move_to_trash"); moveToTrash->setText(i18nc("@action:inmenu File", "Move to Trash")); - moveToTrash->setIcon(KIcon("user-trash")); - moveToTrash->setShortcut(QKeySequence::Delete); - connect(moveToTrash, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)), - this, SLOT(slotTrashActivated(Qt::MouseButtons,Qt::KeyboardModifiers))); + moveToTrash->setIcon(QIcon::fromTheme("user-trash")); + m_actionCollection->setDefaultShortcut(moveToTrash, QKeySequence::Delete); + connect(moveToTrash, &QAction::triggered, + this, &DolphinViewActionHandler::slotTrashActivated); - KAction* deleteAction = m_actionCollection->addAction("delete"); - deleteAction->setIcon(KIcon("edit-delete")); + QAction* deleteAction = m_actionCollection->addAction("delete"); + deleteAction->setIcon(QIcon::fromTheme("edit-delete")); deleteAction->setText(i18nc("@action:inmenu File", "Delete")); - deleteAction->setShortcut(Qt::SHIFT | Qt::Key_Delete); - connect(deleteAction, SIGNAL(triggered()), this, SLOT(slotDeleteItems())); + m_actionCollection->setDefaultShortcut(deleteAction, Qt::SHIFT | Qt::Key_Delete); + connect(deleteAction, &QAction::triggered, this, &DolphinViewActionHandler::slotDeleteItems); // This action is useful for being enabled when "move_to_trash" should be // disabled and "delete" is enabled (e.g. non-local files), so that Key_Del // can be used for deleting the file (#76016). It needs to be a separate action // so that the Edit menu isn't affected. - KAction* deleteWithTrashShortcut = m_actionCollection->addAction("delete_shortcut"); + QAction* deleteWithTrashShortcut = m_actionCollection->addAction("delete_shortcut"); // The descriptive text is just for the shortcuts editor. deleteWithTrashShortcut->setText(i18nc("@action \"Move to Trash\" for non-local files, etc.", "Delete (using shortcut for Trash)")); - deleteWithTrashShortcut->setShortcut(QKeySequence::Delete); + m_actionCollection->setDefaultShortcut(deleteWithTrashShortcut, QKeySequence::Delete); deleteWithTrashShortcut->setEnabled(false); - connect(deleteWithTrashShortcut, SIGNAL(triggered()), this, SLOT(slotDeleteItems())); + connect(deleteWithTrashShortcut, &QAction::triggered, this, &DolphinViewActionHandler::slotDeleteItems); - KAction *propertiesAction = m_actionCollection->addAction( "properties" ); + QAction *propertiesAction = m_actionCollection->addAction( "properties" ); // Well, it's the File menu in dolphinmainwindow and the Edit menu in dolphinpart... :) propertiesAction->setText( i18nc("@action:inmenu File", "Properties") ); - propertiesAction->setIcon(KIcon("document-properties")); - propertiesAction->setShortcuts(QList<QKeySequence>() << Qt::ALT + Qt::Key_Return << Qt::ALT + Qt::Key_Enter); - connect(propertiesAction, SIGNAL(triggered()), SLOT(slotProperties())); + propertiesAction->setIcon(QIcon::fromTheme("document-properties")); + m_actionCollection->setDefaultShortcuts(propertiesAction, QList<QKeySequence>() << Qt::ALT + Qt::Key_Return << Qt::ALT + Qt::Key_Enter); + connect(propertiesAction, &QAction::triggered, this, &DolphinViewActionHandler::slotProperties); // View menu KToggleAction* iconsAction = iconsModeAction(); @@ -154,7 +155,7 @@ void DolphinViewActionHandler::createActions() viewModeActions->addAction(compactAction); viewModeActions->addAction(detailsAction); viewModeActions->setToolBarMode(KSelectAction::MenuMode); - connect(viewModeActions, SIGNAL(triggered(QAction*)), this, SLOT(slotViewModeActionTriggered(QAction*))); + connect(viewModeActions, static_cast<void(KSelectAction::*)(QAction*)>(&KSelectAction::triggered), this, &DolphinViewActionHandler::slotViewModeActionTriggered); KStandardAction::zoomIn(this, SLOT(zoomIn()), @@ -167,16 +168,16 @@ void DolphinViewActionHandler::createActions() KToggleAction* showPreview = m_actionCollection->add<KToggleAction>("show_preview"); showPreview->setText(i18nc("@action:intoolbar", "Preview")); showPreview->setToolTip(i18nc("@info", "Show preview of files and folders")); - showPreview->setIcon(KIcon("view-preview")); - connect(showPreview, SIGNAL(triggered(bool)), this, SLOT(togglePreview(bool))); + showPreview->setIcon(QIcon::fromTheme("view-preview")); + connect(showPreview, &KToggleAction::triggered, this, &DolphinViewActionHandler::togglePreview); KToggleAction* sortDescending = m_actionCollection->add<KToggleAction>("descending"); sortDescending->setText(i18nc("@action:inmenu Sort", "Descending")); - connect(sortDescending, SIGNAL(triggered()), this, SLOT(toggleSortOrder())); + connect(sortDescending, &KToggleAction::triggered, this, &DolphinViewActionHandler::toggleSortOrder); KToggleAction* sortFoldersFirst = m_actionCollection->add<KToggleAction>("folders_first"); sortFoldersFirst->setText(i18nc("@action:inmenu Sort", "Folders First")); - connect(sortFoldersFirst, SIGNAL(triggered()), this, SLOT(toggleSortFoldersFirst())); + connect(sortFoldersFirst, &KToggleAction::triggered, this, &DolphinViewActionHandler::toggleSortFoldersFirst); // View -> Sort By QActionGroup* sortByActionGroup = createFileItemRolesActionGroup("sort_by_"); @@ -204,18 +205,18 @@ void DolphinViewActionHandler::createActions() } KToggleAction* showInGroups = m_actionCollection->add<KToggleAction>("show_in_groups"); - showInGroups->setIcon(KIcon("view-group")); + showInGroups->setIcon(QIcon::fromTheme("view-group")); showInGroups->setText(i18nc("@action:inmenu View", "Show in Groups")); - connect(showInGroups, SIGNAL(triggered(bool)), this, SLOT(toggleGroupedSorting(bool))); + connect(showInGroups, &KToggleAction::triggered, this, &DolphinViewActionHandler::toggleGroupedSorting); KToggleAction* showHiddenFiles = m_actionCollection->add<KToggleAction>("show_hidden_files"); showHiddenFiles->setText(i18nc("@action:inmenu View", "Show Hidden Files")); - showHiddenFiles->setShortcuts(QList<QKeySequence>() << Qt::ALT + Qt::Key_Period << Qt::Key_F8); - connect(showHiddenFiles, SIGNAL(triggered(bool)), this, SLOT(toggleShowHiddenFiles(bool))); + m_actionCollection->setDefaultShortcuts(showHiddenFiles, QList<QKeySequence>() << Qt::ALT + Qt::Key_Period << Qt::Key_F8); + connect(showHiddenFiles, &KToggleAction::triggered, this, &DolphinViewActionHandler::toggleShowHiddenFiles); - KAction* adjustViewProps = m_actionCollection->addAction("view_properties"); + QAction* adjustViewProps = m_actionCollection->addAction("view_properties"); adjustViewProps->setText(i18nc("@action:inmenu View", "Adjust View Properties...")); - connect(adjustViewProps, SIGNAL(triggered()), this, SLOT(slotAdjustViewProperties())); + connect(adjustViewProps, &QAction::triggered, this, &DolphinViewActionHandler::slotAdjustViewProperties); } QActionGroup* DolphinViewActionHandler::createFileItemRolesActionGroup(const QString& groupPrefix) @@ -226,11 +227,11 @@ QActionGroup* DolphinViewActionHandler::createFileItemRolesActionGroup(const QSt QActionGroup* rolesActionGroup = new QActionGroup(m_actionCollection); rolesActionGroup->setExclusive(isSortGroup); if (isSortGroup) { - connect(rolesActionGroup, SIGNAL(triggered(QAction*)), - this, SLOT(slotSortTriggered(QAction*))); + connect(rolesActionGroup, &QActionGroup::triggered, + this, &DolphinViewActionHandler::slotSortTriggered); } else { - connect(rolesActionGroup, SIGNAL(triggered(QAction*)), - this, SLOT(toggleVisibleRole(QAction*))); + connect(rolesActionGroup, &QActionGroup::triggered, + this, &DolphinViewActionHandler::toggleVisibleRole); } QString groupName; @@ -265,11 +266,11 @@ QActionGroup* DolphinViewActionHandler::createFileItemRolesActionGroup(const QSt groupMenuGroup = new QActionGroup(groupMenu); groupMenuGroup->setExclusive(isSortGroup); if (isSortGroup) { - connect(groupMenuGroup, SIGNAL(triggered(QAction*)), - this, SLOT(slotSortTriggered(QAction*))); + connect(groupMenuGroup, &QActionGroup::triggered, + this, &DolphinViewActionHandler::slotSortTriggered); } else { - connect(groupMenuGroup, SIGNAL(triggered(QAction*)), - this, SLOT(toggleVisibleRole(QAction*))); + connect(groupMenuGroup, &QActionGroup::triggered, + this, &DolphinViewActionHandler::toggleVisibleRole); } } @@ -301,7 +302,7 @@ void DolphinViewActionHandler::slotViewModeActionTriggered(QAction* action) m_currentView->setMode(mode); QAction* viewModeMenu = m_actionCollection->action("view_mode"); - viewModeMenu->setIcon(KIcon(action->icon())); + viewModeMenu->setIcon(action->icon()); } void DolphinViewActionHandler::slotRename() @@ -310,7 +311,7 @@ void DolphinViewActionHandler::slotRename() m_currentView->renameSelectedItems(); } -void DolphinViewActionHandler::slotTrashActivated(Qt::MouseButtons, Qt::KeyboardModifiers modifiers) +void DolphinViewActionHandler::slotTrashActivated() { emit actionBeingHandled(); m_currentView->trashSelectedItems(); @@ -364,7 +365,7 @@ void DolphinViewActionHandler::updateViewActions() viewModeAction->setChecked(true); QAction* viewModeMenu = m_actionCollection->action("view_mode"); - viewModeMenu->setIcon(KIcon(viewModeAction->icon())); + viewModeMenu->setIcon(viewModeAction->icon()); } QAction* showPreviewAction = m_actionCollection->action("show_preview"); @@ -491,8 +492,8 @@ KToggleAction* DolphinViewActionHandler::iconsModeAction() KToggleAction* iconsView = m_actionCollection->add<KToggleAction>("icons"); iconsView->setText(i18nc("@action:inmenu View Mode", "Icons")); iconsView->setToolTip(i18nc("@info", "Icons view mode")); - iconsView->setShortcut(Qt::CTRL | Qt::Key_1); - iconsView->setIcon(KIcon("view-list-icons")); + m_actionCollection->setDefaultShortcut(iconsView, Qt::CTRL | Qt::Key_1); + iconsView->setIcon(QIcon::fromTheme("view-list-icons")); iconsView->setData(QVariant::fromValue(DolphinView::IconsView)); return iconsView; } @@ -502,8 +503,8 @@ KToggleAction* DolphinViewActionHandler::compactModeAction() KToggleAction* iconsView = m_actionCollection->add<KToggleAction>("compact"); iconsView->setText(i18nc("@action:inmenu View Mode", "Compact")); iconsView->setToolTip(i18nc("@info", "Compact view mode")); - iconsView->setShortcut(Qt::CTRL | Qt::Key_2); - iconsView->setIcon(KIcon("view-list-details")); // TODO: discuss with Oxygen-team the wrong (?) name + m_actionCollection->setDefaultShortcut(iconsView, Qt::CTRL | Qt::Key_2); + iconsView->setIcon(QIcon::fromTheme("view-list-details")); // TODO: discuss with Oxygen-team the wrong (?) name iconsView->setData(QVariant::fromValue(DolphinView::CompactView)); return iconsView; } @@ -513,8 +514,8 @@ KToggleAction* DolphinViewActionHandler::detailsModeAction() KToggleAction* detailsView = m_actionCollection->add<KToggleAction>("details"); detailsView->setText(i18nc("@action:inmenu View Mode", "Details")); detailsView->setToolTip(i18nc("@info", "Details view mode")); - detailsView->setShortcut(Qt::CTRL | Qt::Key_3); - detailsView->setIcon(KIcon("view-list-tree")); + m_actionCollection->setDefaultShortcut(detailsView, Qt::CTRL | Qt::Key_3); + detailsView->setIcon(QIcon::fromTheme("view-list-tree")); detailsView->setData(QVariant::fromValue(DolphinView::DetailsView)); return detailsView; } @@ -527,7 +528,7 @@ void DolphinViewActionHandler::slotSortRoleChanged(const QByteArray& role) if (!action->icon().isNull()) { QAction* sortByMenu = m_actionCollection->action("sort"); - sortByMenu->setIcon(KIcon(action->icon())); + sortByMenu->setIcon(action->icon()); } } } diff --git a/src/views/dolphinviewactionhandler.h b/src/views/dolphinviewactionhandler.h index e80ffc0df..58cdb5416 100644 --- a/src/views/dolphinviewactionhandler.h +++ b/src/views/dolphinviewactionhandler.h @@ -112,7 +112,7 @@ private Q_SLOTS: * Moves the selected items of the active view to the trash. * This methods adds "shift means del" handling. */ - void slotTrashActivated(Qt::MouseButtons, Qt::KeyboardModifiers); + void slotTrashActivated(); /** * Deletes the selected items of the active view. diff --git a/src/views/draganddrophelper.cpp b/src/views/draganddrophelper.cpp index f8ae0ad03..5bae50ef7 100644 --- a/src/views/draganddrophelper.cpp +++ b/src/views/draganddrophelper.cpp @@ -33,7 +33,7 @@ KonqOperations* DragAndDropHelper::dropUrls(const KFileItem& destItem, const KUr error.clear(); if (!destItem.isNull() && !destItem.isWritable()) { - error = i18nc("@info:status", "Access denied. Could not write to <filename>%1</filename>", destUrl.pathOrUrl()); + error = xi18nc("@info:status", "Access denied. Could not write to <filename>%1</filename>", destUrl.pathOrUrl()); return 0; } diff --git a/src/views/draganddrophelper.h b/src/views/draganddrophelper.h index eda5fc5c2..a6fbb7c7f 100644 --- a/src/views/draganddrophelper.h +++ b/src/views/draganddrophelper.h @@ -28,7 +28,6 @@ class KFileItem; class KUrl; class QDropEvent; -class QWidget; class KonqOperations; class LIBDOLPHINPRIVATE_EXPORT DragAndDropHelper diff --git a/src/views/renamedialog.cpp b/src/views/renamedialog.cpp index 5c0ae6126..e9fda4a56 100644 --- a/src/views/renamedialog.cpp +++ b/src/views/renamedialog.cpp @@ -21,17 +21,26 @@ #include <KLineEdit> #include <KLocale> -#include <konq_operations.h> +#include <KJobWidgets> +#include <KJobUiDelegate> +#include <KIO/CopyJob> +#include <KIO/FileUndoManager> #include <KStringHandler> +#include <kstringhandler_deprecated.h> //TODO port to QCollator #include <knuminput.h> #include <kmimetype.h> #include <QHBoxLayout> #include <QLabel> #include <QVBoxLayout> +#include <QMimeDatabase> +#include <KConfigGroup> +#include <QDialogButtonBox> +#include <QPushButton> +#include <KGuiItem> RenameDialog::RenameDialog(QWidget *parent, const KFileItemList& items) : - KDialog(parent), + QDialog(parent), m_renameOneItem(false), m_newName(), m_lineEdit(0), @@ -46,23 +55,31 @@ RenameDialog::RenameDialog(QWidget *parent, const KFileItemList& items) : Q_ASSERT(itemCount >= 1); m_renameOneItem = (itemCount == 1); - setCaption(m_renameOneItem ? + setWindowTitle(m_renameOneItem ? i18nc("@title:window", "Rename Item") : i18nc("@title:window", "Rename Items")); - setButtons(Ok | Cancel); - setDefaultButton(Ok); + QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel); + QVBoxLayout *mainLayout = new QVBoxLayout; + setLayout(mainLayout); + m_okButton = buttonBox->button(QDialogButtonBox::Ok); + m_okButton->setDefault(true); + m_okButton->setShortcut(Qt::CTRL | Qt::Key_Return); + connect(buttonBox, SIGNAL(accepted()), this, SLOT(slotAccepted())); + connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); + m_okButton->setDefault(true); - setButtonGuiItem(Ok, KGuiItem(i18nc("@action:button", "&Rename"), "dialog-ok-apply")); + KGuiItem::assign(m_okButton, KGuiItem(i18nc("@action:button", "&Rename"), "dialog-ok-apply")); QWidget* page = new QWidget(this); - setMainWidget(page); + mainLayout->addWidget(page); + mainLayout->addWidget(buttonBox); QVBoxLayout* topLayout = new QVBoxLayout(page); QLabel* editLabel = 0; if (m_renameOneItem) { m_newName = items.first().name(); - editLabel = new QLabel(i18nc("@label:textbox", "Rename the item <filename>%1</filename> to:", m_newName), + editLabel = new QLabel(xi18nc("@label:textbox", "Rename the item <filename>%1</filename> to:", m_newName), page); editLabel->setTextFormat(Qt::PlainText); } else { @@ -74,12 +91,14 @@ RenameDialog::RenameDialog(QWidget *parent, const KFileItemList& items) : } m_lineEdit = new KLineEdit(page); - connect(m_lineEdit, SIGNAL(textChanged(QString)), this, SLOT(slotTextChanged(QString))); + mainLayout->addWidget(m_lineEdit); + connect(m_lineEdit, &KLineEdit::textChanged, this, &RenameDialog::slotTextChanged); int selectionLength = m_newName.length(); if (m_renameOneItem) { - const QString fileName = items.first().url().prettyUrl(); - const QString extension = KMimeType::extractKnownExtension(fileName.toLower()); + const QString fileName = items.first().url().toDisplayString(); + QMimeDatabase db; + const QString extension = db.suffixForFileName(fileName.toLower()); // If the current item is a directory, select the whole file name. if ((extension.length() > 0) && !items.first().isDir()) { @@ -101,7 +120,8 @@ RenameDialog::RenameDialog(QWidget *parent, const KFileItemList& items) : if (!m_renameOneItem) { QSet<QString> extensions; foreach (const KFileItem& item, m_items) { - const QString extension = KMimeType::extractKnownExtension(item.url().prettyUrl().toLower()); + QMimeDatabase db; + const QString extension = db.suffixForFileName(item.url().toDisplayString().toLower()); if (extensions.contains(extension)) { m_allExtensionsDifferent = false; @@ -112,6 +132,7 @@ RenameDialog::RenameDialog(QWidget *parent, const KFileItemList& items) : } QLabel* infoLabel = new QLabel(i18nc("@info", "# will be replaced by ascending numbers starting with:"), page); + mainLayout->addWidget(infoLabel); m_spinBox = new KIntSpinBox(0, 10000, 1, 1, page, 10); QHBoxLayout* horizontalLayout = new QHBoxLayout(page); @@ -127,29 +148,34 @@ RenameDialog::~RenameDialog() { } -void RenameDialog::slotButtonClicked(int button) +void RenameDialog::renameItem(const KFileItem &item, const QString& newName) { - if (button == KDialog::Ok) { - m_newName = m_lineEdit->text(); + const QUrl oldUrl = item.url(); + QUrl newUrl = oldUrl.adjusted(QUrl::RemoveFilename); + newUrl.setPath(newUrl.path() + KIO::encodeFileName(newName)); - if (m_renameOneItem) { - Q_ASSERT(m_items.count() == 1); - const KUrl oldUrl = m_items.first().url(); - KUrl newUrl = oldUrl; - newUrl.setFileName(KIO::encodeFileName(m_newName)); + QWidget* widget = parentWidget(); + if (!widget) { + widget = this; + } - QWidget* widget = parentWidget(); - if (!widget) { - widget = this; - } + KIO::Job * job = KIO::moveAs(oldUrl, newUrl); + KJobWidgets::setWindow(job, widget); + KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Rename, QList<QUrl>() << oldUrl, newUrl, job); + job->ui()->setAutoErrorHandlingEnabled(true); +} - KonqOperations::rename(widget, oldUrl, newUrl); - } else { - renameItems(); - } - } +void RenameDialog::slotAccepted() +{ + m_newName = m_lineEdit->text(); - KDialog::slotButtonClicked(button); + if (m_renameOneItem) { + Q_ASSERT(m_items.count() == 1); + renameItem(m_items.first(), m_newName); + } else { + renameItems(); + } + accept(); } void RenameDialog::slotTextChanged(const QString& newName) @@ -167,7 +193,7 @@ void RenameDialog::slotTextChanged(const QString& newName) enable = (last - first + 1 == count); } } - enableButtonOk(enable); + m_okButton->setEnabled(enable); } void RenameDialog::renameItems() @@ -178,23 +204,16 @@ void RenameDialog::renameItems() QString newName = indexedName(m_newName, index, QLatin1Char('#')); ++index; - const KUrl oldUrl = item.url(); - const QString extension = KMimeType::extractKnownExtension(oldUrl.prettyUrl().toLower()); + const QUrl oldUrl = item.url(); + QMimeDatabase db; + const QString extension = db.suffixForFileName(oldUrl.path().toLower()); if (!extension.isEmpty()) { newName.append(QLatin1Char('.')); newName.append(extension); } if (oldUrl.fileName() != newName) { - KUrl newUrl = oldUrl; - newUrl.setFileName(KIO::encodeFileName(newName)); - - QWidget* widget = parentWidget(); - if (!widget) { - widget = this; - } - - KonqOperations::rename(widget, oldUrl, newUrl); + renameItem(item, newName); } } } @@ -218,4 +237,3 @@ QString RenameDialog::indexedName(const QString& name, int index, const QChar& i return newName; } -#include "renamedialog.moc" diff --git a/src/views/renamedialog.h b/src/views/renamedialog.h index 29ef8bdf1..045161ae4 100644 --- a/src/views/renamedialog.h +++ b/src/views/renamedialog.h @@ -22,18 +22,18 @@ #include "libdolphin_export.h" -#include <KDialog> +#include <QDialog> #include <KFileItem> class KLineEdit; class KIntSpinBox; - +class QPushButton; #include <QString> /** * @brief Dialog for renaming a variable number of files. */ -class LIBDOLPHINPRIVATE_EXPORT RenameDialog : public KDialog +class LIBDOLPHINPRIVATE_EXPORT RenameDialog : public QDialog { Q_OBJECT @@ -41,14 +41,13 @@ public: explicit RenameDialog(QWidget* parent, const KFileItemList& items); virtual ~RenameDialog(); -protected slots: - virtual void slotButtonClicked(int button); - private slots: + void slotAccepted(); void slotTextChanged(const QString& newName); private: void renameItems(); + void renameItem(const KFileItem &item, const QString& newName); /** * @return Returns the string \p name, where the characters represented by @@ -66,6 +65,7 @@ private: KFileItemList m_items; bool m_allExtensionsDifferent; KIntSpinBox* m_spinBox; + QPushButton* m_okButton; }; #endif diff --git a/src/views/tooltips/filemetadatatooltip.cpp b/src/views/tooltips/filemetadatatooltip.cpp index b72699664..afb1a32d3 100644 --- a/src/views/tooltips/filemetadatatooltip.cpp +++ b/src/views/tooltips/filemetadatatooltip.cpp @@ -24,6 +24,8 @@ #include <KColorScheme> #include <KSeparator> #include <KWindowSystem> +// For the blurred tooltip background +#include <KWindowEffects> #include <KStringHandler> #include <QLabel> @@ -37,12 +39,9 @@ #ifndef HAVE_BALOO #include <KFileMetaDataWidget> #else -#include <baloo/filemetadatawidget.h> +#include <Baloo/FileMetaDataWidget> #endif -// For the blurred tooltip background -#include <plasma/windoweffects.h> - FileMetaDataToolTip::FileMetaDataToolTip(QWidget* parent) : QWidget(parent), m_preview(0), @@ -72,13 +71,15 @@ FileMetaDataToolTip::FileMetaDataToolTip(QWidget* parent) : // Create widget for the meta data #ifndef HAVE_BALOO m_fileMetaDataWidget = new KFileMetaDataWidget(this); + connect(m_fileMetaDataWidget, &KFileMetaDataWidget::metaDataRequestFinished, + this, &FileMetaDataToolTip::metaDataRequestFinished); #else m_fileMetaDataWidget = new Baloo::FileMetaDataWidget(this); + connect(m_fileMetaDataWidget, &Baloo::FileMetaDataWidget::metaDataRequestFinished, + this, &FileMetaDataToolTip::metaDataRequestFinished); #endif m_fileMetaDataWidget->setForegroundRole(QPalette::ToolTipText); m_fileMetaDataWidget->setReadOnly(true); - connect(m_fileMetaDataWidget, SIGNAL(metaDataRequestFinished(KFileItemList)), - this, SIGNAL(metaDataRequestFinished(KFileItemList))); QVBoxLayout* textLayout = new QVBoxLayout(); textLayout->addWidget(m_name); @@ -174,8 +175,8 @@ void FileMetaDataToolTip::paintEvent(QPaintEvent* event) void FileMetaDataToolTip::showEvent(QShowEvent *) { - Plasma::WindowEffects::overrideShadow(winId(), true); - Plasma::WindowEffects::enableBlurBehind(winId(), true, mask()); +#pragma message("TODO: port Plasma::WindowEffects::overrideShadow") + //Plasma::WindowEffects::overrideShadow(winId(), true); + KWindowEffects::enableBlurBehind(winId(), true, mask()); } -#include "filemetadatatooltip.moc" diff --git a/src/views/tooltips/tooltipmanager.cpp b/src/views/tooltips/tooltipmanager.cpp index bd6948363..25fa8e0ed 100644 --- a/src/views/tooltips/tooltipmanager.cpp +++ b/src/views/tooltips/tooltipmanager.cpp @@ -20,9 +20,10 @@ #include "tooltipmanager.h" #include "filemetadatatooltip.h" -#include <KIcon> +#include <QIcon> #include <KIO/JobUiDelegate> #include <KIO/PreviewJob> +#include <KJobWidgets> #include <QApplication> #include <QDesktopWidget> @@ -51,12 +52,12 @@ ToolTipManager::ToolTipManager(QWidget* parent) : m_showToolTipTimer = new QTimer(this); m_showToolTipTimer->setSingleShot(true); m_showToolTipTimer->setInterval(500); - connect(m_showToolTipTimer, SIGNAL(timeout()), this, SLOT(showToolTip())); + connect(m_showToolTipTimer, &QTimer::timeout, this, static_cast<void(ToolTipManager::*)()>(&ToolTipManager::showToolTip)); m_contentRetrievalTimer = new QTimer(this); m_contentRetrievalTimer->setSingleShot(true); m_contentRetrievalTimer->setInterval(200); - connect(m_contentRetrievalTimer, SIGNAL(timeout()), this, SLOT(startContentRetrieval())); + connect(m_contentRetrievalTimer, &QTimer::timeout, this, &ToolTipManager::startContentRetrieval); Q_ASSERT(m_contentRetrievalTimer->interval() < m_showToolTipTimer->interval()); } @@ -81,8 +82,8 @@ void ToolTipManager::showToolTip(const KFileItem& item, const QRectF& itemRect) // meta data retrieval, when passing rapidly over a lot of items. Q_ASSERT(!m_fileMetaDataToolTip); m_fileMetaDataToolTip = new FileMetaDataToolTip(); - connect(m_fileMetaDataToolTip, SIGNAL(metaDataRequestFinished(KFileItemList)), - this, SLOT(slotMetaDataRequestFinished())); + connect(m_fileMetaDataToolTip, &FileMetaDataToolTip::metaDataRequestFinished, + this, &ToolTipManager::slotMetaDataRequestFinished); m_contentRetrievalTimer->start(); m_showToolTipTimer->start(); @@ -132,13 +133,13 @@ void ToolTipManager::startContentRetrieval() KIO::PreviewJob* job = new KIO::PreviewJob(KFileItemList() << m_item, QSize(256, 256)); job->setIgnoreMaximumSize(m_item.isLocalFile()); if (job->ui()) { - job->ui()->setWindow(qApp->activeWindow()); + KJobWidgets::setWindow(job, qApp->activeWindow()); } - connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)), - this, SLOT(setPreviewPix(KFileItem,QPixmap))); - connect(job, SIGNAL(failed(KFileItem)), - this, SLOT(previewFailed())); + connect(job, &KIO::PreviewJob::gotPreview, + this, &ToolTipManager::setPreviewPix); + connect(job, &KIO::PreviewJob::failed, + this, &ToolTipManager::previewFailed); } @@ -166,7 +167,7 @@ void ToolTipManager::previewFailed() return; } - const QPixmap pixmap = KIcon(m_item.iconName()).pixmap(128, 128); + const QPixmap pixmap = QIcon::fromTheme(m_item.iconName()).pixmap(128, 128); m_fileMetaDataToolTip->setPreview(pixmap); if (!m_showToolTipTimer->isActive()) { showToolTip(); @@ -266,4 +267,3 @@ void ToolTipManager::showToolTip() m_toolTipRequested = false; } -#include "tooltipmanager.moc" diff --git a/src/views/tooltips/tooltipmanager.h b/src/views/tooltips/tooltipmanager.h index 4fd8f843e..f6d8b8f26 100644 --- a/src/views/tooltips/tooltipmanager.h +++ b/src/views/tooltips/tooltipmanager.h @@ -25,11 +25,7 @@ #include <KFileItem> -class DolphinModel; -class DolphinSortFilterProxyModel; class FileMetaDataToolTip; -class QAbstractItemView; -class QModelIndex; class QTimer; /** diff --git a/src/views/versioncontrol/updateitemstatesthread.cpp b/src/views/versioncontrol/updateitemstatesthread.cpp index 62fcd09aa..4f0122e0f 100644 --- a/src/views/versioncontrol/updateitemstatesthread.cpp +++ b/src/views/versioncontrol/updateitemstatesthread.cpp @@ -20,6 +20,7 @@ #include "updateitemstatesthread.h" #include <kversioncontrolplugin2.h> +#include <QVector> #include <QMutexLocker> @@ -56,12 +57,15 @@ void UpdateItemStatesThread::run() KVersionControlPlugin2* pluginV2 = qobject_cast<KVersionControlPlugin2*>(m_plugin); if (pluginV2) { for (int i = 0; i < count; ++i) { - items[i].version = pluginV2->itemVersion(items[i].item); + const KFileItem& item = items.at(i).first; + const KVersionControlPlugin2::ItemVersion version = pluginV2->itemVersion(item); + items[i].second = version; } } else { for (int i = 0; i < count; ++i) { - const KVersionControlPlugin::VersionState state = m_plugin->versionState(items[i].item); - items[i].version = static_cast<KVersionControlPlugin2::ItemVersion>(state); + const KFileItem& item = items.at(i).first; + const KVersionControlPlugin::VersionState state = m_plugin->versionState(item); + items[i].second = static_cast<KVersionControlPlugin2::ItemVersion>(state); } } } @@ -75,4 +79,3 @@ QMap<QString, QVector<VersionControlObserver::ItemState> > UpdateItemStatesThrea return m_itemStates; } -#include "updateitemstatesthread.moc" diff --git a/src/views/versioncontrol/versioncontrolobserver.cpp b/src/views/versioncontrol/versioncontrolobserver.cpp index 6affe80d3..c7677de53 100644 --- a/src/views/versioncontrol/versioncontrolobserver.cpp +++ b/src/views/versioncontrol/versioncontrolobserver.cpp @@ -23,6 +23,7 @@ #include <KLocale> #include <KService> +#include <KDebug> #include <KServiceTypeTrader> #include <kitemviews/kfileitemmodel.h> #include <kversioncontrolplugin2.h> @@ -51,8 +52,8 @@ VersionControlObserver::VersionControlObserver(QObject* parent) : m_dirVerificationTimer = new QTimer(this); m_dirVerificationTimer->setSingleShot(true); m_dirVerificationTimer->setInterval(500); - connect(m_dirVerificationTimer, SIGNAL(timeout()), - this, SLOT(verifyDirectory())); + connect(m_dirVerificationTimer, &QTimer::timeout, + this, &VersionControlObserver::verifyDirectory); } VersionControlObserver::~VersionControlObserver() @@ -66,19 +67,19 @@ VersionControlObserver::~VersionControlObserver() void VersionControlObserver::setModel(KFileItemModel* model) { if (m_model) { - disconnect(m_model, SIGNAL(itemsInserted(KItemRangeList)), - this, SLOT(delayedDirectoryVerification())); - disconnect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(delayedDirectoryVerification())); + disconnect(m_model, &KFileItemModel::itemsInserted, + this, &VersionControlObserver::delayedDirectoryVerification); + disconnect(m_model, &KFileItemModel::itemsChanged, + this, &VersionControlObserver::delayedDirectoryVerification); } m_model = model; if (model) { - connect(m_model, SIGNAL(itemsInserted(KItemRangeList)), - this, SLOT(delayedDirectoryVerification())); - connect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)), - this, SLOT(delayedDirectoryVerification())); + connect(m_model, &KFileItemModel::itemsInserted, + this, &VersionControlObserver::delayedDirectoryVerification); + connect(m_model, &KFileItemModel::itemsChanged, + this, &VersionControlObserver::delayedDirectoryVerification); } } @@ -116,7 +117,7 @@ QList<QAction*> VersionControlObserver::actions(const KFileItemList& items) cons if (items.count() == 1) { const KFileItem rootItem = m_model->rootItem(); if (!rootItem.isNull() && items.first().url() == rootItem.url()) { - directory = rootItem.url().path(KUrl::AddTrailingSlash); + directory = rootItem.url().path(); } } @@ -158,18 +159,18 @@ void VersionControlObserver::verifyDirectory() if (m_plugin) { KVersionControlPlugin2* pluginV2 = qobject_cast<KVersionControlPlugin2*>(m_plugin); if (pluginV2) { - connect(pluginV2, SIGNAL(itemVersionsChanged()), - this, SLOT(silentDirectoryVerification())); + connect(pluginV2, &KVersionControlPlugin2::itemVersionsChanged, + this, &VersionControlObserver::silentDirectoryVerification); } else { - connect(m_plugin, SIGNAL(versionStatesChanged()), - this, SLOT(silentDirectoryVerification())); + connect(m_plugin, &KVersionControlPlugin::versionStatesChanged, + this, &VersionControlObserver::silentDirectoryVerification); } - connect(m_plugin, SIGNAL(infoMessage(QString)), - this, SIGNAL(infoMessage(QString))); - connect(m_plugin, SIGNAL(errorMessage(QString)), - this, SIGNAL(errorMessage(QString))); - connect(m_plugin, SIGNAL(operationCompletedMessage(QString)), - this, SIGNAL(operationCompletedMessage(QString))); + connect(m_plugin, &KVersionControlPlugin::infoMessage, + this, &VersionControlObserver::infoMessage); + connect(m_plugin, &KVersionControlPlugin::errorMessage, + this, &VersionControlObserver::errorMessage); + connect(m_plugin, &KVersionControlPlugin::operationCompletedMessage, + this, &VersionControlObserver::operationCompletedMessage); if (!m_versionedDirectory) { m_versionedDirectory = true; @@ -204,9 +205,11 @@ void VersionControlObserver::slotThreadFinished() const QVector<ItemState>& items = it.value(); foreach (const ItemState& item, items) { + const KFileItem& fileItem = item.first; + const KVersionControlPlugin2::ItemVersion version = item.second; QHash<QByteArray, QVariant> values; - values.insert("version", QVariant(item.version)); - m_model->setData(m_model->index(item.item), values); + values.insert("version", QVariant(version)); + m_model->setData(m_model->index(fileItem), values); } } @@ -241,10 +244,10 @@ void VersionControlObserver::updateItemStates() emit infoMessage(i18nc("@info:status", "Updating version information...")); } m_updateItemStatesThread = new UpdateItemStatesThread(m_plugin, itemStates); - connect(m_updateItemStatesThread, SIGNAL(finished()), - this, SLOT(slotThreadFinished())); - connect(m_updateItemStatesThread, SIGNAL(finished()), - m_updateItemStatesThread, SLOT(deleteLater())); + connect(m_updateItemStatesThread, &UpdateItemStatesThread::finished, + this, &VersionControlObserver::slotThreadFinished); + connect(m_updateItemStatesThread, &UpdateItemStatesThread::finished, + m_updateItemStatesThread, &UpdateItemStatesThread::deleteLater); m_updateItemStatesThread->start(); // slotThreadFinished() is called when finished } @@ -265,8 +268,8 @@ int VersionControlObserver::createItemStatesList(QMap<QString, QVector<ItemState if (expansionLevel == currentExpansionLevel) { ItemState itemState; - itemState.item = m_model->fileItem(index); - itemState.version = KVersionControlPlugin2::UnversionedVersion; + itemState.first = m_model->fileItem(index); + itemState.second = KVersionControlPlugin2::UnversionedVersion; items.append(itemState); } else if (expansionLevel > currentExpansionLevel) { @@ -278,7 +281,7 @@ int VersionControlObserver::createItemStatesList(QMap<QString, QVector<ItemState } if (items.count() > 0) { - const KUrl& url = items.first().item.url(); + const KUrl& url = items.first().first.url(); itemStates.insert(url.directory(KUrl::AppendTrailingSlash), items); } @@ -365,4 +368,3 @@ bool VersionControlObserver::isVersioned() const return m_versionedDirectory && m_plugin; } -#include "versioncontrolobserver.moc" diff --git a/src/views/versioncontrol/versioncontrolobserver.h b/src/views/versioncontrol/versioncontrolobserver.h index d12d2cfe0..562a599d2 100644 --- a/src/views/versioncontrol/versioncontrolobserver.h +++ b/src/views/versioncontrol/versioncontrolobserver.h @@ -23,6 +23,7 @@ #include <libdolphin_export.h> #include <KFileItem> +#include <KUrl> #include <kversioncontrolplugin2.h> #include <QList> #include <QMutex> @@ -100,11 +101,7 @@ private slots: void slotThreadFinished(); private: - struct ItemState - { - KFileItem item; - KVersionControlPlugin2::ItemVersion version; - }; + typedef QPair<KFileItem, KVersionControlPlugin2::ItemVersion> ItemState; void updateItemStates(); diff --git a/src/views/viewmodecontroller.cpp b/src/views/viewmodecontroller.cpp index 26e181888..da6066887 100644 --- a/src/views/viewmodecontroller.cpp +++ b/src/views/viewmodecontroller.cpp @@ -85,4 +85,3 @@ void ViewModeController::setUrl(const KUrl& url) } } -#include "viewmodecontroller.moc" diff --git a/src/views/viewproperties.cpp b/src/views/viewproperties.cpp index d4ecfafa0..95c44bc84 100644 --- a/src/views/viewproperties.cpp +++ b/src/views/viewproperties.cpp @@ -25,13 +25,15 @@ #include <KComponentData> #include <KLocale> -#include <KStandardDirs> #include <KUrl> +#include <KDebug> +#include <KGlobal> #include <QCryptographicHash> #include <QDate> #include <QFile> #include <QFileInfo> +#include <QStandardPaths> namespace { const int AdditionalInfoViewPropertiesVersion = 1; @@ -41,10 +43,10 @@ namespace { // String representation to mark the additional properties of // the details view as customized by the user. See // ViewProperties::visibleRoles() for more information. - const char* CustomizedDetailsString = "CustomizedDetails"; + const char CustomizedDetailsString[] = "CustomizedDetails"; // Filename that is used for storing the properties - const char* ViewPropertiesFileName = ".directory"; + const char ViewPropertiesFileName[] = ".directory"; } ViewProperties::ViewProperties(const KUrl& url) : @@ -362,7 +364,8 @@ void ViewProperties::update() void ViewProperties::save() { kDebug() << "Saving view-properties to" << m_filePath; - KStandardDirs::makeDir(m_filePath); + QDir dir; + dir.mkpath(m_filePath); m_node->setVersion(CurrentViewPropertiesVersion); m_node->writeConfig(); m_changedProps = false; @@ -376,9 +379,10 @@ bool ViewProperties::exist() const QString ViewProperties::destinationDir(const QString& subDir) const { - QString basePath = KGlobal::mainComponent().componentName(); - basePath.append("/view_properties/").append(subDir); - return KStandardDirs::locateLocal("data", basePath); + QString path = QStandardPaths::writableLocation(QStandardPaths::DataLocation); + path.append(KGlobal::mainComponent().componentName()); + path.append("/view_properties/").append(subDir); + return path; } QString ViewProperties::viewModePrefix() const @@ -469,10 +473,3 @@ QString ViewProperties::directoryHashForUrl(const KUrl& url) hashString.replace('/', '-'); return hashString; } - -KUrl ViewProperties::mirroredDirectory() -{ - QString basePath = KGlobal::mainComponent().componentName(); - basePath.append("/view_properties/"); - return KUrl(KStandardDirs::locateLocal("data", basePath)); -} diff --git a/src/views/viewproperties.h b/src/views/viewproperties.h index 69b507f1b..d794edf65 100644 --- a/src/views/viewproperties.h +++ b/src/views/viewproperties.h @@ -164,15 +164,6 @@ private: */ static QString directoryHashForUrl(const KUrl& url); - /** - * Returns the URL of the directory, where the mirrored view properties - * are stored into. Mirrored view properties are used if: - * - there is no write access for storing the view properties into - * the original directory - * - for non local directories - */ - static KUrl mirroredDirectory(); - Q_DISABLE_COPY(ViewProperties) private: |
