diff --git a/libremediaserver-audio.pro b/libremediaserver-audio.pro index 48f0af8..db78795 100644 --- a/libremediaserver-audio.pro +++ b/libremediaserver-audio.pro @@ -2,7 +2,6 @@ TEMPLATE = app TARGET = libremediaserver-audio QT += webkitwidgets widgets HEADERS += src/libremediaserver-audio.h \ - src/cuetrackwidget.h \ src/editcuetrackwidget.h \ src/cuetracklistwidget.h \ src/showplayer.h \ @@ -24,10 +23,8 @@ HEADERS += src/libremediaserver-audio.h \ src/audiowidget.h \ src/defines.h \ src/settings.h \ - src/slidergroup.h \ - src/dialgroup.h + src/slidergroup.h SOURCES += src/main.cpp \ - src/cuetrackwidget.cpp \ src/editcuetrackwidget.cpp \ src/cuetracklistwidget.cpp \ src/showplayer.cpp \ @@ -46,10 +43,8 @@ SOURCES += src/main.cpp \ src/audiolayerwidget.cpp \ src/audiowidget.cpp \ src/settings.cpp \ - src/slidergroup.cpp \ - src/dialgroup.cpp + src/slidergroup.cpp FORMS += \ - src/cuetrackwidget.ui \ src/showplayer.ui \ src/libremediaserver-audio-ui.ui CCFLAG += -msse2 -mavx2 @@ -63,5 +58,3 @@ OTHER_FILES += \ docs/changelog.txt \ docs/lms-audio.xlm \ docs/roadmap.txt -RESOURCES += \ - lms-resources.qrc diff --git a/lms-resources.qrc b/lms-resources.qrc deleted file mode 100644 index 21a0629..0000000 --- a/lms-resources.qrc +++ /dev/null @@ -1,15 +0,0 @@ - - - resources/copy_button.png - resources/cut_button.png - resources/delete_button.png - resources/edit_button.png - resources/load_button.png - resources/new_button.png - resources/paste_button.png - resources/save_button.png - resources/icon.png - resources/panic_button.jpg - resources/go_button.jpeg - - diff --git a/resources/copy_button.png b/resources/copy_button.png deleted file mode 100644 index 27fdef5..0000000 Binary files a/resources/copy_button.png and /dev/null differ diff --git a/resources/cut_button.png b/resources/cut_button.png deleted file mode 100644 index 4977b23..0000000 Binary files a/resources/cut_button.png and /dev/null differ diff --git a/resources/delete_button.png b/resources/delete_button.png deleted file mode 100644 index 0d44443..0000000 Binary files a/resources/delete_button.png and /dev/null differ diff --git a/resources/edit_button.png b/resources/edit_button.png deleted file mode 100644 index 37c3a34..0000000 Binary files a/resources/edit_button.png and /dev/null differ diff --git a/resources/load_button.png b/resources/load_button.png deleted file mode 100644 index d0d1d3c..0000000 Binary files a/resources/load_button.png and /dev/null differ diff --git a/resources/new_button.png b/resources/new_button.png deleted file mode 100644 index 3ac34f9..0000000 Binary files a/resources/new_button.png and /dev/null differ diff --git a/resources/paste_button.png b/resources/paste_button.png deleted file mode 100644 index ef34fac..0000000 Binary files a/resources/paste_button.png and /dev/null differ diff --git a/resources/save_button.png b/resources/save_button.png deleted file mode 100644 index 78d8ae0..0000000 Binary files a/resources/save_button.png and /dev/null differ diff --git a/src/cuetracklistwidget.cpp b/src/cuetracklistwidget.cpp index 22f9062..4397239 100644 --- a/src/cuetracklistwidget.cpp +++ b/src/cuetracklistwidget.cpp @@ -1,7 +1,4 @@ #include -#include -#include -#include #include #include #include @@ -10,8 +7,6 @@ #include #include #include -#include -#include #include "cuetracklistwidget.h" CueTrackListWidget::CueTrackListWidget(QWidget *parent) @@ -47,10 +42,9 @@ CueTrack* CueTrackListWidget::getTrackAtIndex(int index) { return nullptr; } -CueTrack* CueTrackListWidget::getSelectedTrack(bool advance) { +CueTrack* CueTrackListWidget::getSelectedTrack() { CueTrack* track = getTrackAtIndex(selectedIndex); - if (advance) - key_down(); + key_down(); return track; } @@ -127,25 +121,23 @@ void CueTrackListWidget::updateSelectedCueTrack(bool highlightRow) { void CueTrackListWidget::cueTrackLoadDefaults(CueTrack * t) { t->active = false; - t->audioLayer = 0; - t->bus1 = 100; - t->bus2 = 100; + t->audioLayer = -1; + t->bus1 = 80; + t->bus2 = 80; t->entryPoint = 0; t->exitPoint = 255; - t->fadeIn = 2; - t->fadeOut = 2; + t->fadeIn = 3; + t->fadeOut = 3; t->waitIn = 0; t->waitOut = 0; t->pan = 0; t->pitch = 1; t->status = Status::PlayingOnce; - lastUserCueNumber += 10; t->userNumber = lastUserCueNumber; + lastUserCueNumber++; t->volume = 80; t->stopAtEnd = true; t->filePath = ""; - t->duration = 0; - t->multi = false; } void CueTrackListWidget::createNewCueTrack() @@ -153,20 +145,15 @@ void CueTrackListWidget::createNewCueTrack() CueTrack *t = new CueTrack; cueTrackLoadDefaults(t); EditCueTrackWidget dialog(t, this); - if (dialog.exec() == QDialog::Accepted) { - t->active = false; + if (dialog.exec() == QDialog::Accepted) addCueTrack(t); - if (m_size == 1) - { - updateSelectedCueTrack(true); - emit changeSelectedIndex(0); - } else - redrawCueTrackList(); - if (lastUserCueNumber < t->userNumber) - lastUserCueNumber = t->userNumber; + if (m_size == 1) + { + updateSelectedCueTrack(true); + emit changeSelectedIndex(0); } else - delete (t); -} + redrawCueTrackList(); + } void CueTrackListWidget::editCueTrack() { @@ -177,8 +164,6 @@ void CueTrackListWidget::editCueTrack() redrawCueTrackList(); emit changeSelectedIndex(selectedIndex); } - if (lastUserCueNumber < current->userNumber) - lastUserCueNumber = current->userNumber; } void CueTrackListWidget::deleteCueTrack() @@ -213,8 +198,6 @@ void CueTrackListWidget::copyCueTrack(CueTrack *src, CueTrack *dst) dst->name = src->name; dst->description = src->description; dst->filePath = src->filePath; - dst->duration = src->duration; - dst->multi = src->multi; } QString *CueTrackListWidget::getFileName(std::string s) @@ -240,7 +223,7 @@ void CueTrackListWidget::redrawCueTrackList() int selected = cueTracks.at(selectedIndex)->userNumber; clearTableWidget(); tableWidget->setColumnCount(7); - QStringList headers = {"Active", "Number","Channel", "Name", "Volume", "Status", "File"}; + QStringList headers = {"Active", "Number","Audio Channel", "Name", "Volume", "Status", "File"}; tableWidget->setHorizontalHeaderLabels(headers); sortCueTrackList(); selectedIndex = 0; @@ -258,9 +241,13 @@ void CueTrackListWidget::redrawCueTrackList() tableWidget->resizeRowsToContents(); tableWidget->scrollToItem(tableWidget->item(selectedIndex, 0)); tableWidget->blockSignals(false); - emit changeSelectedIndex(selectedIndex); } +#include +#include +#include +#include + void CueTrackListWidget::loadCueTrackList(std::string filename) { QFile file(QString::fromStdString(filename)); @@ -271,7 +258,6 @@ void CueTrackListWidget::loadCueTrackList(std::string filename) } QXmlStreamReader xmlReader(&file); clearCueTrackList(); - lastUserCueNumber = 0; while (!xmlReader.atEnd() && !xmlReader.hasError()) { QXmlStreamReader::TokenType token = xmlReader.readNext(); @@ -323,12 +309,7 @@ void CueTrackListWidget::loadCueTrackList(std::string filename) t->waitOut = xmlReader.text().toInt(); } else if (elementName == "stopAtEnd") { - QString tmp = xmlReader.text().toString().toLower(); - if (tmp.compare("false")) - t->stopAtEnd = true; - else { - t->stopAtEnd = false; - } + t->stopAtEnd = xmlReader.text().toString().toLower() == "true"; } else if (elementName == "name") { t->name = xmlReader.text().toString().toStdString(); @@ -338,10 +319,6 @@ void CueTrackListWidget::loadCueTrackList(std::string filename) } else if (elementName == "userNumber") { t->userNumber = xmlReader.text().toInt(); - if (t->userNumber > lastUserCueNumber) - { - lastUserCueNumber = t->userNumber; - } } else if (elementName == "entryPoint") { t->entryPoint = xmlReader.text().toInt(); @@ -352,18 +329,9 @@ void CueTrackListWidget::loadCueTrackList(std::string filename) else if (elementName == "audioLayer") { t->audioLayer = xmlReader.text().toInt(); } - else if (elementName == "duration") { - t->duration = xmlReader.text().toInt(); - } - else if (elementName == "multi") { - QString tmp = xmlReader.text().toString().toLower(); - if (tmp.compare("false")) - t->multi = true; - else { - t->multi = false; - } - } - t->active = false; + else if (elementName == "active") { + t->active = xmlReader.text().toString().toLower() == "true"; + } } } xmlReader.readNext(); @@ -380,6 +348,9 @@ void CueTrackListWidget::loadCueTrackList(std::string filename) redrawCueTrackList(); } +#include +#include + void CueTrackListWidget::saveCueTrackList(std::string filename) { std::ofstream file(filename); @@ -422,11 +393,10 @@ std::string CueTrackListWidget::cueTrackToXml(const CueTrack& cueTrack) xml += " " + std::to_string(cueTrack.entryPoint) + "\n"; xml += " " + std::to_string(cueTrack.exitPoint) + "\n"; xml += " " + std::to_string(cueTrack.audioLayer) + "\n"; - xml += " " + std::to_string(cueTrack.duration) + "\n"; - xml += " "; - xml += (cueTrack.multi ? "true" : "false"); - xml += "\n"; - xml += " \n"; + xml += " "; + xml += (cueTrack.active ? "true" : "false"); + xml += "\n"; + xml += " \n"; return xml; } @@ -474,6 +444,7 @@ void saveCueTrackToXml(const CueTrack& cueTrack, const QString& filename) { xmlWriter.writeTextElement("entryPoint", QString::number(cueTrack.entryPoint)); xmlWriter.writeTextElement("exitPoint", QString::number(cueTrack.exitPoint)); xmlWriter.writeTextElement("audioLayer", QString::number(cueTrack.audioLayer)); + xmlWriter.writeTextElement("active", cueTrack.active ? "true" : "false"); xmlWriter.writeEndElement(); xmlWriter.writeEndDocument(); @@ -536,9 +507,9 @@ CueTrack loadCueTrackFromXml(const QString& filename) { cueTrack.exitPoint = xmlReader.readElementText().toInt(); } else if (elementName == "audioLayer") { cueTrack.audioLayer = xmlReader.readElementText().toInt(); - } else if (elementName == "duration") { - cueTrack.duration = xmlReader.readElementText().toInt(); - } + } else if (elementName == "active") { + cueTrack.active = xmlReader.readElementText() == "true"; + } } } if (xmlReader.hasError()) { @@ -557,39 +528,3 @@ void CueTrackListWidget::clearTableWidget() tableWidget->clear(); tableWidget->setRowCount(0); } - -void CueTrackListWidget::cueTrackAtEnd(int layer) -{ - for (int i = 0; i < m_size; i++) - { - CueTrack * cur = cueTracks.at(i); - if (cur->audioLayer == layer) - { - cur->active = false; - } - } - redrawCueTrackList(); -} - -void CueTrackListWidget::copyCueTrack() { - if (selectedIndex >= 0 && selectedIndex < m_size) { - delete copiedCue; - copiedCue = new CueTrack(*cueTracks.at(selectedIndex)); - } -} - -void CueTrackListWidget::cutCueTrack() { - if (selectedIndex >= 0 && selectedIndex < m_size) { - delete copiedCue; - copiedCue = new CueTrack(*cueTracks.at(selectedIndex)); - removeCueTrack(selectedIndex); - } -} - -void CueTrackListWidget::pasteCueTrack() { - if (copiedCue != nullptr) { - CueTrack* newCue = new CueTrack(*copiedCue); - addCueTrack(newCue); - } -} - diff --git a/src/cuetracklistwidget.h b/src/cuetracklistwidget.h index 518b4ef..fa7b685 100644 --- a/src/cuetracklistwidget.h +++ b/src/cuetracklistwidget.h @@ -19,7 +19,7 @@ public: explicit CueTrackListWidget(QWidget *parent = nullptr); public slots: - CueTrack* getSelectedTrack(bool advance); + CueTrack* getSelectedTrack(); void createNewCueTrack(); void editCueTrack(); void deleteCueTrack(); @@ -31,8 +31,6 @@ public slots: void clearCueTrackList(); void setLastUserCueNumber(size_t n) { lastUserCueNumber = n; } size_t getLastUserCueNumber() { return lastUserCueNumber; } - void cueTrackAtEnd(int layer); - void redrawCueTrackList(); private: std::vector cueTracks; @@ -41,8 +39,7 @@ private: int m_size = 0; int size() { return m_size; } int selectedIndex = 0; - int lastUserCueNumber = 0; - CueTrack* copiedCue = nullptr; + size_t lastUserCueNumber = 0; private slots: void addCueTrack(CueTrack* cue); @@ -55,14 +52,12 @@ private slots: void cueTrackLoadDefaults(CueTrack * t); void copyCueTrack(CueTrack *src, CueTrack *dst); void sortCueTrackList(); + void redrawCueTrackList(); void clearTableWidget(); std::string cueTrackToXml(const CueTrack& cueTrack); - void copyCueTrack(); - void pasteCueTrack(); - void cutCueTrack(); + signals: void changeSelectedIndex(int index); - void goAction(int channel); }; #endif diff --git a/src/cuetrackwidget.cpp b/src/cuetrackwidget.cpp deleted file mode 100644 index 609cf4d..0000000 --- a/src/cuetrackwidget.cpp +++ /dev/null @@ -1,94 +0,0 @@ -#include - -#include "cuetrackwidget.h" -#include "ui_cuetrackwidget.h" - -CueTrackWidget::CueTrackWidget(QWidget *parent) : - QWidget(parent), - ui(new Ui::CueTrackWidget) -{ - ui->setupUi(this); - tlFade.setFrameRange(0, 100); - tlWaitIn.setFrameRange(0, 100); - tlWaitOut.setFrameRange(0, 100); - connect(&tlFade, &QTimeLine::frameChanged, ui->cueProgressBar, &QProgressBar::setValue); - connect(&tlWaitIn, &QTimeLine::frameChanged, ui->cueProgressBar, &QProgressBar::setValue); - connect(&tlWaitOut, &QTimeLine::frameChanged, ui->cueProgressBar, &QProgressBar::setValue); - connect(&tlFade, SIGNAL(finished()), this, SLOT(fadeSlot())); - connect(&tlWaitIn, SIGNAL(finished()), this, SLOT(waitInSlot())); - connect(&tlWaitOut, SIGNAL(finished()), this, SLOT(waitOutSlot())); -} - - -CueTrackWidget::~CueTrackWidget() -{ - delete ui; -} - -void CueTrackWidget::loadCueTrack(CueTrack* track) -{ - ui->cueName->setText(track->name.data()); - ui->cueNumber->display(track->userNumber); - ui->vol->display(track->volume); - ui->pan->display(track->pan); - ui->pitch->display(track->pitch); - ui->bus1->display(track->bus1); - ui->bus2->display(track->bus2); - ui->fade->setValue(track->fadeIn); - ui->waitIn->setValue(track->waitIn); - ui->waitOut->setValue(track->waitOut); - ui->halt->setChecked(track->stopAtEnd); - QFileInfo fileInfo(track->filePath.data()); - fileInfo.fileName().truncate(64); - ui->mediaFileName->setText(fileInfo.fileName()); - ui->status->setText(statusToString(track->status)); - ui->audioLayer->display(track->audioLayer); - ui->multi->setChecked(track->multi); -} - -void CueTrackWidget::go() -{ - tlFade.stop(); - tlWaitIn.stop(); - tlWaitOut.stop(); - ui->cueProgressBar->setValue(0); - if (ui->waitIn->value() > 0) - { - tlWaitIn.setDuration(ui->waitIn->value() * 1000); - tlWaitIn.start(); - ui->cueProgressBar->setStyleSheet("QProgressBar::chunk { background-color: #FF0000; }"); - } else { - waitInSlot(); - } -} - -void CueTrackWidget::waitInSlot() -{ - emit goAction(ui->audioLayer->intValue()); - tlFade.setDuration(ui->fade->value() * 1000); - tlFade.start(); - ui->cueProgressBar->setStyleSheet("QProgressBar::chunk { background-color: #00FF00; }"); -} - -void CueTrackWidget::fadeSlot() -{ - if (ui->waitOut->value() > 0) { - tlWaitOut.setDuration(ui->waitOut->value() * 1000); - tlWaitOut.start(); - ui->cueProgressBar->setStyleSheet("QProgressBar::chunk { background-color: #FF0000; }"); - } else { - waitOutSlot(); - } -} - -void CueTrackWidget::waitOutSlot() -{ - ui->cueProgressBar->setStyleSheet("QProgressBar::chunk { background-color: #0000FF; }"); - emit cueFinished(ui->audioLayer->intValue()); -} - -void CueTrackWidget::setNextCue() -{ - ui->cueProgressBar->setDisabled(true); - ui->cueProgressBar->hide(); -} diff --git a/src/cuetrackwidget.h b/src/cuetrackwidget.h deleted file mode 100644 index 6e7bd8b..0000000 --- a/src/cuetrackwidget.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef CUETRACKWIDGET_H -#define CUETRACKWIDGET_H - -#include -#include - -#include "defines.h" -#include "dialgroup.h" - -namespace Ui { -class CueTrackWidget; -} - -class CueTrackWidget : public QWidget -{ - Q_OBJECT - -public: - explicit CueTrackWidget(QWidget *parent = nullptr); - ~CueTrackWidget(); - -private: - Ui::CueTrackWidget *ui; - QTimeLine tlFade; - QTimeLine tlWaitIn; - QTimeLine tlWaitOut; - -public slots: - void loadCueTrack(CueTrack* track); - void go(); - void setNextCue(); - -private slots: - void fadeSlot(); - void waitInSlot(); - void waitOutSlot(); - -signals: - void cueFinished(int layer); - void goAction(int layer); -}; - -#endif // CUETRACKWIDGET_H diff --git a/src/cuetrackwidget.ui b/src/cuetrackwidget.ui deleted file mode 100644 index 314782b..0000000 --- a/src/cuetrackwidget.ui +++ /dev/null @@ -1,780 +0,0 @@ - - - CueTrackWidget - - - - 0 - 0 - 502 - 329 - - - - - 0 - 0 - - - - - 0 - 0 - - - - Qt::ClickFocus - - - Cue Track - - - - :/buttons/resources/icon.png:/buttons/resources/icon.png - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - QFrame::StyledPanel - - - Qt::Vertical - - - false - - - 8 - - - - - 0 - 0 - - - - - 0 - 0 - - - - Qt::Horizontal - - - - - 0 - 0 - - - - - 0 - 0 - - - - Cue Progress - - - Cue Progress - - - 24 - - - - - - 1 - 0 - - - - - 48 - 48 - - - - - 14 - 75 - true - - - - Cue Number - - - Cue Number - - - QFrame::StyledPanel - - - QFrame::Plain - - - 1 - - - false - - - 4 - - - QLCDNumber::Flat - - - - - - 2 - 0 - - - - - 0 - 0 - - - - - 13 - 75 - true - - - - Cue Name - - - QFrame::StyledPanel - - - QFrame::Plain - - - Cue Name - - - Qt::PlainText - - - true - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - true - - - 3 - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - - - 0 - 0 - - - - - 0 - 24 - - - - - 16777215 - 24 - - - - - 10 - - - - Media FIle Name - - - QFrame::StyledPanel - - - Media file name - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - true - - - 3 - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - Qt::Horizontal - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - - - - - QLayout::SetDefaultConstraint - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - Qt::NoFocus - - - Wait in time in seconds - - - QAbstractSpinBox::NoButtons - - - - - - - - 0 - 0 - - - - Qt::NoFocus - - - Wait out time in secods - - - QAbstractSpinBox::NoButtons - - - - - - - - 0 - 0 - - - - Qt::NoFocus - - - Fade time in seconds - - - Fade In - - - Fade In Time in seconds - - - true - - - true - - - true - - - QAbstractSpinBox::NoButtons - - - - - - false - - - - - - - - - 99990000.000000000000000 - - - QAbstractSpinBox::AdaptiveDecimalStepType - - - - - - - - 0 - 0 - - - - Qt::NoFocus - - - Exit Point - - - QAbstractSpinBox::NoButtons - - - - - - - - 0 - 0 - - - - - 13 - - - - Playback Status - - - QFrame::StyledPanel - - - Playback Status - - - Qt::PlainText - - - true - - - Qt::AlignCenter - - - true - - - - - - - - 0 - 0 - - - - Qt::NoFocus - - - Entry Point - - - QAbstractSpinBox::NoButtons - - - - - - - - 0 - 0 - - - - - 0 - 24 - - - - Audio Channel - - - false - - - 1 - - - QLCDNumber::Flat - - - - - - - - 0 - 0 - - - - - 24 - 0 - - - - - 13 - 75 - true - - - - Qt::NoFocus - - - Do not play next cue if checked - - - If checked, do not play next cue. If checked, Go next cue when this cue has finished. - - - Halt - - - true - - - Halt - - - - :/buttons/resources/delete_button.png:/buttons/resources/delete_button.png - - - - 32 - 32 - - - - true - - - - - - - - - QLayout::SetDefaultConstraint - - - 0 - - - - - 3 - - - - - - - - 0 - 0 - - - - - 10 - - - - Bus 1 - - - Qt::AlignCenter - - - - - - - 3 - - - QLCDNumber::Flat - - - - - - - - 10 - - - - Volume - - - Qt::AlignCenter - - - - - - - - 10 - - - - Bus 2 - - - Qt::AlignCenter - - - - - - - <html><head/><body><p>Volume</p></body></html> - - - 3 - - - - - - - <html><head/><body><p>Bus 2 Volume</p></body></html> - - - 3 - - - - - - - <html><head/><body><p>Bus 1 Volume</p></body></html> - - - 3 - - - - - - - - 0 - 0 - - - - - 10 - - - - Pan - - - Qt::AlignCenter - - - - - - - - 10 - - - - Pitch - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 50 - false - true - - - - <html><head/><body><p>PLay next cue at same time this cue, do not wait to finish the cue.</p></body></html> - - - Qt::RightToLeft - - - - - - - :/buttons/resources/go_button.jpeg:/buttons/resources/go_button.jpeg - - - - 32 - 32 - - - - - - - - - 10 - - - - MultiCue - - - Qt::AlignCenter - - - - - - - - - - - - waitOut - fade - entryPoint - exitPoint - waitIn - - - - - - diff --git a/src/defines.h b/src/defines.h index f6a083c..59375fc 100644 --- a/src/defines.h +++ b/src/defines.h @@ -65,7 +65,7 @@ constexpr const char* statusToString(Status e) noexcept #include static Status stringToStatus(QString *statusStr) { - if (!statusStr->compare("Stop")) return Stopped; + if (!statusStr->compare("Stopped")) return Stopped; else if (!statusStr->compare("Paused") ) return Paused; else if (!statusStr->compare("Play 1")) return PlayingOnce; else if (!statusStr->compare("Play Loop")) return PlayingLoop; @@ -91,7 +91,6 @@ struct layerData { int bus1Vol; int bus2Vol; float level; - int fade; }; struct CueTrack { @@ -113,9 +112,7 @@ struct CueTrack { int entryPoint; // 0 - 255 int exitPoint; // 0 - 255 int audioLayer; // internal audio layer used when cue is loaded - bool active; // the cue is playing - int duration; // media duration in milliseconds - bool multi; // launch next cue at same time, not waiting for this to finish. + bool active; }; #endif // __cplusplus diff --git a/src/dialgroup.cpp b/src/dialgroup.cpp deleted file mode 100644 index ef29b88..0000000 --- a/src/dialgroup.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include -#include -#include -#include "dialgroup.h" - -DialGroup::DialGroup(QString name, - int min, - int max, - int decimals, - QWidget *parent) - : QWidget(parent) -{ - QVBoxLayout *layout = new QVBoxLayout; - layout->setAlignment(Qt::AlignHCenter); - layout->setContentsMargins(0, 0, 0, 0); - slider.setFocusPolicy(Qt::NoFocus); - slider.setRange(min, max); - slider.setValue(min + max / 2); - slider.setToolTip(name); - slider.setContentsMargins(0, 0, 0, 0); -/* - slider.setMinimumHeight(0); - slider.setSingleStep(1); - slider.setMinimumWidth(50); - slider.setStyleSheet("QDial {" - "border: 1px solid #aa8895;" - "background: #20182d;" - "margin: 0px;}" - "QSlider::groove:vertical {" - "border: 1px solid #999999;" - "width: 25px;}" - "QDial::tickmarks:vertical {" - "background-color: black;" - "background: red;" - "color: white;}" -*/ - valueBox.setFocusPolicy(Qt::NoFocus); - valueBox.setButtonSymbols(QAbstractSpinBox::NoButtons); - valueBox.setMinimumWidth(50); - valueBox.setRange(min, max); - valueBox.setValue(0); - valueBox.setDecimals(decimals); - valueBox.setObjectName(name); - valueBox.setToolTip(name); - valueBox.setAlignment(Qt::AlignHCenter); - valueBox.setContentsMargins(0, 0, 0, 0); - layout->addWidget(&slider); - layout->addWidget(&valueBox); -/* this->setStyleSheet("border: 1px solid #998090;" - "background-color: black;" - "margin: 1px;" - );*/ - layout->setSpacing(0); - layout->setContentsMargins(0, 0, 0, 0); - this->setLayout(layout); - slider.setObjectName(name); -} - -void DialGroup::setValue(float value) -{ - slider.blockSignals(true); - valueBox.blockSignals(true); - slider.setValue(value); - valueBox.setValue(value); - slider.blockSignals(false); - valueBox.blockSignals(false); -} diff --git a/src/dialgroup.h b/src/dialgroup.h deleted file mode 100644 index d795821..0000000 --- a/src/dialgroup.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef DIALGROUP_H -#define DIALGROUP_H - -#include -#include -#include -#include - -#include "clickabledoublespinbox.h" - -class DialGroup : public QWidget -{ - Q_OBJECT -public: - explicit DialGroup(QString name, - int min, - int max, - int decimals, - QWidget *parent = nullptr); - -public slots: - void setValue(float value); - -private: - QDial slider; - ClickableDoubleSpinBox valueBox; - -}; - -#endif diff --git a/src/editcuetrackwidget.cpp b/src/editcuetrackwidget.cpp index cb38701..f0f6046 100644 --- a/src/editcuetrackwidget.cpp +++ b/src/editcuetrackwidget.cpp @@ -58,8 +58,6 @@ void EditCueTrackWidget::setupUi() { layout->addRow("Entry Point", entryPointSpin); exitPointSpin = new QSpinBox(this); layout->addRow("Exit Point", exitPointSpin); - multiCheck = new QCheckBox(this); - layout->addRow("Multi Cue", multiCheck); statusCombo->addItem(statusToString(Status::Stopped)); statusCombo->addItem(statusToString(Status::Paused)); statusCombo->addItem(statusToString(Status::PlayingOnce)); @@ -94,7 +92,6 @@ void EditCueTrackWidget::loadCueTrack(CueTrack cueTrack) { audioLayerSpin->setValue(cueTrack.audioLayer); QString tmp = statusToString(cueTrack.status); statusCombo->setCurrentIndex(statusCombo->findText(tmp)); - multiCheck->setChecked(cueTrack.multi); } CueTrack EditCueTrackWidget::saveCueTrack() { @@ -117,7 +114,6 @@ CueTrack EditCueTrackWidget::saveCueTrack() { cueTrack.pan = panSpin->value(); cueTrack.pitch = pitchSpin->value(); cueTrack.description.append(descriptionEdit->text().toUtf8().constData()); - cueTrack.multi = multiCheck->isChecked(); return cueTrack; } diff --git a/src/editcuetrackwidget.h b/src/editcuetrackwidget.h index 8afb0d1..080561e 100644 --- a/src/editcuetrackwidget.h +++ b/src/editcuetrackwidget.h @@ -46,7 +46,6 @@ private: QSpinBox *exitPointSpin; QComboBox *statusCombo; QSpinBox *audioLayerSpin; - QCheckBox *multiCheck; QPushButton *browseButton; QPushButton *saveButton; QPushButton *cancelButton; diff --git a/src/libremediaserver-audio-ui.cpp b/src/libremediaserver-audio-ui.cpp index e1f8533..0227f16 100644 --- a/src/libremediaserver-audio-ui.cpp +++ b/src/libremediaserver-audio-ui.cpp @@ -60,6 +60,6 @@ void libreMediaServerAudioUi::olasetup() void libreMediaServerAudioUi::launchShowPlayerWindow() { - //m_showPlayer->showMaximized(); + qDebug() << "launch show player"; m_showPlayer->show(); } diff --git a/src/libremediaserver-audio-ui.ui b/src/libremediaserver-audio-ui.ui index 7de7324..2f1feae 100644 --- a/src/libremediaserver-audio-ui.ui +++ b/src/libremediaserver-audio-ui.ui @@ -7,8 +7,8 @@ 0 0 - 640 - 800 + 400 + 400 @@ -23,8 +23,8 @@ LibreMediaServer - - :/buttons/resources/icon.png:/buttons/resources/icon.png + + ../../../../criptomart/artwork/logo_v2_criptomart.net.png../../../../criptomart/artwork/logo_v2_criptomart.net.png @@ -32,7 +32,7 @@ 0 0 - 640 + 400 21 @@ -56,8 +56,6 @@ - - - + diff --git a/src/libremediaserver-audio.cpp b/src/libremediaserver-audio.cpp index a440561..1a1b6eb 100644 --- a/src/libremediaserver-audio.cpp +++ b/src/libremediaserver-audio.cpp @@ -139,6 +139,8 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value) #ifndef NOGUI if (m_ui) { m_lmsUi->m_aw->filterParamChanged(layer, channel, value); + m_played.clear(); + m_played.append(m_ola->getValue(layer, DMX_FILE)); } #endif } @@ -170,16 +172,14 @@ void libreMediaServerAudio::refreshUi() { } m_lmsUi->m_aw->levelChanged(i, m_mae.getLevel(i)); if (m_mae.getAtEnd(i)) { - if (m_currentStatus[i] == Status::PlayingOnce || m_currentStatus[i] == Status::Stopped) { + if (m_currentStatus[i] == Status::PlayingOnce) { m_currentStatus[i] = Status::Stopped; m_lmsUi->m_aw->playbackChanged(i, Status::Stopped); - m_lmsUi->m_showPlayer->cueTrackAtEnd(i); } if (m_currentStatus[i] == Status::PlayingFolder) { - uint last = 0; - if (!m_played.isEmpty()) - last = m_played.last() + 1; + uint last = m_played.last(); int folder = m_ola->getValue(i, DMX_FOLDER); + last++; if (last < m_mediaLibrary->getMediaFolderCount(folder)) { this->loadMedia(i, folder, last); m_mae.playbackChanged(i, Status::PlayingFolder); @@ -187,7 +187,6 @@ void libreMediaServerAudio::refreshUi() { else { m_currentStatus[i] = Status::Stopped; m_lmsUi->m_aw->playbackChanged(i, Status::Stopped); - m_lmsUi->m_showPlayer->cueTrackAtEnd(i); } } else if (m_currentStatus[i] == Status::PlayingFolderLoop) { @@ -228,8 +227,7 @@ void libreMediaServerAudio::setUi(libreMediaServerAudioUi *lmsUi) connect(m_lmsUi->m_aw, SIGNAL(uiPlaybackChanged(int, Status)), this, SLOT(uiPlaybackChanged(int, Status))); connect(m_lmsUi->m_aw, SIGNAL(uiLoadMedia(int, QString)), this, SLOT(uiLoadMedia(int, QString))); connect(m_lmsUi->m_showPlayer, SIGNAL(uiSliderChanged(int, Slider, int)), this, SLOT(uiSliderChanged(int, Slider, int))); - connect(m_lmsUi->m_showPlayer, SIGNAL(uiSliderChangedFaded(int, Slider, int, int)), this, SLOT(uiSliderChangedFaded(int, Slider, int, int))); - connect(m_lmsUi->m_showPlayer, SIGNAL(uiPlaybackChanged(int, Status)), this, SLOT(uiPlaybackChanged(int, Status))); + connect(m_lmsUi->m_showPlayer, SIGNAL(uiPlaybackChanged(int, Status)), this, SLOT(uiPlaybackChanged(int, Status))); connect(m_lmsUi->m_showPlayer, SIGNAL(uiLoadMedia(int, QString)), this, SLOT(uiLoadMedia(int, QString))); m_refreshUi = new QTimer(this); connect(m_refreshUi, SIGNAL(timeout()), this, SLOT(refreshUi())); @@ -300,14 +298,4 @@ void libreMediaServerAudio::uiLoadMedia(int layer, QString mediaFile) qWarning() << "ui load media error" << result << "file" << mediaFile << "layer" << layer; } } - -void libreMediaServerAudio::uiSliderChangedFaded(int layer, Slider s, int value, int ms) -{ - switch (s){ - case Slider::Volume: - m_mae.volChanged(layer, value, ms); - m_updateUi[layer][0] = value; - break; - } -} #endif diff --git a/src/libremediaserver-audio.h b/src/libremediaserver-audio.h index 65b5d11..8db0c7e 100644 --- a/src/libremediaserver-audio.h +++ b/src/libremediaserver-audio.h @@ -66,7 +66,6 @@ private: private slots: void refreshUi(); void uiSliderChanged(int layer, Slider s, int value); - void uiSliderChangedFaded(int layer, Slider s, int value, int ms); void uiPlaybackChanged(int layer, Status s); void uiLoadMedia(int layer, QString s); diff --git a/src/miniaudioengine.cpp b/src/miniaudioengine.cpp index 9ab9f63..0e54927 100644 --- a/src/miniaudioengine.cpp +++ b/src/miniaudioengine.cpp @@ -434,15 +434,8 @@ ma_result MiniAudioEngine::printFormatInfo(int layer) // Expects between 0 and 65535 vol value void MiniAudioEngine::volChanged(int layer, int vol) -{ - volChanged(layer, vol, FADE_TIME); -} - -// Expects between 0 and 65535 vol value and fade time in milliseconds -void MiniAudioEngine::volChanged(int layer, int vol, int ms) { m_mae.currentStatus[layer].vol = vol; - m_mae.currentStatus[layer].fade = ms; if (m_mae.mediaLoaded[layer] != MA_TRUE) return; if (m_mae.mediaLoaded[layer] == MA_FALSE && m_mae.currentStatus[layer].updated) @@ -452,10 +445,9 @@ void MiniAudioEngine::volChanged(int layer, int vol, int ms) db = 0; } else db = ma_volume_db_to_linear(db); - ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], -1, db, ms); + ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], -1, db, FADE_TIME); } - void MiniAudioEngine::panChanged(int layer, float value) { float result; @@ -515,7 +507,7 @@ ma_result MiniAudioEngine::playbackChanged(int layer, Status status) ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], 0.000001f, 0.000000f, FADE_TIME); if (m_mae.currentStatus[layer].cursor > 0) usleep(FADE_TIME * 1500); // avoid glitch when seeking - ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], 0, db, m_mae.currentStatus[layer].fade); + ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], 0, db, FADE_TIME * 2); default: break; } diff --git a/src/miniaudioengine.h b/src/miniaudioengine.h index 0a1bca8..5fde13e 100644 --- a/src/miniaudioengine.h +++ b/src/miniaudioengine.h @@ -64,7 +64,6 @@ public: bool startEngine(uint layersQty, uint* audioDevicesID, uint audioDevicesQty); ma_result loadMedia(int layer, char *media); void volChanged(int layer, int vol); - void volChanged(int layer, int vol, int ms); void panChanged(int layer, float pan); void pitchChanged(int layer, float pitch); ma_result playbackChanged(int layer, Status status); diff --git a/src/showplayer.cpp b/src/showplayer.cpp index f3cbedc..3b877df 100644 --- a/src/showplayer.cpp +++ b/src/showplayer.cpp @@ -12,12 +12,11 @@ ShowPlayer::ShowPlayer(QWidget *parent) : connect(ui->SaveCueList, SIGNAL(clicked()), this, SLOT(saveCueTrackList())); connect(ui->LoadCueList, SIGNAL(clicked()), this, SLOT(loadCueTrackList())); connect(ui->goButton, SIGNAL(clicked()), this, SLOT(go())); - connect(ui->cueListWidget, SIGNAL(changeSelectedIndex(int)), this, SLOT(updateIndex(int))); + filesLoaded = 0; currentStatus = Status::Iddle; - for(int i = 0; i < MAX_LAYERS; i++) { + for(int i = 0; i < MAX_LAYERS; i++) layersUsed[i] = -1; - cueTrackWidgetPlaying[i] = nullptr; - } + connect(ui->cueListWidget, SIGNAL(changeSelectedIndex(int)), this, SLOT(changeSelectedIndex(int))); } ShowPlayer::~ShowPlayer() {} @@ -28,52 +27,48 @@ void ShowPlayer::onAddTrack() { void ShowPlayer::go() { - CueTrack *goCue = ui->cueListWidget->getSelectedTrack(true); - if (!goCue) + ui->activeCueNumber->display(lastIndex); + CueTrack* current = ui->cueListWidget->getSelectedTrack(); + if (!current) return; - current[goCue->audioLayer] = goCue; - playCueTrack(goCue); - if (goCue->multi) - go(); -} - -void ShowPlayer::goAction(int c) -{ - if (!current[c]->filePath.empty()) { - emit uiLoadMedia(current[c]->audioLayer, current[c]->filePath.data()); - ui->cueListWidget->cueTrackAtEnd(c); + if (current->audioLayer < 0) + return; + ui->activeCueLabel->setText(current->name.data()); + for (int i = 0; i < MAX_LAYERS; i++) { + if (layersUsed[i] == -1) { + layersUsed[i] = current->userNumber; + break; + } } - updateTrackStateInEngine(current[c]); - emit uiPlaybackChanged(current[c]->audioLayer, current[c]->status); - switch (current[c]->status) { - case Status::PlayingOnce: - case Status::PlayingLoop: - case Status::PlayingFolder: - case Status::PlayingFolderLoop: - case Status::PlayingFolderRandom: - current[c]->active = true; - layersUsed[current[c]->audioLayer] = current[c]->userNumber; - break; - default: - current[c]->active = false; - } - ui->cueListWidget->redrawCueTrackList(); + if (!current->filePath.empty()) + emit uiLoadMedia(current->audioLayer, current->filePath.data()); + updateTrackStateInEngine(current); + emit uiPlaybackChanged(current->audioLayer, current->status); + filesLoaded++; } void ShowPlayer::updateTrackStateInEngine(CueTrack *track) { - emit uiSliderChangedFaded(track->audioLayer, Slider::Volume, track->volume * 655.35, track->fadeIn * 1000); + emit uiSliderChanged(track->audioLayer, Slider::Volume, track->volume * 655.35); emit uiSliderChanged(track->audioLayer, Slider::Pan, (track->pan + 1) * 128); emit uiSliderChanged(track->audioLayer, Slider::Pitch, track->pitch * 128); emit uiSliderChanged(track->audioLayer, Slider::Bus1, track->bus1 * 255 * 2.55); emit uiSliderChanged(track->audioLayer, Slider::Bus2, track->bus2 * 255 * 2.55); } +void ShowPlayer::changeSelectedIndex(int i) +{ + CueTrack *t = ui->cueListWidget->getTrackAtIndex(i); + ui->nextCueNumber->display(t->userNumber); + ui->nextCueLabel->setText(t->name.data()); + lastIndex = t->userNumber; +} + void ShowPlayer::loadCueTrackList() { QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "", tr("XML Files (*.xml)")); if (fileName.isEmpty()) return; - ui->cueListWidget->loadCueTrackList(fileName.toStdString()); + ui->cueListWidget->loadCueTrackList(fileName.toStdString()); } void ShowPlayer::saveCueTrackList() @@ -83,64 +78,3 @@ void ShowPlayer::saveCueTrackList() return; ui->cueListWidget->saveCueTrackList(fileName.toStdString()); } - -void ShowPlayer::cueTrackAtEnd(int layer) -{ - current[layer]->active = false; - ui->cueListWidget->cueTrackAtEnd(layer); - removeCueTrackWidget(layer); -} - -void ShowPlayer::cueFinished(int c) -{ - if (!current[c]) - return; - if (!current[c]->stopAtEnd) - this->go(); - if (current[c]->status == Status::Stopped || current[c]->status == Status::Paused) - cueTrackAtEnd(c); -} - -CueTrackWidget *ShowPlayer::addCueTrackWidget(CueTrack* track) { - QListWidgetItem* item = new QListWidgetItem(ui->activeCueList); - CueTrackWidget* widget = new CueTrackWidget(); - widget->loadCueTrack(track); - connect(widget, SIGNAL(goAction(int)), this, SLOT(goAction(int))); - connect(widget, SIGNAL(cueFinished(int)), this, SLOT(cueFinished(int))); - cueTrackWidgetPlaying[track->audioLayer] = widget; - item->setSizeHint(widget->sizeHint()); - ui->activeCueList->setItemWidget(item, widget); - return (widget); -} - -void ShowPlayer::playCueTrack(CueTrack* track) { - removeCueTrackWidget(track->audioLayer); - CueTrackWidget *widget = addCueTrackWidget(track); - widget->go(); -} - -void ShowPlayer::removeCueTrackWidget(int audioLayer) { - CueTrackWidget* widgetToRemove = cueTrackWidgetPlaying[audioLayer]; - if (widgetToRemove != NULL && ui->activeCueList->count() > 0) { - for (int i = 0; i < ui->activeCueList->count(); ++i) { - QListWidgetItem* item = ui->activeCueList->item(i); - QWidget* widget = ui->activeCueList->itemWidget(item); - if (widget == widgetToRemove) { - ui->activeCueList->removeItemWidget(item); - delete item; - delete widgetToRemove; - break; - } - } - cueTrackWidgetPlaying[audioLayer] = nullptr; - } -} - -void ShowPlayer::updateIndex(int index) { - if (index < 0) - return; - CueTrack *track = ui->cueListWidget->getSelectedTrack(false); - if (track) { - ui->nextCue->loadCueTrack(track); - } -} diff --git a/src/showplayer.h b/src/showplayer.h index cda63bc..7abec4c 100644 --- a/src/showplayer.h +++ b/src/showplayer.h @@ -9,8 +9,6 @@ #include "defines.h" #include "cuetracklistwidget.h" -#include "cuetrackwidget.h" -#include "dialgroup.h" #include "settings.h" #include "ui_showplayer.h" @@ -26,33 +24,25 @@ public: explicit ShowPlayer(QWidget *parent = nullptr); ~ShowPlayer(); -public slots: - void cueTrackAtEnd(int layer); - private: Ui::ShowPlayer *ui; Status currentStatus = Status::Iddle; + size_t filesLoaded = 0; int layersUsed[MAX_LAYERS]; - CueTrack *current[MAX_LAYERS]; - CueTrackWidget *cueTrackWidgetPlaying[MAX_LAYERS]; - CueTrackWidget *addCueTrackWidget(CueTrack *track); + int lastIndex = 0; + + void updateTrackStateInEngine(CueTrack *track); private slots: - void updateTrackStateInEngine(CueTrack *track); void onAddTrack(); void go(); + void changeSelectedIndex(int i); void loadCueTrackList(); void saveCueTrackList(); - void cueFinished(int channel); - void removeCueTrackWidget(int index); - void playCueTrack(CueTrack *track); - void goAction(int channel); - void updateIndex(int index); signals: void uiPlaybackChanged(int layer, Status s); void uiSliderChanged(int layer, Slider s, int vol); - void uiSliderChangedFaded(int layer, Slider s, int vol, int ms); void uiLoadMedia(int layer, QString s); }; diff --git a/src/showplayer.ui b/src/showplayer.ui index 42c4603..9f3cd82 100644 --- a/src/showplayer.ui +++ b/src/showplayer.ui @@ -6,8 +6,8 @@ 0 0 - 800 - 802 + 743 + 671 @@ -19,50 +19,137 @@ Show Player - - - :/buttons/resources/icon.png:/buttons/resources/icon.png - - - true - - - false - - - false - - + + + + 0 + 0 + + + + + 400 + 400 + + + + QFrame::StyledPanel + + + QFrame::Sunken + Qt::Vertical + + 8 + + + + QFrame::Box + + + QFrame::Raised + + + Qt::Horizontal + + + 8 + + + + + 0 + 0 + + + + Qt::ClickFocus + + + GO + + + Space + + + + + + QLayout::SetMinimumSize + + + 0 + + + + + + + + Active Cue + + + + + + + true + + + + + + + Next Cue + + + + + + + + + 0 + 0 + + + + Qt::ClickFocus + + + ... + + + P + + + - + 0 - QLayout::SetDefaultConstraint + QLayout::SetMinimumSize - 0 + 100 - 0 + 100 - - Load Cue List - - Load CueList + ... - - :/buttons/resources/load_button.png:/buttons/resources/load_button.png + + ../resources/load_button.png../resources/load_button.png @@ -74,15 +161,12 @@ - - Save Cue List - - Save CueList. + ... - - :/buttons/resources/save_button.png:/buttons/resources/save_button.png + + ../resources/save_button.png../resources/save_button.png @@ -100,21 +184,12 @@ - - - 32 - 32 - - - - Copy Cue - - Copy Cue + ... - - :/buttons/resources/copy_button.png:/buttons/resources/copy_button.png + + ../resources/copy_button.png../resources/copy_button.png @@ -127,17 +202,17 @@ - Cut Cue + Load Cue List Load Cue List - Cut Cue + ... - - :/buttons/resources/cut_button.png:/buttons/resources/cut_button.png + + ../resources/cut_button.png../resources/cut_button.png @@ -149,15 +224,12 @@ - - Paste Cue - - Paste Cue + ... - - :/buttons/resources/paste_button.png:/buttons/resources/paste_button.png + + ../resources/paste_button.png../resources/paste_button.png @@ -172,15 +244,12 @@ Qt::NoFocus - - New Cue - - New Cue + ... - - :/buttons/resources/new_button.png:/buttons/resources/new_button.png + + ../resources/new_button.png../resources/new_button.png @@ -195,15 +264,12 @@ Qt::NoFocus - - Edit Cue - - Edit Cue + ... - - :/buttons/resources/edit_button.png:/buttons/resources/edit_button.png + + ../resources/edit_button.png../resources/edit_button.png @@ -218,15 +284,12 @@ Qt::NoFocus - - Remove Cue - - Delete Cue + ... - - :/buttons/resources/delete_button.png:/buttons/resources/delete_button.png + + ../resources/remove_button.png../resources/remove_button.png @@ -238,101 +301,25 @@ - - - Qt::Horizontal + + + true - - - - 0 - 0 - - - - Qt::ClickFocus - - - - - - - :/buttons/resources/go_button.jpeg:/buttons/resources/go_button.jpeg - - - - 120 - 120 - - - - Space - - - true - - - false - - - - - - - 0 - 0 - - - - Qt::ClickFocus - - - ... - - - - :/buttons/resources/panic_button.jpg:/buttons/resources/panic_button.jpg - - - - 96 - 120 - - - - P - - - - - - Qt::Horizontal + + + 0 + 0 + + + + Qt::StrongFocus + + + true + + + Qt::ImhPreferLowercase - - - <html><head/><body><p>Cue List</p></body></html> - - - - - - 0 - 0 - - - - <html><head/><body><p>Cues active</p></body></html> - - - QFrame::Plain - - - QListView::Adjust - - - QListView::SinglePass - - @@ -345,20 +332,13 @@
src/cuetracklistwidget.h
1 - - CueTrackWidget - QWidget -
src/cuetrackwidget.h
- 1 -
+ cueListWidget NewCue EditCue RemoveCue - - - + diff --git a/src/slidergroup.cpp b/src/slidergroup.cpp index 8e9a3b6..481d554 100644 --- a/src/slidergroup.cpp +++ b/src/slidergroup.cpp @@ -38,16 +38,16 @@ SliderGroup::SliderGroup(QString name, "margin: 0px;}" "QSlider::groove:vertical {" "border: 1px solid #999999;" - "width: 25px;}" + "width: 25px;" + "margin: -4px;}" "QSlider::handle:vertical {" "background: white;" - "border: 2px solid #5c5c5c;" + "border: 1px solid #5c5c5c;" "width: 29px;" - "height: 10px;" + "height: 7px;" + "margin: -2px;" "border-radius: 2px;}" - "Qslider::tickmarks:vertical {" - "background-color: black;" - "background: red;" + "Qslider::tickmarks:vertical {background: white;" "color: white;}" "QSlider::add-page:vertical {background: blue;}" "QSlider::sub-page:vertical {background: #20182d;}");