2025-08-05 22:39:41 +02:00
|
|
|
/***************************************************************************
|
|
|
|
|
|
|
|
source::worx xtree
|
|
|
|
Copyright © 2024-2025 c.holzheuer
|
|
|
|
christoph.holzheuer@gmail.com
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
#include <xqappdata.h>
|
|
|
|
|
|
|
|
#include <QDebug>
|
|
|
|
#include <QApplication>
|
|
|
|
#include <QStyle>
|
|
|
|
#include <QIcon>
|
|
|
|
#include <QMap>
|
|
|
|
#include <QMetaEnum>
|
|
|
|
#include <QPushButton>
|
|
|
|
|
|
|
|
namespace XQAppData
|
|
|
|
{
|
|
|
|
template<typename E>
|
|
|
|
constexpr auto to_underlying(E e) noexcept
|
|
|
|
{
|
|
|
|
return static_cast<std::underlying_type_t<E>>(e);
|
|
|
|
}
|
|
|
|
|
2025-08-13 19:25:14 +02:00
|
|
|
|
2025-08-13 21:02:07 +02:00
|
|
|
|
2025-08-15 20:31:40 +02:00
|
|
|
class XQAppIconMap : public QMap<QString,XQIcon>
|
2025-08-05 22:39:41 +02:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
2025-08-13 19:25:14 +02:00
|
|
|
XQAppIconMap() = default;
|
|
|
|
|
2025-08-05 22:39:41 +02:00
|
|
|
void init()
|
|
|
|
{
|
2025-08-15 20:31:40 +02:00
|
|
|
namedInsert( "DirIcon" , QStyle::SP_DirIcon );
|
|
|
|
namedInsert( "FileDialogBack", QStyle::SP_FileDialogBack );
|
|
|
|
namedInsert( "FileDialogContentsView", QStyle::SP_FileDialogContentsView );
|
|
|
|
namedInsert( "FileDialogDetailedView", QStyle::SP_FileDialogDetailedView );
|
|
|
|
namedInsert( "icn05Dummy", QStyle::SP_FileDialogEnd );
|
|
|
|
namedInsert( "icn06Dummy", QStyle::SP_FileDialogInfoView );
|
|
|
|
namedInsert( "icn07Dummy", QStyle::SP_FileDialogListView );
|
|
|
|
namedInsert( "icn08Dummy", QStyle::SP_FileDialogNewFolder );
|
|
|
|
namedInsert( "icn09Dummy", QStyle::SP_FileDialogStart );
|
|
|
|
namedInsert( "icn10Dummy", QStyle::SP_FileDialogToParent );
|
|
|
|
namedInsert( "icn11Dummy", QStyle::SP_ArrowBack );
|
|
|
|
namedInsert( "icn12Dummy", QStyle::SP_DirIcon );
|
|
|
|
namedInsert( "icn13Dummy", QStyle::SP_MediaSkipBackward );
|
|
|
|
namedInsert( "icn14Dummy", QStyle::SP_ArrowDown );
|
|
|
|
namedInsert( "icn15Dummy", QStyle::SP_DirLinkIcon );
|
|
|
|
namedInsert( "icn16Dummy", QStyle::SP_MediaSkipForward );
|
|
|
|
namedInsert( "icn17Dummy", QStyle::SP_ArrowForward );
|
|
|
|
namedInsert( "icn18Dummy", QStyle::SP_DirOpenIcon );
|
|
|
|
namedInsert( "icn19Dummy", QStyle::SP_MediaStop );
|
|
|
|
namedInsert( "icn20Dummy", QStyle::SP_ArrowLeft );
|
|
|
|
namedInsert( "icn21Dummy", QStyle::SP_DockWidgetCloseButton );
|
|
|
|
namedInsert( "icn22Dummy", QStyle::SP_MediaVolume );
|
|
|
|
namedInsert( "icn23Dummy", QStyle::SP_ArrowRight );
|
|
|
|
namedInsert( "icn24Dummy", QStyle::SP_DriveCDIcon );
|
|
|
|
namedInsert( "icn25Dummy", QStyle::SP_MediaVolumeMuted );
|
|
|
|
namedInsert( "icn26Dummy", QStyle::SP_ArrowUp );
|
|
|
|
namedInsert( "icn27Dummy", QStyle::SP_DriveDVDIcon );
|
|
|
|
namedInsert( "icn28Dummy", QStyle::SP_MessageBoxCritical );
|
|
|
|
namedInsert( "icn29Dummy", QStyle::SP_BrowserReload );
|
|
|
|
namedInsert( "icn30Dummy", QStyle::SP_DriveFDIcon );
|
|
|
|
namedInsert( "icn31Dummy", QStyle::SP_MessageBoxInformation );
|
|
|
|
namedInsert( "BrowserStop", QStyle::SP_BrowserStop );
|
|
|
|
namedInsert( "icn33Dummy", QStyle::SP_DriveHDIcon );
|
|
|
|
namedInsert( "icn34Dummy", QStyle::SP_MessageBoxQuestion );
|
|
|
|
namedInsert( "icn35Dummy", QStyle::SP_CommandLink );
|
|
|
|
namedInsert( "icn36Dummy", QStyle::SP_DriveNetIcon );
|
|
|
|
namedInsert( "icn37Dummy", QStyle::SP_MessageBoxWarning );
|
|
|
|
namedInsert( "icn38Dummy", QStyle::SP_ComputerIcon );
|
|
|
|
namedInsert( "icn39Dummy", QStyle::SP_FileDialogBack );
|
|
|
|
namedInsert( "icn40Dummy", QStyle::SP_TitleBarCloseButton );
|
|
|
|
namedInsert( "icn41Dummy", QStyle::SP_CustomBase );
|
|
|
|
namedInsert( "icn42Dummy", QStyle::SP_FileDialogContentsView );
|
|
|
|
namedInsert( "icn43Dummy", QStyle::SP_TitleBarContextHelpButton );
|
|
|
|
namedInsert( "DesktopIcon", QStyle::SP_DesktopIcon );
|
|
|
|
namedInsert( "icn45Dummy", QStyle::SP_FileDialogDetailedView );
|
|
|
|
namedInsert( "icn46Dummy", QStyle::SP_TitleBarMaxButton );
|
|
|
|
namedInsert( "icn47Dummy", QStyle::SP_DialogApplyButton );
|
|
|
|
namedInsert( "icn48Dummy", QStyle::SP_FileDialogEnd );
|
|
|
|
namedInsert( "icn49Dummy", QStyle::SP_TitleBarMenuButton );
|
|
|
|
namedInsert( "icn50Dummy", QStyle::SP_DialogCancelButton );
|
|
|
|
namedInsert( "icn51Dummy", QStyle::SP_FileDialogInfoView );
|
|
|
|
namedInsert( "icn52Dummy", QStyle::SP_TitleBarMinButton );
|
|
|
|
namedInsert( "icn53Dummy", QStyle::SP_DialogCloseButton );
|
|
|
|
namedInsert( "icn54Dummy", QStyle::SP_FileDialogListView );
|
|
|
|
namedInsert( "icn55Dummy", QStyle::SP_TitleBarNormalButton );
|
|
|
|
namedInsert( "icn56Dummy", QStyle::SP_DialogDiscardButton );
|
|
|
|
namedInsert( "icn57Dummy", QStyle::SP_FileDialogNewFolder );
|
|
|
|
namedInsert( "icn58Dummy", QStyle::SP_TitleBarShadeButton );
|
|
|
|
namedInsert( "icn59Dummy", QStyle::SP_DialogHelpButton );
|
|
|
|
namedInsert( "icn60Dummy", QStyle::SP_FileDialogStart );
|
|
|
|
namedInsert( "icn61Dummy", QStyle::SP_TitleBarUnshadeButton );
|
|
|
|
namedInsert( "icn62Dummy", QStyle::SP_DialogNoButton );
|
|
|
|
namedInsert( "icn63Dummy", QStyle::SP_FileDialogToParent );
|
|
|
|
namedInsert( "icn64Dummy", QStyle::SP_ToolBarHorizontalExtensionButton );
|
|
|
|
namedInsert( "icn65Dummy", QStyle::SP_DialogOkButton );
|
|
|
|
namedInsert( "FileIcon", QStyle::SP_FileIcon );
|
|
|
|
namedInsert( "icn67Dummy", QStyle::SP_ToolBarVerticalExtensionButton );
|
|
|
|
namedInsert( "icn68Dummy", QStyle::SP_DialogResetButton );
|
|
|
|
namedInsert( "icn70Dummy", QStyle::SP_FileLinkIcon );
|
|
|
|
namedInsert( "TrashIcon", QStyle::SP_TrashIcon );
|
|
|
|
namedInsert( "icn72Dummy", QStyle::SP_DialogSaveButton );
|
|
|
|
namedInsert( "icn73Dummy", QStyle::SP_MediaPause );
|
|
|
|
namedInsert( "icn74Dummy", QStyle::SP_VistaShield );
|
|
|
|
namedInsert( "icn75Dummy", QStyle::SP_DialogYesButton );
|
|
|
|
namedInsert( "icn76Dummy", QStyle::SP_MediaPlay );
|
|
|
|
namedInsert( "icn77Dummy", QStyle::SP_DirClosedIcon );
|
|
|
|
namedInsert( "icn79Dummy", QStyle::SP_MediaSeekBackward );
|
|
|
|
namedInsert( "DirHomeIcon", QStyle::SP_DirHomeIcon );
|
|
|
|
namedInsert( "icn81Dummy", QStyle::SP_MediaSeekForward );
|
2025-08-13 21:02:07 +02:00
|
|
|
/*
|
2025-08-05 22:39:41 +02:00
|
|
|
auto from = to_underlying(QIcon::ThemeIcon::AddressBookNew);
|
|
|
|
auto to = to_underlying(QIcon::ThemeIcon::NThemeIcons);
|
|
|
|
for (auto i = from; i < to; ++i)
|
|
|
|
{
|
|
|
|
QIcon::ThemeIcon f = static_cast<QIcon::ThemeIcon>(i);
|
|
|
|
QIcon icon = QIcon::fromTheme(f);
|
|
|
|
// Nur hinzufügen, wenn das Icon existiert
|
|
|
|
if (!icon.isNull())
|
|
|
|
insert(icon.name(), icon);
|
|
|
|
}
|
2025-08-13 21:02:07 +02:00
|
|
|
*/
|
2025-08-13 19:25:14 +02:00
|
|
|
|
2025-08-05 22:39:41 +02:00
|
|
|
}
|
|
|
|
|
2025-08-15 20:31:40 +02:00
|
|
|
void namedInsert( const QString& key, QStyle::StandardPixmap pixmapID )
|
|
|
|
{
|
|
|
|
QIcon icon = QApplication::style()->standardIcon( pixmapID );
|
|
|
|
insert( key, XQIcon( icon, key ) );
|
|
|
|
//_keysToNames.insert()
|
|
|
|
}
|
2025-08-13 19:25:14 +02:00
|
|
|
|
2025-08-15 20:31:40 +02:00
|
|
|
protected:
|
|
|
|
|
|
|
|
QMap<qint64,QString> _keysToNames;
|
|
|
|
};
|
2025-08-13 19:25:14 +02:00
|
|
|
|
2025-08-13 21:02:07 +02:00
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
Nein, so nicht! QApplication::style() gibts hier noch nicht -> aua!
|
2025-08-13 19:25:14 +02:00
|
|
|
static XQAppIconMap s_IconMap
|
|
|
|
{
|
2025-08-13 21:02:07 +02:00
|
|
|
{ "icnFolder" , QApplication::style()->standardIcon(QStyle::SP_DirIcon) }
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
2025-08-05 22:39:41 +02:00
|
|
|
|
2025-08-13 21:02:07 +02:00
|
|
|
static XQAppIconMap s_IconMap;
|
2025-08-05 22:39:41 +02:00
|
|
|
|
2025-08-15 20:31:40 +02:00
|
|
|
|
|
|
|
XQIcon typeIcon(const QString& key )
|
2025-08-05 22:39:41 +02:00
|
|
|
{
|
2025-08-13 21:02:07 +02:00
|
|
|
if(s_IconMap.isEmpty())
|
|
|
|
s_IconMap.init();
|
2025-08-15 20:31:40 +02:00
|
|
|
if( s_IconMap.contains(key) )
|
2025-08-05 22:39:41 +02:00
|
|
|
return s_IconMap[key];
|
2025-08-15 20:31:40 +02:00
|
|
|
static XQIcon s_FallBackIcon( QApplication::style()->standardIcon( QStyle::SP_TrashIcon), "NoIcon" );
|
|
|
|
return s_FallBackIcon;
|
2025-08-05 22:39:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
{ "icnFolder" , QApplication::style()->standardIcon(QStyle::SP_DirIcon) },
|
2025-08-13 21:02:07 +02:00
|
|
|
{ "icnFolder" , QApplication::style()->standardIcon(QStyle::SP_DirIcon");
|
|
|
|
{ "icn02Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogBack");
|
|
|
|
{ "icn03Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogContentsView");
|
|
|
|
{ "icn04Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogDetailedView");
|
|
|
|
{ "icn05Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogEnd");
|
|
|
|
{ "icn06Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogInfoView");
|
|
|
|
{ "icn07Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogListView");
|
|
|
|
{ "icn08Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogNewFolder");
|
|
|
|
{ "icn09Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogStart");
|
|
|
|
{ "icn10Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogToParent");
|
|
|
|
{ "icn11Dummy", QApplication::style()->standardIcon(QStyle::SP_ArrowBack");
|
|
|
|
{ "icn12Dummy", QApplication::style()->standardIcon(QStyle::SP_DirIcon");
|
|
|
|
{ "icn13Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaSkipBackward");
|
|
|
|
{ "icn14Dummy", QApplication::style()->standardIcon(QStyle::SP_ArrowDown");
|
|
|
|
{ "icn15Dummy", QApplication::style()->standardIcon(QStyle::SP_DirLinkIcon");
|
|
|
|
{ "icn16Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaSkipForward");
|
|
|
|
{ "icn17Dummy", QApplication::style()->standardIcon(QStyle::SP_ArrowForward");
|
|
|
|
{ "icn18Dummy", QApplication::style()->standardIcon(QStyle::SP_DirOpenIcon");
|
|
|
|
{ "icn19Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaStop");
|
|
|
|
{ "icn20Dummy", QApplication::style()->standardIcon(QStyle::SP_ArrowLeft");
|
|
|
|
{ "icn21Dummy", QApplication::style()->standardIcon(QStyle::SP_DockWidgetCloseButton");
|
|
|
|
{ "icn22Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaVolume");
|
|
|
|
{ "icn23Dummy", QApplication::style()->standardIcon(QStyle::SP_ArrowRight");
|
|
|
|
{ "icn24Dummy", QApplication::style()->standardIcon(QStyle::SP_DriveCDIcon");
|
|
|
|
{ "icn25Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaVolumeMuted");
|
|
|
|
{ "icn26Dummy", QApplication::style()->standardIcon(QStyle::SP_ArrowUp");
|
|
|
|
{ "icn27Dummy", QApplication::style()->standardIcon(QStyle::SP_DriveDVDIcon");
|
|
|
|
{ "icn28Dummy", QApplication::style()->standardIcon(QStyle::SP_MessageBoxCritical");
|
|
|
|
{ "icn29Dummy", QApplication::style()->standardIcon(QStyle::SP_BrowserReload");
|
|
|
|
{ "icn30Dummy", QApplication::style()->standardIcon(QStyle::SP_DriveFDIcon");
|
|
|
|
{ "icn31Dummy", QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation");
|
|
|
|
{ "icn32Dummy", QApplication::style()->standardIcon(QStyle::SP_BrowserStop");
|
|
|
|
{ "icn33Dummy", QApplication::style()->standardIcon(QStyle::SP_DriveHDIcon");
|
|
|
|
{ "icn34Dummy", QApplication::style()->standardIcon(QStyle::SP_MessageBoxQuestion");
|
|
|
|
{ "icn35Dummy", QApplication::style()->standardIcon(QStyle::SP_CommandLink");
|
|
|
|
{ "icn36Dummy", QApplication::style()->standardIcon(QStyle::SP_DriveNetIcon");
|
|
|
|
{ "icn37Dummy", QApplication::style()->standardIcon(QStyle::SP_MessageBoxWarning");
|
|
|
|
{ "icn38Dummy", QApplication::style()->standardIcon(QStyle::SP_ComputerIcon");
|
|
|
|
{ "icn39Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogBack");
|
|
|
|
{ "icn40Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarCloseButton");
|
|
|
|
{ "icn41Dummy", QApplication::style()->standardIcon(QStyle::SP_CustomBase");
|
|
|
|
{ "icn42Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogContentsView");
|
|
|
|
{ "icn43Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarContextHelpButton");
|
|
|
|
{ "icn44Dummy", QApplication::style()->standardIcon(QStyle::SP_DesktopIcon");
|
|
|
|
{ "icn45Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogDetailedView");
|
|
|
|
{ "icn46Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarMaxButton");
|
|
|
|
{ "icn47Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogApplyButton");
|
|
|
|
{ "icn48Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogEnd");
|
|
|
|
{ "icn49Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarMenuButton");
|
|
|
|
{ "icn50Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton");
|
|
|
|
{ "icn51Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogInfoView");
|
|
|
|
{ "icn52Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarMinButton");
|
|
|
|
{ "icn53Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogCloseButton");
|
|
|
|
{ "icn54Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogListView");
|
|
|
|
{ "icn55Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarNormalButton");
|
|
|
|
{ "icn56Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogDiscardButton");
|
|
|
|
{ "icn57Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogNewFolder");
|
|
|
|
{ "icn58Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarShadeButton");
|
|
|
|
{ "icn59Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogHelpButton");
|
|
|
|
{ "icn60Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogStart");
|
|
|
|
{ "icn61Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarUnshadeButton");
|
|
|
|
{ "icn62Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogNoButton");
|
|
|
|
{ "icn63Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogToParent");
|
|
|
|
{ "icn64Dummy", QApplication::style()->standardIcon(QStyle::SP_ToolBarHorizontalExtensionButton");
|
|
|
|
{ "icn65Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogOkButton");
|
|
|
|
{ "icn66Dummy", QApplication::style()->standardIcon(QStyle::SP_FileIcon");
|
|
|
|
{ "icn67Dummy", QApplication::style()->standardIcon(QStyle::SP_ToolBarVerticalExtensionButton");
|
|
|
|
{ "icn68Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogResetButton");
|
|
|
|
{ "icn70Dummy", QApplication::style()->standardIcon(QStyle::SP_FileLinkIcon");
|
|
|
|
{ "icn71Dummy", QApplication::style()->standardIcon(QStyle::SP_TrashIcon");
|
|
|
|
{ "icn72Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogSaveButton");
|
|
|
|
{ "icn73Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaPause");
|
|
|
|
{ "icn74Dummy", QApplication::style()->standardIcon(QStyle::SP_VistaShield");
|
|
|
|
{ "icn75Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogYesButton");
|
|
|
|
{ "icn76Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaPlay");
|
|
|
|
{ "icn77Dummy", QApplication::style()->standardIcon(QStyle::SP_DirClosedIcon");
|
|
|
|
{ "icn79Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaSeekBackward");
|
|
|
|
{ "icn80Dummy", QApplication::style()->standardIcon(QStyle::SP_DirHomeIcon");
|
2025-08-05 22:39:41 +02:00
|
|
|
{ "icn81Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaSeekForward)}
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
}; // namespace XQAppData
|
2025-08-13 22:25:01 +02:00
|
|
|
|
|
|
|
|