From 4bb39eaad8dcff57c297aaf9542113d2eaed9067 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Thu, 17 May 2018 19:34:53 +0200 Subject: Make tabs closable. Load file list and master file state back into file list widget. --- src/audioextractor.cc | 1 + src/filelist.cc | 20 +++++++++++++++++++- src/filelist.h | 5 ++++- src/instrumentwidget.cc | 4 ++-- src/mainwindow.cc | 7 +++++++ src/mainwindow.h | 2 ++ src/projectserialiser.cc | 2 +- 7 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/audioextractor.cc b/src/audioextractor.cc index 962c267..2132cba 100644 --- a/src/audioextractor.cc +++ b/src/audioextractor.cc @@ -49,6 +49,7 @@ AudioExtractor::AudioExtractor(Instrument& instrument, Selections &selections, , instrument(instrument) , selections(selections) { + audiofiles = instrument.getFileList(); } void AudioExtractor::exportSelections() diff --git a/src/filelist.cc b/src/filelist.cc index 0f9b1cf..4df69c3 100644 --- a/src/filelist.cc +++ b/src/filelist.cc @@ -30,9 +30,13 @@ #include #include +#include + #include "itemeditor.h" +#include "project.h" -FileList::FileList() +FileList::FileList(Instrument& instrument) + : instrument(instrument) { setContextMenuPolicy(Qt::CustomContextMenu); @@ -43,6 +47,20 @@ FileList::FileList() this, SLOT(selectionChanged(QListWidgetItem*))); createMenus(); + + // Load files into list: + auto master_file = instrument.getMasterFile(); + auto files = instrument.getFileList(); + for(auto file : files) + { + auto item = new QListWidgetItem(); + //item->setIcon(QPixmap(":icons/instrument.png")); + setItemFile(item, file.first); + setItemName(item, file.second); + std::cout << file.first.toStdString() << " ?= " << master_file.toStdString() << std::endl; + setItemMaster(item, file.first == master_file); + addItem(item); + } } void FileList::addFiles() diff --git a/src/filelist.h b/src/filelist.h index 01cf684..e336bc1 100644 --- a/src/filelist.h +++ b/src/filelist.h @@ -31,12 +31,14 @@ #include #include +class Instrument; + class FileList : public QListWidget { Q_OBJECT public: - FileList(); + FileList(Instrument& instrument); QString path; @@ -75,4 +77,5 @@ private: QAction* removeAllAction; QListWidgetItem* activeItem; + Instrument& instrument; }; diff --git a/src/instrumentwidget.cc b/src/instrumentwidget.cc index 1fcc1cf..641f690 100644 --- a/src/instrumentwidget.cc +++ b/src/instrumentwidget.cc @@ -134,7 +134,7 @@ InstrumentWidget::InstrumentWidget(Settings& settings, Instrument& instrument) lv->addWidget(sb_playsamples); - QDockWidget* dockWidget = new QDockWidget(tr("Dock Widget"), this); + QDockWidget* dockWidget = new QDockWidget(tr("Process"), this); dockWidget->setAllowedAreas(Qt::RightDockWidgetArea); dockWidget->setFeatures(QDockWidget::NoDockWidgetFeatures); @@ -191,7 +191,7 @@ QWidget* InstrumentWidget::createFilesTab() loadbtn->setText(tr("Add files...")); l->addWidget(loadbtn); - filelist = new FileList(); + filelist = new FileList(instrument); connect(filelist, SIGNAL(masterFileChanged(QString)), this, SLOT(loadFile(QString))); connect(loadbtn, SIGNAL(clicked()), filelist, SLOT(addFiles())); diff --git a/src/mainwindow.cc b/src/mainwindow.cc index e7d099d..b9cf800 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -49,6 +49,8 @@ MainWindow::MainWindow(Settings& settings) tab_widget = new QTabWidget(); tab_widget->setTabsClosable(true); tab_widget->setMovable(true); + connect(tab_widget, SIGNAL(tabCloseRequested(int)), + this, SLOT(closeTab(int))); setCentralWidget(tab_widget); @@ -277,3 +279,8 @@ void MainWindow::projectChanged() project_dirty = true; updateWindowTitle(); } + +void MainWindow::closeTab(int tab) +{ + tab_widget->removeTab(tab); +} diff --git a/src/mainwindow.h b/src/mainwindow.h index ad9e2ed..c5fcc9a 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -54,6 +54,8 @@ public slots: void saveProjectAs(); void projectChanged(); + void closeTab(int tab); + protected: void closeEvent(QCloseEvent*); diff --git a/src/projectserialiser.cc b/src/projectserialiser.cc index 56fa58e..44f9ff7 100644 --- a/src/projectserialiser.cc +++ b/src/projectserialiser.cc @@ -186,7 +186,7 @@ bool ProjectSerialiser::deserialise(const QString& data, Project& project) auto files = instrument("file_list").children("file"); for(auto& file : files) { - if(file["master"] == "true") + if(file["master"] == "1") { master_file = file.text(); } -- cgit v1.2.3