File indexing completed on 2024-04-28 17:06:20
0001 /* 0002 SPDX-FileCopyrightText: 2010 Jan Lepper <krusader@users.sourceforge.net> 0003 SPDX-FileCopyrightText: 2010-2022 Krusader Krew <https://krusader.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef KRLAYOUTFACTORY_H 0009 #define KRLAYOUTFACTORY_H 0010 0011 // QtCore 0012 #include <QHash> 0013 #include <QString> 0014 // QtWidgets 0015 #include <QBoxLayout> 0016 #include <QLayout> 0017 #include <QWidget> 0018 // QtXml 0019 #include <QDomElement> 0020 0021 class ListPanel; 0022 0023 class KrLayoutFactory 0024 { 0025 public: 0026 KrLayoutFactory(ListPanel *panel, QHash<QString, QWidget *> &widgets) 0027 : panel(panel) 0028 , widgets(widgets) 0029 { 0030 } 0031 // creates the layout and adds the widgets to it 0032 QLayout *createLayout(QString layoutName = QString()); 0033 0034 static QStringList layoutNames(); 0035 static QString layoutDescription(const QString &layoutName); 0036 0037 private: 0038 QBoxLayout *createLayout(const QDomElement &e, QWidget *parent); 0039 QWidget *createFrame(const QDomElement &e, QWidget *parent); 0040 0041 static bool parseFiles(); 0042 static bool parseFile(const QString &path, QDomDocument &doc); 0043 static bool parseResource(const QString &path, QDomDocument &doc); 0044 static bool parseContent(const QByteArray &content, const QString &fileName, QDomDocument &doc); 0045 static void getLayoutNames(const QDomDocument &doc, QStringList &names); 0046 static QDomElement findLayout(const QDomDocument &doc, const QString &layoutName); 0047 0048 ListPanel *panel; 0049 QHash<QString, QWidget *> &widgets; 0050 0051 static bool _parsed; 0052 static QDomDocument _mainDoc; 0053 static QList<QDomDocument> _extraDocs; 0054 }; 0055 0056 #endif