Compare commits
No commits in common. "52b44a4d7c3b7b59b661fd6ed8b48c96d474e087" and "33d9cd699ef65f6e578b875083cf70e500b1d485" have entirely different histories.
52b44a4d7c
...
33d9cd699e
21 changed files with 21 additions and 89715 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -44,5 +44,3 @@ log/**
|
||||||
|
|
||||||
*~
|
*~
|
||||||
*.autosave
|
*.autosave
|
||||||
|
|
||||||
*.vscode*
|
|
||||||
|
|
|
@ -2,15 +2,12 @@ TEMPLATE = app
|
||||||
TARGET = libremediaserver-audio
|
TARGET = libremediaserver-audio
|
||||||
QT += webkitwidgets widgets
|
QT += webkitwidgets widgets
|
||||||
HEADERS += src/libremediaserver-audio.h \
|
HEADERS += src/libremediaserver-audio.h \
|
||||||
src/cuetracklistwidget.h \
|
|
||||||
src/cuetrackwidget.h \
|
|
||||||
src/showplayer.h \
|
|
||||||
src/clickabledoublespinbox.h \
|
src/clickabledoublespinbox.h \
|
||||||
src/clickablelabel.h \
|
src/clickablelabel.h \
|
||||||
src/clickableslider.h \
|
src/clickableslider.h \
|
||||||
src/dmxwidget.h \
|
src/dmxwidget.h \
|
||||||
src/filterbankwidget.h \
|
src/filterbankwidget.h \
|
||||||
src/libremediaserver-audio-ui.h \
|
src/libremediaserver-audio-gui.h \
|
||||||
src/ma_writer_node.h \
|
src/ma_writer_node.h \
|
||||||
src/main.h \
|
src/main.h \
|
||||||
src/medialibrary.h \
|
src/medialibrary.h \
|
||||||
|
@ -23,17 +20,14 @@ HEADERS += src/libremediaserver-audio.h \
|
||||||
src/audiowidget.h \
|
src/audiowidget.h \
|
||||||
src/defines.h \
|
src/defines.h \
|
||||||
src/settings.h \
|
src/settings.h \
|
||||||
src/slidergroup.h \
|
src/slidergroup.h
|
||||||
src/trackdialog.h
|
|
||||||
SOURCES += src/main.cpp \
|
SOURCES += src/main.cpp \
|
||||||
src/cuetrackwidget.cpp \
|
|
||||||
src/showplayer.cpp \
|
|
||||||
src/clickabledoublespinbox.cpp \
|
src/clickabledoublespinbox.cpp \
|
||||||
src/clickablelabel.cpp \
|
src/clickablelabel.cpp \
|
||||||
src/clickableslider.cpp \
|
src/clickableslider.cpp \
|
||||||
src/dmxwidget.cpp \
|
src/dmxwidget.cpp \
|
||||||
src/filterbankwidget.cpp \
|
src/filterbankwidget.cpp \
|
||||||
src/libremediaserver-audio-ui.cpp \
|
src/libremediaserver-audio-gui.cpp \
|
||||||
src/libremediaserver-audio.cpp \
|
src/libremediaserver-audio.cpp \
|
||||||
src/medialibrary.cpp \
|
src/medialibrary.cpp \
|
||||||
src/miniaudio.c \
|
src/miniaudio.c \
|
||||||
|
@ -43,16 +37,14 @@ SOURCES += src/main.cpp \
|
||||||
src/audiolayerwidget.cpp \
|
src/audiolayerwidget.cpp \
|
||||||
src/audiowidget.cpp \
|
src/audiowidget.cpp \
|
||||||
src/settings.cpp \
|
src/settings.cpp \
|
||||||
src/slidergroup.cpp \
|
src/slidergroup.cpp
|
||||||
src/trackdialog.cpp
|
FORMS += src/libremediaserver-audio-gui.ui
|
||||||
FORMS += \
|
|
||||||
src/showplayer.ui \
|
|
||||||
src/libremediaserver-audio-ui.ui
|
|
||||||
CCFLAG += -msse2 -mavx2
|
CCFLAG += -msse2 -mavx2
|
||||||
QMAKE_CXXFLAGS += $$(CXXFLAG)
|
QMAKE_CXXFLAGS += $$(CXXFLAG)
|
||||||
QMAKE_CFLAGS += $$(CCFLAG)
|
QMAKE_CFLAGS += $$(CCFLAG)
|
||||||
QMAKE_LFLAGS += $$(LDFLAG)
|
QMAKE_LFLAGS += $$(LDFLAG)
|
||||||
LIBS += -lola -lolacommon -ldl -lpthread -lm
|
LIBS += -lola -lolacommon -ldl -lpthread -lm
|
||||||
|
# -lcitp
|
||||||
OTHER_FILES += \
|
OTHER_FILES += \
|
||||||
LICENSE.txt \
|
LICENSE.txt \
|
||||||
docs/compiling.txt \
|
docs/compiling.txt \
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
QMAKE_CXX.QT_COMPILER_STDCXX = 201703L
|
|
||||||
QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 11
|
|
||||||
QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 4
|
|
||||||
QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
|
|
||||||
QMAKE_CXX.COMPILER_MACROS = \
|
|
||||||
QT_COMPILER_STDCXX \
|
|
||||||
QMAKE_GCC_MAJOR_VERSION \
|
|
||||||
QMAKE_GCC_MINOR_VERSION \
|
|
||||||
QMAKE_GCC_PATCH_VERSION
|
|
||||||
QMAKE_CXX.INCDIRS = \
|
|
||||||
/usr/include/c++/11 \
|
|
||||||
/usr/include/x86_64-linux-gnu/c++/11 \
|
|
||||||
/usr/include/c++/11/backward \
|
|
||||||
/usr/lib/gcc/x86_64-linux-gnu/11/include \
|
|
||||||
/usr/local/include \
|
|
||||||
/usr/include/x86_64-linux-gnu \
|
|
||||||
/usr/include
|
|
||||||
QMAKE_CXX.LIBDIRS = \
|
|
||||||
/usr/lib/gcc/x86_64-linux-gnu/11 \
|
|
||||||
/usr/lib/x86_64-linux-gnu \
|
|
||||||
/usr/lib \
|
|
||||||
/lib/x86_64-linux-gnu \
|
|
||||||
/lib
|
|
|
@ -19,6 +19,7 @@ public:
|
||||||
explicit AudioLayerWidget(QWidget *parent = 0, int layer = 0);
|
explicit AudioLayerWidget(QWidget *parent = 0, int layer = 0);
|
||||||
~AudioLayerWidget();
|
~AudioLayerWidget();
|
||||||
|
|
||||||
|
// From OLA -> LibreMediaServer -> AudioWidget
|
||||||
void setMediaFile(QString file);
|
void setMediaFile(QString file);
|
||||||
void setDuration(float dur);
|
void setDuration(float dur);
|
||||||
void setCurrentTime(float progress);
|
void setCurrentTime(float progress);
|
||||||
|
|
|
@ -1,94 +0,0 @@
|
||||||
#ifndef CUETRACKLISTWIDGET_H
|
|
||||||
#define CUETRACKLISTWIDGET_H
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QScrollArea>
|
|
||||||
#include <QEvent>
|
|
||||||
#include <QKeyEvent>
|
|
||||||
#include <QShortcut>
|
|
||||||
|
|
||||||
#include "cuetrackwidget.h"
|
|
||||||
|
|
||||||
class CueTrackListWidget : public QWidget {
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
size_t m_size = 0;
|
|
||||||
size_t size() const { return m_size; }
|
|
||||||
size_t selectedIndex = 0;
|
|
||||||
|
|
||||||
explicit CueTrackListWidget(QWidget *parent = nullptr) : QWidget(parent) {
|
|
||||||
layout = new QVBoxLayout();
|
|
||||||
containerWidget = new QWidget();
|
|
||||||
containerWidget->setLayout(layout);
|
|
||||||
|
|
||||||
scrollArea = new QScrollArea(this);
|
|
||||||
scrollArea->setWidgetResizable(true);
|
|
||||||
scrollArea->setWidget(containerWidget);
|
|
||||||
|
|
||||||
QVBoxLayout* mainLayout = new QVBoxLayout(this);
|
|
||||||
mainLayout->addWidget(scrollArea);
|
|
||||||
layout->setAlignment(Qt::AlignTop);
|
|
||||||
setLayout(mainLayout);
|
|
||||||
|
|
||||||
QShortcut *shortcut_up = new QShortcut(QKeySequence("Up"), parent);
|
|
||||||
QObject::connect(shortcut_up, SIGNAL(activated()), this, SLOT(key_up()));
|
|
||||||
QShortcut *shortcut_down = new QShortcut(QKeySequence("Down"), parent);
|
|
||||||
QObject::connect(shortcut_down, SIGNAL(activated()), this, SLOT(key_down()));
|
|
||||||
}
|
|
||||||
|
|
||||||
void addCueTrackWidget(CueTrackWidget* widget) {
|
|
||||||
widget->setParent(containerWidget);
|
|
||||||
layout->addWidget(widget);
|
|
||||||
widget->show();
|
|
||||||
m_size++;
|
|
||||||
containerWidget->update();
|
|
||||||
containerWidget->adjustSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
void removeCueTrackWidget(size_t index) {
|
|
||||||
if (index >= m_size) return;
|
|
||||||
|
|
||||||
QLayoutItem* item = layout->takeAt(index);
|
|
||||||
if (item) {
|
|
||||||
delete item->widget();
|
|
||||||
delete item;
|
|
||||||
m_size--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CueTrackWidget* getTrackAtIndex(size_t index) {
|
|
||||||
if (index < m_size) {
|
|
||||||
return qobject_cast<CueTrackWidget*>(layout->itemAt(index)->widget());
|
|
||||||
}
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
CueTrackWidget* getSelectedTrack() {
|
|
||||||
CueTrackWidget* track = getTrackAtIndex(selectedIndex);
|
|
||||||
key_down();
|
|
||||||
return track;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
QScrollArea* scrollArea;
|
|
||||||
QWidget* containerWidget;
|
|
||||||
QVBoxLayout* layout;
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void key_up() {
|
|
||||||
if (m_size > 0 && selectedIndex > 0) {
|
|
||||||
getTrackAtIndex(selectedIndex)->highlight(false);
|
|
||||||
selectedIndex--;
|
|
||||||
getTrackAtIndex(selectedIndex)->highlight(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void key_down() {
|
|
||||||
if (selectedIndex < m_size - 1 && m_size > 0) {
|
|
||||||
getTrackAtIndex(selectedIndex)->highlight(false);
|
|
||||||
selectedIndex++;
|
|
||||||
getTrackAtIndex(selectedIndex)->highlight(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
#endif
|
|
|
@ -1,178 +0,0 @@
|
||||||
#include "cuetrackwidget.h"
|
|
||||||
#include <QSplitter>
|
|
||||||
|
|
||||||
CueTrackWidget::CueTrackWidget(QWidget *parent) : QWidget(parent) {
|
|
||||||
setupUi();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CueTrackWidget::setupUi() {
|
|
||||||
QVBoxLayout *layout = new QVBoxLayout(this);
|
|
||||||
|
|
||||||
QSplitter *row = new QSplitter(Qt::Horizontal);
|
|
||||||
active = new QCheckBox(this);
|
|
||||||
row->addWidget(active);
|
|
||||||
|
|
||||||
userNumberSpin = new QSpinBox(this);
|
|
||||||
userNumberSpin->setRange(0, 1000);
|
|
||||||
userNumberSpin->setToolTip("Cue user number");
|
|
||||||
row->addWidget(userNumberSpin);
|
|
||||||
|
|
||||||
nameEdit = new QLineEdit(this);
|
|
||||||
nameEdit->setToolTip("Cue Name");
|
|
||||||
row->addWidget(nameEdit);
|
|
||||||
|
|
||||||
descriptionEdit = new QLineEdit(this);
|
|
||||||
descriptionEdit->setToolTip("Cue Notes");
|
|
||||||
row->addWidget(descriptionEdit);
|
|
||||||
|
|
||||||
filePathEdit = new QLineEdit(this);
|
|
||||||
filePathEdit->setToolTip("File name");
|
|
||||||
row->addWidget(filePathEdit);
|
|
||||||
|
|
||||||
layout->addWidget(row);
|
|
||||||
|
|
||||||
row = new QSplitter(Qt::Horizontal);
|
|
||||||
volumeSpin = new QSpinBox(this);
|
|
||||||
volumeSpin->setRange(0, 65535);
|
|
||||||
volumeSpin->setToolTip("Volume");
|
|
||||||
volumeSpin->setValue(100);
|
|
||||||
row->addWidget(volumeSpin);
|
|
||||||
|
|
||||||
bus1Spin = new QSpinBox(this);
|
|
||||||
bus1Spin->setRange(0, 255);
|
|
||||||
bus1Spin->setToolTip("Bus 1");
|
|
||||||
bus1Spin->setValue(255);
|
|
||||||
row->addWidget(bus1Spin);
|
|
||||||
|
|
||||||
bus2Spin = new QSpinBox(this);
|
|
||||||
bus2Spin->setRange(0, 255);
|
|
||||||
bus2Spin->setToolTip("Bus 2");
|
|
||||||
bus2Spin->setValue(255);
|
|
||||||
row->addWidget(bus2Spin);
|
|
||||||
|
|
||||||
panSpin = new QSpinBox(this);
|
|
||||||
panSpin->setRange(0, 255);
|
|
||||||
panSpin->setToolTip("Pan");
|
|
||||||
panSpin->setValue(128);
|
|
||||||
row->addWidget(panSpin);
|
|
||||||
|
|
||||||
pitchSpin = new QSpinBox(this);
|
|
||||||
pitchSpin->setRange(0, 255);
|
|
||||||
pitchSpin->setToolTip("Pitch");
|
|
||||||
pitchSpin->setValue(128);
|
|
||||||
row->addWidget(pitchSpin);
|
|
||||||
|
|
||||||
entryPointSpin = new QSpinBox(this);
|
|
||||||
entryPointSpin->setRange(0, 255);
|
|
||||||
entryPointSpin->setToolTip("Entry Point");
|
|
||||||
row->addWidget(entryPointSpin);
|
|
||||||
|
|
||||||
exitPointSpin = new QSpinBox(this);
|
|
||||||
exitPointSpin->setRange(0, 255);
|
|
||||||
exitPointSpin->setToolTip("Exit Point");
|
|
||||||
exitPointSpin->setValue(255);
|
|
||||||
row->addWidget(exitPointSpin);
|
|
||||||
|
|
||||||
layout->addWidget(row);
|
|
||||||
|
|
||||||
row = new QSplitter(Qt::Horizontal);
|
|
||||||
setupStatusCombo();
|
|
||||||
statusCombo->setToolTip("Playback Status");
|
|
||||||
row->addWidget(statusCombo);
|
|
||||||
|
|
||||||
fadeInSpin = new QSpinBox(this);
|
|
||||||
fadeInSpin->setRange(0, 10000);
|
|
||||||
fadeInSpin->setToolTip("Fade In Time");
|
|
||||||
fadeInSpin->setValue(3);
|
|
||||||
row->addWidget(fadeInSpin);
|
|
||||||
|
|
||||||
fadeOutSpin = new QSpinBox(this);
|
|
||||||
fadeOutSpin->setRange(0, 10000);
|
|
||||||
fadeOutSpin->setToolTip("Fade Out Time");
|
|
||||||
fadeOutSpin->setValue(3);
|
|
||||||
row->addWidget(fadeOutSpin);
|
|
||||||
|
|
||||||
waitInSpin = new QSpinBox(this);
|
|
||||||
waitInSpin->setRange(0, 10000);
|
|
||||||
waitInSpin->setToolTip("Wait In Time");
|
|
||||||
row->addWidget(waitInSpin);
|
|
||||||
|
|
||||||
waitOutSpin = new QSpinBox(this);
|
|
||||||
waitOutSpin->setRange(0, 10000);
|
|
||||||
waitOutSpin->setToolTip("Wait Out Time");
|
|
||||||
row->addWidget(waitOutSpin);
|
|
||||||
|
|
||||||
stopAtEndCheck = new QCheckBox(this);
|
|
||||||
stopAtEndCheck->setToolTip("Halt");
|
|
||||||
stopAtEndCheck->setChecked("True");
|
|
||||||
row->addWidget(stopAtEndCheck);
|
|
||||||
|
|
||||||
layout->addWidget(row);
|
|
||||||
|
|
||||||
setLayout(layout);
|
|
||||||
}
|
|
||||||
|
|
||||||
QWidget *CueTrackWidget::createHeader()
|
|
||||||
{
|
|
||||||
QWidget *ret = new QWidget();
|
|
||||||
|
|
||||||
auto layout = new QHBoxLayout(this);
|
|
||||||
QLabel *l = new QLabel("Cue Number");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("File Path");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Volume");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Bus 1");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Bus 2");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Pan");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Pitch");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Playback Status");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Fade In");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Fade Out");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Wait In");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Wait Out ");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Halt");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Name");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Notes");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Entry Point");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Exit Point");
|
|
||||||
layout->addWidget(l);
|
|
||||||
ret->setLayout(layout);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CueTrackWidget::setupStatusCombo() {
|
|
||||||
statusCombo = new QComboBox(this);
|
|
||||||
statusCombo->addItem("Stopped", Stopped);
|
|
||||||
statusCombo->addItem("Paused", Paused);
|
|
||||||
statusCombo->addItem("PlayingOnce", PlayingOnce);
|
|
||||||
statusCombo->addItem("PlayingLoop", PlayingLoop);
|
|
||||||
statusCombo->addItem("Iddle", Iddle);
|
|
||||||
statusCombo->addItem("PlayingFolder", PlayingFolder);
|
|
||||||
statusCombo->addItem("PlayingFolderLoop", PlayingFolderLoop);
|
|
||||||
statusCombo->addItem("PlayingFolderRandom", PlayingFolderRandom);
|
|
||||||
}
|
|
||||||
|
|
||||||
CueTrack CueTrackWidget::saveCueTrack() const {
|
|
||||||
CueTrack cueTrack;
|
|
||||||
cueTrack.filePath = filePathEdit->text().toStdString();
|
|
||||||
cueTrack.volume = volumeSpin->value();
|
|
||||||
// Guarda el resto de los campos aquí...
|
|
||||||
|
|
||||||
cueTrack.status = static_cast<Status>(statusCombo->currentData().toInt());
|
|
||||||
return cueTrack;
|
|
||||||
}
|
|
|
@ -1,72 +0,0 @@
|
||||||
#ifndef CUETRACKWIDGET_H
|
|
||||||
#define CUETRACKWIDGET_H
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QLineEdit>
|
|
||||||
#include <QSpinBox>
|
|
||||||
#include <QComboBox>
|
|
||||||
#include <QFormLayout>
|
|
||||||
#include <QCheckBox>
|
|
||||||
#include <QLabel>
|
|
||||||
#include "defines.h"
|
|
||||||
|
|
||||||
class CueTrackWidget : public QWidget {
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit CueTrackWidget(QWidget *parent = nullptr);
|
|
||||||
|
|
||||||
CueTrack saveCueTrack() const;
|
|
||||||
QWidget *createHeader();
|
|
||||||
int audioLayer = 0;
|
|
||||||
|
|
||||||
int getVolume() const { return volumeSpin->value(); }
|
|
||||||
int getPan() const { return panSpin->value(); }
|
|
||||||
int getPitch() const { return pitchSpin->value(); }
|
|
||||||
int getBus1() const { return bus1Spin->value(); }
|
|
||||||
int getBus2() const { return bus2Spin->value(); }
|
|
||||||
Status getStatus() const { return static_cast<Status>(statusCombo->currentIndex()); }
|
|
||||||
QString getFilePath() const { return filePathEdit->text(); }
|
|
||||||
void setFilePath(QString text) const { filePathEdit->setText(text);};
|
|
||||||
int getFadeIn() const { return fadeInSpin->value(); }
|
|
||||||
int getFadeOut() const { return fadeOutSpin->value(); }
|
|
||||||
int getWaitIn() const { return waitInSpin->value(); }
|
|
||||||
int getWaitOut() const { return waitOutSpin->value(); }
|
|
||||||
bool getStopAtEnd() const { return stopAtEndCheck->isChecked(); }
|
|
||||||
QString getName() const { return nameEdit->text(); }
|
|
||||||
QString getDescription() const { return descriptionEdit->text(); }
|
|
||||||
int getUserNumber() const { return userNumberSpin->value(); }
|
|
||||||
int getEntryPoint() const { return entryPointSpin->value(); }
|
|
||||||
int getExitPoint() const { return exitPointSpin->value(); }
|
|
||||||
void highlight(bool highlight) {
|
|
||||||
if (highlight)
|
|
||||||
this->setStyleSheet("background-color: yellow;");
|
|
||||||
else
|
|
||||||
this->setStyleSheet("background-color: white;");
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
QCheckBox* active;
|
|
||||||
QLineEdit* filePathEdit;
|
|
||||||
QSpinBox* volumeSpin;
|
|
||||||
QSpinBox* panSpin;
|
|
||||||
QSpinBox* pitchSpin;
|
|
||||||
QSpinBox* bus1Spin;
|
|
||||||
QSpinBox* bus2Spin;
|
|
||||||
QComboBox* statusCombo;
|
|
||||||
QSpinBox* fadeOutSpin;
|
|
||||||
QSpinBox* fadeInSpin;
|
|
||||||
QSpinBox* waitInSpin;
|
|
||||||
QSpinBox* waitOutSpin;
|
|
||||||
QCheckBox* stopAtEndCheck;
|
|
||||||
QLineEdit* nameEdit;
|
|
||||||
QLineEdit* descriptionEdit;
|
|
||||||
QSpinBox* userNumberSpin;
|
|
||||||
QSpinBox* entryPointSpin;
|
|
||||||
QSpinBox* exitPointSpin;
|
|
||||||
|
|
||||||
void setupUi();
|
|
||||||
void setupStatusCombo();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // CUETRACKWIDGET_H
|
|
|
@ -63,19 +63,6 @@ constexpr const char* statusToString(Status e) noexcept
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
static Status stringToStatus(QString *statusStr) {
|
|
||||||
if (statusStr->compare("Stopped")) return Stopped;
|
|
||||||
else if (statusStr->compare("Paused")) return Paused;
|
|
||||||
else if (statusStr->compare("PlayingOnce")) return PlayingOnce;
|
|
||||||
else if (statusStr->compare("PlayingLoop")) return PlayingLoop;
|
|
||||||
else if (statusStr->compare("Iddle")) return Iddle;
|
|
||||||
else if (statusStr->compare("PlayingFolder")) return PlayingFolder;
|
|
||||||
else if (statusStr->compare("PlayingFolderLoop")) return PlayingFolderLoop;
|
|
||||||
else if (statusStr->compare("PlayingFolderRandom")) return PlayingFolderRandom;
|
|
||||||
else return Stopped; // Valor por defecto o manejar como error
|
|
||||||
}
|
|
||||||
|
|
||||||
struct layerData {
|
struct layerData {
|
||||||
QString media;
|
QString media;
|
||||||
Status status;
|
Status status;
|
||||||
|
@ -92,27 +79,5 @@ struct layerData {
|
||||||
int bus2Vol;
|
int bus2Vol;
|
||||||
float level;
|
float level;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CueTrack {
|
|
||||||
std::string filePath;
|
|
||||||
int volume = 0; // 0 - 65535 ToDo: change to db -85 - 0
|
|
||||||
int pan = 128; // 0 - 255
|
|
||||||
int pitch = 128; // 0 - 255
|
|
||||||
int bus1 = 255; // 0 - 255
|
|
||||||
int bus2 = 255; // 0 - 255
|
|
||||||
Status status;
|
|
||||||
int fadeOut = 3; // ToDo: change to float or milliseconds
|
|
||||||
int fadeIn = 3;
|
|
||||||
int waitIn = 0;
|
|
||||||
int waitOut = 0;
|
|
||||||
bool stopAtEnd = false; // trigger next cue when this is executed
|
|
||||||
std::string name;
|
|
||||||
std::string description;
|
|
||||||
int userNumber; // cue user id
|
|
||||||
int entryPoint; // 0 - 255
|
|
||||||
int exitPoint; // 0 - 255
|
|
||||||
int audioLayer; // internal audio layer used when cue is loaded
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // __cplusplus
|
#endif // __cplusplus
|
||||||
#endif // DEFINES_H
|
#endif // DEFINES_H
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "libremediaserver-audio-ui.h"
|
#include "libremediaserver-audio-gui.h"
|
||||||
|
|
||||||
|
|
||||||
libreMediaServerAudioUi::libreMediaServerAudioUi(QWidget *parent)
|
libreMediaServerAudioUi::libreMediaServerAudioUi(QWidget *parent)
|
||||||
|
@ -35,7 +35,6 @@ libreMediaServerAudioUi::libreMediaServerAudioUi(QWidget *parent)
|
||||||
topWidget->setContentsMargins(0, 0, 0, 0);
|
topWidget->setContentsMargins(0, 0, 0, 0);
|
||||||
addDockWidget(Qt::TopDockWidgetArea, topWidget);
|
addDockWidget(Qt::TopDockWidgetArea, topWidget);
|
||||||
connect(ui.actionLaunch_OLA_Setup, SIGNAL(triggered()), this, SLOT(olasetup()));
|
connect(ui.actionLaunch_OLA_Setup, SIGNAL(triggered()), this, SLOT(olasetup()));
|
||||||
connect(ui.actionLaunchShowPlayer, SIGNAL(triggered()), this, SLOT(launchShowPlayerWindow()));
|
|
||||||
this->setContentsMargins(0, 0, 0, 0);
|
this->setContentsMargins(0, 0, 0, 0);
|
||||||
this->setStyleSheet(
|
this->setStyleSheet(
|
||||||
"margin: 0px;"
|
"margin: 0px;"
|
||||||
|
@ -44,7 +43,6 @@ libreMediaServerAudioUi::libreMediaServerAudioUi(QWidget *parent)
|
||||||
"selection-color: blue;"
|
"selection-color: blue;"
|
||||||
"selection-background-color: green"
|
"selection-background-color: green"
|
||||||
);
|
);
|
||||||
m_showPlayer = new ShowPlayer();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
libreMediaServerAudioUi::~libreMediaServerAudioUi()
|
libreMediaServerAudioUi::~libreMediaServerAudioUi()
|
||||||
|
@ -57,9 +55,3 @@ void libreMediaServerAudioUi::olasetup()
|
||||||
view->load(QUrl("http://localhost:9090/ola.html"));
|
view->load(QUrl("http://localhost:9090/ola.html"));
|
||||||
view->show();
|
view->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
void libreMediaServerAudioUi::launchShowPlayerWindow()
|
|
||||||
{
|
|
||||||
qDebug() << "launch show player";
|
|
||||||
m_showPlayer->show();
|
|
||||||
}
|
|
|
@ -26,8 +26,7 @@
|
||||||
#include "audiowidget.h"
|
#include "audiowidget.h"
|
||||||
#include "dmxwidget.h"
|
#include "dmxwidget.h"
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
#include "showplayer.h"
|
#include "ui_libremediaserver-audio-gui.h"
|
||||||
#include "ui_libremediaserver-audio-ui.h"
|
|
||||||
|
|
||||||
class libreMediaServerAudioUi : public QMainWindow
|
class libreMediaServerAudioUi : public QMainWindow
|
||||||
{
|
{
|
||||||
|
@ -38,14 +37,12 @@ public:
|
||||||
virtual ~libreMediaServerAudioUi();
|
virtual ~libreMediaServerAudioUi();
|
||||||
AudioWidget *m_aw;
|
AudioWidget *m_aw;
|
||||||
dmxWidget *m_dmxWidget;
|
dmxWidget *m_dmxWidget;
|
||||||
ShowPlayer *m_showPlayer;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::LibreMediaServerAudioUi ui;
|
Ui::LibreMediaServerAudio ui;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void olasetup();
|
void olasetup();
|
||||||
void launchShowPlayerWindow();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LIBREMEDIASERVERAUDIOUI_H
|
#endif // LIBREMEDIASERVERAUDIOUI_H
|
|
@ -1,8 +1,8 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<author>Santi Noreña lms@criptomart.net</author>
|
<author>Santi Noreña lms@criptomart.net</author>
|
||||||
<class>LibreMediaServerAudioUi</class>
|
<class>LibreMediaServerAudio</class>
|
||||||
<widget class="QMainWindow" name="LibreMediaServerAudioUi">
|
<widget class="QMainWindow" name="LibreMediaServerAudio">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
|
@ -41,7 +41,6 @@
|
||||||
<string>File</string>
|
<string>File</string>
|
||||||
</property>
|
</property>
|
||||||
<addaction name="actionLaunch_OLA_Setup"/>
|
<addaction name="actionLaunch_OLA_Setup"/>
|
||||||
<addaction name="actionLaunchShowPlayer"/>
|
|
||||||
</widget>
|
</widget>
|
||||||
<addaction name="menuFile"/>
|
<addaction name="menuFile"/>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -50,11 +49,6 @@
|
||||||
<string>OLA Setup</string>
|
<string>OLA Setup</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionLaunchShowPlayer">
|
|
||||||
<property name="text">
|
|
||||||
<string>Show Player</string>
|
|
||||||
</property>
|
|
||||||
</action>
|
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
|
@ -226,9 +226,6 @@ void libreMediaServerAudio::setUi(libreMediaServerAudioUi *lmsUi)
|
||||||
connect(m_lmsUi->m_aw, SIGNAL(uiSliderChanged(int, Slider, int)), this, SLOT(uiSliderChanged(int, Slider, int)));
|
connect(m_lmsUi->m_aw, SIGNAL(uiSliderChanged(int, Slider, int)), this, SLOT(uiSliderChanged(int, Slider, int)));
|
||||||
connect(m_lmsUi->m_aw, SIGNAL(uiPlaybackChanged(int, Status)), this, SLOT(uiPlaybackChanged(int, Status)));
|
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_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(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);
|
m_refreshUi = new QTimer(this);
|
||||||
connect(m_refreshUi, SIGNAL(timeout()), this, SLOT(refreshUi()));
|
connect(m_refreshUi, SIGNAL(timeout()), this, SLOT(refreshUi()));
|
||||||
m_refreshUi->start(UI_REFRESH_TIME);
|
m_refreshUi->start(UI_REFRESH_TIME);
|
||||||
|
@ -239,7 +236,7 @@ void libreMediaServerAudio::setUi(libreMediaServerAudioUi *lmsUi)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// From Ui widgets and ShowPlayer
|
// From Ui widgets
|
||||||
void libreMediaServerAudio::uiSliderChanged(int layer, Slider s, int value)
|
void libreMediaServerAudio::uiSliderChanged(int layer, Slider s, int value)
|
||||||
{
|
{
|
||||||
switch (s){
|
switch (s){
|
||||||
|
|
|
@ -30,7 +30,7 @@ using namespace std;
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
#ifndef NOGUI
|
#ifndef NOGUI
|
||||||
#include "libremediaserver-audio-ui.h"
|
#include "libremediaserver-audio-gui.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class libreMediaServerAudio : public QObject
|
class libreMediaServerAudio : public QObject
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include "olathread.h"
|
#include "olathread.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "libremediaserver-audio.h"
|
#include "libremediaserver-audio.h"
|
||||||
#include "libremediaserver-audio-ui.h"
|
#include "libremediaserver-audio-gui.h"
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
|
|
||||||
olaThread *m_ola;
|
olaThread *m_ola;
|
||||||
|
|
81196
src/miniaudio.c
81196
src/miniaudio.c
File diff suppressed because it is too large
Load diff
7766
src/miniaudio.h
7766
src/miniaudio.h
File diff suppressed because it is too large
Load diff
|
@ -502,7 +502,7 @@ ma_result MiniAudioEngine::playbackChanged(int layer, Status status)
|
||||||
result = ma_sound_start(&m_mae.sounds[layer]);
|
result = ma_sound_start(&m_mae.sounds[layer]);
|
||||||
ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], 0.000001f, 0.000000f, FADE_TIME);
|
ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], 0.000001f, 0.000000f, FADE_TIME);
|
||||||
if (m_mae.currentStatus[layer].cursor > 0)
|
if (m_mae.currentStatus[layer].cursor > 0)
|
||||||
usleep(FADE_TIME * 1500); // avoid glitch when seeking
|
usleep(FADE_TIME * 1500); // avoid glitch when load when seeking
|
||||||
ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], 0, db, FADE_TIME * 2);
|
ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], 0, db, FADE_TIME * 2);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -57,8 +57,12 @@ typedef struct
|
||||||
|
|
||||||
class MiniAudioEngine
|
class MiniAudioEngine
|
||||||
{
|
{
|
||||||
|
friend class libreMediaServerAudio;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void audioDataCallback(ma_device* pDevice, void* pOutput, const void* pInput, ma_uint32 frameCount);
|
static void audioDataCallback(ma_device* pDevice, void* pOutput, const void* pInput, ma_uint32 frameCount);
|
||||||
|
|
||||||
|
protected:
|
||||||
MiniAudioEngine();
|
MiniAudioEngine();
|
||||||
void stopEngine();
|
void stopEngine();
|
||||||
bool startEngine(uint layersQty, uint* audioDevicesID, uint audioDevicesQty);
|
bool startEngine(uint layersQty, uint* audioDevicesID, uint audioDevicesQty);
|
||||||
|
|
|
@ -1,86 +0,0 @@
|
||||||
#include "showplayer.h"
|
|
||||||
|
|
||||||
QWidget *ShowPlayer::createHeader()
|
|
||||||
{
|
|
||||||
QWidget *ret = new QWidget();
|
|
||||||
|
|
||||||
auto layout = new QHBoxLayout(this);
|
|
||||||
QLabel *l = new QLabel("Cue Number");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("File Path");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Volume");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Bus 1");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Bus 2");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Pan");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Pitch");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Playback Status");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Fade In");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Fade Out");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Wait In");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Wait Out ");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Halt");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Name");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Notes");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Entry Point");
|
|
||||||
layout->addWidget(l);
|
|
||||||
l = new QLabel("Exit Point");
|
|
||||||
layout->addWidget(l);
|
|
||||||
ret->setLayout(layout);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
ShowPlayer::ShowPlayer(QWidget *parent) :
|
|
||||||
QDialog(parent)
|
|
||||||
, ui(new Ui::ShowPlayer)
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
connect(ui->addCueButton, SIGNAL(clicked()), this, SLOT(onAddTrack()));
|
|
||||||
connect(ui->goButton, SIGNAL(clicked()), this, SLOT(go()));
|
|
||||||
QWidget *w = createHeader();
|
|
||||||
ui->headerLayout->addWidget(w);
|
|
||||||
currentTrackIndex = 0;
|
|
||||||
filesLoaded = 0;
|
|
||||||
currentStatus = Status::Iddle;
|
|
||||||
}
|
|
||||||
|
|
||||||
ShowPlayer::~ShowPlayer() {}
|
|
||||||
|
|
||||||
void ShowPlayer::onAddTrack() {
|
|
||||||
TrackDialog dialog;
|
|
||||||
dialog.show();
|
|
||||||
if (dialog.exec() == QDialog::Accepted) {
|
|
||||||
ui->cueListWidget->addCueTrackWidget(dialog.track);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ShowPlayer::go()
|
|
||||||
{
|
|
||||||
CueTrackWidget* current = ui->cueListWidget->getSelectedTrack();
|
|
||||||
if (!current)
|
|
||||||
return;
|
|
||||||
for (int i = 0; i < MAX_LAYERS; i++) {
|
|
||||||
if (layersUsed[i] == -1) {
|
|
||||||
layersUsed[i] = currentTrackIndex;
|
|
||||||
current->audioLayer = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
updateTrackStateInEngine(currentTrackIndex, current->audioLayer);
|
|
||||||
emit uiLoadMedia(current->audioLayer, current->getFilePath());
|
|
||||||
emit uiPlaybackChanged(current->audioLayer, current->getStatus());
|
|
||||||
filesLoaded++;
|
|
||||||
}
|
|
|
@ -1,55 +0,0 @@
|
||||||
#ifndef SHOWPLAYER_H
|
|
||||||
#define SHOWPLAYER_H
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include <QDialog>
|
|
||||||
|
|
||||||
#include "defines.h"
|
|
||||||
#include "cuetrackwidget.h"
|
|
||||||
#include "cuetracklistwidget.h"
|
|
||||||
#include "trackdialog.h"
|
|
||||||
#include "ui_showplayer.h"
|
|
||||||
|
|
||||||
namespace Ui {
|
|
||||||
class ShowPlayer;
|
|
||||||
}
|
|
||||||
|
|
||||||
class ShowPlayer : public QDialog
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit ShowPlayer(QWidget *parent = nullptr);
|
|
||||||
~ShowPlayer();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::ShowPlayer *ui;
|
|
||||||
size_t currentTrackIndex;
|
|
||||||
Status currentStatus = Status::Iddle;
|
|
||||||
size_t filesLoaded = 0;
|
|
||||||
int layersUsed[MAX_LAYERS] = { -1 };
|
|
||||||
|
|
||||||
QWidget *createHeader();
|
|
||||||
|
|
||||||
void updateTrackStateInEngine(size_t index, int layer) {
|
|
||||||
CueTrackWidget *track = ui->cueListWidget->getTrackAtIndex(index);
|
|
||||||
emit uiSliderChanged(layer, Slider::Volume, track->getVolume());
|
|
||||||
emit uiSliderChanged(layer, Slider::Pan, track->getPan());
|
|
||||||
emit uiSliderChanged(layer, Slider::Pitch, track->getPitch());
|
|
||||||
emit uiSliderChanged(layer, Slider::Bus1, track->getBus1());
|
|
||||||
emit uiSliderChanged(layer, Slider::Bus2, track->getBus2());
|
|
||||||
};
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void onAddTrack();
|
|
||||||
void go();
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void uiPlaybackChanged(int layer, Status s);
|
|
||||||
void uiSliderChanged(int layer, Slider s, int vol);
|
|
||||||
void uiLoadMedia(int layer, QString s);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // SHOWPLAYER_H
|
|
|
@ -1,164 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>ShowPlayer</class>
|
|
||||||
<widget class="QDialog" name="ShowPlayer">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>276</width>
|
|
||||||
<height>112</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Show Player</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QSplitter" name="splitter">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<widget class="QSplitter" name="masterSplitter">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<widget class="QPushButton" name="goButton">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>GO</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut">
|
|
||||||
<string>Space</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="layoutWidget">
|
|
||||||
<layout class="QGridLayout" name="statusLayout">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLCDNumber" name="activeCueNumber"/>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QLabel" name="activeCueLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Active Cue</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLCDNumber" name="nextCueNumber">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QLabel" name="nextCueLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Next Cue</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<widget class="QToolButton" name="panicButton">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="focusPolicy">
|
|
||||||
<enum>Qt::ClickFocus</enum>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut">
|
|
||||||
<string>P</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="horizontalLayoutWidget">
|
|
||||||
<layout class="QHBoxLayout" name="ButtonToolBarLayout">
|
|
||||||
<property name="sizeConstraint">
|
|
||||||
<enum>QLayout::SetMinimumSize</enum>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<widget class="QToolButton" name="rmCueButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QToolButton" name="addCueButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QToolButton" name="editCueButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="horizontalLayoutWidget_2">
|
|
||||||
<layout class="QHBoxLayout" name="headerLayout">
|
|
||||||
<property name="spacing">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="sizeConstraint">
|
|
||||||
<enum>QLayout::SetMaximumSize</enum>
|
|
||||||
</property>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<widget class="CueTrackListWidget" name="cueListWidget" native="true">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="focusPolicy">
|
|
||||||
<enum>Qt::StrongFocus</enum>
|
|
||||||
</property>
|
|
||||||
<property name="autoFillBackground">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="inputMethodHints">
|
|
||||||
<set>Qt::ImhPreferLowercase</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>CueTrackListWidget</class>
|
|
||||||
<extends>QWidget</extends>
|
|
||||||
<header>src/cuetracklistwidget.h</header>
|
|
||||||
<container>1</container>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
Loading…
Add table
Reference in a new issue