Add getters for all model itemproperies
parent
5afb953c41
commit
3388f68de5
|
@ -25,7 +25,7 @@ add_custom_command(
|
|||
add_custom_target(rust_target DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/rust/${RUST_TARGET_DIR}/librust.a")
|
||||
|
||||
list(APPEND DemoLibs "${CMAKE_CURRENT_SOURCE_DIR}/rust/${RUST_TARGET_DIR}/librust.a")
|
||||
list(APPEND DemoLibs Qt5::Widgets Qt5::Svg)
|
||||
list(APPEND DemoLibs Qt5::Widgets Qt5::Svg pthread dl)
|
||||
if (Qt5Quick_FOUND)
|
||||
list(APPEND DemoLibs Qt5::Quick)
|
||||
endif()
|
||||
|
|
|
@ -177,23 +177,25 @@ Qt::ItemFlags FibonacciList::flags(const QModelIndex &i) const
|
|||
auto flags = QAbstractItemModel::flags(i);
|
||||
return flags;
|
||||
}
|
||||
QVariant FibonacciList::data(const QModelIndex &index, int role) const
|
||||
QVariant FibonacciList::result(int row) const
|
||||
{
|
||||
QVariant v;
|
||||
v = fibonacci_list_data_result(m_d, row);
|
||||
return v;
|
||||
}
|
||||
|
||||
QVariant FibonacciList::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
Q_ASSERT(rowCount(index.parent()) > index.row());
|
||||
QString s;
|
||||
QByteArray b;
|
||||
switch (index.column()) {
|
||||
case 0:
|
||||
switch (role) {
|
||||
case Qt::DisplayRole:
|
||||
case Qt::UserRole + 0:
|
||||
v = fibonacci_list_data_result(m_d, index.row());
|
||||
break;
|
||||
return result(index.row());
|
||||
}
|
||||
break;
|
||||
}
|
||||
return v;
|
||||
return QVariant();
|
||||
}
|
||||
QHash<int, QByteArray> FibonacciList::roleNames() const {
|
||||
QHash<int, QByteArray> names = QAbstractItemModel::roleNames();
|
||||
|
@ -318,75 +320,96 @@ Qt::ItemFlags FileSystemTree::flags(const QModelIndex &i) const
|
|||
auto flags = QAbstractItemModel::flags(i);
|
||||
return flags;
|
||||
}
|
||||
QVariant FileSystemTree::data(const QModelIndex &index, int role) const
|
||||
QVariant FileSystemTree::fileIcon(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
Q_ASSERT(rowCount(index.parent()) > index.row());
|
||||
QString s;
|
||||
QByteArray b;
|
||||
file_system_tree_data_file_icon(m_d, index.internalId(), &b, set_qbytearray);
|
||||
if (!b.isNull()) v.setValue<QByteArray>(b);
|
||||
return v;
|
||||
}
|
||||
QVariant FileSystemTree::fileName(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
QString s;
|
||||
file_system_tree_data_file_name(m_d, index.internalId(), &s, set_qstring);
|
||||
if (!s.isNull()) v.setValue<QString>(s);
|
||||
return v;
|
||||
}
|
||||
QVariant FileSystemTree::filePath(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
QString s;
|
||||
file_system_tree_data_file_path(m_d, index.internalId(), &s, set_qstring);
|
||||
if (!s.isNull()) v.setValue<QString>(s);
|
||||
return v;
|
||||
}
|
||||
QVariant FileSystemTree::filePermissions(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
v = file_system_tree_data_file_permissions(m_d, index.internalId());
|
||||
return v;
|
||||
}
|
||||
QVariant FileSystemTree::fileSize(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
v = file_system_tree_data_file_size(m_d, index.internalId());
|
||||
return v;
|
||||
}
|
||||
QVariant FileSystemTree::fileType(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
v = file_system_tree_data_file_type(m_d, index.internalId());
|
||||
return v;
|
||||
}
|
||||
|
||||
QVariant FileSystemTree::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
Q_ASSERT(rowCount(index.parent()) > index.row());
|
||||
switch (index.column()) {
|
||||
case 0:
|
||||
switch (role) {
|
||||
case Qt::DecorationRole:
|
||||
case Qt::UserRole + 0:
|
||||
file_system_tree_data_file_icon(m_d, index.internalId(), &b, set_qbytearray);
|
||||
if (!b.isNull()) v.setValue<QByteArray>(b);
|
||||
break;
|
||||
return fileIcon(index);
|
||||
case Qt::DisplayRole:
|
||||
case Qt::UserRole + 1:
|
||||
file_system_tree_data_file_name(m_d, index.internalId(), &s, set_qstring);
|
||||
if (!s.isNull()) v.setValue<QString>(s);
|
||||
break;
|
||||
return fileName(index);
|
||||
case Qt::UserRole + 2:
|
||||
file_system_tree_data_file_path(m_d, index.internalId(), &s, set_qstring);
|
||||
if (!s.isNull()) v.setValue<QString>(s);
|
||||
break;
|
||||
return filePath(index);
|
||||
case Qt::UserRole + 3:
|
||||
v = file_system_tree_data_file_permissions(m_d, index.internalId());
|
||||
break;
|
||||
return filePermissions(index);
|
||||
case Qt::UserRole + 4:
|
||||
v = file_system_tree_data_file_size(m_d, index.internalId());
|
||||
break;
|
||||
return fileSize(index);
|
||||
case Qt::UserRole + 5:
|
||||
v = file_system_tree_data_file_type(m_d, index.internalId());
|
||||
break;
|
||||
return fileType(index);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
switch (role) {
|
||||
case Qt::DisplayRole:
|
||||
case Qt::UserRole + 4:
|
||||
v = file_system_tree_data_file_size(m_d, index.internalId());
|
||||
break;
|
||||
return fileSize(index);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
switch (role) {
|
||||
case Qt::DisplayRole:
|
||||
case Qt::UserRole + 2:
|
||||
file_system_tree_data_file_path(m_d, index.internalId(), &s, set_qstring);
|
||||
if (!s.isNull()) v.setValue<QString>(s);
|
||||
break;
|
||||
return filePath(index);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
switch (role) {
|
||||
case Qt::DisplayRole:
|
||||
case Qt::UserRole + 3:
|
||||
v = file_system_tree_data_file_permissions(m_d, index.internalId());
|
||||
break;
|
||||
return filePermissions(index);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
switch (role) {
|
||||
case Qt::DisplayRole:
|
||||
case Qt::UserRole + 5:
|
||||
v = file_system_tree_data_file_type(m_d, index.internalId());
|
||||
break;
|
||||
return fileType(index);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return v;
|
||||
return QVariant();
|
||||
}
|
||||
QHash<int, QByteArray> FileSystemTree::roleNames() const {
|
||||
QHash<int, QByteArray> names = QAbstractItemModel::roleNames();
|
||||
|
@ -520,60 +543,90 @@ Qt::ItemFlags Processes::flags(const QModelIndex &i) const
|
|||
auto flags = QAbstractItemModel::flags(i);
|
||||
return flags;
|
||||
}
|
||||
QVariant Processes::data(const QModelIndex &index, int role) const
|
||||
QVariant Processes::cmd(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
Q_ASSERT(rowCount(index.parent()) > index.row());
|
||||
QString s;
|
||||
QByteArray b;
|
||||
processes_data_cmd(m_d, index.internalId(), &s, set_qstring);
|
||||
if (!s.isNull()) v.setValue<QString>(s);
|
||||
return v;
|
||||
}
|
||||
QVariant Processes::cpuPercentage(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
v = processes_data_cpu_percentage(m_d, index.internalId());
|
||||
return v;
|
||||
}
|
||||
QVariant Processes::cpuUsage(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
v = processes_data_cpu_usage(m_d, index.internalId());
|
||||
return v;
|
||||
}
|
||||
QVariant Processes::memory(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
v = processes_data_memory(m_d, index.internalId());
|
||||
return v;
|
||||
}
|
||||
QVariant Processes::name(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
QString s;
|
||||
processes_data_name(m_d, index.internalId(), &s, set_qstring);
|
||||
if (!s.isNull()) v.setValue<QString>(s);
|
||||
return v;
|
||||
}
|
||||
QVariant Processes::pid(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
v = processes_data_pid(m_d, index.internalId());
|
||||
return v;
|
||||
}
|
||||
QVariant Processes::uid(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
v = processes_data_uid(m_d, index.internalId());
|
||||
return v;
|
||||
}
|
||||
|
||||
QVariant Processes::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
Q_ASSERT(rowCount(index.parent()) > index.row());
|
||||
switch (index.column()) {
|
||||
case 0:
|
||||
switch (role) {
|
||||
case Qt::UserRole + 0:
|
||||
processes_data_cmd(m_d, index.internalId(), &s, set_qstring);
|
||||
if (!s.isNull()) v.setValue<QString>(s);
|
||||
break;
|
||||
return cmd(index);
|
||||
case Qt::UserRole + 1:
|
||||
v = processes_data_cpu_percentage(m_d, index.internalId());
|
||||
break;
|
||||
return cpuPercentage(index);
|
||||
case Qt::UserRole + 2:
|
||||
v = processes_data_cpu_usage(m_d, index.internalId());
|
||||
break;
|
||||
return cpuUsage(index);
|
||||
case Qt::UserRole + 3:
|
||||
v = processes_data_memory(m_d, index.internalId());
|
||||
break;
|
||||
return memory(index);
|
||||
case Qt::DisplayRole:
|
||||
case Qt::UserRole + 4:
|
||||
processes_data_name(m_d, index.internalId(), &s, set_qstring);
|
||||
if (!s.isNull()) v.setValue<QString>(s);
|
||||
break;
|
||||
return name(index);
|
||||
case Qt::ToolTipRole:
|
||||
case Qt::UserRole + 5:
|
||||
v = processes_data_pid(m_d, index.internalId());
|
||||
break;
|
||||
return pid(index);
|
||||
case Qt::UserRole + 6:
|
||||
v = processes_data_uid(m_d, index.internalId());
|
||||
break;
|
||||
return uid(index);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
switch (role) {
|
||||
case Qt::DisplayRole:
|
||||
case Qt::UserRole + 2:
|
||||
v = processes_data_cpu_usage(m_d, index.internalId());
|
||||
break;
|
||||
return cpuUsage(index);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
switch (role) {
|
||||
case Qt::DisplayRole:
|
||||
case Qt::UserRole + 3:
|
||||
v = processes_data_memory(m_d, index.internalId());
|
||||
break;
|
||||
return memory(index);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return v;
|
||||
return QVariant();
|
||||
}
|
||||
QHash<int, QByteArray> Processes::roleNames() const {
|
||||
QHash<int, QByteArray> names = QAbstractItemModel::roleNames();
|
||||
|
@ -692,36 +745,41 @@ Qt::ItemFlags TimeSeries::flags(const QModelIndex &i) const
|
|||
}
|
||||
return flags;
|
||||
}
|
||||
QVariant TimeSeries::data(const QModelIndex &index, int role) const
|
||||
QVariant TimeSeries::input(int row) const
|
||||
{
|
||||
QVariant v;
|
||||
v = time_series_data_input(m_d, row);
|
||||
return v;
|
||||
}
|
||||
QVariant TimeSeries::result(int row) const
|
||||
{
|
||||
QVariant v;
|
||||
v = time_series_data_result(m_d, row);
|
||||
return v;
|
||||
}
|
||||
|
||||
QVariant TimeSeries::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
Q_ASSERT(rowCount(index.parent()) > index.row());
|
||||
QString s;
|
||||
QByteArray b;
|
||||
switch (index.column()) {
|
||||
case 0:
|
||||
switch (role) {
|
||||
case Qt::DisplayRole:
|
||||
case Qt::EditRole:
|
||||
case Qt::UserRole + 0:
|
||||
v = time_series_data_input(m_d, index.row());
|
||||
break;
|
||||
return input(index.row());
|
||||
case Qt::UserRole + 1:
|
||||
v = time_series_data_result(m_d, index.row());
|
||||
break;
|
||||
return result(index.row());
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
switch (role) {
|
||||
case Qt::DisplayRole:
|
||||
case Qt::EditRole:
|
||||
case Qt::UserRole + 1:
|
||||
v = time_series_data_result(m_d, index.row());
|
||||
break;
|
||||
return result(index.row());
|
||||
}
|
||||
break;
|
||||
}
|
||||
return v;
|
||||
return QVariant();
|
||||
}
|
||||
QHash<int, QByteArray> TimeSeries::roleNames() const {
|
||||
QHash<int, QByteArray> names = QAbstractItemModel::roleNames();
|
||||
|
|
|
@ -109,6 +109,7 @@ signals:
|
|||
private:
|
||||
QHash<QPair<int,Qt::ItemDataRole>, QVariant> m_headerData;
|
||||
void initHeaderData();
|
||||
QVariant result(int row) const;
|
||||
signals:
|
||||
};
|
||||
|
||||
|
@ -149,6 +150,12 @@ signals:
|
|||
private:
|
||||
QHash<QPair<int,Qt::ItemDataRole>, QVariant> m_headerData;
|
||||
void initHeaderData();
|
||||
QVariant fileIcon(const QModelIndex& index) const;
|
||||
QVariant fileName(const QModelIndex& index) const;
|
||||
QVariant filePath(const QModelIndex& index) const;
|
||||
QVariant filePermissions(const QModelIndex& index) const;
|
||||
QVariant fileSize(const QModelIndex& index) const;
|
||||
QVariant fileType(const QModelIndex& index) const;
|
||||
signals:
|
||||
void pathChanged();
|
||||
};
|
||||
|
@ -190,6 +197,13 @@ signals:
|
|||
private:
|
||||
QHash<QPair<int,Qt::ItemDataRole>, QVariant> m_headerData;
|
||||
void initHeaderData();
|
||||
QVariant cmd(const QModelIndex& index) const;
|
||||
QVariant cpuPercentage(const QModelIndex& index) const;
|
||||
QVariant cpuUsage(const QModelIndex& index) const;
|
||||
QVariant memory(const QModelIndex& index) const;
|
||||
QVariant name(const QModelIndex& index) const;
|
||||
QVariant pid(const QModelIndex& index) const;
|
||||
QVariant uid(const QModelIndex& index) const;
|
||||
signals:
|
||||
void activeChanged();
|
||||
};
|
||||
|
@ -228,6 +242,8 @@ signals:
|
|||
private:
|
||||
QHash<QPair<int,Qt::ItemDataRole>, QVariant> m_headerData;
|
||||
void initHeaderData();
|
||||
QVariant input(int row) const;
|
||||
QVariant result(int row) const;
|
||||
signals:
|
||||
};
|
||||
#endif // BINDINGS_H
|
||||
|
|
|
@ -8,7 +8,7 @@ class SortedModel : public QSortFilterProxyModel {
|
|||
Q_OBJECT
|
||||
public:
|
||||
SortedModel() :QSortFilterProxyModel() {}
|
||||
bool filterAcceptsRow ( int source_row, const QModelIndex & source_parent ) const;
|
||||
bool filterAcceptsRow(int source_row, const QModelIndex & source_parent) const;
|
||||
Q_INVOKABLE QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const {
|
||||
return QSortFilterProxyModel::data(index, role);
|
||||
}
|
||||
|
|
69
src/cpp.cpp
69
src/cpp.cpp
|
@ -35,7 +35,7 @@ QString cGetType(const BindingTypeProperties& type) {
|
|||
return type.name + "*, " + type.name.toLower() + "_set";
|
||||
}
|
||||
|
||||
void writeHeaderItemModel(QTextStream& h) {
|
||||
void writeHeaderItemModel(QTextStream& h, const Object& o) {
|
||||
h << QString(R"(
|
||||
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
|
||||
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
||||
|
@ -58,6 +58,19 @@ private:
|
|||
QHash<QPair<int,Qt::ItemDataRole>, QVariant> m_headerData;
|
||||
void initHeaderData();
|
||||
)");
|
||||
for (auto ip: o.itemProperties) {
|
||||
if (o.type == ObjectType::List) {
|
||||
h << QString(" QVariant %1(int row) const;\n").arg(ip.name);
|
||||
} else {
|
||||
h << QString(" QVariant %1(const QModelIndex& index) const;\n").arg(ip.name);
|
||||
}
|
||||
/*
|
||||
if (ip.write) {
|
||||
r << QString(" fn set_%1(&mut self, item: usize, %2) -> bool;\n")
|
||||
.arg(snakeCase(ip.name), rustType(ip));
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
bool isColumnWrite(const Object& o, int col) {
|
||||
|
@ -224,14 +237,39 @@ Qt::ItemFlags %1::flags(const QModelIndex &i) const
|
|||
cpp << " flags |= Qt::ItemIsEditable;\n }\n";
|
||||
}
|
||||
}
|
||||
cpp << QString(R"( return flags;
|
||||
}
|
||||
cpp << " return flags;\n}\n";
|
||||
for (auto ip: o.itemProperties) {
|
||||
QString idx = index;
|
||||
if (o.type == ObjectType::List) {
|
||||
idx = ", row";
|
||||
cpp << QString("QVariant %1::%2(int row) const\n{\n")
|
||||
.arg(o.name, ip.name);
|
||||
} else {
|
||||
cpp << QString("QVariant %1::%2(const QModelIndex& index) const\n{\n")
|
||||
.arg(o.name, ip.name);
|
||||
}
|
||||
cpp << " QVariant v;\n";
|
||||
if (ip.type.name == "QString") {
|
||||
cpp << " QString s;\n";
|
||||
cpp << QString(" %1_data_%2(m_d%4, &s, set_%3);\n")
|
||||
.arg(lcname, snakeCase(ip.name), ip.type.name.toLower(), idx);
|
||||
cpp << " if (!s.isNull()) v.setValue<QString>(s);\n";
|
||||
} else if (ip.type.name == "QByteArray") {
|
||||
cpp << " QByteArray b;\n";
|
||||
cpp << QString(" %1_data_%2(m_d%4, &b, set_%3);\n")
|
||||
.arg(lcname, snakeCase(ip.name), ip.type.name.toLower(), idx);
|
||||
cpp << " if (!b.isNull()) v.setValue<QByteArray>(b);\n";
|
||||
} else {
|
||||
cpp << QString(" v = %1_data_%2(m_d%3);\n")
|
||||
.arg(lcname, snakeCase(ip.name), idx);
|
||||
}
|
||||
cpp << " return v;\n";
|
||||
cpp << "}\n";
|
||||
}
|
||||
cpp << QString(R"(
|
||||
QVariant %1::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
QVariant v;
|
||||
Q_ASSERT(rowCount(index.parent()) > index.row());
|
||||
QString s;
|
||||
QByteArray b;
|
||||
switch (index.column()) {
|
||||
)").arg(o.name);
|
||||
|
||||
|
@ -249,24 +287,15 @@ QVariant %1::data(const QModelIndex &index, int role) const
|
|||
cpp << QString(" case Qt::%1:\n").arg(metaRoles.valueToKey(role));
|
||||
}
|
||||
cpp << QString(" case Qt::UserRole + %1:\n").arg(i);
|
||||
if (ip.type.name == "QString") {
|
||||
cpp << QString(" %1_data_%2(m_d%4, &s, set_%3);\n")
|
||||
.arg(lcname, snakeCase(ip.name), ip.type.name.toLower(), index);
|
||||
cpp << " if (!s.isNull()) v.setValue<QString>(s);\n";
|
||||
} else if (ip.type.name == "QByteArray") {
|
||||
cpp << QString(" %1_data_%2(m_d%4, &b, set_%3);\n")
|
||||
.arg(lcname, snakeCase(ip.name), ip.type.name.toLower(), index);
|
||||
cpp << " if (!b.isNull()) v.setValue<QByteArray>(b);\n";
|
||||
if (o.type == ObjectType::List) {
|
||||
cpp << QString(" return %1(index.row());\n").arg(ip.name);
|
||||
} else {
|
||||
cpp << QString(" v = %1_data_%2(m_d%3);\n")
|
||||
.arg(lcname, snakeCase(ip.name), index);
|
||||
cpp << QString(" return %1(index);\n").arg(ip.name);
|
||||
}
|
||||
cpp << " break;\n";
|
||||
}
|
||||
cpp << " }\n";
|
||||
cpp << " break;\n";
|
||||
}
|
||||
cpp << " }\n return v;\n}\n";
|
||||
cpp << " }\n return QVariant();\n}\n";
|
||||
cpp << "QHash<int, QByteArray> " << o.name << "::roleNames() const {\n";
|
||||
cpp << " QHash<int, QByteArray> names = QAbstractItemModel::roleNames();\n";
|
||||
for (int i = 0; i < o.itemProperties.size(); ++i) {
|
||||
|
@ -388,7 +417,7 @@ public:
|
|||
}
|
||||
}
|
||||
if (baseType(o) == "QAbstractItemModel") {
|
||||
writeHeaderItemModel(h);
|
||||
writeHeaderItemModel(h, o);
|
||||
}
|
||||
h << "signals:" << endl;
|
||||
for (auto p: o.properties) {
|
||||
|
|
|
@ -40,6 +40,7 @@ function(rust_test NAME DIRECTORY)
|
|||
Qt5::Core
|
||||
Qt5::Test
|
||||
"${DIR}/${RUST_TARGET_DIR}/librust.a"
|
||||
pthread dl
|
||||
)
|
||||
set_property(TARGET ${NAME}
|
||||
APPEND PROPERTY AUTOGEN_TARGET_DEPENDS "${SRC}/${NAME}_rust.h"
|
||||
|
|
|
@ -115,25 +115,28 @@ Qt::ItemFlags Persons::flags(const QModelIndex &i) const
|
|||
}
|
||||
return flags;
|
||||
}
|
||||
QVariant Persons::data(const QModelIndex &index, int role) const
|
||||
QVariant Persons::userName(int row) const
|
||||
{
|
||||
QVariant v;
|
||||
Q_ASSERT(rowCount(index.parent()) > index.row());
|
||||
QString s;
|
||||
QByteArray b;
|
||||
persons_data_user_name(m_d, row, &s, set_qstring);
|
||||
if (!s.isNull()) v.setValue<QString>(s);
|
||||
return v;
|
||||
}
|
||||
|
||||
QVariant Persons::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
Q_ASSERT(rowCount(index.parent()) > index.row());
|
||||
switch (index.column()) {
|
||||
case 0:
|
||||
switch (role) {
|
||||
case Qt::DisplayRole:
|
||||
case Qt::EditRole:
|
||||
case Qt::UserRole + 0:
|
||||
persons_data_user_name(m_d, index.row(), &s, set_qstring);
|
||||
if (!s.isNull()) v.setValue<QString>(s);
|
||||
break;
|
||||
return userName(index.row());
|
||||
}
|
||||
break;
|
||||
}
|
||||
return v;
|
||||
return QVariant();
|
||||
}
|
||||
QHash<int, QByteArray> Persons::roleNames() const {
|
||||
QHash<int, QByteArray> names = QAbstractItemModel::roleNames();
|
||||
|
|
|
@ -40,6 +40,7 @@ signals:
|
|||
private:
|
||||
QHash<QPair<int,Qt::ItemDataRole>, QVariant> m_headerData;
|
||||
void initHeaderData();
|
||||
QVariant userName(int row) const;
|
||||
signals:
|
||||
};
|
||||
#endif // TEST_LIST_RUST_H
|
||||
|
|
|
@ -133,25 +133,28 @@ Qt::ItemFlags Persons::flags(const QModelIndex &i) const
|
|||
}
|
||||
return flags;
|
||||
}
|
||||
QVariant Persons::data(const QModelIndex &index, int role) const
|
||||
QVariant Persons::userName(const QModelIndex& index) const
|
||||
{
|
||||
QVariant v;
|
||||
Q_ASSERT(rowCount(index.parent()) > index.row());
|
||||
QString s;
|
||||
QByteArray b;
|
||||
persons_data_user_name(m_d, index.internalId(), &s, set_qstring);
|
||||
if (!s.isNull()) v.setValue<QString>(s);
|
||||
return v;
|
||||
}
|
||||
|
||||
QVariant Persons::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
Q_ASSERT(rowCount(index.parent()) > index.row());
|
||||
switch (index.column()) {
|
||||
case 0:
|
||||
switch (role) {
|
||||
case Qt::DisplayRole:
|
||||
case Qt::EditRole:
|
||||
case Qt::UserRole + 0:
|
||||
persons_data_user_name(m_d, index.internalId(), &s, set_qstring);
|
||||
if (!s.isNull()) v.setValue<QString>(s);
|
||||
break;
|
||||
return userName(index);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return v;
|
||||
return QVariant();
|
||||
}
|
||||
QHash<int, QByteArray> Persons::roleNames() const {
|
||||
QHash<int, QByteArray> names = QAbstractItemModel::roleNames();
|
||||
|
|
|
@ -40,6 +40,7 @@ signals:
|
|||
private:
|
||||
QHash<QPair<int,Qt::ItemDataRole>, QVariant> m_headerData;
|
||||
void initHeaderData();
|
||||
QVariant userName(const QModelIndex& index) const;
|
||||
signals:
|
||||
};
|
||||
#endif // TEST_TREE_RUST_H
|
||||
|
|
Loading…
Reference in New Issue