git-svn-id: svn://db.shs.com.ru/libs@379 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
214
qcd_utils/qcd_view.cpp
Normal file
214
qcd_utils/qcd_view.cpp
Normal file
@@ -0,0 +1,214 @@
|
||||
#include <QDir>
|
||||
#include "cdutils_k.h"
|
||||
#include "cdutils_x.h"
|
||||
#include "cdutils_core.h"
|
||||
#include "qcd_view.h"
|
||||
#include "qcd_model.h"
|
||||
#include "piqt.h"
|
||||
#include "pifile.h"
|
||||
|
||||
using namespace CDUtils;
|
||||
|
||||
|
||||
CDView::CDView(QWidget *parent) : QTreeView(parent) {
|
||||
type_ = -1;
|
||||
model_ = 0;
|
||||
connect(this, SIGNAL(_qcd_sendFailed()), this, SLOT(cd_sendFailed()), Qt::QueuedConnection);
|
||||
connect(this, SIGNAL(_qcd_sendSucceed()), this, SLOT(cd_sendSucceed()), Qt::QueuedConnection);
|
||||
connect(this, SIGNAL(_qcd_receiveFailed()), this, SLOT(cd_receiveFailed()), Qt::QueuedConnection);
|
||||
connect(this, SIGNAL(_qcd_receiveSucceed()), this, SLOT(cd_receiveSucceed()), Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
|
||||
CDView::~CDView() {
|
||||
if (model_) delete model_;
|
||||
model_ = 0;
|
||||
}
|
||||
|
||||
|
||||
void CDView::setType(int cdt) {
|
||||
if (cdt < 0) return;
|
||||
if (type_ >= 0) return;
|
||||
type_ = cdt;
|
||||
switch ((CDType::cdT)type_) {
|
||||
case CDType::cdK:
|
||||
CONNECTU(&K, sended, this, pi_cd_sendSucceed);
|
||||
CONNECTU(&K, sendFailed, this, pi_cd_sendFailed);
|
||||
CONNECTU(&K, received, this, pi_cd_receiveSucceed);
|
||||
CONNECTU(&K, receiveFailed, this, pi_cd_receiveFailed);
|
||||
break;
|
||||
case CDType::cdX:
|
||||
CONNECTU(&X, sended, this, pi_cd_sendSucceed);
|
||||
CONNECTU(&X, sendFailed, this, pi_cd_sendFailed);
|
||||
CONNECTU(&X, received, this, pi_cd_receiveSucceed);
|
||||
CONNECTU(&X, receiveFailed, this, pi_cd_receiveFailed);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void CDView::refresh() {
|
||||
if (type_ < 0) return;
|
||||
if (!model_) {
|
||||
model_ = new CDItemModel(type_);
|
||||
setModel(model_);
|
||||
setItemDelegateForColumn(4, new CDDelegate());
|
||||
}
|
||||
model_->rebuildModel();
|
||||
switch ((CDType::cdT)type_) {
|
||||
case CDType::cdX:
|
||||
setColumnHidden(3, true);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
expandAll();
|
||||
for (int i=0; i<6; i++) resizeColumnToContents(i);
|
||||
}
|
||||
|
||||
|
||||
void CDView::setFile(const QString & filename) {
|
||||
switch ((CDType::cdT)type_) {
|
||||
case CDType::cdK: K.setFileName(Q2PIString(filename)); break;
|
||||
case CDType::cdX: X.setFileName(Q2PIString(filename)); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool CDView::inProgress() const {
|
||||
switch ((CDType::cdT)type_) {
|
||||
case CDType::cdK: return K.inProgress(); break;
|
||||
case CDType::cdX: return X.inProgress(); break;
|
||||
default: break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void CDView::startPing() {
|
||||
switch ((CDType::cdT)type_) {
|
||||
case CDType::cdK: K.startPing(); break;
|
||||
case CDType::cdX: X.startPing(); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
CDSection * CDView::root() {
|
||||
return CDCore::instance()->root((CDType::cdT)type_);
|
||||
}
|
||||
|
||||
|
||||
QString CDView::typeLetter() const {
|
||||
return PI2QString(CDCore::instance()->typeLetter((CDType::cdT)type_));
|
||||
}
|
||||
|
||||
|
||||
void CDView::send() {
|
||||
busyStatusChanged(true);
|
||||
switch ((CDType::cdT)type_) {
|
||||
case CDType::cdK: K.send(); break;
|
||||
case CDType::cdX: X.send(); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CDView::receive() {
|
||||
busyStatusChanged(true);
|
||||
switch ((CDType::cdT)type_) {
|
||||
case CDType::cdK: K.request(); break;
|
||||
case CDType::cdX: X.request(); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CDView::save() {
|
||||
switch ((CDType::cdT)type_) {
|
||||
case CDType::cdK: K.writeFile(); break;
|
||||
case CDType::cdX: X.writeFile(); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CDView::load() {
|
||||
switch ((CDType::cdT)type_) {
|
||||
case CDType::cdK:
|
||||
K.readFile();
|
||||
K.calculate();
|
||||
break;
|
||||
case CDType::cdX:
|
||||
X.readFile();
|
||||
X.calculate();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
refresh();
|
||||
}
|
||||
|
||||
|
||||
void CDView::clear() {
|
||||
//piCout << "clearK";
|
||||
switch ((CDType::cdT)type_) {
|
||||
case CDType::cdK: K.root() = CDSection(); break;
|
||||
case CDType::cdX: X.root() = CDSection(); break;
|
||||
default: break;
|
||||
}
|
||||
refresh();
|
||||
}
|
||||
|
||||
|
||||
void CDView::buildFromHeader(const QString & description, int mode) {
|
||||
if (description.isEmpty()) return;
|
||||
PIString desc_file = Q2PIString(QDir::current().relativeFilePath(description));
|
||||
PIFile f(desc_file, PIIODevice::ReadOnly);
|
||||
switch ((CDType::cdT)type_) {
|
||||
case CDType::cdK: K.update(&f, mode); break;
|
||||
case CDType::cdX: X.update(&f, mode); break;
|
||||
default: break;
|
||||
}
|
||||
refresh();
|
||||
}
|
||||
|
||||
|
||||
void CDView::calculate() {
|
||||
switch ((CDType::cdT)type_) {
|
||||
case CDType::cdK: K.calculate(); break;
|
||||
case CDType::cdX: X.calculate(); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CDView::cd_sendFailed() {
|
||||
busyStatusChanged(false);
|
||||
emit messageStatus("send failed");
|
||||
emit sendFailed();
|
||||
}
|
||||
|
||||
|
||||
void CDView::cd_sendSucceed() {
|
||||
busyStatusChanged(false);
|
||||
emit messageStatus("send success");
|
||||
emit sendSucceed();
|
||||
}
|
||||
|
||||
|
||||
void CDView::cd_receiveFailed() {
|
||||
busyStatusChanged(false);
|
||||
emit messageStatus("receive failed");
|
||||
emit receiveFailed();
|
||||
}
|
||||
|
||||
|
||||
void CDView::cd_receiveSucceed() {
|
||||
refresh();
|
||||
busyStatusChanged(false);
|
||||
emit messageStatus("receive success");
|
||||
emit receiveSucceed();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user