#ifndef CUETRACKLISTWIDGET_H #define CUETRACKLISTWIDGET_H #include #include #include #include #include #include "cuetrackwidget.h" #include #include 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); if (m_size == 0) widget->setStyle(true); 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(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)->setStyle(false); selectedIndex--; getTrackAtIndex(selectedIndex)->setStyle(true); } } void key_down() { if (selectedIndex < m_size - 1 && m_size > 0) { getTrackAtIndex(selectedIndex)->setStyle(false); selectedIndex++; getTrackAtIndex(selectedIndex)->setStyle(true); } } void displayCueTrackInTable(QTableWidget* tableWidget, const CueTrack& cueTrack) { // Configura las columnas si aún no están configuradas if (tableWidget->columnCount() == 0) { tableWidget->setColumnCount(5); // Ajusta según el número de propiedades a mostrar QStringList headers = {"Nombre", "Volumen", "Pan", "Pitch", "Estado"}; tableWidget->setHorizontalHeaderLabels(headers); } int currentRow = tableWidget->rowCount(); tableWidget->insertRow(currentRow); // Nombre tableWidget->setItem(currentRow, 0, new QTableWidgetItem(cueTrack.name)); // Volumen tableWidget->setItem(currentRow, 1, new QTableWidgetItem(QString::number(cueTrack.volume))); // Pan tableWidget->setItem(currentRow, 2, new QTableWidgetItem(QString::number(cueTrack.pan))); // Pitch tableWidget->setItem(currentRow, 3, new QTableWidgetItem(QString::number(cueTrack.pitch))); // Estado QString statusStr; // Asume que tienes una función para convertir el estado a QString statusStr = statusToString(cueTrack.status); // Implementa esta función según tu lógica tableWidget->setItem(currentRow, 4, new QTableWidgetItem(statusStr)); } }; #endif