diff --git a/CMakeLists.txt b/CMakeLists.txt index b29c80a..9bf5785 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,62 +1,64 @@ cmake_minimum_required(VERSION 2.8.12) project(Mangonel) find_package (ECM REQUIRED NO_MODULE) set (CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) include (KDEInstallDirs) include (KDECMakeSettings) include (KDECompilerSettings) include (ECMInstallIcons) include (FeatureSummary) -find_package (Qt5 CONFIG REQUIRED Core Widgets) +find_package (Qt5 CONFIG REQUIRED Core Widgets Quick) include_directories( ${CMAKE_CURRENT_BINARY_DIR} ) find_package (KF5 REQUIRED COMPONENTS I18n GlobalAccel KIO NotifyConfig Notifications DBusAddons WindowSystem XmlGui UnitConversion ) set(Mangonel_SRCS Mangonel.cpp Label.cpp Config.cpp main.cpp Provider.cpp + IconProvider.cpp providers/Applications.cpp providers/Paths.cpp providers/Shell.cpp providers/Calculator.cpp providers/Units.cpp ) add_executable(mangonel ${Mangonel_SRCS}) target_link_libraries(mangonel Qt5::Core Qt5::Widgets + Qt5::Quick KF5::GlobalAccel KF5::KIOCore KF5::KIOWidgets KF5::I18n KF5::DBusAddons KF5::NotifyConfig KF5::Notifications KF5::WindowSystem KF5::XmlGui KF5::UnitConversion ) install(TARGETS mangonel ${INSTALL_TARGETS_DEFAULT_ARGS}) install(FILES mangonel.notifyrc DESTINATION ${KNOTIFYRC_INSTALL_DIR}) install(PROGRAMS mangonel.desktop DESTINATION ${AUTOSTART_INSTALL_DIR}) diff --git a/IconProvider.cpp b/IconProvider.cpp new file mode 100644 index 0000000..d801077 --- /dev/null +++ b/IconProvider.cpp @@ -0,0 +1,29 @@ +#include "IconProvider.h" +#include +#include + +IconProvider::IconProvider() : + QQuickImageProvider(QQuickImageProvider::Pixmap) +{ + +} + +QPixmap IconProvider::requestPixmap(const QString &id, QSize *actualSize, const QSize &requestedSize) +{ + QSize size(requestedSize); + if (size.height() <= 0) { + size.setHeight(128); + } + if (size.width() <= 0) { + size.setWidth(128); + } + + QIcon icon(QIcon::fromTheme(id)); + QPixmap pixmap(icon.pixmap(qMin(size.height(), size.width()))); + + if (actualSize) { + *actualSize = pixmap.size(); + } + + return pixmap; +} diff --git a/IconProvider.h b/IconProvider.h new file mode 100644 index 0000000..f6667c5 --- /dev/null +++ b/IconProvider.h @@ -0,0 +1,14 @@ +#ifndef ICONPROVIDER_H +#define ICONPROVIDER_H + +#include + +class IconProvider : public QQuickImageProvider +{ +public: + IconProvider(); + + QPixmap requestPixmap(const QString &id, QSize *actualSize, const QSize &requestedSize); +}; + +#endif // ICONPROVIDER_H