Merge branch 'experimental/cleanup'
This commit is contained in:
@@ -30,12 +30,96 @@ namespace XQAppData
|
||||
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)
|
||||
@@ -46,10 +130,24 @@ namespace XQAppData
|
||||
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 )
|
||||
@@ -69,84 +167,84 @@ namespace XQAppData
|
||||
|
||||
/*
|
||||
{ "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)},
|
||||
{ "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)}
|
||||
}
|
||||
*/
|
||||
|
@@ -24,6 +24,10 @@
|
||||
|
||||
const QString c_Version = "0.1.1 04.09.2024";
|
||||
|
||||
const QString c_ItemType = "ItemType";
|
||||
const QString c_Caption = "Caption";
|
||||
const QString c_Header = "Header";
|
||||
|
||||
const QString c_MainModelName = "DocumentTreeModel";
|
||||
const QString c_ChildModelName = "DocumentDetailsModel";
|
||||
const QString c_ProjectID = "ProjectID";
|
||||
@@ -40,7 +44,7 @@ const QString c_FriendlyName = "FriendlyName";
|
||||
|
||||
namespace XQAppData
|
||||
{
|
||||
class XQAppIconMap;
|
||||
//class XQAppIconMap;
|
||||
|
||||
bool hasTypeIcon(const QString& key );
|
||||
QIcon typeIcon(const QString& key );
|
||||
|
@@ -36,7 +36,7 @@ XQChildModel::XQChildModel( QObject *parent )
|
||||
void XQChildModel::initModel(const QString& modelName)
|
||||
{
|
||||
|
||||
auto extendItemType = [=](const XQNodePtr& entry)
|
||||
auto extendItemType = [=,this](const XQNodePtr& entry)
|
||||
{
|
||||
const QString& typeName = entry->attribute("ItemType");
|
||||
XQItemType* itemType = _itemFactory.findItemTypeTemplate( typeName); // throws
|
||||
@@ -138,24 +138,6 @@ void XQChildModel::setContent( const XQNodePtr& contentRoot )
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
|
||||
void XQChildModel::createModelContentChildRow( QStandardItem* parent, XQNodePtr contentNode )
|
||||
{
|
||||
/*
|
||||
parent->appendRow( { new XQItem("Optionals", XQItemType::HeaderStyle ), new XQItem( "Value", XQItemType::HeaderStyle )} );
|
||||
|
||||
for( auto& child : contentNode->children() )
|
||||
{
|
||||
XQItemList list;
|
||||
list.append( new XQItem( child->attribute("DataItem"), XQItemType::StaticStyle ) );
|
||||
list.append( new XQItem( child->attribute("DataValue"), XQItemType::StaticStyle ) );
|
||||
parent->appendRow( list );
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
//! erzeugt ein adhoc-contextmenu, je nachdem welche aktionen gerade möflich sind.
|
||||
|
||||
void XQChildModel::initContextMenu()
|
||||
|
@@ -34,7 +34,7 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
virtual void createModelContentChildRow(QStandardItem* parent, XQNodePtr contentNode );
|
||||
|
||||
|
||||
//void setupViewProperties() override;
|
||||
void initContextMenu() override;
|
||||
|
@@ -16,7 +16,7 @@
|
||||
#include <xqitem.h>
|
||||
#include <QFile>
|
||||
|
||||
//! firz
|
||||
//! erzeugt ein docukument
|
||||
|
||||
XQDocument::XQDocument(const QString& aFileName, const QString& aFriendlyName, XQItem* aTreeItem, XQViewModel* aModelView )
|
||||
: fileName{ aFileName }, friendlyName{ aFriendlyName }, treeItem{ aTreeItem }, modelView{ aModelView }
|
||||
@@ -24,12 +24,6 @@ XQDocument::XQDocument(const QString& aFileName, const QString& aFriendlyName, X
|
||||
|
||||
}
|
||||
|
||||
//! firz
|
||||
|
||||
XQDocument::~XQDocument()
|
||||
{
|
||||
//delete _documentRoot;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
@@ -37,7 +31,7 @@ XQDocument::~XQDocument()
|
||||
///
|
||||
|
||||
|
||||
//! firz
|
||||
//! destruktor
|
||||
|
||||
XQDocumentStore::~XQDocumentStore()
|
||||
{
|
||||
@@ -48,11 +42,11 @@ XQDocumentStore::~XQDocumentStore()
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! erzeugt ein document eintrag
|
||||
|
||||
void XQDocumentStore::addDocument( const QString& aFileName, const QString& aFriendlyName, XQItem* aTreeItem, XQViewModel* aModelView )
|
||||
{
|
||||
XQDocument newDocument( aFileName, aFriendlyName, aTreeItem,aModelView );
|
||||
XQDocument newDocument( aFileName, aFriendlyName, aTreeItem, aModelView );
|
||||
addAtKey( aFileName, newDocument );
|
||||
// attention: this assumes the presence of the 'ProjectID' value
|
||||
//addAlias( aFileName, aTreeItem->attribute(c_ProjectID) );
|
||||
|
@@ -28,7 +28,7 @@ struct XQDocument
|
||||
XQDocument() = default;
|
||||
XQDocument( const QString& aFileName, const QString& aFriendlyName, XQItem* aTreeItem, XQViewModel* aModelView );
|
||||
|
||||
virtual ~XQDocument();
|
||||
virtual ~XQDocument() = default;
|
||||
|
||||
QString fileName; // also used as key
|
||||
QString friendlyName;
|
||||
|
@@ -38,17 +38,22 @@ XQMainModel::XQMainModel(QObject *parent )
|
||||
|
||||
void XQMainModel::initModel(const QString& modelName)
|
||||
{
|
||||
XQNodePtr modelSheet = _itemFactory.findModelSheet( modelName );
|
||||
|
||||
// #1: create structure: create static sections for this model
|
||||
for( auto& sheetNode : modelSheet->children() )
|
||||
// model rootnode finden -> <DocumentTreeModel>
|
||||
XQNodePtr modelSheet = _itemFactory.findModelSheet( modelName ); // throws
|
||||
|
||||
// #1: über alle sections
|
||||
for( auto& section : modelSheet->children() )
|
||||
{
|
||||
qDebug() << " create main model: " << sheetNode->tag_name();
|
||||
// #2: (optionalen) header erzeugen
|
||||
const XQNodePtr header = section->find_child_by_tag_name( "Header");
|
||||
if( header )
|
||||
{
|
||||
XQItemList list = _itemFactory.makeHeader( header );
|
||||
Q_ASSERT(!list.isEmpty());
|
||||
addSection(list, section );
|
||||
}
|
||||
|
||||
XQItemList list = { _itemFactory.makeHeaderItem( sheetNode ) };
|
||||
Q_ASSERT(!list.isEmpty());
|
||||
addSection(list, sheetNode );
|
||||
//appendRow( list );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,7 +82,7 @@ XQItem* XQMainModel::createTreeEntry( XQNodePtr contentNode )
|
||||
throw XQException( "createTreeEntry: main model should not be emtpy!" );
|
||||
}
|
||||
|
||||
//! firz
|
||||
//! leere default implementation
|
||||
|
||||
void XQMainModel::initContextMenu()
|
||||
{
|
||||
|
@@ -135,19 +135,6 @@ XQItem* XQItemFactory::makeHeaderItem( const XQNodePtr& sheetEntry )
|
||||
|
||||
}
|
||||
|
||||
XQItem* XQItemFactory::makeContentItem( const XQNodePtr& contentNode, const XQNodePtr& sheetEntry )
|
||||
{
|
||||
// den itemtype des neuen items rausfinden
|
||||
QString typeKey = sheetEntry->attribute("ItemType");
|
||||
//XQItemType* itemType = findItemTypeTemplate(typeKey); // throws
|
||||
XQItemType* itemType = makeItemType(sheetEntry); // throws
|
||||
|
||||
const QString* contentPtr = contentNode->attribute_ptr( sheetEntry->tag_name() );
|
||||
|
||||
return new XQItem( itemType, contentPtr );
|
||||
|
||||
}
|
||||
|
||||
|
||||
XQItem* XQItemFactory::makeTreeChildItem( const XQNodePtr& contentNode, const XQNodePtr& sheetEntry )
|
||||
{
|
||||
@@ -295,6 +282,56 @@ QVariant XQItemFactory::makeVariant( int dataRole, const QString& source ) const
|
||||
/// ------------------------------------------------
|
||||
///
|
||||
|
||||
|
||||
XQItem* XQItemFactory::makeContentItem( const XQNodePtr& contentNode, const XQNodePtr& sheetEntry )
|
||||
{
|
||||
// den itemtype des neuen items rausfinden
|
||||
QString typeKey = sheetEntry->attribute(c_ItemType);
|
||||
//XQItemType* itemType = findItemTypeTemplate(typeKey); // throws
|
||||
XQItemType* itemType = makeItemType(sheetEntry); // throws
|
||||
// das ist Unterschied zum normalen Item: Der Titel kommt aus der Modelbeschreibung
|
||||
const QString* contentPtr = contentNode->attribute_ptr( sheetEntry->tag_name() );
|
||||
|
||||
return new XQItem( itemType, contentPtr );
|
||||
|
||||
}
|
||||
|
||||
XQItem* XQItemFactory::makeItem( const XQNodePtr& sheetNode, const XQNodePtr& contentNode )
|
||||
{
|
||||
// den itemtype des neuen items rausfinden
|
||||
QString typeKey = sheetNode->attribute(c_ItemType);
|
||||
//XQItemType* itemType = makeItemType(sheetEntry); // throws
|
||||
XQItemType* itemType = findItemTypeTemplate(typeKey);
|
||||
// fallunterscheidung beim inhalt:
|
||||
const QString* contentPtr{};
|
||||
// das ist Unterschied zum normalen Item: Der Titel kommt aus der Modelbeschreibung
|
||||
if(!contentNode)
|
||||
contentPtr = sheetNode->attribute_ptr(c_Caption);
|
||||
else
|
||||
// der content wird indirect über den tag-name des sheetnode geholt
|
||||
contentPtr = contentNode->attribute_ptr( sheetNode->tag_name() );
|
||||
|
||||
return new XQItem( itemType, contentPtr );
|
||||
|
||||
}
|
||||
|
||||
XQItemList XQItemFactory::makeHeader( const XQNodePtr& headerNode )
|
||||
{
|
||||
|
||||
XQItemList list;
|
||||
|
||||
for( const auto& headerEntry : headerNode->children() )
|
||||
{
|
||||
qDebug() << " --- headerEntry: " << headerEntry->tag_name() << ": " << headerEntry->attribute( "ItemType") << headerEntry->attribute( "Caption");
|
||||
XQItem* headerItem = makeItem( headerEntry );
|
||||
list.append( headerItem );
|
||||
}
|
||||
|
||||
return list;
|
||||
|
||||
}
|
||||
|
||||
|
||||
XQItemList XQItemFactory::makeHeaderRow( const XQNodePtr& sheetNode )
|
||||
{
|
||||
XQItemList list;
|
||||
|
@@ -32,15 +32,20 @@ public:
|
||||
|
||||
XQNodePtr findModelSheet( const QString& modelName ) const;
|
||||
|
||||
XQItem* makeHeaderItem(const XQNodePtr& typeSheetNode );
|
||||
XQItem* makeContentItem( const XQNodePtr& contentNode, const XQNodePtr& sheetEntry );
|
||||
XQItem* makeTreeChildItem( const XQNodePtr& contentNode, const XQNodePtr& sheetEntry );
|
||||
XQItem* makeHeaderItem(const XQNodePtr& typeSheetNode );
|
||||
XQItem* makeContentItem( const XQNodePtr& contentNode, const XQNodePtr& sheetEntry );
|
||||
XQItem* makeTreeChildItem( const XQNodePtr& contentNode, const XQNodePtr& sheetEntry );
|
||||
|
||||
virtual XQItemList makeHeaderRow( const XQNodePtr& sheetNode );
|
||||
virtual XQItemList makeContentRow( const XQNodePtr& contentNode, const XQNodePtr& sheetNode );
|
||||
virtual XQItemList makeEmptyRow( const XQNodePtr& contentNode, const XQNodePtr& sheetNode );
|
||||
XQItem* makeItem( const XQNodePtr& sheetNode, const XQNodePtr& contentNode=nullptr);
|
||||
XQItemList makeHeader( const XQNodePtr& sheetNode );
|
||||
|
||||
|
||||
|
||||
XQItemList makeHeaderRow( const XQNodePtr& sheetNode );
|
||||
XQItemList makeContentRow( const XQNodePtr& contentNode, const XQNodePtr& sheetNode );
|
||||
XQItemList makeEmptyRow( const XQNodePtr& contentNode, const XQNodePtr& sheetNode );
|
||||
// wozu ist das gut?
|
||||
virtual XQItemList createGenericRow( const XQNodePtr& contentNode, const XQNodePtr& sheetNode );
|
||||
XQItemList createGenericRow( const XQNodePtr& contentNode, const XQNodePtr& sheetNode );
|
||||
|
||||
void setItemDataFromString( XQItem& item, const QString& roleKey, const QString& source ) const;
|
||||
|
||||
|
@@ -125,6 +125,9 @@ XQItemType* XQItemType::replaceAttribute( const QVariant& newValue, int role )
|
||||
|
||||
}
|
||||
|
||||
|
||||
//! formatiert den content() string eines items.
|
||||
|
||||
QVariant XQItemType::formatText( const XQItem& item ) const
|
||||
{
|
||||
XQItem::UnitType uType = unitType();
|
||||
@@ -134,7 +137,8 @@ QVariant XQItemType::formatText( const XQItem& item ) const
|
||||
return cont;
|
||||
}
|
||||
|
||||
//! firz
|
||||
|
||||
//! formatiert einen zahlenwert als string mit einheit.
|
||||
|
||||
QString XQItemType::formatToSI( const QString& valueTxt, XQItem::UnitType unitType ) const
|
||||
{
|
||||
@@ -172,7 +176,8 @@ QString XQItemType::formatToSI( const QString& valueTxt, XQItem::UnitType unitTy
|
||||
|
||||
}
|
||||
|
||||
//! firz
|
||||
|
||||
//! entfernt die einheit aus einem formatierten string
|
||||
|
||||
QString XQItemType::unFormatFromSI(const QString& formText ) const
|
||||
{
|
||||
|
@@ -17,7 +17,7 @@
|
||||
#include <xqtreetable.h>
|
||||
|
||||
|
||||
//! firz
|
||||
//! hilfsfunktion: zeigt alle position und die zugehörigen knoten an.
|
||||
|
||||
void XQNodeStore::dumpList( const QString& title ) const
|
||||
{
|
||||
@@ -37,7 +37,7 @@ XQCommand::XQCommand(CmdType cmdType, XQViewModel* modelView )
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! destruktor
|
||||
|
||||
XQCommand::~XQCommand()
|
||||
{
|
||||
|
@@ -18,7 +18,7 @@
|
||||
|
||||
|
||||
|
||||
//! firz
|
||||
//! hilfsfunktion: gibt diesen teilbaum rekursiv aus
|
||||
|
||||
void inspect( const XQNodePtr& node, int indent )
|
||||
{
|
||||
@@ -34,9 +34,7 @@ void inspect( const XQNodePtr& node, int indent )
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//! firz
|
||||
//! operator<< für QString und std::ostream
|
||||
|
||||
// Overload the operator<< for MyClass and std::ostream
|
||||
std::ostream& operator<<(std::ostream& os, const QString& obj)
|
||||
@@ -47,7 +45,8 @@ std::ostream& operator<<(std::ostream& os, const QString& obj)
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! 'QString' implementation von split
|
||||
|
||||
template<>
|
||||
bool znode::zpayload<QString>::xstr_split_by(const QString& entry, const QString& sep, QString& key, QString& value )
|
||||
{
|
||||
@@ -60,7 +59,7 @@ bool znode::zpayload<QString>::xstr_split_by(const QString& entry, const QString
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! 'QString' implementation von substr
|
||||
|
||||
template<>
|
||||
QString znode::zpayload<QString>::xstr_sub_str( const QString& entry, int pos ) const
|
||||
@@ -69,7 +68,7 @@ QString znode::zpayload<QString>::xstr_sub_str( const QString& entry, int pos )
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! 'QString' implementation vom test auf 'empty'
|
||||
|
||||
template<>
|
||||
bool znode::zpayload<QString>::xstr_is_empty(const QString& entry ) const
|
||||
@@ -78,7 +77,7 @@ bool znode::zpayload<QString>::xstr_is_empty(const QString& entry ) const
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! 'QString' varianten der keystrings.
|
||||
|
||||
template<>
|
||||
const QString znode::zpayload<QString>::cType = "Type";
|
||||
|
@@ -22,7 +22,7 @@
|
||||
|
||||
|
||||
|
||||
//! firz
|
||||
//! schreibt einen (teil)baum in ein file
|
||||
|
||||
void XQNodeWriter::dumpTree( XQNodePtr rootNode, const QString& fileName ) const
|
||||
{
|
||||
@@ -40,7 +40,8 @@ void XQNodeWriter::dumpTree( XQNodePtr rootNode, const QString& fileName ) const
|
||||
treeFile.close();
|
||||
}
|
||||
|
||||
//! firz
|
||||
|
||||
//! schreibt einen knoten in einen stream
|
||||
|
||||
void XQNodeWriter::dumpNode( QXmlStreamWriter& writer, XQNodePtr node ) const
|
||||
{
|
||||
|
@@ -17,7 +17,7 @@
|
||||
|
||||
|
||||
|
||||
//! firz
|
||||
//! konstruiert ein selectionmodel.
|
||||
|
||||
XQSelectionModel::XQSelectionModel(QAbstractItemModel* model)
|
||||
: QItemSelectionModel(model)
|
||||
@@ -26,7 +26,7 @@ XQSelectionModel::XQSelectionModel(QAbstractItemModel* model)
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! konstruiert ein selectionmodel.
|
||||
|
||||
XQSelectionModel::XQSelectionModel(QAbstractItemModel* model, QObject* parent)
|
||||
: QItemSelectionModel(model, parent)
|
||||
@@ -40,7 +40,7 @@ XQSelectionModel::XQSelectionModel(QAbstractItemModel* model, QObject* parent)
|
||||
void XQSelectionModel::select(const QItemSelection& selection, QItemSelectionModel::SelectionFlags command)
|
||||
{
|
||||
// step #0: fetch selected indices.
|
||||
QModelIndexList list = selection.indexes();
|
||||
const QModelIndexList list = selection.indexes();
|
||||
if (list.isEmpty() || selectedRows().isEmpty() )
|
||||
return QItemSelectionModel::select(selection, command);
|
||||
|
||||
|
@@ -16,7 +16,7 @@
|
||||
#include <xqviewmodel.h>
|
||||
|
||||
|
||||
//! firz
|
||||
//! true, wenn paste an er stelle 'curIdx' möglich ist.
|
||||
|
||||
bool XQSimpleClipBoard::canPaste( const QModelIndex& curIdx ) const
|
||||
{
|
||||
@@ -38,7 +38,9 @@ bool XQSimpleClipBoard::canPaste( const QModelIndex& curIdx ) const
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! erzeugt eine positions-list aus der liste selectierter indicies.
|
||||
//! Der mit seiner position zusammen gespeicherter knoten muss hier
|
||||
//! gekloned werden.
|
||||
|
||||
void XQSimpleClipBoard::saveNodes( const QModelIndexList& list )
|
||||
{
|
||||
|
@@ -30,7 +30,7 @@
|
||||
//Q_GLOBAL_STATIC(XQItem,s_dummyItem)
|
||||
|
||||
|
||||
//! firz
|
||||
//! hilfsfunkion, zeigt den string-content() für alle elemente der liste
|
||||
|
||||
void showItemList( const XQItemList& list)
|
||||
{
|
||||
@@ -40,14 +40,7 @@ void showItemList( const XQItemList& list)
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
|
||||
XQViewModel::~XQViewModel()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! Konstruktur mit parent.
|
||||
|
||||
XQViewModel::XQViewModel( QObject* parent )
|
||||
: QStandardItemModel{ parent }, _itemFactory{ XQItemFactory::instance() }
|
||||
@@ -57,7 +50,7 @@ XQViewModel::XQViewModel( QObject* parent )
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! gibt einen static-cast<QXItem*> auf 'invisibleRootItem()' zurück
|
||||
|
||||
const XQItem& XQViewModel::xqRootItem()
|
||||
{
|
||||
@@ -70,7 +63,7 @@ const XQItem& XQViewModel::xqRootItem()
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! hifsfunktion, die das item zu einen index zurückgibt
|
||||
|
||||
XQItem& XQViewModel::xqItemFromIndex(const QModelIndex& index) const
|
||||
{
|
||||
@@ -83,14 +76,68 @@ XQItem& XQViewModel::xqItemFromIndex(const QModelIndex& index) const
|
||||
return XQItem::fallBackDummyItem();
|
||||
}
|
||||
|
||||
//! firz
|
||||
//! hilfsfunktiom, die das erste xqitem einer zeile zurückgibt.
|
||||
|
||||
XQItem& XQViewModel::xqFirstItem(int row) const
|
||||
{
|
||||
return *static_cast<XQItem*>( QStandardItemModel::item(row) );
|
||||
}
|
||||
|
||||
//! firz
|
||||
//! create the own model structure
|
||||
void XQViewModel::initModel( const QString& modelName)
|
||||
{
|
||||
/*
|
||||
model
|
||||
section
|
||||
header
|
||||
section
|
||||
...
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
// #0: Wir suchen die Model-Beschreibung
|
||||
XQNodePtr modelSheet = _itemFactory.findModelSheet( modelName ); // throws
|
||||
|
||||
// #1: Wir erzeugen die Model-Struktur: Jedes Kind beschreibt einen
|
||||
// XML-Datentyp, z.B. <Panel atr1="..." />, <Battery .../>
|
||||
// Jeder XML-Knoten entspricht einer Zeile im späteren Model, jedes
|
||||
// Attribut wird einem eigenen Feld (XQItem) abgebildet.
|
||||
|
||||
for( const auto& sheetNode : modelSheet->children() )
|
||||
{
|
||||
|
||||
|
||||
XQItemList list = _itemFactory.makeHeaderRow( sheetNode );
|
||||
|
||||
// für jeden XML-Knotentyp in der Modelbeschreibung erzeugen wir eine section
|
||||
addSection(list, sheetNode );
|
||||
|
||||
// jedes kind kann enthält einen itemType und einen headerItemType. Für
|
||||
// diese sind eventuell weitere attribute vorhanden, die die im type
|
||||
// enthaltenen defualt-werte überschreiben.
|
||||
|
||||
for( const auto& sheetChild : sheetNode->children() )
|
||||
{
|
||||
//qDebug() << "---- kloppo: " << sheetChild->tag_name() << ": " << sheetChild->to_string();
|
||||
extendItemType( sheetChild );
|
||||
}
|
||||
|
||||
|
||||
|
||||
// empty row:
|
||||
//XQNodePtr contentNode = XQNode::make_node( sheetNode->tag_name() );
|
||||
//XQItemList emptyRow = _itemFactory.makeEmptyRow( contentNode, sheetNode );
|
||||
//appendRow( emptyRow );
|
||||
|
||||
|
||||
} // for
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
//! SLOT, der aufgerufen wird, wenn eine edit-action getriggert wurde.
|
||||
|
||||
void XQViewModel::onActionTriggered(QAction* action)
|
||||
{
|
||||
@@ -138,12 +185,7 @@ void XQViewModel::onActionTriggered(QAction* action)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief XQViewModel::onCommandRedo called to execute a command ('do').
|
||||
* @param command the current command
|
||||
*/
|
||||
|
||||
//! firz
|
||||
//! führt die 'redo' action des gegebenen commnds aus.
|
||||
|
||||
void XQViewModel::onCommandRedo( XQCommand& command )
|
||||
{
|
||||
@@ -182,12 +224,7 @@ void XQViewModel::onCommandRedo( XQCommand& command )
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief XQViewModel::onCommandUndo: called to 'undo' a command.
|
||||
* @param command the command to be undone.
|
||||
*/
|
||||
|
||||
//! firz
|
||||
//! führt die 'undo' action des gegebenen commnds aus.
|
||||
|
||||
void XQViewModel::onCommandUndo( XQCommand& command )
|
||||
{
|
||||
@@ -341,7 +378,7 @@ void XQViewModel::cmdPasteUndo( XQCommand& command )
|
||||
|
||||
// don't clone into clipboard, remove items
|
||||
|
||||
//! firz
|
||||
//! entfernen der selection ohne copy in clipboard.
|
||||
|
||||
void XQViewModel::cmdDelete( XQCommand& command )
|
||||
{
|
||||
@@ -358,7 +395,7 @@ void XQViewModel::cmdDelete( XQCommand& command )
|
||||
}
|
||||
}
|
||||
|
||||
//! firz
|
||||
//! macht 'delete' wirder rückgängig.
|
||||
|
||||
void XQViewModel::cmdDeleteUndo( XQCommand& command )
|
||||
{
|
||||
@@ -366,12 +403,7 @@ void XQViewModel::cmdDeleteUndo( XQCommand& command )
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief XQViewModel::cmdNewRow create one new item row
|
||||
* @param command the command
|
||||
*/
|
||||
|
||||
//! firz
|
||||
//! legt eine neue, leere zeile an.
|
||||
|
||||
void XQViewModel::cmdNew( XQCommand& command )
|
||||
{
|
||||
@@ -407,14 +439,14 @@ void XQViewModel::cmdNew( XQCommand& command )
|
||||
*/
|
||||
}
|
||||
|
||||
//! firz
|
||||
//! entfernt die neu angelegte zeile.
|
||||
|
||||
void XQViewModel::cmdNewUndo( XQCommand& command )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! schaltet eine section sichtbar oder unsichtbar.
|
||||
|
||||
void XQViewModel::cmdToggleSection( const QModelIndex& index )
|
||||
{
|
||||
@@ -458,12 +490,8 @@ void XQViewModel::setTreeTable(XQTreeTable* mainView )
|
||||
setupViewProperties();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief XQViewModel::setupViewProperties set the tree views' properties: context menu policy,
|
||||
* edit triggers and so on.
|
||||
*/
|
||||
|
||||
//! firz
|
||||
//! setzt die eigenschaften der TreeTable.
|
||||
|
||||
void XQViewModel::setupViewProperties()
|
||||
{
|
||||
@@ -476,7 +504,7 @@ void XQViewModel::setupViewProperties()
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! füg eine section mit header hinzu.
|
||||
|
||||
void XQViewModel::addSection( const XQItemList& list, const XQNodePtr& sheetNode )
|
||||
{
|
||||
@@ -485,7 +513,7 @@ void XQViewModel::addSection( const XQItemList& list, const XQNodePtr& sheetNode
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! gibt den undo-stack zurück.
|
||||
|
||||
QUndoStack* XQViewModel::undoStack()
|
||||
{
|
||||
@@ -493,7 +521,7 @@ QUndoStack* XQViewModel::undoStack()
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! setzt den undo-stack.
|
||||
|
||||
void XQViewModel::setUndoStack( QUndoStack* undoStack )
|
||||
{
|
||||
@@ -501,7 +529,7 @@ void XQViewModel::setUndoStack( QUndoStack* undoStack )
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! SLOT, der die erstellung & anzeige es context-menues triggert.
|
||||
|
||||
void XQViewModel::onShowContextMenu(const QPoint& point)
|
||||
{
|
||||
@@ -510,7 +538,8 @@ void XQViewModel::onShowContextMenu(const QPoint& point)
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! gibt die namen der neuen data-roles zurück.
|
||||
//! __fix: die alten roles fehlen hier!
|
||||
|
||||
QHash<int, QByteArray> XQViewModel::roleNames() const
|
||||
{
|
||||
|
@@ -18,6 +18,7 @@
|
||||
#include <QUndoStack>
|
||||
#include <QMenu>
|
||||
#include <QStandardItemModel>
|
||||
#include <QAbstractItemView>
|
||||
|
||||
#include <xqsimpleclipboard.h>
|
||||
#include <xqmodelsectionlist.h>
|
||||
@@ -30,18 +31,7 @@ class XQItem;
|
||||
class XQCommand;
|
||||
|
||||
|
||||
/**
|
||||
* @brief Abstract baseclass of all modelviews: Extends QStandardItemModel with a treeview.
|
||||
*/
|
||||
|
||||
// might be own implementation of QAbstractItemModel, not done yet.
|
||||
// using QStandardItemModel = XQSimpleItemModel;
|
||||
using QStandardItemModel = QStandardItemModel;
|
||||
|
||||
/**
|
||||
* @brief The XQViewModel class: An extendend QStandardItem model
|
||||
* containing its own view.
|
||||
*/
|
||||
//! ein erweitertes QStandardItemModel welches 'seine' view bereits enthält.
|
||||
|
||||
class XQViewModel : public QStandardItemModel
|
||||
{
|
||||
@@ -50,7 +40,7 @@ class XQViewModel : public QStandardItemModel
|
||||
public:
|
||||
|
||||
XQViewModel(QObject* parent = nullptr);
|
||||
virtual ~XQViewModel();
|
||||
virtual ~XQViewModel() = default;
|
||||
|
||||
XQTreeTable* treeTable();
|
||||
virtual void setTreeTable( XQTreeTable* mainView );
|
||||
@@ -58,10 +48,8 @@ public:
|
||||
QUndoStack* undoStack();
|
||||
void setUndoStack( QUndoStack* undoStack );
|
||||
|
||||
QHash<int, QByteArray> roleNames() const override;
|
||||
|
||||
//! create the own model structure
|
||||
virtual void initModel( const QString& modelName) = 0;
|
||||
virtual void initModel( const QString& modelName);
|
||||
|
||||
//little helpers
|
||||
const XQItem& xqRootItem();
|
||||
@@ -81,6 +69,8 @@ public:
|
||||
virtual void cmdNew( XQCommand& command );
|
||||
virtual void cmdNewUndo( XQCommand& command );
|
||||
|
||||
QHash<int, QByteArray> roleNames() const override;
|
||||
|
||||
/*!
|
||||
|
||||
Derzeit wir die default-implementierung von data/setData genutzt. hier wäre dann die
|
||||
@@ -131,6 +121,7 @@ protected:
|
||||
XQModelSectionList _sections;
|
||||
|
||||
XQTreeTable* _treeTable{};
|
||||
//QAbstractItemView* _treeTable{};
|
||||
QUndoStack* _undoStack{};
|
||||
XQContextMenu* _contextMenu{};
|
||||
|
||||
|
@@ -15,7 +15,7 @@
|
||||
#include <znode.h>
|
||||
|
||||
|
||||
//! firz
|
||||
//! überwachungszähler
|
||||
|
||||
namespace znode
|
||||
{
|
||||
|
@@ -14,7 +14,7 @@
|
||||
|
||||
#include <xqexception.h>
|
||||
|
||||
//! firz
|
||||
//! erzeugt einen std::runtime_error mit text und optionalem parameter
|
||||
|
||||
XQException::XQException(const QString& what, const QString& param )
|
||||
: std::runtime_error( param.isEmpty() ? what.toStdString() : QString( "%1: %2" ).arg(what,param).toStdString( ) )
|
||||
|
@@ -15,21 +15,7 @@
|
||||
#include <xqcontextmenu.h>
|
||||
|
||||
|
||||
//! firz
|
||||
|
||||
XQContextMenu::XQContextMenu(const QString& title, QWidget* parent )
|
||||
: QMenu( title, parent )
|
||||
{
|
||||
/*
|
||||
QAction* titleDummy = new QAction(title,this);
|
||||
QWidget::addAction(titleDummy);
|
||||
addSeparator();
|
||||
titleDummy->setEnabled(false);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! konstruktor.
|
||||
|
||||
XQContextMenu::XQContextMenu(QWidget* parent)
|
||||
: QMenu( parent )
|
||||
@@ -37,7 +23,8 @@ XQContextMenu::XQContextMenu(QWidget* parent)
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! erzeugt eine action mit text
|
||||
//! aus einem command-type und fügt sie hinzu.
|
||||
|
||||
void XQContextMenu::addAction(const QString& text, XQCommand::CmdType commandType, bool enabled)
|
||||
{
|
||||
@@ -49,7 +36,8 @@ void XQContextMenu::addAction(const QString& text, XQCommand::CmdType commandTyp
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! erzeugt eine action mit text und icon aus
|
||||
//! einem command-type und fügt sie hinzu.
|
||||
|
||||
void XQContextMenu::addAction(const QString& iconKey, const QString& name, XQCommand::CmdType commandType, bool enabled)
|
||||
{
|
||||
@@ -57,7 +45,8 @@ void XQContextMenu::addAction(const QString& iconKey, const QString& name, XQCom
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! erzeugt eine action mit text und icon aus
|
||||
//! einem command-type und fügt sie hinzu.
|
||||
|
||||
void XQContextMenu::addAction(const QIcon& icon, const QString& text, XQCommand::CmdType commandType, bool enabled)
|
||||
{
|
||||
@@ -69,7 +58,7 @@ void XQContextMenu::addAction(const QIcon& icon, const QString& text, XQCommand:
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! schaltet die action mit 'commandType'
|
||||
|
||||
void XQContextMenu::setActionEnabled(XQCommand::CmdType commandType, bool enabled)
|
||||
{
|
||||
|
@@ -29,7 +29,6 @@ class XQContextMenu : public QMenu
|
||||
|
||||
public:
|
||||
|
||||
XQContextMenu(const QString& title, QWidget* parent = nullptr );
|
||||
XQContextMenu(QWidget* parent = nullptr );
|
||||
virtual ~XQContextMenu() = default;
|
||||
|
||||
|
@@ -20,7 +20,7 @@
|
||||
|
||||
#define DB_TIMESTAMP QTime::currentTime().toString(" -- HH:mm:ss.zzz")
|
||||
|
||||
//! firz
|
||||
//! standardkonstruktor
|
||||
|
||||
XQTreeTable::XQTreeTable(QWidget* parent)
|
||||
: QTreeView(parent)
|
||||
@@ -36,15 +36,15 @@ XQTreeTable::XQTreeTable(QWidget* parent)
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! gibt die verbundene modelview zurück, cast auf 'model()'
|
||||
|
||||
XQViewModel* XQTreeTable::modelView()
|
||||
{
|
||||
return static_cast<XQViewModel*>(model());
|
||||
}
|
||||
|
||||
// __fixme: necessary?
|
||||
//! firz
|
||||
|
||||
//! shortcut: gibt das item für index zurück
|
||||
|
||||
XQItem& XQTreeTable::xqItemFromIndex(const QModelIndex& index )
|
||||
{
|
||||
@@ -52,7 +52,7 @@ XQItem& XQTreeTable::xqItemFromIndex(const QModelIndex& index )
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! override von 'currentChanged' (noch nicht implementiert)
|
||||
|
||||
void XQTreeTable::currentChanged(const QModelIndex& current, const QModelIndex& previous)
|
||||
{
|
||||
@@ -137,25 +137,7 @@ void XQTreeTable::mouseMoveEvent(QMouseEvent* event)
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
|
||||
void XQTreeTable::mouseDoubleClickEvent(QMouseEvent* event)
|
||||
{
|
||||
/*
|
||||
QModelIndex idxFromPos = indexAt(event->pos());
|
||||
if (idxFromPos.isValid())
|
||||
{
|
||||
if ( NTItem::isHeaderType(idxFromPos) && cursor().shape() == Qt::SplitHCursor)
|
||||
{
|
||||
return resizeColumnToContents(idxFromPos.column());
|
||||
}
|
||||
}
|
||||
*/
|
||||
QTreeView::mouseDoubleClickEvent(event);
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! speichert die start-position fürs header-resizing.
|
||||
|
||||
void XQTreeTable::mousePressEvent(QMouseEvent* event)
|
||||
{
|
||||
@@ -174,18 +156,18 @@ void XQTreeTable::mousePressEvent(QMouseEvent* event)
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! speichert die index-position fürs header-resizing.
|
||||
|
||||
void XQTreeTable::mouseReleaseEvent(QMouseEvent* event)
|
||||
{
|
||||
// reset index for resize column
|
||||
_indexToResize = QModelIndex();
|
||||
setCursor(QCursor(Qt::ArrowCursor));
|
||||
setCursor(QCursor(Qt::ArrowCursor));
|
||||
QTreeView::mouseReleaseEvent(event);
|
||||
}
|
||||
|
||||
|
||||
//! firz
|
||||
//! zoom-in / zoom-out mit mausrad & ctrl
|
||||
|
||||
void XQTreeTable::wheelEvent(QWheelEvent* event)
|
||||
{
|
||||
|
@@ -46,7 +46,6 @@ protected:
|
||||
void currentChanged(const QModelIndex& current, const QModelIndex& previous) override;
|
||||
|
||||
void mouseMoveEvent(QMouseEvent* event) override;
|
||||
void mouseDoubleClickEvent(QMouseEvent* event) override;
|
||||
void mouseReleaseEvent(QMouseEvent* event) override;
|
||||
void mousePressEvent(QMouseEvent* event) override;
|
||||
void mouseResizeHeaderEntry(int xpos);
|
||||
|
@@ -7,7 +7,7 @@
|
||||
-->
|
||||
|
||||
<ItemTypes>
|
||||
<TreeParentType RenderStyle="PlainStyle" ItemFlags="IsEnabled|IsDropEnabled" Icon="folder-new" />
|
||||
<TreeParentType RenderStyle="PlainStyle" ItemFlags="IsEnabled|IsDropEnabled" Icon="DirIcon" />
|
||||
<TreeChildType RenderStyle="PlainStyle" ItemFlags="IsEnabled|IsDragEnabled|IsSelectable|IsDropEnabled"/>
|
||||
<HeaderType RenderStyle="HeaderStyle" ItemFlags="IsEnabled" Icon="battery"/>
|
||||
<HiddenType RenderStyle="HiddenStyle"/>
|
||||
@@ -23,10 +23,10 @@
|
||||
DocumentTreeModel
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
<DocumentTreeModel>
|
||||
<ActiveProjects ItemType="PlainType" HeaderItemType="TreeParentType" HeaderCaption="Active Projects" State="runnning">
|
||||
<Project ItemType="farz" HeaderItemType="TreeChildType" Icon="list-add"/>
|
||||
<Project ItemType="TreeChildType" Icon="list-add"/>
|
||||
</ActiveProjects>
|
||||
<PlannedProjects HeaderItemType="TreeParentType" HeaderCaption="Planned Projects" State="planned">
|
||||
<Project ItemType="TreeChildType" Icon="list-add"/>
|
||||
@@ -35,18 +35,41 @@
|
||||
<Project ItemType="TreeChildType" Icon="list-remove"/>
|
||||
</FinishedProjects>
|
||||
</DocumentTreeModel>
|
||||
|
||||
<!--
|
||||
<DocumentTreeModelX>
|
||||
<ActiveProjects ItemType="TreeParentType" HeaderCaption="Active Projects" ItemType="ValueType" State="runnning"/>
|
||||
<PlannedProjects HeaderItemType="TreeParentType" HeaderCaption="Planned Projects" ItemType="ValueType" State="planned"/>
|
||||
<FinishedProjects HeaderItemType="TreeParentType" HeaderCaption="Finished Projects" ItemType="ValueType" State="finished"/>
|
||||
</DocumenTreeModelX>
|
||||
-->
|
||||
|
||||
|
||||
<!--
|
||||
DocumentDetailsModel:
|
||||
-->
|
||||
<DocumentTreeModel>
|
||||
<Section State="runnning">
|
||||
<Header>
|
||||
<Entry Caption="Active Projects" ItemType="TreeParentType"/>
|
||||
</Header>
|
||||
<Data>
|
||||
<Project Caption="@ProjectName" ItemType="TreeParentType"/>
|
||||
</Data>
|
||||
</Section>
|
||||
<Section State="planned">
|
||||
<Header>
|
||||
<Entry Caption="Planned Projects" ItemType="TreeParentType"/>
|
||||
</Header>
|
||||
<Data>
|
||||
<Project Caption="@ProjectName" ItemType="TreeParentType"/>
|
||||
</Data>
|
||||
</Section>
|
||||
<Section State="finished">
|
||||
<Header>
|
||||
<Entry Caption="Finished Projects" ItemType="TreeParentType"/>
|
||||
</Header>
|
||||
<Data>
|
||||
<Project Caption="@ProjectName" ItemType="TreeParentType"/>
|
||||
</Data>
|
||||
</Section>
|
||||
|
||||
</DocumentTreeModel>
|
||||
|
||||
|
||||
|
||||
<DocumentDetailsModel>
|
||||
|
||||
|
Reference in New Issue
Block a user