refs #304, refs #307, refs #173 as preparation for GUI, name / variant pair

* for a generic table and tree view
* generic name pair models and view
* Hash for variant
This commit is contained in:
Klaus Basan
2014-07-27 03:00:13 +02:00
parent 8c94f9b479
commit 8a5a268a77
11 changed files with 710 additions and 6 deletions

View File

@@ -0,0 +1,36 @@
/* Copyright (C) 2013
* swift Project Community / Contributors
*
* This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of Swift Project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
#include "namevariantpairlistmodel.h"
#include "blackmisc/blackmiscfreefunctions.h"
using namespace BlackMisc;
namespace BlackGui
{
namespace Models
{
/*
* Constructor
*/
CNameVariantPairModel::CNameVariantPairModel(QObject *parent) : CListModelBase("ViewNameVariantPairList", parent)
{
this->m_columns.addColumn(CColumn("name", CNameVariantPair::IndexName));
this->m_columns.addColumn(CColumn("value", CNameVariantPair::IndexVariant));
// default sort order
this->setSortColumnByPropertyIndex(CNameVariantPair::IndexName);
this->m_sortOrder = Qt::AscendingOrder;
// force strings for translation in resource files
(void)QT_TRANSLATE_NOOP("ViewNameVariantPairList", "name");
(void)QT_TRANSLATE_NOOP("ViewNameVariantPairList", "value");
}
}
}

View File

@@ -0,0 +1,45 @@
/* Copyright (C) 2013
* Swift Project Community / Contributors
*
* This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of Swift Project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
//! \file
#ifndef BLACKGUI_NAMEVARIANTLISTMODEL_H
#define BLACKGUI_NAMEVARIANTLISTMODEL_H
#include "blackmisc/namevariantpairlist.h"
#include "blackgui/models/listmodelbase.h"
#include <QAbstractItemModel>
#include <QMap>
namespace BlackGui
{
namespace Models
{
/*!
* Simple model displaying name / variant values
*/
class CNameVariantPairModel : public CListModelBase<BlackMisc::CNameVariantPair, BlackMisc::CNameVariantPairList>
{
public:
//! Constructor
explicit CNameVariantPairModel(QObject *parent = nullptr);
//! Constructor
explicit CNameVariantPairModel(const BlackMisc::CNameVariantPairList &nameValues, QObject *parent = nullptr);
//! Destructor
virtual ~CNameVariantPairModel() {}
};
}
}
#endif // guard

View File

@@ -0,0 +1,32 @@
/* Copyright (C) 2013
* swift Project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of Swift Project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
#include "namevariantpairview.h"
#include <QHeaderView>
using namespace BlackMisc;
using namespace BlackGui::Models;
namespace BlackGui
{
namespace Views
{
CNameVariantPairView::CNameVariantPairView(QWidget *parent) : CViewBase(parent)
{
this->m_model = new CNameVariantPairModel(this);
this->setModel(this->m_model); // via QTableView
this->m_model->setSortColumnByPropertyIndex(BlackMisc::CNameVariantPair::IndexName);
if (this->m_model->hasValidSortColumn())
this->horizontalHeader()->setSortIndicator(
this->m_model->getSortColumn(),
this->m_model->getSortOrder());
this->horizontalHeader()->setStretchLastSection(true);
}
}
}

View File

@@ -0,0 +1,32 @@
/* Copyright (C) 2013
* swift Project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of Swift Project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
#ifndef BLACKGUI_NAMEVARIANTPAIRVIEW_H
#define BLACKGUI_NAMEVARIANTPAIRVIEW_H
//! \file
#include "viewbase.h"
#include "../models/namevariantpairlistmodel.h"
namespace BlackGui
{
namespace Views
{
//! User view
class CNameVariantPairView : public CViewBase<Models::CNameVariantPairModel>
{
public:
//! Constructor
explicit CNameVariantPairView(QWidget *parent = nullptr);
};
}
}
#endif // guard