Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,168 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* some models for LogViewGui
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include "LogViewTelegramEditModel.hpp"
|
||||
#include <algorithm>
|
||||
|
||||
namespace N_LogView
|
||||
{
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
int TelegramEditModel::rowCount(const QModelIndex &parent) const
|
||||
{
|
||||
return parent.isValid() ? 0 : m_telegrams.size();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
int TelegramEditModel::columnCount(const QModelIndex &parent) const
|
||||
{
|
||||
return parent.isValid() ? 0 : 3;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
QVariant TelegramEditModel::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
if (index.isValid() && index.row() < m_telegrams.size())
|
||||
{
|
||||
if (role == Qt::DisplayRole)
|
||||
{
|
||||
const QSharedPointer<LogViewTelegram> telegram = m_telegrams.at(index.row());
|
||||
switch (index.column())
|
||||
{
|
||||
case 0:
|
||||
return telegram->getName();
|
||||
case 1:
|
||||
return telegram->getParticipantId();
|
||||
case 2:
|
||||
return telegram->getWaitTime();
|
||||
}
|
||||
}
|
||||
else if (role == Qt::ToolTipRole)
|
||||
{
|
||||
const QSharedPointer<LogViewTelegram> telegram = m_telegrams.at(index.row());
|
||||
if (telegram->isJsonTelegram())
|
||||
return telegram->getData(QJsonDocument::JsonFormat::Indented);
|
||||
}
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
QVariant TelegramEditModel::headerData(int section,
|
||||
Qt::Orientation orientation,
|
||||
int role) const
|
||||
{
|
||||
if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
|
||||
{
|
||||
switch (section)
|
||||
{
|
||||
case 0:
|
||||
return tr("Description");
|
||||
case 1:
|
||||
return tr("Equip. No.");
|
||||
case 2:
|
||||
return tr("Wait Time");
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return QAbstractTableModel::headerData(section, orientation, role);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
void TelegramEditModel::clearTelegrams()
|
||||
{
|
||||
beginResetModel();
|
||||
m_telegrams.clear();
|
||||
endResetModel();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
void TelegramEditModel::appendTelegrams(const QVector<QSharedPointer<LogViewTelegram> > &telegrams)
|
||||
{
|
||||
if (telegrams.isEmpty())
|
||||
return;
|
||||
beginInsertRows(QModelIndex(), m_telegrams.size(), m_telegrams.size() + telegrams.size() - 1);
|
||||
m_telegrams += telegrams;
|
||||
endInsertRows();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
int TelegramEditModel::appendTelegram(const QSharedPointer<LogViewTelegram> &telegram)
|
||||
{
|
||||
beginInsertRows(QModelIndex(), m_telegrams.size(), m_telegrams.size());
|
||||
m_telegrams.push_back(telegram);
|
||||
telegram->rebuildJsonString();
|
||||
endInsertRows();
|
||||
return m_telegrams.size() - 1; // row
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
QSharedPointer<LogViewTelegram> TelegramEditModel::telegram(int row) const
|
||||
{
|
||||
if (row >= 0 && row < m_telegrams.size())
|
||||
return m_telegrams.at(row);
|
||||
return QSharedPointer<LogViewTelegram>();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
bool TelegramEditModel::moveUp(int row)
|
||||
{
|
||||
if (row <= 0 || row >= m_telegrams.size())
|
||||
return false;
|
||||
beginMoveRows(QModelIndex(), row, row, QModelIndex(), row - 1);
|
||||
std::swap(m_telegrams[row], m_telegrams[row - 1]);
|
||||
endMoveRows();
|
||||
return true;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
bool TelegramEditModel::moveDown(int row)
|
||||
{
|
||||
if (row >= (m_telegrams.size() - 1))
|
||||
return false;
|
||||
beginMoveRows(QModelIndex(), row, row, QModelIndex(), row + 1);
|
||||
std::swap(m_telegrams[row], m_telegrams[row + 1]);
|
||||
endMoveRows();
|
||||
return true;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
void TelegramEditModel::emitDataChanged(int row)
|
||||
{
|
||||
QModelIndex top = createIndex(row, 0);
|
||||
QModelIndex bottom = createIndex(row, columnCount() - 1);
|
||||
emit dataChanged(top, bottom, {Qt::DisplayRole, Qt::ToolTipRole});
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
void TelegramEditModel::removeTelegrams(const QSet<int> &rows)
|
||||
{
|
||||
QList<int> rowList = rows.values();
|
||||
std::sort(rowList.begin(), rowList.end());
|
||||
// von oben her löschen um ein Verschieben der Indizes zu vermeiden
|
||||
for (int i = rowList.size() - 1 ; i >= 0; --i)
|
||||
{
|
||||
int row = rowList.at(i);
|
||||
beginRemoveRows(QModelIndex(), row, row);
|
||||
m_telegrams.remove(row);
|
||||
endRemoveRows();
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
void TelegramEditModel::pasteRows(int row, const QSharedPointer<LogViewTelegram> &tele)
|
||||
{
|
||||
if (row < 0 || row > m_telegrams.size())
|
||||
return;
|
||||
beginInsertRows(QModelIndex(), row, row);
|
||||
m_telegrams.insert(row, QSharedPointer<LogViewTelegram>(new LogViewTelegram(*tele.data())));
|
||||
endInsertRows();
|
||||
}
|
||||
|
||||
} // namespace N_LogView
|
||||
Reference in new issue
Block a user