Skip to content

Commit

Permalink
chore: backup code
Browse files Browse the repository at this point in the history
  • Loading branch information
x-tools-author committed Aug 21, 2024
1 parent 3ae86c1 commit 69610c4
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 13 deletions.
22 changes: 21 additions & 1 deletion Source/IO/IO/Transfer/AbstractTransfer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,27 @@ namespace xTools {

AbstractTransfer::AbstractTransfer(QObject *parent)
: AbstractModelIO{parent}
{}
{
connect(this, &AbstractModelIO::started, this, [this]() {
auto model = tableModel();
if (model.isValid()) {
auto *transferModel = model.value<AbstractTransferModel *>();
if (transferModel) {
transferModel->startAll();
}
}
});

connect(this, &AbstractModelIO::finished, this, [this]() {
auto model = tableModel();
if (model.isValid()) {
auto *transferModel = model.value<AbstractTransferModel *>();
if (transferModel) {
transferModel->stopAll();
}
}
});
}

AbstractTransfer::~AbstractTransfer() {}

Expand Down
21 changes: 19 additions & 2 deletions Source/IO/IO/Transfer/AbstractTransferModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ bool AbstractTransferModel::insertRows(int row, int count, const QModelIndex &pa
for (int i = 0; i < count; ++i) {
auto transfer = createTransfer();
connect(transfer, &Communication::outputBytes, this, &AbstractTransferModel::outputBytes);
m_transfers.insert(row, {transfer, true, tr("Transfer %1").arg(row)});
m_transfers.insert(row, {transfer, tr("Transfer %1").arg(row)});
}
endInsertRows();
return true;
Expand All @@ -39,12 +39,29 @@ bool AbstractTransferModel::insertRows(int row, int count, const QModelIndex &pa
void AbstractTransferModel::inputBytes(const QByteArray &bytes)
{
for (auto &item : m_transfers) {
if (item.enabled) {
if (item.transfer->isEnable()) {
item.transfer->inputBytes(bytes);
}
}
}

void AbstractTransferModel::startAll()
{
for (auto &item : m_transfers) {
if (item.transfer->isEnable()) {
item.transfer->start();
}
}
}

void AbstractTransferModel::stopAll()
{
for (auto &item : m_transfers) {
item.transfer->exit();
item.transfer->wait();
}
}

bool AbstractTransferModel::removeRows(int row, int count, const QModelIndex &parent)
{
beginRemoveRows(parent, row, row + count - 1);
Expand Down
3 changes: 2 additions & 1 deletion Source/IO/IO/Transfer/AbstractTransferModel.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,15 @@ class AbstractTransferModel : public QAbstractTableModel
bool removeRows(int row, int count, const QModelIndex &parent) override;

void inputBytes(const QByteArray &bytes);
void startAll();
void stopAll();
signals:
void outputBytes(const QByteArray &bytes);

protected:
struct Item
{
Communication *transfer{nullptr};
bool enabled{false};
QString description;
};
QList<Item> m_transfers;
Expand Down
9 changes: 8 additions & 1 deletion Source/IO/IO/Transfer/SerialPortTransfer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,14 @@ SerialPortTransfer::SerialPortTransfer(QObject *parent)

SerialPortTransfer::~SerialPortTransfer() {}

void SerialPortTransfer::inputBytes(const QByteArray &bytes) {}
void SerialPortTransfer::inputBytes(const QByteArray &bytes)
{
if (!m_enable) {
return;
}

m_model->inputBytes(bytes);
}

QVariant SerialPortTransfer::tableModel() const
{
Expand Down
6 changes: 3 additions & 3 deletions Source/IO/IO/Transfer/SerialPortTransferModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ QVariant SerialPortTransferModel::data(const QModelIndex &index, int role) const

if (role == Qt::DisplayRole) {
if (column == 0) {
return item.enabled ? tr("Enable") : tr("Disable");
return item.transfer->isEnable() ? tr("Enable") : tr("Disable");
} else if (column == 1) {
return serialPortItem.portName;
} else if (column == 2) {
Expand Down Expand Up @@ -86,7 +86,7 @@ QVariant SerialPortTransferModel::data(const QModelIndex &index, int role) const
}
} else if (role == Qt::EditRole) {
if (column == 0) {
return item.enabled;
return item.transfer->isEnable();
} else if (column == 1) {
return serialPortItem.portName;
} else if (column == 2) {
Expand Down Expand Up @@ -127,7 +127,7 @@ bool SerialPortTransferModel::setData(const QModelIndex &index, const QVariant &
int column = index.column();
Item item = m_transfers[row];
if (column == 0) {
item.enabled = value.toBool();
item.transfer->setIsEnable(value.toBool());
} else if (column == 7) {
item.description = value.toString();
} else {
Expand Down
4 changes: 2 additions & 2 deletions Source/IO/IO/Transfer/SocketTransferModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ QVariant SocketTransferModel::data(const QModelIndex &index, int role) const

if (role == Qt::DisplayRole) {
if (index.column() == 0) {
return item.enabled ? tr("Enable") : tr("Disable");
return item.transfer->isEnable() ? tr("Enable") : tr("Disable");
} else if (index.column() == 1) {
return socketItem.clientAddress;
} else if (index.column() == 2) {
Expand All @@ -66,7 +66,7 @@ QVariant SocketTransferModel::data(const QModelIndex &index, int role) const
}
} else if (role == Qt::EditRole) {
if (index.column() == 0) {
return item.enabled;
return item.transfer->isEnable();
} else if (index.column() == 1) {
return socketItem.clientAddress;
} else if (index.column() == 2) {
Expand Down
3 changes: 0 additions & 3 deletions Source/IOPage/IOPage.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,10 +99,7 @@ class IOPage : public QWidget
xTools::WebSocketServerTransferUi *m_webSocketServerTransferUi;

QButtonGroup m_pageButtonGroup;
QMap<QAbstractButton *, QWidget *> m_pageContextMap;
QList<xTools::AbstractIO *> m_ioList;
QButtonGroup m_transferButtonGroup;
QMap<QAbstractButton *, QWidget *> m_transferContextMap;
QSettings *m_settings;

private:
Expand Down

0 comments on commit 69610c4

Please sign in to comment.