Files
xtree.old.ng/src/application/xqappdata.cpp

252 lines
16 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,QIcon>
{
public:
XQAppIconMap() = default;
void init()
{
insert( "DirIcon" , QApplication::style()->standardIcon(QStyle::SP_DirIcon));
insert( "FileDialogBack", QApplication::style()->standardIcon(QStyle::SP_FileDialogBack));
insert( "FileDialogContentsView", QApplication::style()->standardIcon(QStyle::SP_FileDialogContentsView));
insert( "FileDialogDetailedView", QApplication::style()->standardIcon(QStyle::SP_FileDialogDetailedView));
insert( "icn05Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogEnd));
insert( "icn06Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogInfoView));
insert( "icn07Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogListView));
insert( "icn08Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogNewFolder));
insert( "icn09Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogStart));
insert( "icn10Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogToParent));
insert( "icn11Dummy", QApplication::style()->standardIcon(QStyle::SP_ArrowBack));
insert( "icn12Dummy", QApplication::style()->standardIcon(QStyle::SP_DirIcon));
insert( "icn13Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaSkipBackward));
insert( "icn14Dummy", QApplication::style()->standardIcon(QStyle::SP_ArrowDown));
insert( "icn15Dummy", QApplication::style()->standardIcon(QStyle::SP_DirLinkIcon));
insert( "icn16Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaSkipForward));
insert( "icn17Dummy", QApplication::style()->standardIcon(QStyle::SP_ArrowForward));
insert( "icn18Dummy", QApplication::style()->standardIcon(QStyle::SP_DirOpenIcon));
insert( "icn19Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaStop));
insert( "icn20Dummy", QApplication::style()->standardIcon(QStyle::SP_ArrowLeft));
insert( "icn21Dummy", QApplication::style()->standardIcon(QStyle::SP_DockWidgetCloseButton));
insert( "icn22Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaVolume));
insert( "icn23Dummy", QApplication::style()->standardIcon(QStyle::SP_ArrowRight));
insert( "icn24Dummy", QApplication::style()->standardIcon(QStyle::SP_DriveCDIcon));
insert( "icn25Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaVolumeMuted));
insert( "icn26Dummy", QApplication::style()->standardIcon(QStyle::SP_ArrowUp));
insert( "icn27Dummy", QApplication::style()->standardIcon(QStyle::SP_DriveDVDIcon));
insert( "icn28Dummy", QApplication::style()->standardIcon(QStyle::SP_MessageBoxCritical));
insert( "icn29Dummy", QApplication::style()->standardIcon(QStyle::SP_BrowserReload));
insert( "icn30Dummy", QApplication::style()->standardIcon(QStyle::SP_DriveFDIcon));
insert( "icn31Dummy", QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation));
insert( "icn32Dummy", QApplication::style()->standardIcon(QStyle::SP_BrowserStop));
insert( "icn33Dummy", QApplication::style()->standardIcon(QStyle::SP_DriveHDIcon));
insert( "icn34Dummy", QApplication::style()->standardIcon(QStyle::SP_MessageBoxQuestion));
insert( "icn35Dummy", QApplication::style()->standardIcon(QStyle::SP_CommandLink));
insert( "icn36Dummy", QApplication::style()->standardIcon(QStyle::SP_DriveNetIcon));
insert( "icn37Dummy", QApplication::style()->standardIcon(QStyle::SP_MessageBoxWarning));
insert( "icn38Dummy", QApplication::style()->standardIcon(QStyle::SP_ComputerIcon));
insert( "icn39Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogBack));
insert( "icn40Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarCloseButton));
insert( "icn41Dummy", QApplication::style()->standardIcon(QStyle::SP_CustomBase));
insert( "icn42Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogContentsView));
insert( "icn43Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarContextHelpButton));
insert( "icn44Dummy", QApplication::style()->standardIcon(QStyle::SP_DesktopIcon));
insert( "icn45Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogDetailedView));
insert( "icn46Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarMaxButton));
insert( "icn47Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogApplyButton));
insert( "icn48Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogEnd));
insert( "icn49Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarMenuButton));
insert( "icn50Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton));
insert( "icn51Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogInfoView));
insert( "icn52Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarMinButton));
insert( "icn53Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogCloseButton));
insert( "icn54Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogListView));
insert( "icn55Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarNormalButton));
insert( "icn56Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogDiscardButton));
insert( "icn57Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogNewFolder));
insert( "icn58Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarShadeButton));
insert( "icn59Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogHelpButton));
insert( "icn60Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogStart));
insert( "icn61Dummy", QApplication::style()->standardIcon(QStyle::SP_TitleBarUnshadeButton));
insert( "icn62Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogNoButton));
insert( "icn63Dummy", QApplication::style()->standardIcon(QStyle::SP_FileDialogToParent));
insert( "icn64Dummy", QApplication::style()->standardIcon(QStyle::SP_ToolBarHorizontalExtensionButton));
insert( "icn65Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogOkButton));
insert( "FileIcon", QApplication::style()->standardIcon(QStyle::SP_FileIcon));
insert( "icn67Dummy", QApplication::style()->standardIcon(QStyle::SP_ToolBarVerticalExtensionButton));
insert( "icn68Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogResetButton));
insert( "icn70Dummy", QApplication::style()->standardIcon(QStyle::SP_FileLinkIcon));
insert( "TrashIcon", QApplication::style()->standardIcon(QStyle::SP_TrashIcon));
insert( "icn72Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogSaveButton));
insert( "icn73Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaPause));
insert( "icn74Dummy", QApplication::style()->standardIcon(QStyle::SP_VistaShield));
insert( "icn75Dummy", QApplication::style()->standardIcon(QStyle::SP_DialogYesButton));
insert( "icn76Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaPlay));
insert( "icn77Dummy", QApplication::style()->standardIcon(QStyle::SP_DirClosedIcon));
insert( "icn79Dummy", QApplication::style()->standardIcon(QStyle::SP_MediaSeekBackward));
insert( "DirHomeIcon", QApplication::style()->standardIcon(QStyle::SP_DirHomeIcon));
insert( "icn81Dummy", QApplication::style()->standardIcon(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);
}
*/
}
};
/*
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;
bool hasTypeIcon(const QString& key )
{
if(s_IconMap.isEmpty())
s_IconMap.init();
return !key.isEmpty() && s_IconMap.contains(key);
}
QIcon typeIcon(const QString& key )
{
if( hasTypeIcon(key) )
return s_IconMap[key];
return QApplication::style()->standardIcon(QStyle::SP_TrashIcon);
}
/*
{ "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