Files
xtree.old.ng/src/application/xqappdata.cpp
2025-08-15 20:31:40 +02:00

260 lines
14 KiB
C++

/***************************************************************************
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);
}
class XQAppIconMap : public QMap<QString,XQIcon>
{
public:
XQAppIconMap() = default;
void init()
{
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 );
/*
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);
}
*/
}
void namedInsert( const QString& key, QStyle::StandardPixmap pixmapID )
{
QIcon icon = QApplication::style()->standardIcon( pixmapID );
insert( key, XQIcon( icon, key ) );
//_keysToNames.insert()
}
protected:
QMap<qint64,QString> _keysToNames;
};
/*
Nein, so nicht! QApplication::style() gibts hier noch nicht -> aua!
static XQAppIconMap s_IconMap
{
{ "icnFolder" , QApplication::style()->standardIcon(QStyle::SP_DirIcon) }
}
*/
static XQAppIconMap s_IconMap;
XQIcon typeIcon(const QString& key )
{
if(s_IconMap.isEmpty())
s_IconMap.init();
if( s_IconMap.contains(key) )
return s_IconMap[key];
static XQIcon s_FallBackIcon( QApplication::style()->standardIcon( QStyle::SP_TrashIcon), "NoIcon" );
return s_FallBackIcon;
}
/*
{ "icnFolder" , QApplication::style()->standardIcon(QStyle::SP_DirIcon) },
{ "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");
{ "icn81Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaSeekForward)}
}
*/
}; // namespace XQAppData