From 3e296ba770257a98caee38bc1daf7014beddf67e Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Sun, 29 May 2016 21:12:20 +0800 Subject: Allow disabling soundfonts in the soundfont setting tab. --- qmidiplayer-desktop/qmpmainwindow.cpp | 44 +++++++++++-------- qmidiplayer-desktop/qmpsettingswindow.cpp | 70 +++++++++++++++++++++---------- qmidiplayer-desktop/qmpsettingswindow.hpp | 4 +- qmidiplayer-desktop/qmpsettingswindow.ui | 14 ++++++- 4 files changed, 88 insertions(+), 44 deletions(-) (limited to 'qmidiplayer-desktop') diff --git a/qmidiplayer-desktop/qmpmainwindow.cpp b/qmidiplayer-desktop/qmpmainwindow.cpp index 633489c..aaca753 100644 --- a/qmidiplayer-desktop/qmpmainwindow.cpp +++ b/qmidiplayer-desktop/qmpmainwindow.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include "qmpmainwindow.hpp" #include "ui_qmpmainwindow.h" #include "../core/qmpmidiplay.hpp" @@ -23,7 +24,7 @@ char* wcsto8bit(const wchar_t* s) } #define LOAD_SOUNDFONT \ {\ - char* c=wcsto8bit(settingsw->getSFWidget()->item(i)->text().toStdWString().c_str());\ + char* c=wcsto8bit(settingsw->getSFWidget()->item(i,1)->text().toStdWString().c_str());\ player->pushSoundFont(c);\ free(c);\ } @@ -36,7 +37,7 @@ char* wcsto8bit(const wchar_t* s) } #else #define LOAD_SOUNDFONT \ - player->pushSoundFont(settingsw->getSFWidget()->item(i)->text().toStdString().c_str()) + player->pushSoundFont(settingsw->getSFWidget()->item(i,1)->text().toStdString().c_str()) #define LOAD_FILE \ {\ for(int i=0;i<16;++i)if(VIs[i])VIs[i]->reset();\ @@ -96,8 +97,9 @@ void qmpMainWindow::init() ui->lbFileName->addAction(fnA3); pmgr->scanPlugins();settingsw->updatePluginList(pmgr);pmgr->initPlugins(); if(singleFS){player->fluidPreInitialize();playerSetup();player->fluidInitialize(); - for(int i=settingsw->getSFWidget()->count()-1;i>=0;--i) - LOAD_SOUNDFONT;} + for(int i=settingsw->getSFWidget()->rowCount()-1;i>=0;--i){if(!((QCheckBox*)settingsw->getSFWidget()->cellWidget(i,0))->isChecked())continue; + LOAD_SOUNDFONT; + }} if(qmpSettingsWindow::getSettingsIntf()->value("Behavior/DialogStatus",0).toInt()) { QRect g=geometry(); @@ -257,8 +259,9 @@ void qmpMainWindow::updateWidgets() sprintf(ts,"%02d:%02d",(int)player->getFtime()/60,(int)player->getFtime()%60); ui->lbFinTime->setText(ts); player->playerInit();if(!singleFS){playerSetup();player->fluidInitialize(); - for(int i=settingsw->getSFWidget()->count()-1;i>=0;--i) - LOAD_SOUNDFONT;} + for(int i=settingsw->getSFWidget()->rowCount()-1;i>=0;--i){if(!((QCheckBox*)settingsw->getSFWidget()->cellWidget(i,0))->isChecked())continue; + LOAD_SOUNDFONT; + }} for(int i=0;i<16;++i)if(VIs[i])VIs[i]->start(); player->setGain(ui->vsMasterVol->value()/250.);efxw->sendEfxChange(); player->setWaitVoice(qmpSettingsWindow::getSettingsIntf()->value("Midi/WaitVoice",1).toInt()); @@ -283,8 +286,9 @@ void qmpMainWindow::updateWidgets() player->fluidPreInitialize(); playerSetup(); player->fluidInitialize(); - for(int i=settingsw->getSFWidget()->count()-1;i>=0;--i) - LOAD_SOUNDFONT; + for(int i=settingsw->getSFWidget()->rowCount()-1;i>=0;--i){if(!((QCheckBox*)settingsw->getSFWidget()->cellWidget(i,0))->isChecked())continue; + LOAD_SOUNDFONT; + } } } } @@ -380,8 +384,10 @@ void qmpMainWindow::on_pbPlayPause_clicked() sprintf(ts,"%02d:%02d",(int)player->getFtime()/60,(int)player->getFtime()%60); ui->lbFinTime->setText(ts); player->playerInit();if(!singleFS){playerSetup();player->fluidInitialize(); - for(int i=settingsw->getSFWidget()->count()-1;i>=0;--i) - LOAD_SOUNDFONT;} + for(int i=settingsw->getSFWidget()->rowCount()-1;i>=0;--i){if(!((QCheckBox*)settingsw->getSFWidget()->cellWidget(i,0))->isChecked())continue; + LOAD_SOUNDFONT; + } + } for(int i=0;i<16;++i)if(VIs[i])VIs[i]->start(); player->setGain(ui->vsMasterVol->value()/250.);efxw->sendEfxChange(); player->setWaitVoice(qmpSettingsWindow::getSettingsIntf()->value("Midi/WaitVoice",1).toInt()); @@ -535,8 +541,9 @@ void qmpMainWindow::on_pbPrev_clicked() sprintf(ts,"%02d:%02d",(int)player->getFtime()/60,(int)player->getFtime()%60); ui->lbFinTime->setText(ts); player->playerInit();if(!singleFS){playerSetup();player->fluidInitialize(); - for(int i=settingsw->getSFWidget()->count()-1;i>=0;--i) - LOAD_SOUNDFONT;} + for(int i=settingsw->getSFWidget()->rowCount()-1;i>=0;--i){if(!((QCheckBox*)settingsw->getSFWidget()->cellWidget(i,0))->isChecked())continue; + LOAD_SOUNDFONT; + }} for(int i=0;i<16;++i)if(VIs[i])VIs[i]->start(); player->setGain(ui->vsMasterVol->value()/250.);efxw->sendEfxChange(); player->setWaitVoice(qmpSettingsWindow::getSettingsIntf()->value("Midi/WaitVoice",1).toInt()); @@ -564,8 +571,9 @@ void qmpMainWindow::on_pbNext_clicked() sprintf(ts,"%02d:%02d",(int)player->getFtime()/60,(int)player->getFtime()%60); ui->lbFinTime->setText(ts); player->playerInit();if(!singleFS){playerSetup();player->fluidInitialize(); - for(int i=settingsw->getSFWidget()->count()-1;i>=0;--i) - LOAD_SOUNDFONT;} + for(int i=settingsw->getSFWidget()->rowCount()-1;i>=0;--i){if(!((QCheckBox*)settingsw->getSFWidget()->cellWidget(i,0))->isChecked())continue; + LOAD_SOUNDFONT; + }} for(int i=0;i<16;++i)if(VIs[i])VIs[i]->start(); player->setGain(ui->vsMasterVol->value()/250.);efxw->sendEfxChange(); player->setWaitVoice(qmpSettingsWindow::getSettingsIntf()->value("Midi/WaitVoice",1).toInt()); @@ -596,8 +604,9 @@ void qmpMainWindow::selectionChanged() sprintf(ts,"%02d:%02d",(int)player->getFtime()/60,(int)player->getFtime()%60); ui->lbFinTime->setText(ts); player->playerInit();if(!singleFS){playerSetup();player->fluidInitialize(); - for(int i=settingsw->getSFWidget()->count()-1;i>=0;--i) - LOAD_SOUNDFONT;} + for(int i=settingsw->getSFWidget()->rowCount()-1;i>=0;--i){if(!((QCheckBox*)settingsw->getSFWidget()->cellWidget(i,0))->isChecked())continue; + LOAD_SOUNDFONT; + }} for(int i=0;i<16;++i)if(VIs[i])VIs[i]->start(); player->setGain(ui->vsMasterVol->value()/250.);efxw->sendEfxChange(); player->setWaitVoice(qmpSettingsWindow::getSettingsIntf()->value("Midi/WaitVoice",1).toInt()); @@ -676,8 +685,9 @@ void qmpMainWindow::onfnA2() playerSetup();player->rendererInit(plistw->getSelectedItem().toStdString().c_str()); #endif ui->centralWidget->setEnabled(false); - for(int i=settingsw->getSFWidget()->count()-1;i>=0;--i) + for(int i=settingsw->getSFWidget()->rowCount()-1;i>=0;--i){if(!((QCheckBox*)settingsw->getSFWidget()->cellWidget(i,0))->isChecked())continue; LOAD_SOUNDFONT; + } player->setGain(ui->vsMasterVol->value()/250.);efxw->sendEfxChange();timer->start(UPDATE_INTERVAL); renderTh=new std::thread(&CMidiPlayer::rendererThread,player); } diff --git a/qmidiplayer-desktop/qmpsettingswindow.cpp b/qmidiplayer-desktop/qmpsettingswindow.cpp index 7e441e8..67bfbb2 100644 --- a/qmidiplayer-desktop/qmpsettingswindow.cpp +++ b/qmidiplayer-desktop/qmpsettingswindow.cpp @@ -40,7 +40,7 @@ void qmpSettingsWindow::closeEvent(QCloseEvent *event) event->accept(); } -QListWidget* qmpSettingsWindow::getSFWidget(){return ui->lwSoundfont;} +QTableWidget* qmpSettingsWindow::getSFWidget(){return ui->twSoundfont;} QComboBox* qmpSettingsWindow::getDefaultOutWidget(){return outwidget;} void qmpSettingsWindow::on_buttonBox_accepted() @@ -153,8 +153,17 @@ void qmpSettingsWindow::settingsInit() settings->setValue("Audio/Gain",settings->value("Audio/Gain",50)); int sfc=settings->value("SoundFonts/SFCount",0).toInt(); - ui->lwSoundfont->clear();for(int i=1;i<=sfc;++i) - ui->lwSoundfont->addItem(settings->value("SoundFonts/SF"+QString::number(i),"").toString()); + ui->twSoundfont->clear();for(int i=1;i<=sfc;++i) + { + ui->twSoundfont->insertRow(i-1); + ui->twSoundfont->setItem(i-1,1,new QTableWidgetItem(settings->value("SoundFonts/SF"+QString::number(i),"").toString())); + ui->twSoundfont->setCellWidget(i-1,0,new QCheckBox("")); + ((QCheckBox*)ui->twSoundfont->cellWidget(i-1,0))->setChecked(settings->value("SoundFonts/SF"+QString::number(i)+"Enabled",1).toInt()); + } + ui->twSoundfont->setColumnWidth(0,22*logicalDpiX()/96.); + ui->twSoundfont->setColumnWidth(1,400*logicalDpiX()/96.); + QStringList qs;qs.push_back("E");qs.push_back("Path"); + ui->twSoundfont->setHorizontalHeaderLabels(qs); settings->setValue("SoundFonts/SFCount",sfc); settings->setValue("Behavior/RestorePlaylist",settings->value("Behavior/RestorePlaylist",0)); @@ -206,9 +215,12 @@ void qmpSettingsWindow::settingsUpdate() settings->setValue("Audio/BankSelect",ui->cbBSMode->currentText()); - settings->setValue("SoundFonts/SFCount",ui->lwSoundfont->count()); - for(int i=0;ilwSoundfont->count();++i) - settings->setValue("SoundFonts/SF"+QString::number(i+1),ui->lwSoundfont->item(i)->text()); + settings->setValue("SoundFonts/SFCount",ui->twSoundfont->rowCount()); + for(int i=0;itwSoundfont->rowCount();++i) + { + settings->setValue("SoundFonts/SF"+QString::number(i+1),ui->twSoundfont->item(i,1)->text()); + settings->setValue("SoundFonts/SF"+QString::number(i+1)+"Enabled",int(((QCheckBox*)ui->twSoundfont->cellWidget(i,0))->isChecked())); + } settings->setValue("Behavior/RestorePlaylist",ui->cbRestorePlaylist->isChecked()?1:0); @@ -267,34 +279,46 @@ void qmpSettingsWindow::on_cbBufCnt_currentTextChanged(const QString &s) void qmpSettingsWindow::on_pbAdd_clicked() { QStringList sl=QFileDialog::getOpenFileNames(this,"Add File","","SoundFont files (*.sf2)"); - for(int i=0;ilwSoundfont->addItem(new QListWidgetItem(sl.at(i))); + for(int i=0;itwSoundfont->insertRow(ui->twSoundfont->rowCount()); + ui->twSoundfont->setItem(ui->twSoundfont->rowCount()-1,1,new QTableWidgetItem(sl.at(i))); + ui->twSoundfont->setCellWidget(ui->twSoundfont->rowCount()-1,0,new QCheckBox("")); + } } void qmpSettingsWindow::on_pbRemove_clicked() { - QList sl=ui->lwSoundfont->selectedItems(); + QList sl=ui->twSoundfont->selectedItems(); for(int i=0;ilwSoundfont->removeItemWidget(sl.at(i)); - delete sl.at(i); + ui->twSoundfont->removeRow(ui->twSoundfont->row(sl[i])); } } void qmpSettingsWindow::on_pbUp_clicked() { - int cid=ui->lwSoundfont->currentRow(); - QListWidgetItem *ci=ui->lwSoundfont->takeItem(cid); - ui->lwSoundfont->insertItem(cid-1,ci); - ui->lwSoundfont->setCurrentRow(cid-1); + int cid=ui->twSoundfont->currentRow();if(!cid)return; + QTableWidgetItem *ci=ui->twSoundfont->takeItem(cid,1); + bool e=((QCheckBox*)ui->twSoundfont->cellWidget(cid,0))->isChecked(); + ui->twSoundfont->removeRow(cid); + ui->twSoundfont->insertRow(cid-1); + ui->twSoundfont->setCellWidget(cid-1,0,new QCheckBox("")); + ((QCheckBox*)ui->twSoundfont->cellWidget(cid-1,0))->setChecked(e); + ui->twSoundfont->setItem(cid-1,1,ci); + ui->twSoundfont->setCurrentCell(cid-1,1); } void qmpSettingsWindow::on_pbDown_clicked() { - int cid=ui->lwSoundfont->currentRow(); - QListWidgetItem *ci=ui->lwSoundfont->takeItem(cid); - ui->lwSoundfont->insertItem(cid+1,ci); - ui->lwSoundfont->setCurrentRow(cid+1); + int cid=ui->twSoundfont->currentRow();if(cid==ui->twSoundfont->rowCount()-1)return; + QTableWidgetItem *ci=ui->twSoundfont->takeItem(cid,1); + bool e=((QCheckBox*)ui->twSoundfont->cellWidget(cid,0))->isChecked(); + ui->twSoundfont->removeRow(cid); + ui->twSoundfont->insertRow(cid+1); + ui->twSoundfont->setCellWidget(cid+1,0,new QCheckBox("")); + ((QCheckBox*)ui->twSoundfont->cellWidget(cid+1,0))->setChecked(e); + ui->twSoundfont->setItem(cid+1,1,ci); + ui->twSoundfont->setCurrentCell(cid+1,1); } void qmpSettingsWindow::on_cbAutoBS_stateChanged() @@ -319,10 +343,10 @@ void qmpSettingsWindow::updatePluginList(qmpPluginManager *pmgr) for(int j=1;j<=3;++j) ui->twPluginList->item(i,j)->setFlags(ui->twPluginList->item(i,j)->flags()^Qt::ItemIsEditable); } - ui->twPluginList->setColumnWidth(0,22); - ui->twPluginList->setColumnWidth(1,192); - ui->twPluginList->setColumnWidth(2,64); - ui->twPluginList->setColumnWidth(3,128); + ui->twPluginList->setColumnWidth(0,22*logicalDpiX()/96.); + ui->twPluginList->setColumnWidth(1,192*logicalDpiX()/96.); + ui->twPluginList->setColumnWidth(2,64*logicalDpiX()/96.); + ui->twPluginList->setColumnWidth(3,128*logicalDpiX()/96.); } void qmpSettingsWindow::updateCustomOptions() diff --git a/qmidiplayer-desktop/qmpsettingswindow.hpp b/qmidiplayer-desktop/qmpsettingswindow.hpp index 9f5e6cf..15c720a 100644 --- a/qmidiplayer-desktop/qmpsettingswindow.hpp +++ b/qmidiplayer-desktop/qmpsettingswindow.hpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include #include @@ -68,7 +68,7 @@ class qmpSettingsWindow:public QDialog ~qmpSettingsWindow(); void closeEvent(QCloseEvent *event); void settingsInit(); - QListWidget* getSFWidget(); + QTableWidget *getSFWidget(); void updatePluginList(qmpPluginManager *pmgr); void registerOptionInt(std::string tab,std::string desc,std::string key,int min,int max,int defaultval); int getOptionInt(std::string key); diff --git a/qmidiplayer-desktop/qmpsettingswindow.ui b/qmidiplayer-desktop/qmpsettingswindow.ui index cc9064f..253ef6d 100644 --- a/qmidiplayer-desktop/qmpsettingswindow.ui +++ b/qmidiplayer-desktop/qmpsettingswindow.ui @@ -23,7 +23,7 @@ - 0 + 2 @@ -442,10 +442,20 @@ - + QAbstractItemView::InternalMove + + + E + + + + + Path + + -- cgit v1.2.3