multi-cue, nuevo campo en cuetrack para lanzar la siguiente cue de forma
inmediata, sin esperar a los tiempos de la cue actual. Cambiado el visor de cue a QWidgetList, ahora muestra la última cue reproducida en cada capa.
This commit is contained in:
parent
307d9c4d43
commit
14a51c88e9
18 changed files with 1244 additions and 390 deletions
|
@ -2,8 +2,7 @@ TEMPLATE = app
|
|||
TARGET = libremediaserver-audio
|
||||
QT += webkitwidgets widgets
|
||||
HEADERS += src/libremediaserver-audio.h \
|
||||
cuetrackwidget.h \
|
||||
src/dialgroup.h \
|
||||
src/cuetrackwidget.h \
|
||||
src/editcuetrackwidget.h \
|
||||
src/cuetracklistwidget.h \
|
||||
src/showplayer.h \
|
||||
|
@ -25,10 +24,10 @@ HEADERS += src/libremediaserver-audio.h \
|
|||
src/audiowidget.h \
|
||||
src/defines.h \
|
||||
src/settings.h \
|
||||
src/slidergroup.h
|
||||
src/slidergroup.h \
|
||||
src/dialgroup.h
|
||||
SOURCES += src/main.cpp \
|
||||
cuetrackwidget.cpp \
|
||||
src/dialgroup.cpp \
|
||||
src/cuetrackwidget.cpp \
|
||||
src/editcuetrackwidget.cpp \
|
||||
src/cuetracklistwidget.cpp \
|
||||
src/showplayer.cpp \
|
||||
|
@ -47,9 +46,10 @@ SOURCES += src/main.cpp \
|
|||
src/audiolayerwidget.cpp \
|
||||
src/audiowidget.cpp \
|
||||
src/settings.cpp \
|
||||
src/slidergroup.cpp
|
||||
src/slidergroup.cpp \
|
||||
src/dialgroup.cpp
|
||||
FORMS += \
|
||||
cuetrackwidget.ui \
|
||||
src/cuetrackwidget.ui \
|
||||
src/showplayer.ui \
|
||||
src/libremediaserver-audio-ui.ui
|
||||
CCFLAG += -msse2 -mavx2
|
||||
|
@ -63,6 +63,5 @@ OTHER_FILES += \
|
|||
docs/changelog.txt \
|
||||
docs/lms-audio.xlm \
|
||||
docs/roadmap.txt
|
||||
|
||||
RESOURCES += \
|
||||
lms-resources.qrc
|
||||
|
|
|
@ -8,5 +8,8 @@
|
|||
<file>resources/new_button.png</file>
|
||||
<file>resources/paste_button.png</file>
|
||||
<file>resources/save_button.png</file>
|
||||
<file>resources/icon.png</file>
|
||||
<file>resources/panic_button.jpg</file>
|
||||
<file>resources/go_button.jpeg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <QWidget>
|
||||
#include <QScrollArea>
|
||||
#include <QEvent>
|
||||
|
@ -7,6 +10,8 @@
|
|||
#include <QVBoxLayout>
|
||||
#include <QTableWidget>
|
||||
#include <QTableWidgetItem>
|
||||
#include <QFile>
|
||||
#include <QXmlStreamReader>
|
||||
#include "cuetracklistwidget.h"
|
||||
|
||||
CueTrackListWidget::CueTrackListWidget(QWidget *parent)
|
||||
|
@ -42,9 +47,10 @@ CueTrack* CueTrackListWidget::getTrackAtIndex(int index) {
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
CueTrack* CueTrackListWidget::getSelectedTrack() {
|
||||
CueTrack* CueTrackListWidget::getSelectedTrack(bool advance) {
|
||||
CueTrack* track = getTrackAtIndex(selectedIndex);
|
||||
key_down();
|
||||
if (advance)
|
||||
key_down();
|
||||
return track;
|
||||
}
|
||||
|
||||
|
@ -121,23 +127,25 @@ void CueTrackListWidget::updateSelectedCueTrack(bool highlightRow) {
|
|||
void CueTrackListWidget::cueTrackLoadDefaults(CueTrack * t)
|
||||
{
|
||||
t->active = false;
|
||||
t->audioLayer = -1;
|
||||
t->bus1 = 80;
|
||||
t->bus2 = 80;
|
||||
t->audioLayer = 0;
|
||||
t->bus1 = 100;
|
||||
t->bus2 = 100;
|
||||
t->entryPoint = 0;
|
||||
t->exitPoint = 255;
|
||||
t->fadeIn = 3;
|
||||
t->fadeOut = 3;
|
||||
t->fadeIn = 2;
|
||||
t->fadeOut = 2;
|
||||
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()
|
||||
|
@ -155,7 +163,7 @@ void CueTrackListWidget::createNewCueTrack()
|
|||
} else
|
||||
redrawCueTrackList();
|
||||
if (lastUserCueNumber < t->userNumber)
|
||||
lastUserCueNumber = t->userNumber + 10;
|
||||
lastUserCueNumber = t->userNumber;
|
||||
} else
|
||||
delete (t);
|
||||
}
|
||||
|
@ -170,7 +178,7 @@ void CueTrackListWidget::editCueTrack()
|
|||
emit changeSelectedIndex(selectedIndex);
|
||||
}
|
||||
if (lastUserCueNumber < current->userNumber)
|
||||
lastUserCueNumber = current->userNumber + 10;
|
||||
lastUserCueNumber = current->userNumber;
|
||||
}
|
||||
|
||||
void CueTrackListWidget::deleteCueTrack()
|
||||
|
@ -205,6 +213,8 @@ 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)
|
||||
|
@ -251,11 +261,6 @@ void CueTrackListWidget::redrawCueTrackList()
|
|||
emit changeSelectedIndex(selectedIndex);
|
||||
}
|
||||
|
||||
#include <QFile>
|
||||
#include <QXmlStreamReader>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
void CueTrackListWidget::loadCueTrackList(std::string filename)
|
||||
{
|
||||
QFile file(QString::fromStdString(filename));
|
||||
|
@ -266,6 +271,7 @@ void CueTrackListWidget::loadCueTrackList(std::string filename)
|
|||
}
|
||||
QXmlStreamReader xmlReader(&file);
|
||||
clearCueTrackList();
|
||||
lastUserCueNumber = 0;
|
||||
while (!xmlReader.atEnd() && !xmlReader.hasError())
|
||||
{
|
||||
QXmlStreamReader::TokenType token = xmlReader.readNext();
|
||||
|
@ -318,7 +324,7 @@ void CueTrackListWidget::loadCueTrackList(std::string filename)
|
|||
}
|
||||
else if (elementName == "stopAtEnd") {
|
||||
QString tmp = xmlReader.text().toString().toLower();
|
||||
if (tmp.compare("true"))
|
||||
if (tmp.compare("false"))
|
||||
t->stopAtEnd = true;
|
||||
else {
|
||||
t->stopAtEnd = false;
|
||||
|
@ -332,6 +338,10 @@ 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();
|
||||
|
@ -342,6 +352,17 @@ 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;
|
||||
}
|
||||
}
|
||||
|
@ -359,9 +380,6 @@ void CueTrackListWidget::loadCueTrackList(std::string filename)
|
|||
redrawCueTrackList();
|
||||
}
|
||||
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
|
||||
void CueTrackListWidget::saveCueTrackList(std::string filename)
|
||||
{
|
||||
std::ofstream file(filename);
|
||||
|
@ -404,7 +422,11 @@ std::string CueTrackListWidget::cueTrackToXml(const CueTrack& cueTrack)
|
|||
xml += " <entryPoint>" + std::to_string(cueTrack.entryPoint) + "</entryPoint>\n";
|
||||
xml += " <exitPoint>" + std::to_string(cueTrack.exitPoint) + "</exitPoint>\n";
|
||||
xml += " <audioLayer>" + std::to_string(cueTrack.audioLayer) + "</audioLayer>\n";
|
||||
xml += " </CueTrack>\n";
|
||||
xml += " <duration>" + std::to_string(cueTrack.duration) + "</duration>\n";
|
||||
xml += " <multi>";
|
||||
xml += (cueTrack.multi ? "true" : "false");
|
||||
xml += "</multi>\n";
|
||||
xml += " </CueTrack>\n";
|
||||
return xml;
|
||||
}
|
||||
|
||||
|
@ -514,6 +536,8 @@ 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -546,3 +570,26 @@ void CueTrackListWidget::cueTrackAtEnd(int layer)
|
|||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ public:
|
|||
explicit CueTrackListWidget(QWidget *parent = nullptr);
|
||||
|
||||
public slots:
|
||||
CueTrack* getSelectedTrack();
|
||||
CueTrack* getSelectedTrack(bool advance);
|
||||
void createNewCueTrack();
|
||||
void editCueTrack();
|
||||
void deleteCueTrack();
|
||||
|
@ -42,6 +42,7 @@ private:
|
|||
int size() { return m_size; }
|
||||
int selectedIndex = 0;
|
||||
int lastUserCueNumber = 0;
|
||||
CueTrack* copiedCue = nullptr;
|
||||
|
||||
private slots:
|
||||
void addCueTrack(CueTrack* cue);
|
||||
|
@ -56,9 +57,12 @@ private slots:
|
|||
void sortCueTrackList();
|
||||
void clearTableWidget();
|
||||
std::string cueTrackToXml(const CueTrack& cueTrack);
|
||||
|
||||
void copyCueTrack();
|
||||
void pasteCueTrack();
|
||||
void cutCueTrack();
|
||||
|
||||
signals:
|
||||
void changeSelectedIndex(int index);
|
||||
void goAction(int channel);
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -1,14 +1,107 @@
|
|||
#include <QFileInfo>
|
||||
|
||||
#include "cuetrackwidget.h"
|
||||
#include "ui_cuetrackwidget.h"
|
||||
|
||||
CuetrackWidget::CuetrackWidget(QWidget *parent) :
|
||||
CueTrackWidget::CueTrackWidget(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::CuetrackWidget)
|
||||
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()
|
||||
|
||||
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->fadeOut);
|
||||
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->mediaEndTimeEdit->setTime(QTime::fromMSecsSinceStartOfDay(track->duration));
|
||||
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::refreshCurrentTime(int time)
|
||||
{
|
||||
QTime t;
|
||||
t.fromMSecsSinceStartOfDay(time);
|
||||
ui->mediaCurrentTimeEdit->setTime(t);
|
||||
ui->mediaProgressBar->setValue(time);
|
||||
}
|
||||
|
||||
void CueTrackWidget::setNextCue()
|
||||
{
|
||||
ui->cueProgressBar->setDisabled(true);
|
||||
ui->cueProgressBar->hide();
|
||||
ui->mediaProgressBar->setDisabled(true);
|
||||
ui->mediaProgressBar->hide();
|
||||
ui->mediaCurrentTimeEdit->setDisabled(true);
|
||||
ui->mediaCurrentTimeEdit->hide();
|
||||
}
|
||||
|
|
|
@ -2,22 +2,43 @@
|
|||
#define CUETRACKWIDGET_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QCheckBox>
|
||||
#include <QTimeLine>
|
||||
|
||||
#include "defines.h"
|
||||
#include "dialgroup.h"
|
||||
|
||||
namespace Ui {
|
||||
class CuetrackWidget;
|
||||
class CueTrackWidget;
|
||||
}
|
||||
|
||||
class CuetrackWidget : public QWidget
|
||||
class CueTrackWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit CuetrackWidget(QWidget *parent = nullptr);
|
||||
~CuetrackWidget();
|
||||
explicit CueTrackWidget(QWidget *parent = nullptr);
|
||||
~CueTrackWidget();
|
||||
|
||||
private:
|
||||
Ui::CuetrackWidget *ui;
|
||||
Ui::CueTrackWidget *ui;
|
||||
QTimeLine tlFade;
|
||||
QTimeLine tlWaitIn;
|
||||
QTimeLine tlWaitOut;
|
||||
|
||||
public slots:
|
||||
void loadCueTrack(CueTrack* track);
|
||||
void go();
|
||||
void setNextCue();
|
||||
|
||||
private slots:
|
||||
void refreshCurrentTime(int time);
|
||||
void fadeSlot();
|
||||
void waitInSlot();
|
||||
void waitOutSlot();
|
||||
|
||||
signals:
|
||||
void cueFinished(int layer);
|
||||
void goAction(int layer);
|
||||
};
|
||||
|
||||
#endif // CUETRACKWIDGET_H
|
||||
|
|
|
@ -1,157 +1,825 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>CuetrackWidget</class>
|
||||
<widget class="QWidget" name="CuetrackWidget">
|
||||
<class>CueTrackWidget</class>
|
||||
<widget class="QWidget" name="CueTrackWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>640</width>
|
||||
<height>193</height>
|
||||
<width>502</width>
|
||||
<height>329</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<widget class="QGroupBox" name="CueTimesGroupBox">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>40</y>
|
||||
<width>238</width>
|
||||
<height>85</height>
|
||||
</rect>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::ClickFocus</enum>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Cue Track</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset resource="../lms-resources.qrc">
|
||||
<normaloff>:/buttons/resources/icon.png</normaloff>:/buttons/resources/icon.png</iconset>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string notr="true"/>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QDoubleSpinBox" name="FadeBox">
|
||||
<property name="toolTip">
|
||||
<string>Fade time in seconds</string>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QSplitter" name="splitter">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="opaqueResize">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="handleWidth">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<widget class="QSplitter" name="cueHeaderInfo">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="accessibleName">
|
||||
<string>Fade In </string>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="accessibleDescription">
|
||||
<string>Fade In Time in seconds</string>
|
||||
</property>
|
||||
<property name="wrapping">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="buttonSymbols">
|
||||
<enum>QAbstractSpinBox::PlusMinus</enum>
|
||||
</property>
|
||||
<property name="specialValueText">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="showGroupSeparator" stdset="0">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>99990000.000000000000000</double>
|
||||
</property>
|
||||
<property name="stepType">
|
||||
<enum>QAbstractSpinBox::AdaptiveDecimalStepType</enum>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<widget class="QProgressBar" name="cueProgressBar">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Cue Progress</string>
|
||||
</property>
|
||||
<property name="statusTip">
|
||||
<string>Cue Progress</string>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>24</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLCDNumber" name="cueNumber">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
||||
<horstretch>1</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>48</width>
|
||||
<height>48</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>14</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Cue Number</string>
|
||||
</property>
|
||||
<property name="statusTip">
|
||||
<string>Cue Number</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<property name="lineWidth">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="smallDecimalPoint">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="digitCount">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="cueName">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>2</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>13</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Cue Name</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Cue Name</string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::PlainText</enum>
|
||||
</property>
|
||||
<property name="scaledContents">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QCheckBox" name="haltBox">
|
||||
<property name="text">
|
||||
<string>CheckBox</string>
|
||||
<widget class="QSplitter" name="mediaInfo">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<widget class="QProgressBar" name="mediaProgressBar">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Cue Progress</string>
|
||||
</property>
|
||||
<property name="statusTip">
|
||||
<string>Media Progress</string>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>24</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QTimeEdit" name="mediaCurrentTimeEdit">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="statusTip">
|
||||
<string>Media current time</string>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="buttonSymbols">
|
||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QTimeEdit" name="mediaEndTimeEdit">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="statusTip">
|
||||
<string>Media Edn Time</string>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="buttonSymbols">
|
||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="mediaFileName">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>7</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Media FIle Name</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Media file name</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QDoubleSpinBox" name="waitIn"/>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_4"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="CueValuesGroupBox">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>260</x>
|
||||
<y>40</y>
|
||||
<width>341</width>
|
||||
<height>121</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<item row="0" column="0">
|
||||
<widget class="QSpinBox" name="volBox"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QSpinBox" name="panBox"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QSpinBox" name="spinBox"/>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QSpinBox" name="bus1Box"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QSplitter" name="splitter">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>10</y>
|
||||
<width>631</width>
|
||||
<height>25</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<widget class="QProgressBar" name="progressBar">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>24</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLCDNumber" name="cueName">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLCDNumber" name="cueNumber">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QSplitter" name="cueValues">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<widget class="QGroupBox" name="timesLayout">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetDefaultConstraint</enum>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="1" column="1">
|
||||
<widget class="QDoubleSpinBox" name="waitIn">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Wait in time in seconds</string>
|
||||
</property>
|
||||
<property name="buttonSymbols">
|
||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QDoubleSpinBox" name="waitOut">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Wait out time in secods</string>
|
||||
</property>
|
||||
<property name="buttonSymbols">
|
||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QDoubleSpinBox" name="fade">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Fade time in seconds</string>
|
||||
</property>
|
||||
<property name="accessibleName">
|
||||
<string>Fade In </string>
|
||||
</property>
|
||||
<property name="accessibleDescription">
|
||||
<string>Fade In Time in seconds</string>
|
||||
</property>
|
||||
<property name="wrapping">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="buttonSymbols">
|
||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||
</property>
|
||||
<property name="specialValueText">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="showGroupSeparator" stdset="0">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>99990000.000000000000000</double>
|
||||
</property>
|
||||
<property name="stepType">
|
||||
<enum>QAbstractSpinBox::AdaptiveDecimalStepType</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QTimeEdit" name="exitPoint">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Exit Point</string>
|
||||
</property>
|
||||
<property name="buttonSymbols">
|
||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" colspan="2">
|
||||
<widget class="QLabel" name="status">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>13</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Playback Status</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Playback Status</string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::PlainText</enum>
|
||||
</property>
|
||||
<property name="scaledContents">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QTimeEdit" name="entryPoint">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Entry Point</string>
|
||||
</property>
|
||||
<property name="buttonSymbols">
|
||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLCDNumber" name="audioLayer">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>24</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Audio Channel</string>
|
||||
</property>
|
||||
<property name="smallDecimalPoint">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="digitCount">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<widget class="QRadioButton" name="halt">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>24</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>13</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Do not play next cue if checked</string>
|
||||
</property>
|
||||
<property name="whatsThis">
|
||||
<string>If checked, do not play next cue. If checked, Go next cue when this cue has finished.</string>
|
||||
</property>
|
||||
<property name="accessibleName">
|
||||
<string>Halt</string>
|
||||
</property>
|
||||
<property name="autoFillBackground">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string> Halt </string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../lms-resources.qrc">
|
||||
<normaloff>:/buttons/resources/delete_button.png</normaloff>:/buttons/resources/delete_button.png</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>32</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="gridLayoutWidget">
|
||||
<layout class="QGridLayout" name="audioLayout" rowminimumheight="0,0,0,0" columnminimumwidth="0,0,0">
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetDefaultConstraint</enum>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLCDNumber" name="pitch">
|
||||
<property name="digitCount">
|
||||
<number>3</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="bus1Label">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Bus 1</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLCDNumber" name="pan">
|
||||
<property name="digitCount">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="volLabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Volume</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLabel" name="bus2Label">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Bus 2</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLCDNumber" name="vol">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Volume</p></body></html></string>
|
||||
</property>
|
||||
<property name="digitCount">
|
||||
<number>3</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QLCDNumber" name="bus2">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Bus 2 Volume</p></body></html></string>
|
||||
</property>
|
||||
<property name="digitCount">
|
||||
<number>3</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLCDNumber" name="bus1">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Bus 1 Volume</p></body></html></string>
|
||||
</property>
|
||||
<property name="digitCount">
|
||||
<number>3</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="panLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Pan</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLabel" name="pitchLabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Pitch</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<widget class="QCheckBox" name="multi">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
<underline>true</underline>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>PLay next cue at same time this cue, do not wait to finish the cue.</p></body></html></string>
|
||||
</property>
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::RightToLeft</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../lms-resources.qrc">
|
||||
<normaloff>:/buttons/resources/go_button.jpeg</normaloff>:/buttons/resources/go_button.jpeg</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>32</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="2">
|
||||
<widget class="QLabel" name="multiLabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>MultiCue</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<tabstops>
|
||||
<tabstop>mediaCurrentTimeEdit</tabstop>
|
||||
<tabstop>waitOut</tabstop>
|
||||
<tabstop>waitIn</tabstop>
|
||||
<tabstop>entryPoint</tabstop>
|
||||
<tabstop>exitPoint</tabstop>
|
||||
<tabstop>fade</tabstop>
|
||||
<tabstop>mediaEndTimeEdit</tabstop>
|
||||
</tabstops>
|
||||
<resources>
|
||||
<include location="../lms-resources.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
|
|
@ -113,7 +113,9 @@ struct CueTrack {
|
|||
int entryPoint; // 0 - 255
|
||||
int exitPoint; // 0 - 255
|
||||
int audioLayer; // internal audio layer used when cue is loaded
|
||||
bool active;
|
||||
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.
|
||||
};
|
||||
|
||||
#endif // __cplusplus
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#include "dialgroup.h"
|
||||
#include <cmath>
|
||||
#include <QWidget>
|
||||
#include <QVBoxLayout>
|
||||
#include "dialgroup.h"
|
||||
|
||||
DialGroup::DialGroup(QString name,
|
||||
int min,
|
||||
|
@ -10,18 +10,18 @@ DialGroup::DialGroup(QString name,
|
|||
QWidget *parent)
|
||||
: QWidget(parent)
|
||||
{
|
||||
layout = new QVBoxLayout;
|
||||
QVBoxLayout *layout = new QVBoxLayout;
|
||||
layout->setAlignment(Qt::AlignHCenter);
|
||||
layout->setContentsMargins(0, 0, 0, 0);
|
||||
slider.setFocusPolicy(Qt::StrongFocus);
|
||||
slider.setTickPosition(QSlider::TicksBothSides);
|
||||
slider.setTickInterval((max - min) / 11);
|
||||
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.setRange(min, max);
|
||||
slider.setValue(0);
|
||||
slider.setMinimumWidth(50);
|
||||
slider.setToolTip(name);
|
||||
slider.setStyleSheet("QDial {"
|
||||
"border: 1px solid #aa8895;"
|
||||
"background: #20182d;"
|
||||
|
@ -33,62 +33,35 @@ DialGroup::DialGroup(QString name,
|
|||
"background-color: black;"
|
||||
"background: red;"
|
||||
"color: white;}"
|
||||
slider.setContentsMargins(0, 0, 0, 0);
|
||||
*/
|
||||
valueBox.setFocusPolicy(Qt::NoFocus);
|
||||
valueBox.setButtonSymbols(QAbstractSpinBox::NoButtons);
|
||||
valueBox.setMinimumWidth(50);
|
||||
if (decimals) {
|
||||
valueBox.setRange(-84.0f, 0.0f);
|
||||
valueBox.setSpecialValueText("-inf");
|
||||
} else
|
||||
valueBox.setRange(min, max);
|
||||
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);
|
||||
connect(&slider, SIGNAL(valueChanged(int)), this, SLOT(sliderValueChanged(int)));
|
||||
layout->addWidget(&slider);
|
||||
layout->addWidget(&valueBox);
|
||||
this->setStyleSheet("border: 1px solid #aa8895;"
|
||||
/* 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 SliderGroup::sliderValueChanged(int value)
|
||||
void DialGroup::setValue(float value)
|
||||
{
|
||||
valueBox.blockSignals(true);
|
||||
if (valueBox.decimals()) {
|
||||
float db = ((float)value / 771.0f) - 85.0f;
|
||||
if (db <= -84.5f) {
|
||||
valueBox.setSpecialValueText("-inf");
|
||||
} else
|
||||
valueBox.setValue(db);
|
||||
} else {
|
||||
valueBox.setValue(value);
|
||||
}
|
||||
valueBox.blockSignals(false);
|
||||
emit valueChanged(value);
|
||||
};
|
||||
|
||||
void SliderGroup::setValue(float value)
|
||||
{
|
||||
float db;
|
||||
|
||||
slider.blockSignals(true);
|
||||
valueBox.blockSignals(true);
|
||||
if (int(value) != slider.value())
|
||||
slider.setValue(value);
|
||||
if (valueBox.decimals()) {
|
||||
db = (float)(value / 771.0f) - 85.0f;
|
||||
valueBox.setValue(db);
|
||||
} else
|
||||
valueBox.setValue(value);
|
||||
slider.setValue(value);
|
||||
valueBox.setValue(value);
|
||||
slider.blockSignals(false);
|
||||
valueBox.blockSignals(false);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef SLIDERGROUP_H
|
||||
#define SLIDERGROUP_H
|
||||
#ifndef DIALGROUP_H
|
||||
#define DIALGROUP_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QWidget>
|
||||
|
@ -12,18 +12,14 @@ class DialGroup : public QWidget
|
|||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
DialGroup(QString name,
|
||||
explicit DialGroup(QString name,
|
||||
int min,
|
||||
int max,
|
||||
int decimals,
|
||||
QWidget *parent = nullptr);
|
||||
|
||||
signals:
|
||||
void valueChanged(int value);
|
||||
|
||||
public slots:
|
||||
void setValue(float value);
|
||||
void sliderValueChanged(int value);
|
||||
|
||||
private:
|
||||
QDial slider;
|
||||
|
|
|
@ -58,6 +58,8 @@ 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));
|
||||
|
@ -92,6 +94,7 @@ 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() {
|
||||
|
@ -114,6 +117,7 @@ CueTrack EditCueTrackWidget::saveCueTrack() {
|
|||
cueTrack.pan = panSpin->value();
|
||||
cueTrack.pitch = pitchSpin->value();
|
||||
cueTrack.description.append(descriptionEdit->text().toUtf8().constData());
|
||||
cueTrack.multi = multiCheck->isChecked();
|
||||
return cueTrack;
|
||||
}
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@ private:
|
|||
QSpinBox *exitPointSpin;
|
||||
QComboBox *statusCombo;
|
||||
QSpinBox *audioLayerSpin;
|
||||
QCheckBox *multiCheck;
|
||||
QPushButton *browseButton;
|
||||
QPushButton *saveButton;
|
||||
QPushButton *cancelButton;
|
||||
|
|
|
@ -60,6 +60,6 @@ void libreMediaServerAudioUi::olasetup()
|
|||
|
||||
void libreMediaServerAudioUi::launchShowPlayerWindow()
|
||||
{
|
||||
qDebug() << "launch show player";
|
||||
//m_showPlayer->showMaximized();
|
||||
m_showPlayer->show();
|
||||
}
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>400</height>
|
||||
<width>640</width>
|
||||
<height>800</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="font">
|
||||
|
@ -23,8 +23,8 @@
|
|||
<string>LibreMediaServer</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset>
|
||||
<normaloff>../../../../criptomart/artwork/logo_v2_criptomart.net.png</normaloff>../../../../criptomart/artwork/logo_v2_criptomart.net.png</iconset>
|
||||
<iconset resource="../lms-resources.qrc">
|
||||
<normaloff>:/buttons/resources/icon.png</normaloff>:/buttons/resources/icon.png</iconset>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget"/>
|
||||
<widget class="QMenuBar" name="menuBar">
|
||||
|
@ -32,7 +32,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<width>640</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
@ -56,6 +56,8 @@
|
|||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<resources/>
|
||||
<resources>
|
||||
<include location="../lms-resources.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
|
|
@ -170,7 +170,7 @@ void libreMediaServerAudio::refreshUi() {
|
|||
}
|
||||
m_lmsUi->m_aw->levelChanged(i, m_mae.getLevel(i));
|
||||
if (m_mae.getAtEnd(i)) {
|
||||
if (m_currentStatus[i] == Status::PlayingOnce) {
|
||||
if (m_currentStatus[i] == Status::PlayingOnce || m_currentStatus[i] == Status::Stopped) {
|
||||
m_currentStatus[i] = Status::Stopped;
|
||||
m_lmsUi->m_aw->playbackChanged(i, Status::Stopped);
|
||||
m_lmsUi->m_showPlayer->cueTrackAtEnd(i);
|
||||
|
@ -246,8 +246,8 @@ void libreMediaServerAudio::uiSliderChanged(int layer, Slider s, int value)
|
|||
{
|
||||
switch (s){
|
||||
case Slider::Volume:
|
||||
//m_mae.volChanged(layer, value);
|
||||
//m_updateUi[layer][0] = value;
|
||||
m_mae.volChanged(layer, value);
|
||||
m_updateUi[layer][0] = value;
|
||||
break;
|
||||
case Slider::Pan:
|
||||
m_mae.panChanged(layer, value);
|
||||
|
|
|
@ -12,11 +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()));
|
||||
filesLoaded = 0;
|
||||
currentStatus = Status::Iddle;
|
||||
for(int i = 0; i < MAX_LAYERS; i++)
|
||||
for(int i = 0; i < MAX_LAYERS; i++) {
|
||||
layersUsed[i] = -1;
|
||||
connect(ui->cueListWidget, SIGNAL(changeSelectedIndex(int)), this, SLOT(changeSelectedIndex(int)));
|
||||
cueTrackWidgetPlaying[i] = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
ShowPlayer::~ShowPlayer() {}
|
||||
|
@ -27,32 +27,36 @@ void ShowPlayer::onAddTrack() {
|
|||
|
||||
void ShowPlayer::go()
|
||||
{
|
||||
ui->activeCueNumber->display(lastIndex);
|
||||
CueTrack* current = ui->cueListWidget->getSelectedTrack();
|
||||
if (!current)
|
||||
CueTrack *goCue = ui->cueListWidget->getSelectedTrack(true);
|
||||
if (!goCue)
|
||||
return;
|
||||
if (current->audioLayer < 0)
|
||||
return;
|
||||
ui->activeCueLabel->setText(current->name.data());
|
||||
if (!current->filePath.empty())
|
||||
emit uiLoadMedia(current->audioLayer, current->filePath.data());
|
||||
updateTrackStateInEngine(current);
|
||||
emit uiPlaybackChanged(current->audioLayer, current->status);
|
||||
ui->cueListWidget->cueTrackAtEnd(current->audioLayer);
|
||||
switch (current->status) {
|
||||
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);
|
||||
}
|
||||
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->active = true;
|
||||
layersUsed[current->audioLayer] = current->userNumber;
|
||||
current[c]->active = true;
|
||||
layersUsed[current[c]->audioLayer] = current[c]->userNumber;
|
||||
break;
|
||||
default:
|
||||
current->active = false;
|
||||
current[c]->active = false;
|
||||
}
|
||||
ui->cueListWidget->redrawCueTrackList();
|
||||
filesLoaded++;
|
||||
}
|
||||
|
||||
void ShowPlayer::updateTrackStateInEngine(CueTrack *track) {
|
||||
|
@ -63,20 +67,12 @@ void ShowPlayer::updateTrackStateInEngine(CueTrack *track) {
|
|||
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()
|
||||
|
@ -89,5 +85,48 @@ void ShowPlayer::saveCueTrackList()
|
|||
|
||||
void ShowPlayer::cueTrackAtEnd(int layer)
|
||||
{
|
||||
current[layer]->active = false;
|
||||
ui->cueListWidget->cueTrackAtEnd(layer);
|
||||
removeCueTrackWidget(layer);
|
||||
}
|
||||
|
||||
void ShowPlayer::cueFinished(int c)
|
||||
{
|
||||
if (current[c] && !current[c]->stopAtEnd)
|
||||
this->go();
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
|
||||
#include "defines.h"
|
||||
#include "cuetracklistwidget.h"
|
||||
#include "cuetrackwidget.h"
|
||||
#include "dialgroup.h"
|
||||
#include "settings.h"
|
||||
#include "ui_showplayer.h"
|
||||
|
||||
|
@ -30,17 +32,21 @@ public slots:
|
|||
private:
|
||||
Ui::ShowPlayer *ui;
|
||||
Status currentStatus = Status::Iddle;
|
||||
size_t filesLoaded = 0;
|
||||
int layersUsed[MAX_LAYERS];
|
||||
int lastIndex = 0;
|
||||
CueTrack *current[MAX_LAYERS];
|
||||
CueTrackWidget *cueTrackWidgetPlaying[MAX_LAYERS];
|
||||
CueTrackWidget *addCueTrackWidget(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);
|
||||
|
||||
signals:
|
||||
void uiPlaybackChanged(int layer, Status s);
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>743</width>
|
||||
<height>671</height>
|
||||
<width>800</width>
|
||||
<height>802</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
|
@ -19,117 +19,30 @@
|
|||
<property name="windowTitle">
|
||||
<string>Show Player</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset resource="../lms-resources.qrc">
|
||||
<normaloff>:/buttons/resources/icon.png</normaloff>:/buttons/resources/icon.png</iconset>
|
||||
</property>
|
||||
<property name="autoFillBackground">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="sizeGripEnabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="modal">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QSplitter" name="splitter">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>400</height>
|
||||
</size>
|
||||
</property>
|
||||
<widget class="QSplitter" name="splitter_2">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Sunken</enum>
|
||||
<enum>QFrame::Box</enum>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="handleWidth">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<widget class="QSplitter" name="masterSplitter">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Box</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="handleWidth">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<widget class="QPushButton" name="goButton">
|
||||
<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>GO</string>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string>Space</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<layout class="QGridLayout" name="statusLayout">
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetMinimumSize</enum>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<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">
|
||||
<layout class="QHBoxLayout" name="ButtonToolBarLayout" stretch="0,0,0,0,0,0,0,0">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
|
@ -137,10 +50,10 @@
|
|||
<enum>QLayout::SetDefaultConstraint</enum>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>100</number>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>100</number>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QToolButton" name="LoadCueList">
|
||||
|
@ -328,25 +241,109 @@
|
|||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="CueTrackListWidget" name="cueListWidget" native="true">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
<widget class="QSplitter" name="masterSplitter">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::StrongFocus</enum>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="autoFillBackground">
|
||||
<bool>true</bool>
|
||||
<property name="handleWidth">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="inputMethodHints">
|
||||
<set>Qt::ImhPreferLowercase</set>
|
||||
<widget class="QPushButton" name="goButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::ClickFocus</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../lms-resources.qrc">
|
||||
<normaloff>:/buttons/resources/go_button.jpeg</normaloff>:/buttons/resources/go_button.jpeg</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>120</width>
|
||||
<height>120</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string>Space</string>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QToolButton" name="panicButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::ClickFocus</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../lms-resources.qrc">
|
||||
<normaloff>:/buttons/resources/panic_button.jpg</normaloff>:/buttons/resources/panic_button.jpg</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>96</width>
|
||||
<height>120</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string>P</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QSplitter" name="splitter">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<widget class="CueTrackListWidget" name="cueListWidget" native="true">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Cue List</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QListWidget" name="activeCueList">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Cues active</p></body></html></string>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<property name="resizeMode">
|
||||
<enum>QListView::Adjust</enum>
|
||||
</property>
|
||||
<property name="layoutMode">
|
||||
<enum>QListView::SinglePass</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -361,7 +358,6 @@
|
|||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>cueListWidget</tabstop>
|
||||
<tabstop>NewCue</tabstop>
|
||||
<tabstop>EditCue</tabstop>
|
||||
<tabstop>RemoveCue</tabstop>
|
||||
|
|
Loading…
Add table
Reference in a new issue