Still works...
This commit is contained in:
@@ -71,7 +71,7 @@ namespace XQAppData
|
||||
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( "BrowserStop", 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));
|
||||
@@ -249,3 +249,5 @@ namespace XQAppData
|
||||
}
|
||||
*/
|
||||
}; // namespace XQAppData
|
||||
|
||||
|
||||
|
@@ -32,7 +32,7 @@ XQChildModel::XQChildModel( QObject *parent )
|
||||
|
||||
|
||||
//! erzeugt die basisstruktur des models.
|
||||
|
||||
/*
|
||||
void XQChildModel::initModel(const QString& modelName)
|
||||
{
|
||||
|
||||
@@ -84,16 +84,17 @@ void XQChildModel::initModel(const QString& modelName)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
// empty row:
|
||||
XQNodePtr contentNode = XQNode::make_node( sheetNode->tag_name() );
|
||||
XQItemList emptyRow = _itemFactory.makeEmptyRow( contentNode, sheetNode );
|
||||
appendRow( emptyRow );
|
||||
*/
|
||||
// XQNodePtr contentNode = XQNode::make_node( sheetNode->tag_name() );
|
||||
// XQItemList emptyRow = _itemFactory.makeEmptyRow( contentNode, sheetNode );
|
||||
// appendRow( emptyRow );
|
||||
|
||||
|
||||
} // for
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
//! erzegut den sichtbaren inhalt des models aus einem root-datenknoten.
|
||||
|
@@ -29,13 +29,10 @@ public:
|
||||
explicit XQChildModel(QObject *parent = nullptr);
|
||||
virtual ~XQChildModel() = default;
|
||||
|
||||
void initModel(const QString& modelName) override;
|
||||
void setContent(const XQNodePtr& contentRoot );
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
//void setupViewProperties() override;
|
||||
void initContextMenu() override;
|
||||
|
||||
|
@@ -34,29 +34,6 @@ XQMainModel::XQMainModel(QObject *parent )
|
||||
|
||||
}
|
||||
|
||||
//! initialisiert dieses model über den namen.
|
||||
|
||||
void XQMainModel::initModel(const QString& modelName)
|
||||
{
|
||||
|
||||
// model rootnode finden -> <DocumentTreeModel>
|
||||
XQNodePtr modelSheet = _itemFactory.findModelSheet( modelName ); // throws
|
||||
|
||||
// #1: über alle sections
|
||||
for( auto& section : modelSheet->children() )
|
||||
{
|
||||
// #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 );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! erzeugt einen eintrag in der baum-übersicht.
|
||||
|
||||
@@ -79,7 +56,7 @@ XQItem* XQMainModel::createTreeEntry( XQNodePtr contentNode )
|
||||
return newTreeentry;
|
||||
}
|
||||
}
|
||||
throw XQException( "createTreeEntry: main model should not be emtpy!" );
|
||||
throw XQException( "createTreeEntry: main model should not be empty!" );
|
||||
}
|
||||
|
||||
//! leere default implementation
|
||||
|
@@ -32,7 +32,6 @@ public:
|
||||
explicit XQMainModel(QObject *parent = nullptr);
|
||||
virtual ~XQMainModel() = default;
|
||||
|
||||
void initModel(const QString& modelName) override;
|
||||
XQItem* createTreeEntry( XQNodePtr contentNode );
|
||||
|
||||
public slots:
|
||||
|
@@ -319,7 +319,7 @@ XQItemList XQItemFactory::makeHeader( const XQNodePtr& headerNode )
|
||||
{
|
||||
|
||||
XQItemList list;
|
||||
|
||||
// über alle kinder der <Header> sektion
|
||||
for( const auto& headerEntry : headerNode->children() )
|
||||
{
|
||||
qDebug() << " --- headerEntry: " << headerEntry->tag_name() << ": " << headerEntry->attribute( "ItemType") << headerEntry->attribute( "Caption");
|
||||
|
@@ -83,57 +83,37 @@ XQItem& XQViewModel::xqFirstItem(int row) const
|
||||
return *static_cast<XQItem*>( QStandardItemModel::item(row) );
|
||||
}
|
||||
|
||||
//! create the own model structure
|
||||
void XQViewModel::initModel( const QString& modelName)
|
||||
|
||||
//! initialisiert dieses model über den namen. Es wird hier
|
||||
//! nur die strukur erzeugt, keine inhalte.
|
||||
|
||||
void XQViewModel::initModel(const QString& modelName)
|
||||
{
|
||||
/*
|
||||
model
|
||||
section
|
||||
header
|
||||
data
|
||||
section
|
||||
...
|
||||
|
||||
*/
|
||||
// model rootnode finden -> <DocumentTreeModel>
|
||||
XQNodePtr modelSheet = _itemFactory.findModelSheet( modelName ); // throws
|
||||
|
||||
/*
|
||||
// #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() )
|
||||
// #1: über alle sections
|
||||
for( auto& section : 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() )
|
||||
// #2: (optionalen) header erzeugen
|
||||
const XQNodePtr header = section->find_child_by_tag_name( "Header");
|
||||
if( header )
|
||||
{
|
||||
//qDebug() << "---- kloppo: " << sheetChild->tag_name() << ": " << sheetChild->to_string();
|
||||
extendItemType( sheetChild );
|
||||
XQItemList list = _itemFactory.makeHeader( header );
|
||||
Q_ASSERT(!list.isEmpty());
|
||||
addSection(list, section );
|
||||
}
|
||||
|
||||
|
||||
|
||||
// empty row:
|
||||
//XQNodePtr contentNode = XQNode::make_node( sheetNode->tag_name() );
|
||||
//XQItemList emptyRow = _itemFactory.makeEmptyRow( contentNode, sheetNode );
|
||||
//appendRow( emptyRow );
|
||||
|
||||
|
||||
} // for
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@@ -48,7 +48,6 @@ public:
|
||||
QUndoStack* undoStack();
|
||||
void setUndoStack( QUndoStack* undoStack );
|
||||
|
||||
//! create the own model structure
|
||||
virtual void initModel( const QString& modelName);
|
||||
|
||||
//little helpers
|
||||
@@ -73,7 +72,7 @@ public:
|
||||
|
||||
/*!
|
||||
|
||||
Derzeit wir die default-implementierung von data/setData genutzt. hier wäre dann die
|
||||
Derzeit wird die default-implementierung von data/setData genutzt. hier wäre dann die
|
||||
Stelle um setData & data an externe 'handler' umzubiegen, siehe giovannies 'model-injection'
|
||||
|
||||
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override
|
||||
|
Reference in New Issue
Block a user