wip settings

This commit is contained in:
snt 2024-06-18 14:58:23 +02:00
parent 52b44a4d7c
commit 333d7c7b49
11 changed files with 215 additions and 77 deletions

View file

@ -167,12 +167,44 @@ void CueTrackWidget::setupStatusCombo() {
statusCombo->addItem("PlayingFolderRandom", PlayingFolderRandom);
}
void CueTrackWidget::loadCueTrack(const CueTrack &cueTrack) {
filePathEdit->setText(QString::fromStdString(cueTrack.filePath));
volumeSpin->setValue(cueTrack.volume);
panSpin->setValue(cueTrack.pan);
pitchSpin->setValue(cueTrack.pitch);
bus1Spin->setValue(cueTrack.bus1);
bus2Spin->setValue(cueTrack.bus2);
fadeInSpin->setValue(cueTrack.fadeIn);
fadeOutSpin->setValue(cueTrack.fadeOut);
waitInSpin->setValue(cueTrack.waitIn);
waitOutSpin->setValue(cueTrack.waitOut);
stopAtEndCheck->setChecked(cueTrack.stopAtEnd);
nameEdit->setText(QString::fromStdString(cueTrack.name));
descriptionEdit->setText(QString::fromStdString(cueTrack.description));
userNumberSpin->setValue(cueTrack.userNumber);
entryPointSpin->setValue(cueTrack.entryPoint);
exitPointSpin->setValue(cueTrack.exitPoint);
statusCombo->setCurrentIndex(statusCombo->findData(cueTrack.status));
}
CueTrack CueTrackWidget::saveCueTrack() const {
CueTrack cueTrack;
cueTrack.filePath = filePathEdit->text().toStdString();
cueTrack.volume = volumeSpin->value();
// Guarda el resto de los campos aquí...
cueTrack.pan = panSpin->value();
cueTrack.pitch = pitchSpin->value();
cueTrack.bus1 = bus1Spin->value();
cueTrack.bus2 = bus2Spin->value();
cueTrack.fadeIn = fadeInSpin->value();
cueTrack.fadeOut = fadeOutSpin->value();
cueTrack.waitIn = waitInSpin->value();
cueTrack.waitOut = waitOutSpin->value();
cueTrack.stopAtEnd = stopAtEndCheck->isChecked();
cueTrack.name = nameEdit->text().toStdString();
cueTrack.description = descriptionEdit->text().toStdString();
cueTrack.userNumber = userNumberSpin->value();
cueTrack.entryPoint = entryPointSpin->value();
cueTrack.exitPoint = exitPointSpin->value();
cueTrack.status = static_cast<Status>(statusCombo->currentData().toInt());
return cueTrack;
}

View file

@ -14,12 +14,13 @@ class CueTrackWidget : public QWidget {
Q_OBJECT
public:
explicit CueTrackWidget(QWidget *parent = nullptr);
CueTrack saveCueTrack() const;
QWidget *createHeader();
int audioLayer = 0;
explicit CueTrackWidget(QWidget *parent = nullptr);
CueTrack saveCueTrack() const;
void loadCueTrack(const CueTrack &cueTrack);
QWidget *createHeader();
int getVolume() const { return volumeSpin->value(); }
int getPan() const { return panSpin->value(); }
int getPitch() const { return pitchSpin->value(); }
@ -39,13 +40,10 @@ public:
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;");
if (highlight) this->setStyleSheet("background-color: yellow;");
else this->setStyleSheet("background-color: white;");
}
private:
QCheckBox* active;
QLineEdit* filePathEdit;
QSpinBox* volumeSpin;
@ -65,6 +63,7 @@ private:
QSpinBox* entryPointSpin;
QSpinBox* exitPointSpin;
private:
void setupUi();
void setupStatusCombo();
};

View file

@ -23,7 +23,7 @@
libreMediaServerAudio::libreMediaServerAudio()
{
m_settings = Settings::getInstance();
m_settings = Settings::getInstance(this);
m_settings->readFile();
m_ui = m_settings->getShowUi();
m_layersQty = m_settings->getLayersNumber();

View file

@ -33,6 +33,10 @@ int main(int argc, char *argv[])
{
QApplication app(argc, argv);
libreMediaServerAudio lms;
app.setApplicationName("LibreMediaServerAudio");
app.setOrganizationName("Criptomart");
app.setOrganizationDomain("Criptomart.net");
app.setApplicationVersion(VERSION);
#ifndef NOGUI
if (hasUi(argc, argv) || lms.getShowUi())
{

View file

@ -2,20 +2,82 @@
Settings *Settings::_instance = 0;
Settings *Settings::getInstance() {
Settings *Settings::getInstance(QObject *parent) {
if (_instance == 0) {
_instance = new Settings();
_instance = new Settings(parent);
Q_CHECK_PTR(_instance);
}
return _instance;
}
Settings::Settings(QObject *parent) :
QObject(parent)
QSettings{parent}
{
m_layersNumber = 0;
m_ui = false;
m_audioDeviceQty = 0;
for (uint i = 0; i < MAX_AUDIODEVICES; i++)
m_audioDeviceId[i] = -1;
settingsLoader();
}
Settings::~Settings() {
settingsSaver();
}
void Settings::settingsLoader()
{
beginGroup("lmsAudio");
m_ui = value("ui", 0).toBool();
m_layersNumber = value("layersNumber", 0).toInt();
m_pathmedia = value("path", "").toString();
endGroup();
beginGroup("audioDevice");
m_audioDeviceQty = value("devicesNumber", 0).toInt();
for (uint i = 0; i < m_audioDeviceQty; i++)
m_audioDeviceId[i] = value(QString("id%1").arg(i), -1).toInt();
endGroup();
beginGroup("layers");
for (int i = 0; i < m_layersNumber; i++) {
beginGroup(QString("layer%1").arg(i));
dmxSetting temp;
temp.address = value("dmx", 0).toInt();
temp.universe = value("universe", 0).toInt();
temp.layer = value("id", 0).toInt();
temp.audioDevice = value("audioDevice", 0).toInt();
m_settings.append(temp);
if (!m_universe.contains(temp.universe)) {
m_universe.insert(temp.universe);
}
endGroup();
}
endGroup();
printSettings();
}
void Settings::settingsSaver()
{
beginGroup("lmsAudio");
setValue("ui", m_ui);
setValue("layersNumber", m_layersNumber);
setValue("path", m_pathmedia);
endGroup();
beginGroup("audioDevice");
setValue("devicesNumber", m_audioDeviceQty);
for (uint i = 0; i < m_audioDeviceQty; i++)
setValue(QString("id%1").arg(i), m_audioDeviceId[i]);
endGroup();
beginGroup("layers");
for (int i = 0; i < m_layersNumber; i++) {
beginGroup(QString("layer%1").arg(i));
setValue("dmx", m_settings[i].address);
setValue("universe", m_settings[i].universe);
setValue("id", m_settings[i].layer);
setValue("audioDevice", m_settings[i].audioDevice);
endGroup();
}
endGroup();
}
// Read the dmx settings for dmx.xml At the moment we need:

View file

@ -6,20 +6,23 @@
#include <QMessageBox>
#include <QSet>
#include <QDebug>
#include <QSettings>
#include "medialibrary.h"
#include "audiowidget.h"
#include "defines.h"
class Settings : public QObject
class Settings : public QSettings
{
Q_OBJECT
public:
Settings(QObject *parent = 0);
static Settings *getInstance();
Settings(QObject *parent = nullptr);
~Settings();
static Settings *getInstance(QObject *parent = nullptr);
inline QSet<int> getUniverses() { return m_universe; }
inline QString getPathMedia() { return m_pathmedia; }
inline void setPathMedia(QString new_path) { m_pathmedia = new_path; };
inline QList<dmxSetting> getDmxSettings() { return m_settings; }
inline int getLayersNumber() { return m_layersNumber; }
inline uint *getAudioDeviceId() { return m_audioDeviceId; }
@ -28,6 +31,8 @@ public:
void readFile();
void readFromFile(QString file);
void printSettings();
void settingsLoader();
void settingsSaver();
private:
static Settings *_instance;

View file

@ -1,47 +1,5 @@
#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)
@ -50,8 +8,6 @@ ShowPlayer::ShowPlayer(QWidget *parent) :
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;

View file

@ -31,8 +31,6 @@ private:
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());

View file

@ -117,16 +117,6 @@
</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>

58
src/trackdialog.cpp Normal file
View file

@ -0,0 +1,58 @@
#include "trackdialog.h"
#include "settings.h"
TrackDialog::TrackDialog(QWidget *parent) : QDialog(parent) {
setupUi();
connectSignals();
}
void TrackDialog::setupUi() {
okButton = new QPushButton(tr("OK"), this);
cancelButton = new QPushButton(tr("Cancelar"), this);
browseButton = new QPushButton(tr("Buscar..."), this);
QFormLayout *layout = new QFormLayout(this);
track = new CueTrack();
layout->addRow(tr("&User number"), track->userNumber);
layout->addRow(tr("&Name"), track->name);
layout->addRow(tr("&Description"), track->description);
layout->addRow(tr("&File"), track->filePath);
layout->addRow(tr("&Browse files"), browseButton);
layout->addRow(tr("&Status"), track->status);
layout->addRow(tr("&Fade in"), track->fadeIn);
layout->addRow(tr("Fade &Out"), track->fadeOut);
layout->addRow(tr("&Wait In"), track->waitIn);
layout->addRow(tr("&Wait Ou&t"), track->waitOut);
layout->addRow(tr("Sto&p at end"), track->stopAtEnd);
layout->addRow(tr("&Volume"), track->volume);
layout->addRow(tr("pan"), track->pan);
layout->addRow(tr("pitch"), track->pitch);
layout->addRow(tr("Bus&1"), track->bus1);
layout->addRow(tr("Bus&2"), track->bus2);
layout->addRow(tr("&Entry Point"), track->entryPoint);
layout->addRow(tr("E&xit Point"), track->exitPoint);
layout->addWidget(okButton);
layout->addWidget(cancelButton);
setLayout(layout);
}
void TrackDialog::connectSignals() {
connect(okButton, &QPushButton::clicked, this, &TrackDialog::accept);
connect(cancelButton, &QPushButton::clicked, this, &TrackDialog::reject);
connect(browseButton, &QPushButton::clicked, this, &TrackDialog::browseFiles);
}
QString TrackDialog::browseFiles() const {
QString filePath = QFileDialog::getOpenFileName(
const_cast<TrackDialog*>(this),
tr("Select File"),
Settings::getInstance()->getPathMedia(),
tr("Archivos de audio (*.mp3 *.wav *.flac);;Todos los archivos (*)")
);
if (!filePath.isEmpty()) {
track->setFilePath(filePath);
QDir dir;
Settings::getInstance()->setPathMedia(dir.absoluteFilePath(filePath));
}
return filePath;
}

34
src/trackdialog.h Normal file
View file

@ -0,0 +1,34 @@
#ifndef TRACKDIALOG_H
#define TRACKDIALOG_H
#include <QLineEdit>
#include <QSpinBox>
#include <QPushButton>
#include <QFormLayout>
#include <QFileDialog>
#include "defines.h"
#include "cuetrackwidget.h"
class TrackDialog : public QDialog {
Q_OBJECT
public:
CueTrack *track;
explicit TrackDialog(QWidget *parent = nullptr);
private:
QPushButton *okButton;
QPushButton *cancelButton;
QPushButton *browseButton;
void setupUi();
void connectSignals();
private slots:
QString browseFiles() const;
};
#endif