Introduced new library for pglab code which I want to unit test.
Not everything can go into core because that would result in circular dependencies between core and pgsql.
This commit is contained in:
parent
b8505ce451
commit
ad9ed1b698
10 changed files with 98 additions and 21 deletions
37
pglablib/ParamListJson.cpp
Normal file
37
pglablib/ParamListJson.cpp
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
#include "ParamListJson.h"
|
||||
|
||||
Json::Value ParamToJson(const Param ¶m)
|
||||
{
|
||||
Json::Value v;
|
||||
v["type"] = param.type.toUtf8().data();
|
||||
v["value"] = param.value.toUtf8().data();
|
||||
return v;
|
||||
}
|
||||
|
||||
Param ParamFromJson(const Json::Value &json)
|
||||
{
|
||||
Param p;
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
Json::Value ParamListToJson(const t_ParamList &list)
|
||||
{
|
||||
Json::Value root;
|
||||
for (const auto ¶m : list) {
|
||||
root.append(ParamToJson(param));
|
||||
}
|
||||
return root;
|
||||
}
|
||||
|
||||
t_ParamList ParamListFromJson(const Json::Value &json)
|
||||
{
|
||||
t_ParamList result;
|
||||
if (json.isArray()) {
|
||||
result.reserve(json.size());
|
||||
for (auto &e : json) {
|
||||
result.push_back(ParamFromJson(e));
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
9
pglablib/ParamListJson.h
Normal file
9
pglablib/ParamListJson.h
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef PARAMLISTJSON_H
|
||||
#define PARAMLISTJSON_H
|
||||
|
||||
#include "json/json.h"
|
||||
#include "ParamListModel.h"
|
||||
|
||||
Json::Value ParamListToJson(const t_ParamList &list);
|
||||
|
||||
#endif // PARAMLISTJSON_H
|
||||
147
pglablib/ParamListModel.cpp
Normal file
147
pglablib/ParamListModel.cpp
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
#include "ParamListModel.h"
|
||||
|
||||
ParamListModel::ParamListModel(QObject *parent)
|
||||
: QAbstractTableModel(parent)
|
||||
{
|
||||
}
|
||||
|
||||
QVariant ParamListModel::headerData(int section, Qt::Orientation orientation, int role) const
|
||||
{
|
||||
// FIXME: Implement me!
|
||||
QVariant result;
|
||||
if (orientation == Qt::Horizontal) {
|
||||
if (role == Qt::DisplayRole) {
|
||||
switch (section) {
|
||||
case ColValue:
|
||||
result = tr("Value");
|
||||
break;
|
||||
case ColType:
|
||||
result = tr("Type");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (orientation == Qt::Vertical) {
|
||||
if (role == Qt::DisplayRole) {
|
||||
result = tr("$%1").arg(section + 1);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//bool ParamListModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role)
|
||||
//{
|
||||
// if (value != headerData(section, orientation, role)) {
|
||||
// // FIXME: Implement me!
|
||||
// emit headerDataChanged(orientation, section, section);
|
||||
// return true;
|
||||
// }
|
||||
// return false;
|
||||
//}
|
||||
|
||||
|
||||
int ParamListModel::rowCount(const QModelIndex &) const
|
||||
{
|
||||
return m_paramList.size();
|
||||
}
|
||||
|
||||
int ParamListModel::columnCount(const QModelIndex &) const
|
||||
{
|
||||
return ColumnCount;
|
||||
}
|
||||
|
||||
QVariant ParamListModel::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
QVariant result;
|
||||
if (index.isValid()) {
|
||||
int row = index.row();
|
||||
int col = index.column();
|
||||
if (role == Qt::DisplayRole) {
|
||||
const auto& record = m_paramList[row];
|
||||
switch (col) {
|
||||
case ColValue: // value column
|
||||
result = record.value; // tr("val, %1").arg(row);
|
||||
break;
|
||||
case ColType: // type column
|
||||
result = record.type; // tr("type, %1").arg(row);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool ParamListModel::setData(const QModelIndex &index, const QVariant &value, int role)
|
||||
{
|
||||
if (data(index, role) != value) {
|
||||
if (role == Qt::EditRole) {
|
||||
int row = index.row();
|
||||
int col = index.column();
|
||||
auto& record = m_paramList[row];
|
||||
switch (col) {
|
||||
case ColValue:
|
||||
record.value = value.toString();
|
||||
break;
|
||||
case ColType:
|
||||
record.type = value.toString();
|
||||
break;
|
||||
}
|
||||
|
||||
emit dataChanged(index, index, QVector<int>() << role);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Qt::ItemFlags ParamListModel::flags(const QModelIndex &index) const
|
||||
{
|
||||
if (!index.isValid())
|
||||
return Qt::NoItemFlags;
|
||||
|
||||
return Qt::ItemIsEnabled | Qt::ItemIsEditable;
|
||||
}
|
||||
|
||||
bool ParamListModel::insertRows(int row, int count, const QModelIndex &parent)
|
||||
{
|
||||
beginInsertRows(parent, row, row + count - 1);
|
||||
// FIXME: Implement me!
|
||||
auto iter = m_paramList.begin() + row;
|
||||
m_paramList.insert(iter, count, Param());
|
||||
endInsertRows();
|
||||
return true;
|
||||
}
|
||||
|
||||
//bool ParamListModel::insertColumns(int column, int count, const QModelIndex &parent)
|
||||
//{
|
||||
// beginInsertColumns(parent, column, column + count - 1);
|
||||
// // FIXME: Implement me!
|
||||
// endInsertColumns();
|
||||
//}
|
||||
|
||||
bool ParamListModel::removeRows(int row, int count, const QModelIndex &parent)
|
||||
{
|
||||
beginRemoveRows(parent, row, row + count - 1);
|
||||
auto iter = m_paramList.begin() + row;
|
||||
m_paramList.erase(iter, iter + count);
|
||||
endRemoveRows();
|
||||
return true;
|
||||
}
|
||||
|
||||
//bool ParamListModel::removeColumns(int column, int count, const QModelIndex &parent)
|
||||
//{
|
||||
// beginRemoveColumns(parent, column, column + count - 1);
|
||||
// // FIXME: Implement me!
|
||||
// endRemoveColumns();
|
||||
//}
|
||||
|
||||
const t_ParamList& ParamListModel::GetParams() const
|
||||
{
|
||||
return m_paramList;
|
||||
}
|
||||
|
||||
void ParamListModel::SetParams(t_ParamList params)
|
||||
{
|
||||
m_paramList = std::move(params);
|
||||
}
|
||||
61
pglablib/ParamListModel.h
Normal file
61
pglablib/ParamListModel.h
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
#ifndef PARAMLISTMODEL_H
|
||||
#define PARAMLISTMODEL_H
|
||||
|
||||
#include <QAbstractTableModel>
|
||||
#include <vector>
|
||||
#include "Pgsql_declare.h"
|
||||
|
||||
class Param {
|
||||
public:
|
||||
QString value; ///< the value of the parameter (currently this is passed directly)
|
||||
QString type; ///< the type of the parameter
|
||||
|
||||
Param() = default;
|
||||
Param(const QString &v, const QString t)
|
||||
: value(v), type(t)
|
||||
{}
|
||||
};
|
||||
using t_ParamList = std::vector<Param>;
|
||||
|
||||
|
||||
class ParamListModel : public QAbstractTableModel {
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
||||
enum e_Column {
|
||||
ColValue = 0,
|
||||
ColType,
|
||||
ColumnCount // Keep last not a column just the count
|
||||
};
|
||||
|
||||
explicit ParamListModel(QObject *parent = 0);
|
||||
|
||||
// Header:
|
||||
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
|
||||
|
||||
// bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) override;
|
||||
|
||||
// Basic functionality:
|
||||
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
|
||||
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
|
||||
|
||||
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
||||
|
||||
// Editable:
|
||||
bool setData(const QModelIndex &index, const QVariant &value,
|
||||
int role = Qt::EditRole) override;
|
||||
|
||||
Qt::ItemFlags flags(const QModelIndex& index) const override;
|
||||
bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;
|
||||
bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;
|
||||
|
||||
// auto begin() const { return m_paramList.begin(); }
|
||||
// auto end() const { return m_paramList.end(); }
|
||||
const t_ParamList& GetParams() const;
|
||||
void SetParams(t_ParamList params);
|
||||
private:
|
||||
|
||||
t_ParamList m_paramList;
|
||||
};
|
||||
|
||||
#endif // PARAMLISTMODEL_H
|
||||
6
pglablib/Pglablib.cpp
Normal file
6
pglablib/Pglablib.cpp
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#include "Pglablib.h"
|
||||
|
||||
|
||||
Pglablib::Pglablib()
|
||||
{
|
||||
}
|
||||
12
pglablib/Pglablib.h
Normal file
12
pglablib/Pglablib.h
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#ifndef PGLABLIB_H
|
||||
#define PGLABLIB_H
|
||||
|
||||
|
||||
class Pglablib
|
||||
{
|
||||
|
||||
public:
|
||||
Pglablib();
|
||||
};
|
||||
|
||||
#endif // PGLABLIB_H
|
||||
64
pglablib/pglablib.pro
Normal file
64
pglablib/pglablib.pro
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2017-12-13T17:36:43
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += widgets
|
||||
|
||||
TARGET = pglablib
|
||||
TEMPLATE = lib
|
||||
CONFIG += staticlib
|
||||
|
||||
# The following define makes your compiler emit warnings if you use
|
||||
# any feature of Qt which has been marked as deprecated (the exact warnings
|
||||
# depend on your compiler). Please consult the documentation of the
|
||||
# deprecated API in order to know how to port your code away from it.
|
||||
DEFINES += QT_DEPRECATED_WARNINGS
|
||||
|
||||
INCLUDEPATH += C:\prog\include C:\Prog\include\pgsql C:\VSproj\boost32\include\boost-1_65_1
|
||||
|
||||
# You can also make your code fail to compile if you use deprecated APIs.
|
||||
# In order to do so, uncomment the following line.
|
||||
# You can also select to disable deprecated APIs only up to a certain version of Qt.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
SOURCES += \
|
||||
Pglablib.cpp \
|
||||
ParamListJson.cpp \
|
||||
ParamListModel.cpp
|
||||
|
||||
HEADERS += \
|
||||
Pglablib.h \
|
||||
ParamListJson.h \
|
||||
ParamListModel.h
|
||||
unix {
|
||||
target.path = /usr/lib
|
||||
INSTALLS += target
|
||||
}
|
||||
|
||||
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../core/release/ -lcore
|
||||
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../core/debug/ -lcore
|
||||
else:unix:!macx: LIBS += -L$$OUT_PWD/../core/ -lcore
|
||||
|
||||
INCLUDEPATH += $$PWD/../core
|
||||
DEPENDPATH += $$PWD/../core
|
||||
|
||||
win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../core/release/libcore.a
|
||||
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../core/debug/libcore.a
|
||||
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../core/release/core.lib
|
||||
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../core/debug/core.lib
|
||||
else:unix:!macx: PRE_TARGETDEPS += $$OUT_PWD/../core/libcore.a
|
||||
|
||||
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../pgsql/release/ -lpgsql
|
||||
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../pgsql/debug/ -lpgsql
|
||||
else:unix:!macx: LIBS += -L$$OUT_PWD/../pgsql/ -lpgsql
|
||||
|
||||
INCLUDEPATH += $$PWD/../pgsql
|
||||
DEPENDPATH += $$PWD/../pgsql
|
||||
|
||||
win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../pgsql/release/libpgsql.a
|
||||
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../pgsql/debug/libpgsql.a
|
||||
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../pgsql/release/pgsql.lib
|
||||
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../pgsql/debug/pgsql.lib
|
||||
else:unix:!macx: PRE_TARGETDEPS += $$OUT_PWD/../pgsql/libpgsql.a
|
||||
Loading…
Add table
Add a link
Reference in a new issue