securitydialogs/SecUi/SecUiTestQt/modelfactory.cpp
author hgs
Wed, 20 Oct 2010 14:51:23 +0300
changeset 66 67b3e3c1fc87
permissions -rw-r--r--
201041

#include <e32debug.h>

#include "modelfactory.h"

#include <hbnamespace.h>
#include <hbicon.h>

#include <QStandardItemModel>

void insertMixedItems(QStandardItem *parent)
{
    QString longSecondaryText;
    for (int i = 0; i < 20; ++i) {
        longSecondaryText.append("Second text ");
    }

    HbIcon icon(QString(":/demo/generic"));

    QVariantList strings;
    QVariantList icons;

    // text
    QStandardItem *child = new QStandardItem();
    strings << "text-1";
    child->setData(strings, Qt::DisplayRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // text + icon
    child = new QStandardItem();
    strings << "text-1+icon-2";
    icons << QVariant() << icon;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // icon + text
    child = new QStandardItem();
    strings << "icon-1+text-1";
    icons << icon;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // icon + text + icon
    child = new QStandardItem();
    strings << "icon-1+text-1+icon-2";
    icons << icon << icon;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // text + text
    child = new QStandardItem();
    strings << "text-1+text-3" << QVariant() << "third text";
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // text + text + icon
    child = new QStandardItem();
    strings << "text-1+text-3+icon-2" << QVariant() << "third text";
    icons << QVariant() << icon;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // icon + text + text
    child = new QStandardItem();
    strings << "icon-1+text-1+text-3" << QVariant() << "third text";
    icons << icon;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // icon + text + text + icon
    child = new QStandardItem();
    strings << "icon-1+text-1+text-3+icon-2" << QVariant() << "third text";
    icons << icon << icon;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // 2 texts
    child = new QStandardItem();
    strings << "text-1+text-2" << longSecondaryText;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // 2 texts + icon
    child = new QStandardItem();
    strings << "text-1+text-2+icon-2" << longSecondaryText;
    icons << QVariant() << icon;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // icon + 2 texts
    child = new QStandardItem();
    strings << "icon-1+text-1+text-2" << longSecondaryText;
    icons << icon;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // icon + 2 texts + icon
    child = new QStandardItem();
    strings << "icon-1+text-1+text-2+icon-2" << longSecondaryText;
    icons << icon << icon;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // 3 texts
    child = new QStandardItem();
    strings << "text-1+text-2+text-3" << longSecondaryText << "third text";
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // 3 texts + icon
    child = new QStandardItem();
    strings << "text-1+text-2+text-3+icon-2" << longSecondaryText << "third text";
    icons << QVariant() << icon;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // icon + 3 texts
    child = new QStandardItem();
    strings << "icon-1+text-1+text-2+text-3" << longSecondaryText << "third text";
    icons << icon;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // icon + 3 texts + icon
    child = new QStandardItem();
    strings << "icon-1+text-1+text-2+text-3+icon-2" << longSecondaryText << "third text";
    icons << icon << icon;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // separator
    child = new QStandardItem();
    strings << "Separator";
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    child->setData(Hb::SeparatorItem, Hb::ItemTypeRole);
    child->setEnabled(false);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // disabled
    child = new QStandardItem();
    strings << "Disabled item" << longSecondaryText << "third text";
    icons << icon << icon;
    child->setData(strings, Qt::DisplayRole);
    child->setData(icons, Qt::DecorationRole);
    child->setEnabled(false);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // disabled parent item
    child = new QStandardItem();
    strings << "Disabled parent item";
    child->setData(strings, Qt::DisplayRole);
    child->setData(Hb::ParentItem, Hb::ItemTypeRole);
    child->setEnabled(false);
    parent->appendRow(child);

    strings.clear();
    icons.clear();

    // disabled parent item's child
    QStandardItem *child2 = new QStandardItem();
    strings << "Disabled parent item's child";
    child2->setData(strings, Qt::DisplayRole);
    child2->setEnabled(false);
    child->appendRow(child2);

}

QStandardItemModel *ModelFactory::populateTreeModelMail()
{
    QStandardItemModel* model = new QStandardItemModel();

    //________________________________________
    int messageRole = Qt::UserRole+1;
    int dateRole = Qt::UserRole+2;

    QStandardItem *date = new QStandardItem;
    date->setData(QString("27. lokakuuta 2009"), dateRole);
    model->appendRow(date);

    QStandardItem *message = new QStandardItem;
    QStringList data;
    data << "Fotonetti.com" << "19:51:14" << "Fotonetti Pro";
    message->setData(data, messageRole);
    date->appendRow(message);

    date = new QStandardItem;
    date->setData(QString("25. lokakuuta 2009"), dateRole);
    model->appendRow(date);

    message = new QStandardItem;
    data.clear();
    data << "Amazon.co.uk" << "5:51:52" << "Your Amazon Order # 123-3456789-0123 ";
    message->setData(data, messageRole);
    date->appendRow(message);

    date = new QStandardItem;
    date->setData(QString("23. lokakuuta 2009"), dateRole);
    model->appendRow(date);

    message = new QStandardItem;
    data.clear();
    data << "MBnet" << "12:12:12" << "MBnetin pullopostia 43/2009: Aurinkoa odotellessa... ";
    message->setData(data, messageRole);
    date->appendRow(message);

    date = new QStandardItem;
    date->setData(QString("21. lokakuuta 2009"), dateRole);
    model->appendRow(date);

    message = new QStandardItem;
    data.clear();
    data << "Skype" << "21:59:20" << "Skype 4.1 - Too late";
    message->setData(data, messageRole);
    date->appendRow(message);
    
    message = new QStandardItem;
    data.clear();
    data << "Skype" << "20:58:19" << "Skype 4.1 - Act now";
    message->setData(data, messageRole);
    date->appendRow(message);
    
    message = new QStandardItem;
    data.clear();
    data << "Skype" << "19:57:18" << "Skype 4.1 - Time to act";
    message->setData(data, messageRole);
    date->appendRow(message);

    message = new QStandardItem;
    data.clear();
    data << "Skype" << "18:56:17" << "Skype 4.1 - New release";
    message->setData(data, messageRole);
    date->appendRow(message);

    date = new QStandardItem;
    date->setData(QString("5. lokakuuta 2009"), dateRole);
    model->appendRow(date);

    message = new QStandardItem;
    data.clear();
    data << "Hit Booster" << "21:12:00" << "Have your own website traffic generator ";
    message->setData(data, messageRole);
    date->appendRow(message);

    message = new QStandardItem;
    data.clear();
    data << "noreply@helsinkiexpert.fi" << "11:08:01" << "Terveisiä Helsinki Expertiltä";
    message->setData(data, messageRole);
    date->appendRow(message);


    return model;
}


QStandardItemModel *ModelFactory::populateTreeModelDefault()
{
    QStandardItemModel* model = new QStandardItemModel();

    //________________________________________

    QStandardItem *paintDevice = new QStandardItem;
    paintDevice->setText(QString("QPaintDevice"));
    model->appendRow(paintDevice);

    QStandardItem *pixmap = new QStandardItem;
    pixmap->setText(QString("QPixmap"));
    paintDevice->appendRow(pixmap);

    QStandardItem *bitmap = new QStandardItem;
    bitmap->setText(QString("QBitmap"));
    pixmap->appendRow(bitmap);

    QStandardItem *customRasterPaintDevice = new QStandardItem;
    customRasterPaintDevice->setText(QString("QCustomRasterPaintDevice"));
    paintDevice->appendRow(customRasterPaintDevice);

    QStandardItem *glPixelBuffer = new QStandardItem;
    glPixelBuffer->setText(QString("QGLPixelBuffer"));
    paintDevice->appendRow(glPixelBuffer);

    QStandardItem *image = new QStandardItem;
    image->setText(QString("QImage"));
    paintDevice->appendRow(image);

    QStandardItem *picture = new QStandardItem;
    picture->setText(QString("QPicture"));
    paintDevice->appendRow(picture);

    QStandardItem *printer = new QStandardItem;
    printer->setText(QString("QPrinter"));
    paintDevice->appendRow(printer);

    QStandardItem *svgGenerator = new QStandardItem;
    svgGenerator->setText(QString("QSvgGenerator"));
    paintDevice->appendRow(svgGenerator);

    //________________________________________

    QStandardItem *object = new QStandardItem;
    object->setText(QString("QObject"));
    model->appendRow(object);

    QStandardItem *widget = new QStandardItem;
    widget->setText(QString("QWidget"));
    object->appendRow(widget);

    QStandardItem *absItemModel = new QStandardItem;
    absItemModel->setText(QString("QAbstractItemModel"));
    object->appendRow(absItemModel);

    QStandardItem *absListModel = new QStandardItem;
    absListModel->setText(QString("QAbstractListModel"));
    absItemModel->appendRow(absListModel);

    QStandardItem *strListModel = new QStandardItem;
    strListModel->setText(QString("QStringListModel"));
    absListModel->appendRow(strListModel);

    QStandardItem *absProxyModel = new QStandardItem;
    absProxyModel->setText(QString("QAbstractProxyModel"));
    absItemModel->appendRow(absProxyModel);

    QStandardItem *sFilterProxyModel = new QStandardItem;
    sFilterProxyModel->setText(QString("QSortFilterProxyModel"));
    absProxyModel->appendRow(sFilterProxyModel);

    QStandardItem *absTableModel = new QStandardItem;
    absTableModel->setText(QString("QAbstractTableModel"));
    absItemModel->appendRow(absTableModel);

    QStandardItem *sqlQueryModel = new QStandardItem;
    sqlQueryModel->setText(QString("QSqlQueryModel"));
    absTableModel->appendRow(sqlQueryModel);

    QStandardItem *sqlTableModel = new QStandardItem;
    sqlTableModel->setText(QString("QSqlTableModel"));
    sqlQueryModel->appendRow(sqlTableModel);

    QStandardItem *sqlRTableModel = new QStandardItem;
    sqlRTableModel->setText(QString("QSqlRelationalTableModel"));
    sqlTableModel->appendRow(sqlRTableModel);

    QStandardItem *dirModel = new QStandardItem;
    dirModel->setText(QString("QDirModel"));
    absItemModel->appendRow(dirModel);

    QStandardItem *proxyModel = new QStandardItem;
    proxyModel->setText(QString("QProxyModel"));
    absItemModel->appendRow(proxyModel);

    QStandardItem *stanItemModel = new QStandardItem;
    stanItemModel->setText(QString("QStandardItemModel"));
    absItemModel->appendRow(stanItemModel);

    QStandardItem *ioDevice = new QStandardItem;
    ioDevice->setText(QString("QIODevice"));
    object->appendRow(ioDevice);

    QStandardItem *absSocket = new QStandardItem;
    absSocket->setText(QString("QAbstractSocket"));
    ioDevice->appendRow(absSocket);

    QStandardItem *topSocket = new QStandardItem;
    topSocket->setText(QString("QTopSocket"));
    absSocket->appendRow(topSocket);

    QStandardItem *sslSocket = new QStandardItem;
    sslSocket->setText(QString("QSslSocket"));
    topSocket->appendRow(sslSocket);

    QStandardItem *udpSocket = new QStandardItem;
    udpSocket->setText(QString("QUdpSocket"));
    absSocket->appendRow(udpSocket);

    QStandardItem *file = new QStandardItem;
    file->setText(QString("QFile"));
    ioDevice->appendRow(file);

    QStandardItem *tmpFile = new QStandardItem;
    tmpFile->setText(QString("QTemporaryFile"));
    file->appendRow(tmpFile);

    QStandardItem *buffer = new QStandardItem;
    buffer->setText(QString("QBuffer"));
    ioDevice->appendRow(buffer);

    QStandardItem *process = new QStandardItem;
    process->setText(QString("QProcess"));
    ioDevice->appendRow(process);

    QStandardItem *validator = new QStandardItem;
    validator->setText(QString("QValidator"));
    object->appendRow(validator);

    QStandardItem *dValidator = new QStandardItem;
    dValidator->setText(QString("QDoubleValidator"));
    validator->appendRow(dValidator);

    QStandardItem *intValidator = new QStandardItem;
    intValidator->setText(QString("QIntValidator"));
    validator->appendRow(intValidator);

    QStandardItem *rgValidator = new QStandardItem;
    rgValidator->setText(QString("QRegExpValidator"));
    validator->appendRow(rgValidator);

    QStandardItem *action = new QStandardItem;
    action->setText(QString("QAction"));
    object->appendRow(action);

    QStandardItem *menuItem = new QStandardItem;
    menuItem->setText(QString("QMenuItem"));
    action->appendRow(menuItem);

    QStandardItem *widgetAction = new QStandardItem;
    widgetAction->setText(QString("QWidgetAction"));
    action->appendRow(widgetAction);

    QStandardItem *dBusAbsInterface = new QStandardItem;
    dBusAbsInterface->setText(QString("QDBusAbstractInterface"));
    object->appendRow(dBusAbsInterface);

    QStandardItem *dBusConInterface = new QStandardItem;
    dBusConInterface->setText(QString("QDBusConnectionInterface"));
    dBusAbsInterface->appendRow(dBusConInterface);

    QStandardItem *dBusInterface = new QStandardItem;
    dBusInterface->setText(QString("QDBusInterface"));
    dBusAbsInterface->appendRow(dBusInterface);

    QStandardItem *textObject = new QStandardItem;
    textObject->setText(QString("QTextObject"));
    object->appendRow(textObject);

    QStandardItem *textBlockGroup = new QStandardItem;
    textBlockGroup->setText(QString("QTextBlockGroup"));
    textObject->appendRow(textBlockGroup);

    QStandardItem *textList = new QStandardItem;
    textList->setText(QString("QTextList"));
    textBlockGroup->appendRow(textList);

    QStandardItem *textFrame = new QStandardItem;
    textFrame->setText(QString("QTextFrame"));
    textObject->appendRow(textFrame);

    QStandardItem *textTable = new QStandardItem;
    textTable->setText(QString("QTextTable"));
    textFrame->appendRow(textTable);

    QStandardItem *absItemDelegate = new QStandardItem;
    absItemDelegate->setText(QString("QAbstractItemDelegate"));
    object->appendRow(absItemDelegate);

    QStandardItem *itemDelegate = new QStandardItem;
    itemDelegate->setText(QString("QItemDelegate"));
    absItemDelegate->appendRow(itemDelegate);

    QStandardItem *sqlRelationalDelegate = new QStandardItem;
    sqlRelationalDelegate->setText(QString("QSqlRelationalDelegate"));
    itemDelegate->appendRow(sqlRelationalDelegate);

    //________________________________________

    QStandardItem *layoutItem = new QStandardItem;
    layoutItem->setText(QString("QLayoutItem"));
    model->appendRow(layoutItem);

    QStandardItem *layout = new QStandardItem;
    layout->setText(QString("QLayout"));
    layoutItem->appendRow(layout);

    QStandardItem *boxLayout = new QStandardItem;
    boxLayout->setText(QString("QBoxLayout"));
    layout->appendRow(boxLayout);

    QStandardItem *hBoxLayout = new QStandardItem;
    hBoxLayout->setText(QString("QHBoxLayout"));
    boxLayout->appendRow(hBoxLayout);

    QStandardItem *vBoxLayout = new QStandardItem;
    vBoxLayout->setText(QString("QVBoxLayout"));
    boxLayout->appendRow(vBoxLayout);

    QStandardItem *gridLayout = new QStandardItem;
    gridLayout->setText(QString("QGridLayout"));
    layout->appendRow(gridLayout);

    QStandardItem *stackedLayout = new QStandardItem;
    stackedLayout->setText(QString("QStackedLayout"));
    layout->appendRow(stackedLayout);

    QStandardItem *spacerItem = new QStandardItem;
    spacerItem->setText(QString("QSpacerItem"));
    layoutItem->appendRow(spacerItem);

    QStandardItem *widgetItem = new QStandardItem;
    widgetItem->setText(QString("QWidgetItem"));
    layoutItem->appendRow(widgetItem);

    //________________________________________

    QStandardItem *axBase = new QStandardItem;
    axBase->setText(QString("QAxBase"));
    model->appendRow(axBase);

    QStandardItem *axWidget = new QStandardItem;
    axWidget->setText(QString("QAxWidget"));
    axBase->appendRow(axWidget);

    QStandardItem *axObject = new QStandardItem;
    axObject->setText(QString("QAxObject"));
    axBase->appendRow(axObject);

    QStandardItem *axScriptEngine = new QStandardItem;
    axScriptEngine->setText(QString("QAxScriptEngine"));
    axObject->appendRow(axScriptEngine);

    //________________________________________

    QStandardItem *absFormBuilder = new QStandardItem;
    absFormBuilder->setText(QString("QAbstractFormBuilder"));
    model->appendRow(absFormBuilder);

    QStandardItem *formBuilder = new QStandardItem;
    formBuilder->setText(QString("QFormBuilder"));
    absFormBuilder->appendRow(formBuilder);

    //________________________________________

    QStandardItem *domNote = new QStandardItem;
    domNote->setText(QString("QDomNote"));
    model->appendRow(domNote);

    QStandardItem *domCharData = new QStandardItem;
    domCharData->setText(QString("QDomCharacterData"));
    domNote->appendRow(domCharData);

    QStandardItem *domText = new QStandardItem;
    domText->setText(QString("QDomText"));
    domCharData->appendRow(domText);

    QStandardItem *domCDATASection = new QStandardItem;
    domCDATASection->setText(QString("QDomCDATASection"));
    domText->appendRow(domCDATASection);

    QStandardItem *domComment = new QStandardItem;
    domComment->setText(QString("QDomComment"));
    domCharData->appendRow(domComment);

    QStandardItem *domAttr = new QStandardItem;
    domAttr->setText(QString("QDomAttr"));
    domNote->appendRow(domAttr);

    QStandardItem *domDoc = new QStandardItem;
    domDoc->setText(QString("QDomDocument"));
    domNote->appendRow(domDoc);

    QStandardItem *domDocFrag = new QStandardItem;
    domDocFrag->setText(QString("QDomDocumentFragment"));
    domNote->appendRow(domDocFrag);

    QStandardItem *domDocType = new QStandardItem;
    domDocType->setText(QString("QDomDocumentType"));
    domNote->appendRow(domDocType);

    QStandardItem *domElement = new QStandardItem;
    domElement->setText(QString("QDomElement"));
    domNote->appendRow(domElement);

    QStandardItem *domEntity = new QStandardItem;
    domEntity->setText(QString("QDomEntity"));
    domNote->appendRow(domEntity);

    QStandardItem *domEntityRef = new QStandardItem;
    domEntityRef->setText(QString("QDomEntityReference"));
    domNote->appendRow(domEntityRef);

    QStandardItem *domNotation = new QStandardItem;
    domNotation->setText(QString("QDomNotation"));
    domNote->appendRow(domNotation);

    QStandardItem *domProcInst = new QStandardItem;
    domProcInst->setText(QString("QDomProcessingInstruction"));
    domNote->appendRow(domProcInst);

    //________________________________________

    QStandardItem *xmlContentHandler = new QStandardItem;
    xmlContentHandler->setText(QString("QXmlContentHandler"));
    model->appendRow(xmlContentHandler);

    QStandardItem *xmlDTDHandler = new QStandardItem;
    xmlDTDHandler->setText(QString("QXmlDTDHandler"));
    model->appendRow(xmlDTDHandler);

    QStandardItem *xmlDecHandler = new QStandardItem;
    xmlDecHandler->setText(QString("QXmlDecHandler"));
    model->appendRow(xmlDecHandler);

    QStandardItem *xmlEntityHandler = new QStandardItem;
    xmlEntityHandler->setText(QString("QXmlEntityHandler"));
    model->appendRow(xmlEntityHandler);

    QStandardItem *xmlErrorHandler = new QStandardItem;
    xmlErrorHandler->setText(QString("QXmlErrorHandler"));
    model->appendRow(xmlErrorHandler);

    QStandardItem *xmlLexicalHandler = new QStandardItem;
    xmlLexicalHandler->setText(QString("QXmlLexicalHandler"));
    model->appendRow(xmlLexicalHandler);

    QStandardItem *xmlDefaultHandler = new QStandardItem;
    xmlDefaultHandler->setText(QString("QXmlDefaultHandler"));
    xmlContentHandler->appendRow(xmlDefaultHandler);

    //________________________________________

    QStandardItem *xmlReader = new QStandardItem;
    xmlReader->setText(QString("QXmlReader"));
    model->appendRow(xmlReader);

    QStandardItem *xmlSimpleReader = new QStandardItem;
    xmlSimpleReader->setText(QString("QXmlSimpleReader"));
    xmlReader->appendRow(xmlSimpleReader);

    //________________________________________

    QStandardItem *absFileEngine = new QStandardItem;
    absFileEngine->setText(QString("QAbstractFileEngine"));
    model->appendRow(absFileEngine);

    QStandardItem *fsFileEngine = new QStandardItem;
    fsFileEngine->setText(QString("QFSFileEngine"));
    absFileEngine->appendRow(fsFileEngine);

    //________________________________________

    QStandardItem *genArg = new QStandardItem;
    genArg->setText(QString("QGenericArgument"));
    model->appendRow(genArg);

    QStandardItem *genRetArg = new QStandardItem;
    genRetArg->setText(QString("QGenericReturnArgument"));
    genArg->appendRow(genRetArg);

    //________________________________________

    QStandardItem *textStream = new QStandardItem;
    textStream->setText(QString("QTextStream"));
    model->appendRow(textStream);

    QStandardItem *textIStream = new QStandardItem;
    textIStream->setText(QString("QTextIStream"));
    textStream->appendRow(textIStream);

    QStandardItem *textOStream = new QStandardItem;
    textOStream->setText(QString("QTextOStream"));
    textStream->appendRow(textOStream);

    //________________________________________

    QStandardItem *screen = new QStandardItem;
    screen->setText(QString("QScreen"));
    model->appendRow(screen);

    QStandardItem *vncScreen = new QStandardItem;
    vncScreen->setText(QString("QVNCScreen"));
    screen->appendRow(vncScreen);

    //________________________________________

    QStandardItem *wsMouseHandler = new QStandardItem;
    wsMouseHandler->setText(QString("QWSMouseHandler"));
    model->appendRow(wsMouseHandler);

    QStandardItem *calWsMouseHandler = new QStandardItem;
    calWsMouseHandler->setText(QString("QWSCalibratedMouseHandler"));
    wsMouseHandler->appendRow(calWsMouseHandler);

    //________________________________________

    QStandardItem *painter = new QStandardItem;
    painter->setText(QString("QPainter"));
    model->appendRow(painter);

    QStandardItem *sPainter = new QStandardItem;
    sPainter->setText(QString("QStylePainter"));
    painter->appendRow(sPainter);

    //________________________________________

    QStandardItem *paintEngine = new QStandardItem;
    paintEngine->setText(QString("QPaintEngine"));
    model->appendRow(paintEngine);


    QStandardItem *paintREngine = new QStandardItem;
    paintREngine->setText(QString("QRasterPaintEngine"));
    paintEngine->appendRow(paintREngine);

    //________________________________________

    QStandardItem *palette = new QStandardItem;
    palette->setText(QString("QPalette"));
    model->appendRow(palette);

    QStandardItem *colorGroup = new QStandardItem;
    colorGroup->setText(QString("QColorGroup"));
    palette->appendRow(colorGroup);

    //________________________________________

    QStandardItem *qevent = new QStandardItem;
    qevent->setText(QString("QEvent"));
    model->appendRow(qevent);

    return model;
}

QStandardItemModel *ModelFactory::populateTreeModelSimple()
{
    QStandardItemModel* model = new QStandardItemModel();

    // =====================================================================
    // Depth 1
    // =====================================================================
    QStandardItem *depth1_parent0 = new QStandardItem(QString("Lock"));
    QStandardItem *depth1_parent1 = new QStandardItem(QString("Settings"));
    QStandardItem *depth1_parent2 = new QStandardItem(QString("Handler"));
    QStandardItem *depth1_parent3 = new QStandardItem(QString("Notifier"));
    QStandardItem *depth1_parent4 = new QStandardItem(QString("Properties"));
    QStandardItem *depth1_parent5 = new QStandardItem(QString("Repository"));
    QStandardItem *depth1_parent6 = new QStandardItem(QString("Other"));
    QStandardItem *depth1_parent7 = new QStandardItem(QString("KeyLockPolicy"));
    QStandardItem *depth1_parent8 = new QStandardItem(QString("Schedule"));
    QStandardItem *depth1_parent9 = new QStandardItem(QString("Settings2"));

    depth1_parent0->setData(Hb::ParentItem, Hb::ItemTypeRole);
    depth1_parent1->setData(Hb::ParentItem, Hb::ItemTypeRole);
    depth1_parent2->setData(Hb::ParentItem, Hb::ItemTypeRole);
    depth1_parent3->setData(Hb::ParentItem, Hb::ItemTypeRole);
    depth1_parent4->setData(Hb::ParentItem, Hb::ItemTypeRole);
    depth1_parent5->setData(Hb::ParentItem, Hb::ItemTypeRole);
    depth1_parent6->setData(Hb::ParentItem, Hb::ItemTypeRole);
    depth1_parent7->setData(Hb::ParentItem, Hb::ItemTypeRole);
    depth1_parent8->setData(Hb::ParentItem, Hb::ItemTypeRole);
    depth1_parent9->setData(Hb::ParentItem, Hb::ItemTypeRole);

    model->setItem(0,0,depth1_parent0);
    model->setItem(1,0,depth1_parent1);
    model->setItem(2,0,depth1_parent2);
    model->setItem(3,0,depth1_parent3);
    model->setItem(4,0,depth1_parent4);
    model->setItem(5,0,depth1_parent5);
    model->setItem(6,0,depth1_parent6);
    model->setItem(7,0,depth1_parent7);
    model->setItem(8,0,depth1_parent8);
    model->setItem(9,0,depth1_parent9);


		RDebug::Printf( "%s %s (%u) Lock depth2-0=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
    QStandardItem *depth2_item00 = new QStandardItem(QString("00:xxx"));
    QStandardItem *depth2_item01 = new QStandardItem(QString("01:DeviceLockOff"));
    QStandardItem *depth2_item02 = new QStandardItem(QString("02:KeyguardOn+Note"));
    QStandardItem *depth2_item03 = new QStandardItem(QString("03:KeyguardOff"));
    QStandardItem *depth2_item04 = new QStandardItem(QString("04:OfferDevicelock"));
    QStandardItem *depth2_item05 = new QStandardItem(QString("05:KeyguardOn-Note"));
    QStandardItem *depth2_item06 = new QStandardItem(QString("06:Wait20-DeviceLockOff"));
    QStandardItem *depth2_item07 = new QStandardItem(QString("07:Wait20-KeyguardOff"));
    QStandardItem *depth2_item08 = new QStandardItem(QString("08:Wait20-ShowKeysLockedNote"));
    QStandardItem *depth2_item09 = new QStandardItem(QString("09:DeviceLockOn"));

    depth1_parent0->setChild(0, 0, depth2_item00);
    depth1_parent0->setChild(1, 0, depth2_item01);
    depth1_parent0->setChild(2, 0, depth2_item02);
    depth1_parent0->setChild(3, 0, depth2_item03);
    depth1_parent0->setChild(4, 0, depth2_item04);
    depth1_parent0->setChild(5, 0, depth2_item05);
    depth1_parent0->setChild(6, 0, depth2_item06);
    depth1_parent0->setChild(7, 0, depth2_item07);
    depth1_parent0->setChild(8, 0, depth2_item08);
    depth1_parent0->setChild(9, 0, depth2_item09);
    
		RDebug::Printf( "%s %s (%u) Settings depth2-1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
    QStandardItem *depth2_item10 = new QStandardItem(QString("10:Call1"));
    QStandardItem *depth2_item11 = new QStandardItem(QString("11:ChangePinL"));
    QStandardItem *depth2_item12 = new QStandardItem(QString("12:IsLockEnabledL"));
    QStandardItem *depth2_item13 = new QStandardItem(QString("13:AskSecCodeL"));
    QStandardItem *depth2_item14 = new QStandardItem(QString("14:AskPin2L"));
    QStandardItem *depth2_item15 = new QStandardItem(QString("15:GetFdnMode"));
    QStandardItem *depth2_item16 = new QStandardItem(QString("16:IsUpinBlocked"));
    QStandardItem *depth2_item17 = new QStandardItem(QString("17:ChangeSecCodeL"));
    QStandardItem *depth2_item18 = new QStandardItem(QString("18:ChangeAutoLockPeriodL=30"));
    QStandardItem *depth2_item19 = new QStandardItem(QString("19:ChangeAutoLockPeriodL=0"));

    depth1_parent1->setChild(0, 0, depth2_item10);
    depth1_parent1->setChild(1, 0, depth2_item11);
    depth1_parent1->setChild(2, 0, depth2_item12);
    depth1_parent1->setChild(3, 0, depth2_item13);
    depth1_parent1->setChild(4, 0, depth2_item14);
    depth1_parent1->setChild(5, 0, depth2_item15);
    depth1_parent1->setChild(6, 0, depth2_item16);
    depth1_parent1->setChild(7, 0, depth2_item17);
    depth1_parent1->setChild(8, 0, depth2_item18);
    depth1_parent1->setChild(9, 0, depth2_item19);
    
		RDebug::Printf( "%s %s (%u) Handler depth2-2=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
    QStandardItem *depth2_item20 = new QStandardItem(QString("20:Notif.EPin1Required"));
    QStandardItem *depth2_item21 = new QStandardItem(QString("21:EPin1Required"));
    QStandardItem *depth2_item22 = new QStandardItem(QString("22:EPin2Required"));
    QStandardItem *depth2_item23 = new QStandardItem(QString("23:EPhonePasswordRequired"));
    QStandardItem *depth2_item24 = new QStandardItem(QString("24:EPuk1Required"));
    QStandardItem *depth2_item25 = new QStandardItem(QString("25:EPuk2Required"));
    QStandardItem *depth2_item26 = new QStandardItem(QString("26:EUniversalPinRequired"));
    QStandardItem *depth2_item27 = new QStandardItem(QString("27:EUniversalPukRequired"));
    QStandardItem *depth2_item28 = new QStandardItem(QString("28:xxx"));
    QStandardItem *depth2_item29 = new QStandardItem(QString("29:xxx"));

    depth1_parent2->setChild(0, 0, depth2_item20);
    depth1_parent2->setChild(1, 0, depth2_item21);
    depth1_parent2->setChild(2, 0, depth2_item22);
    depth1_parent2->setChild(3, 0, depth2_item23);
    depth1_parent2->setChild(4, 0, depth2_item24);
    depth1_parent2->setChild(5, 0, depth2_item25);
    depth1_parent2->setChild(6, 0, depth2_item26);
    depth1_parent2->setChild(7, 0, depth2_item27);
    depth1_parent2->setChild(8, 0, depth2_item28);
    depth1_parent2->setChild(9, 0, depth2_item29);
    
		RDebug::Printf( "%s %s (%u) Notifier depth2-3=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
    QStandardItem *depth2_item30 = new QStandardItem(QString("30:Op.0"));
    QStandardItem *depth2_item31 = new QStandardItem(QString("31:EPin1Required"));
    QStandardItem *depth2_item32 = new QStandardItem(QString("32:EPin2Required"));
    QStandardItem *depth2_item33 = new QStandardItem(QString("33:EPhonePasswordRequired"));
    QStandardItem *depth2_item34 = new QStandardItem(QString("34:EPuk1Required"));
    QStandardItem *depth2_item35 = new QStandardItem(QString("35:EPuk2Required"));
    QStandardItem *depth2_item36 = new QStandardItem(QString("36:EUniversalPinRequired"));
    QStandardItem *depth2_item37 = new QStandardItem(QString("37:EUniversalPukRequired"));
    QStandardItem *depth2_item38 = new QStandardItem(QString("38:Op.0x222"));
    QStandardItem *depth2_item39 = new QStandardItem(QString("39:Op.0"));

    depth1_parent3->setChild(0, 0, depth2_item30);
    depth1_parent3->setChild(1, 0, depth2_item31);
    depth1_parent3->setChild(2, 0, depth2_item32);
    depth1_parent3->setChild(3, 0, depth2_item33);
    depth1_parent3->setChild(4, 0, depth2_item34);
    depth1_parent3->setChild(5, 0, depth2_item35);
    depth1_parent3->setChild(6, 0, depth2_item36);
    depth1_parent3->setChild(7, 0, depth2_item37);
    depth1_parent3->setChild(8, 0, depth2_item38);
    depth1_parent3->setChild(9, 0, depth2_item39);
    
		RDebug::Printf( "%s %s (%u) Properties depth2-4=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
    QStandardItem *depth2_item40 = new QStandardItem(QString("40:KAknKeyguardStatus=8"));
    QStandardItem *depth2_item41 = new QStandardItem(QString("41:Pass=1234"));
    QStandardItem *depth2_item42 = new QStandardItem(QString("42:Pass=12345"));
    QStandardItem *depth2_item43 = new QStandardItem(QString("43:Pass=20499"));
    QStandardItem *depth2_item44 = new QStandardItem(QString("44:Read-Prop"));
    QStandardItem *depth2_item45 = new QStandardItem(QString("45:Read-Prop8"));
    QStandardItem *depth2_item46 = new QStandardItem(QString("46:Stop-Prop8"));
    QStandardItem *depth2_item47 = new QStandardItem(QString("47:EAutolockOff"));
    QStandardItem *depth2_item48 = new QStandardItem(QString("48:EManualLocked"));
    QStandardItem *depth2_item49 = new QStandardItem(QString("49:Uninitialized"));

    depth1_parent4->setChild(0, 0, depth2_item40);
    depth1_parent4->setChild(1, 0, depth2_item41);
    depth1_parent4->setChild(2, 0, depth2_item42);
    depth1_parent4->setChild(3, 0, depth2_item43);
    depth1_parent4->setChild(4, 0, depth2_item44);
    depth1_parent4->setChild(5, 0, depth2_item45);
    depth1_parent4->setChild(6, 0, depth2_item46);
    depth1_parent4->setChild(7, 0, depth2_item47);
    depth1_parent4->setChild(8, 0, depth2_item48);
    depth1_parent4->setChild(9, 0, depth2_item49);
    
		RDebug::Printf( "%s %s (%u) Repository depth2-5=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
    QStandardItem *depth2_item50 = new QStandardItem(QString("50:KeyguardTime=0s"));
    QStandardItem *depth2_item51 = new QStandardItem(QString("51:KeyguardTime=10s"));
    QStandardItem *depth2_item52 = new QStandardItem(QString("52:KeyguardTime=30s"));
    QStandardItem *depth2_item53 = new QStandardItem(QString("53:KeyguardT=10+60s"));
    QStandardItem *depth2_item54 = new QStandardItem(QString("54:AutoLockTime=0m"));
    QStandardItem *depth2_item55 = new QStandardItem(QString("55:AutoLockTime=1m"));
    QStandardItem *depth2_item56 = new QStandardItem(QString("56:AutoLockTime=2m"));
    QStandardItem *depth2_item57 = new QStandardItem(QString("57:AutoLockT=65535m"));
    QStandardItem *depth2_item58 = new QStandardItem(QString("58:read"));
    QStandardItem *depth2_item59 = new QStandardItem(QString("59:xxx"));

    depth1_parent5->setChild(0, 0, depth2_item50);
    depth1_parent5->setChild(1, 0, depth2_item51);
    depth1_parent5->setChild(2, 0, depth2_item52);
    depth1_parent5->setChild(3, 0, depth2_item53);
    depth1_parent5->setChild(4, 0, depth2_item54);
    depth1_parent5->setChild(5, 0, depth2_item55);
    depth1_parent5->setChild(6, 0, depth2_item56);
    depth1_parent5->setChild(7, 0, depth2_item57);
    depth1_parent5->setChild(8, 0, depth2_item58);
    depth1_parent5->setChild(9, 0, depth2_item59);
    
		RDebug::Printf( "%s %s (%u) Other depth2-6=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
    QStandardItem *depth2_item60 = new QStandardItem(QString("60:Wait30+Cancel_P&S"));
    QStandardItem *depth2_item61 = new QStandardItem(QString("61:Cancel_P&S"));
    QStandardItem *depth2_item62 = new QStandardItem(QString("62:TSecUi::InitializeLibL"));
    QStandardItem *depth2_item63 = new QStandardItem(QString("63:TSecUi::UnInitializeLib"));
    QStandardItem *depth2_item64 = new QStandardItem(QString("64:Wait30+CancelSecCodeQuery"));
    QStandardItem *depth2_item65 = new QStandardItem(QString("65:CancelSecCodeQuery"));
    QStandardItem *depth2_item66 = new QStandardItem(QString("66:EStdKeyDeviceF"));
    QStandardItem *depth2_item67 = new QStandardItem(QString("67:EKeyDeviceF"));
    QStandardItem *depth2_item68 = new QStandardItem(QString("68:EKeyBell"));
    QStandardItem *depth2_item69 = new QStandardItem(QString("69:Stop-iPeriodicExt"));

    depth1_parent6->setChild(0, 0, depth2_item60);
    depth1_parent6->setChild(1, 0, depth2_item61);
    depth1_parent6->setChild(2, 0, depth2_item62);
    depth1_parent6->setChild(3, 0, depth2_item63);
    depth1_parent6->setChild(4, 0, depth2_item64);
    depth1_parent6->setChild(5, 0, depth2_item65);
    depth1_parent6->setChild(6, 0, depth2_item66);
    depth1_parent6->setChild(7, 0, depth2_item67);
    depth1_parent6->setChild(8, 0, depth2_item68);
    depth1_parent6->setChild(9, 0, depth2_item69);
    
		RDebug::Printf( "%s %s (%u) KeyLockPolicy depth2-7=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
    QStandardItem *depth2_item70 = new QStandardItem(QString("70:KeyguardAllowed?"));
    QStandardItem *depth2_item71 = new QStandardItem(QString("71:EnableKeyguardFeature"));
    QStandardItem *depth2_item72 = new QStandardItem(QString("72:DisableKeyguardFeature"));
    QStandardItem *depth2_item73 = new QStandardItem(QString("73:ShowErrorCodes"));
    QStandardItem *depth2_item74 = new QStandardItem(QString("74:Expiration+Consecutive"));
    QStandardItem *depth2_item75 = new QStandardItem(QString("75:Minlength+SpecificStrings"));
    QStandardItem *depth2_item76 = new QStandardItem(QString("76:Chars_Numbers"));
    QStandardItem *depth2_item77 = new QStandardItem(QString("77:xxx"));
    QStandardItem *depth2_item78 = new QStandardItem(QString("78:xxx"));
    QStandardItem *depth2_item79 = new QStandardItem(QString("79:xxx"));

    depth1_parent7->setChild(0, 0, depth2_item70);
    depth1_parent7->setChild(1, 0, depth2_item71);
    depth1_parent7->setChild(2, 0, depth2_item72);
    depth1_parent7->setChild(3, 0, depth2_item73);
    depth1_parent7->setChild(4, 0, depth2_item74);
    depth1_parent7->setChild(5, 0, depth2_item75);
    depth1_parent7->setChild(6, 0, depth2_item76);
    depth1_parent7->setChild(7, 0, depth2_item77);
    depth1_parent7->setChild(8, 0, depth2_item78);
    depth1_parent7->setChild(9, 0, depth2_item79);
    
		RDebug::Printf( "%s %s (%u) Schedule depth2-8=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
    QStandardItem *depth2_item80 = new QStandardItem(QString("80:xxxx"));
    QStandardItem *depth2_item81 = new QStandardItem(QString("81:xxx"));
    QStandardItem *depth2_item82 = new QStandardItem(QString("82:xxx"));
    QStandardItem *depth2_item83 = new QStandardItem(QString("83:xxx"));
    QStandardItem *depth2_item84 = new QStandardItem(QString("84:xxx"));
    QStandardItem *depth2_item85 = new QStandardItem(QString("85:xxx"));
    QStandardItem *depth2_item86 = new QStandardItem(QString("86:xxx"));
    QStandardItem *depth2_item87 = new QStandardItem(QString("87:xxx"));
    QStandardItem *depth2_item88 = new QStandardItem(QString("88:xxx"));
    QStandardItem *depth2_item89 = new QStandardItem(QString("89:xxx"));

    depth1_parent8->setChild(0, 0, depth2_item80);
    depth1_parent8->setChild(1, 0, depth2_item81);
    depth1_parent8->setChild(2, 0, depth2_item82);
    depth1_parent8->setChild(3, 0, depth2_item83);
    depth1_parent8->setChild(4, 0, depth2_item84);
    depth1_parent8->setChild(5, 0, depth2_item85);
    depth1_parent8->setChild(6, 0, depth2_item86);
    depth1_parent8->setChild(7, 0, depth2_item87);
    depth1_parent8->setChild(8, 0, depth2_item88);
    depth1_parent8->setChild(9, 0, depth2_item89);
    
		RDebug::Printf( "%s %s (%u) Settings2 depth2-9=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
    QStandardItem *depth2_item90 = new QStandardItem(QString("90:ChangeSimSecurityL"));
    QStandardItem *depth2_item91 = new QStandardItem(QString("91:ChangePinRequestL"));
    QStandardItem *depth2_item92 = new QStandardItem(QString("92:ChangeUPinRequestL"));
    QStandardItem *depth2_item93 = new QStandardItem(QString("93:SwitchPinCodesL"));
    QStandardItem *depth2_item94 = new QStandardItem(QString("94:ChangePin2L"));
    QStandardItem *depth2_item95 = new QStandardItem(QString("95:SwitchPinCodesL"));
    QStandardItem *depth2_item96 = new QStandardItem(QString("96:ChangeRemoteLockStatusL"));
    QStandardItem *depth2_item97 = new QStandardItem(QString("97:ChangeRLStat-0"));
    QStandardItem *depth2_item98 = new QStandardItem(QString("98:ChangeRLStat-Off"));
    QStandardItem *depth2_item99 = new QStandardItem(QString("99:xxx"));

    depth1_parent9->setChild(0, 0, depth2_item90);
    depth1_parent9->setChild(1, 0, depth2_item91);
    depth1_parent9->setChild(2, 0, depth2_item92);
    depth1_parent9->setChild(3, 0, depth2_item93);
    depth1_parent9->setChild(4, 0, depth2_item94);
    depth1_parent9->setChild(5, 0, depth2_item95);
    depth1_parent9->setChild(6, 0, depth2_item96);
    depth1_parent9->setChild(7, 0, depth2_item97);
    depth1_parent9->setChild(8, 0, depth2_item98);
    depth1_parent9->setChild(9, 0, depth2_item99);
    
    return model;
}

QStandardItemModel *ModelFactory::populateTreeModelSimpleOfSimplest()
{
    QStandardItemModel* model = new QStandardItemModel();

    // =====================================================================
    // Depth 1
    // =====================================================================
    QStandardItem *depth1_item0 = new QStandardItem(QString("Leaf 0"));
    //QStandardItem *depth1_item1 = new QStandardItem(QString("Leaf A-1"));
    QStandardItem *depth1_parent0 = new QStandardItem(QString("Node A"));
    QStandardItem *depth1_parent1 = new QStandardItem(QString("Node B"));

    depth1_parent0->setData(Hb::ParentItem, Hb::ItemTypeRole);
    depth1_parent1->setData(Hb::ParentItem, Hb::ItemTypeRole);

    model->setItem(0,0,depth1_item0);
    model->setItem(1,0,depth1_parent0);
    model->setItem(2,0,depth1_parent1);

    // =====================================================================
    // Depth 2
    // =====================================================================
    QStandardItem *depth2_item0 = new QStandardItem(QString("Leaf A-1"));
    QStandardItem *depth2_item1 = new QStandardItem(QString("Leaf A-2"));
    QStandardItem *depth2_item2 = new QStandardItem(QString("Leaf B-1"));
    /*QStandardItem *depth2_parent0 = new QStandardItem(QString("Node B-0"));
    QStandardItem *depth2_parent1 = new QStandardItem(QString("Node B-1"));
    QStandardItem *depth2_parent2 = new QStandardItem(QString("Node B-2"));

    depth2_parent0->setData(Hb::ParentItem, Hb::ItemTypeRole);
    depth2_parent1->setData(Hb::ParentItem, Hb::ItemTypeRole);
    depth2_parent2->setData(Hb::ParentItem, Hb::ItemTypeRole);
*/
    depth1_parent0->setChild(0,0,depth2_item0);
    depth1_parent0->setChild(1, 0, depth2_item1);
    depth1_parent1->setChild(0, 0, depth2_item2);
/*    depth1_parent1->setChild(0, 0, depth2_parent1);
    depth1_parent1->setChild(1, 0, depth2_parent2);

    // =====================================================================
    // Depth 3
    // =====================================================================
    QStandardItem *depth3_item0 = new QStandardItem(QString("Leaf C-0"));
    QStandardItem *depth3_item1 = new QStandardItem(QString("Leaf C-1"));
    QStandardItem *depth3_item2 = new QStandardItem(QString("Leaf C-2"));
    QStandardItem *depth3_item3 = new QStandardItem(QString("Leaf C-3"));
    QStandardItem *depth3_item4 = new QStandardItem(QString("Leaf C-4"));
    QStandardItem *depth3_item5 = new QStandardItem(QString("Leaf C-5"));

    depth2_parent0->setChild(0, 0, depth3_item0);
    depth2_parent0->setChild(1, 0, depth3_item1);
    depth2_parent1->setChild(0, 0, depth3_item2);
    depth2_parent2->setChild(0, 0, depth3_item3);
    depth2_parent2->setChild(1, 0, depth3_item4);
    depth2_parent2->setChild(2, 0, depth3_item5);
*/
    return model;
}

QStandardItemModel *ModelFactory::populateGreenOddBrownEvenModel()
{
    QStandardItemModel* model = new QStandardItemModel();

    // =====================================================================
    // Depth 1
    // =====================================================================

    QStandardItem *depth1_item0 = new QStandardItem();
    QStringList data;
    data << "Odd numbered items are green" << "Even numbered items are brown";
    depth1_item0->setData(QVariant(data), Qt::DisplayRole);

    QStandardItem *depth1_item1 = new QStandardItem(QString("1"));
    QStandardItem *depth1_item2 = new QStandardItem(QString("Item 2"));
    QStandardItem *depth1_item3 = new QStandardItem(QString("Item 3"));
    QStandardItem *depth1_item4 = new QStandardItem(QString("4"));
    QStandardItem *depth1_item5 = new QStandardItem(QString("5"));
    QStandardItem *depth1_parent0 = new QStandardItem(QString("Parent 1"));
    QStandardItem *depth1_parent1 = new QStandardItem(QString("Parent 2"));

    depth1_parent0->setData(Hb::ParentItem, Hb::ItemTypeRole);
    depth1_parent1->setData(Hb::ParentItem, Hb::ItemTypeRole);

    model->setItem(0,0,depth1_item0);
    model->setItem(1,0,depth1_item1);
    model->setItem(2,0,depth1_item2);
    model->setItem(3,0,depth1_item3);
    model->setItem(4,0,depth1_parent0);
    model->setItem(5,0,depth1_parent1);
    model->setItem(6,0,depth1_item4);
    model->setItem(7,0,depth1_item5);

    // =====================================================================
    // Depth 2
    // =====================================================================
    QStandardItem *depth2_item0 = new QStandardItem(QString("11"));
    QStandardItem *depth2_item1 = new QStandardItem(QString("12"));
    QStandardItem *depth2_item2 = new QStandardItem(QString("Item 13"));
    QStandardItem *depth2_item4 = new QStandardItem(QString("Item 14"));
    QStandardItem *depth2_item5 = new QStandardItem(QString("15"));
    QStandardItem *depth2_item6 = new QStandardItem(QString("16"));
    QStandardItem *depth2_item7 = new QStandardItem(QString("17"));
    QStandardItem *depth2_parent0 = new QStandardItem(QString("Parent 11"));

    depth2_parent0->setData(Hb::ParentItem, Hb::ItemTypeRole);

    depth1_parent0->setChild(0, 0, depth2_item0);
    depth1_parent0->setChild(1, 0, depth2_item1);
    depth1_parent0->setChild(2, 0, depth2_item2);
    depth1_parent0->setChild(3, 0, depth2_parent0);

    depth1_parent1->setChild(0, 0, depth2_item4);
    depth1_parent1->setChild(1, 0, depth2_item5);
    depth1_parent1->setChild(2, 0, depth2_item6);
    depth1_parent1->setChild(3, 0, depth2_item7);

    // =====================================================================
    // Depth 3
    // =====================================================================
    QStandardItem *depth3_item0 = new QStandardItem(QString("21"));
    QStandardItem *depth3_item1 = new QStandardItem(QString("22"));
    QStandardItem *depth3_item2 = new QStandardItem(QString("Item 23"));
    QStandardItem *depth3_item3 = new QStandardItem(QString("Item 24"));
    QStandardItem *depth3_item4 = new QStandardItem(QString("25"));
    QStandardItem *depth3_item5 = new QStandardItem(QString("26"));

    depth2_parent0->setChild(0, 0, depth3_item0);
    depth2_parent0->setChild(1, 0, depth3_item1);
    depth2_parent0->setChild(2, 0, depth3_item2);
    depth2_parent0->setChild(3, 0, depth3_item3);
    depth2_parent0->setChild(4, 0, depth3_item4);
    depth2_parent0->setChild(5, 0, depth3_item5);

    return model;
}


QStandardItemModel *ModelFactory::populateTreeModelDeep()
{
    QStandardItemModel* model = new QStandardItemModel();

    QStandardItem *root = new QStandardItem;
    model->setItem(0,0,root);

    QStandardItem *parent = root;
    const int maxDeep = 50;
    for (int current = 1; current <= maxDeep; ++current) {
        parent->setData(Hb::ParentItem, Hb::ItemTypeRole);
        parent->setText(QString("Parent %0").arg(current));

        for (int current2 = 0; current2 < 5; ++current2) {
                QStandardItem *item = new QStandardItem;
                item->setText(QString("Item %0").arg(current2));
                parent->setChild(current2, 0, item);
        }
        for (int current2 = 5; current2 < 10; ++current2) {
            QStandardItem *item = new QStandardItem;
            item->setText(QString("Item %0").arg(current2));
            parent->setChild(current2, 0, item);

            QStandardItem *itemPrevious = item;
            for (int current3 = current+1; current3 < maxDeep - (current2-5)*maxDeep/5; ++current3) {
                itemPrevious->setData(Hb::ParentItem, Hb::ItemTypeRole);
                QStandardItem *item2 = new QStandardItem;
                item2->setText(QString("Folder %0").arg(current3));
                itemPrevious->setChild(0, 0, item2);

                QStandardItem *itemTemp = new QStandardItem;
                itemTemp->setText(QString("Folder %0 item").arg(current3));
                itemPrevious->setChild(1, 0, itemTemp);

                itemPrevious = item2;
            }
            itemPrevious->setData(Hb::ParentItem, Hb::ItemTypeRole);
            QStandardItem *itemTemp = new QStandardItem;
            itemTemp->setText(QString("Folder 9 item"));
            itemPrevious->setChild(0, 0, itemTemp);
        }

        if(current < maxDeep) {
            QStandardItem *item = new QStandardItem;
            parent->setChild(10, 0, item);
            parent = item;
        }
    }
    return model;
}

QStandardItemModel *ModelFactory::populateTreeModelFlat()
{
    QStandardItemModel* model = new QStandardItemModel();
    for (int i = 0; i < 1000; ++i) {
        QStandardItem* item = new QStandardItem(QString("Item number %1").arg(i));
        model->appendRow(item);
    }
    return model;
}

QStandardItemModel *ModelFactory::populateTreeModelMixed()
{
    QStandardItemModel* model = new QStandardItemModel();

    QStandardItem *parent = model->invisibleRootItem();
    insertMixedItems(parent);

    for (int current = 1; current <= 10; ++current) {
        QStandardItem *newParent = new QStandardItem;
        parent->appendRow(newParent);
        parent = newParent;

        parent->setData(Hb::ParentItem, Hb::ItemTypeRole);
        parent->setText(QString("Parent %0").arg(current));

        insertMixedItems(parent);
    }

    return model;
}