#include "edockwidget.h" #include "cdpultwindow.h" #include "cdutils_core.h" #include "cdutils_k.h" #include "cdutils_x.h" #include "qcd_core.h" #include "qcd_view.h" #include "qcd_model.h" #include "qcd_modedialog.h" #include "chunkstream.h" #include "qvariantedit.h" #include #include CDPultWindow::CDPultWindow(QWidget *parent) : EMainWindow(parent), Ui::CDPultWindow() { setupUi(this); centralWidget()->hide(); CDUtils::CDCore::instance()->initPult(); widgetK->setType(CDUtils::CDType::cdK); widgetX->setType(CDUtils::CDType::cdX); widgetC->setType(CDUtils::CDType::cdC); editFileK->setValue(QVariant::fromValue(QAD::File("", "*.dat"))); editFileX->setValue(QVariant::fromValue(QAD::File("", "*.dat"))); editFileC->setValue(QVariant::fromValue(QAD::File("", "*.dat"))); log_icons[CDViewWidget::OKIcon] = QIcon(":/icons/dialog-ok-apply.png"); log_icons[CDViewWidget::FailIcon] = QIcon(":/icons/dialog-cancel.png"); log_icons[CDViewWidget::WaitIcon] = QIcon(":/icons/timer.png"); setRecentMenu(menuOpen_recent); ribbon = new Ribbon(this); session.setFile("session_cdpult.conf"); session.addEntry(this); session.addEntry(ribbon->tabWidget()); session.load(); reset(); connect(widgetK, SIGNAL(addToLog(CDViewWidget::LogIcon,QString)), this, SLOT(addToLog(CDViewWidget::LogIcon,QString))); connect(widgetX, SIGNAL(addToLog(CDViewWidget::LogIcon,QString)), this, SLOT(addToLog(CDViewWidget::LogIcon,QString))); connect(widgetC, SIGNAL(addToLog(CDViewWidget::LogIcon,QString)), this, SLOT(addToLog(CDViewWidget::LogIcon,QString))); connect(widgetX->view, SIGNAL(receivedX()), widgetGraphics, SLOT(receivedX())); if (windowState() == Qt::WindowMinimized) setWindowState(Qt::WindowNoState); } CDPultWindow::~CDPultWindow() { } void CDPultWindow::loadFile(const QString & fp) { load(fp); } void CDPultWindow::closeEvent(QCloseEvent *e) { EMainWindow::closeEvent(e); if (!e->isAccepted()) return; QApplication::closeAllWindows(); session.save(); session.setFile(QString()); } void CDPultWindow::reset(bool full) { setWindowTitle(QString("CD Pult")); widgetK->reset(); setChanged(false); } bool CDPultWindow::load(const QString & path) { QPIConfig conf(path, QIODevice::ReadOnly); QAD::File f = editFileK->value().value(); checkSyncFiles->setChecked(false); editFileK->setValue(QVariant::fromValue(QAD::File(conf.getValue("file_k").value(), f.filter))); editFileX->setValue(QVariant::fromValue(QAD::File(conf.getValue("file_x").value(), f.filter))); editFileC->setValue(QVariant::fromValue(QAD::File(conf.getValue("file_c").value(), f.filter))); checkSyncFiles->setChecked(conf.getValue("sync_files")); lineSessionName->setText(conf.getValue("session_name")); checkHasK->setChecked(conf.getValue("has_k")); checkHasX->setChecked(conf.getValue("has_x")); checkHasC->setChecked(conf.getValue("has_c")); session_gr = conf.getValue("session_gr", QByteArray()); setChanged(false); file_name = path; return true; } bool CDPultWindow::save(const QString & path) { session_gr = widgetGraphics->save(); QPIConfig conf(path, QIODevice::ReadWrite); conf.clear(); conf.setValue("file_k", editFileK->value().value().file); conf.setValue("file_x", editFileX->value().value().file); conf.setValue("file_c", editFileC->value().value().file); conf.setValue("sync_files", checkSyncFiles->isChecked()); conf.setValue("session_name", lineSessionName->text()); conf.setValue("has_k", checkHasK->isChecked()); conf.setValue("has_x", checkHasX->isChecked()); conf.setValue("has_c", checkHasC->isChecked()); conf.setValue("session_gr", session_gr); file_name = path; return true; //widgetK->setFile(path); //widgetK->save(); } void CDPultWindow::loadingSession(QPIConfig & conf) { setRecentFiles(conf.getValue("recent files", QStringList())); } void CDPultWindow::savingSession(QPIConfig & conf) { conf.setValue("recent files", recentFiles()); } void CDPultWindow::addToLog(CDViewWidget::LogIcon icon, const QString & msg) { QListWidgetItem * ni = new QListWidgetItem(log_icons[icon], "(" + QTime::currentTime().toString() + ") " + msg); bool s = listLog->verticalScrollBar()->value() == listLog->verticalScrollBar()->maximum(); listLog->addItem(ni); if (s) listLog->scrollToBottom(); } void CDPultWindow::on_editFileK_valueChanged(const QVariant & p) { if (!checkSyncFiles->isChecked()) return; QFileInfo fi(p.value().file); if (fi.path().isEmpty()) return; QString n = fi.baseName(); QString xn(n), cn(n); if (n.contains("k")) { xn.replace(n.indexOf("k"), 1, "x"); cn.replace(n.indexOf("k"), 1, "c"); } else { xn += "_x"; cn += "_c"; } QString ext = fi.suffix(), dot, dir; QString kfn(fi.filePath()); if (!ext.isEmpty()) { kfn.chop(ext.size()); if (kfn.endsWith(".")) { kfn.chop(1); dot = "."; } } if (!fi.path().isEmpty() && fi.path() != ".") { dir = fi.path(); if (!dir.endsWith("/")) dir += "/"; } QAD::File f = editFileK->value().value(); f.file = dir + xn + dot + ext; editFileX->setValue(QVariant::fromValue(f)); f.file = dir + cn + dot + ext; editFileC->setValue(QVariant::fromValue(f)); } void CDPultWindow::on_buttonSessionApply_clicked() { // with session or not widgetK->setFile(editFileK->value().value().file); widgetX->setFile(editFileX->value().value().file); widgetC->setFile(editFileC->value().value().file); dockCDKView->setVisible(checkHasK->isChecked()); dockCDXView->setVisible(checkHasX->isChecked()); dockCDCView->setVisible(checkHasC->isChecked()); widgetX->view->startX(); widgetGraphics->load(session_gr); X.lock(); PIVector > x_list = X.enabledList(); X.unlock(); piForeachC (PIDeque & p, x_list) X.enable(X[p]); ((CDItemModel*)widgetX->view->model())->updateModel(); widgetX->view->expandAll(); } void CDPultWindow::on_lineSessionName_textChanged(const QString & t) { setWindowTitle(QString("CD Pult - %1").arg(t)); }