#include "library.h" #include "ui_library.h" #include #include #include #include #include #include "cdac.h" #include #include library::library(QWidget *parent) : QDialog(parent), ui(new Ui::library) { ui->setupUi(this); unsaved=false; speakerUnsaved=false; dacUnsaved=false; initAmps=false; initDacs=false; initSpeaker=false; } library::~library() { delete ui; } void library::setAmpPointer(cAmp *pAmp, unsigned int ampCount){ m_pCamp=pAmp; m_cAmpCount=ampCount; } unsigned int library::getAmpCount() { return m_cAmpCount; } cAmp *library::getAmps() { return m_pCamp; } void library::setSpeakerPointer(cSpeaker *pSpeaker, unsigned int speakerCount) { m_pSpeaker=pSpeaker; m_SpeakerCount=speakerCount; } unsigned int library::getSpeakerCount() { return m_SpeakerCount; } cSpeaker *library::getSpeaker() { return m_pSpeaker; } void library::setDacPoint(cdac *dac, unsigned int dacCount) { m_pDac=dac; m_dacCount=dacCount; } unsigned int library::getDacCount() { return m_dacCount; } cdac *library::getDacs() { return m_pDac; } void library::open() { QSettings settings("DKM-Tech","Pa-Calculator"); if (settings.value("library/path","")==""){ settings.setValue("library/path",QFileDialog::getSaveFileName(this,"Select Library Storage File","","Pa Calculator Library File (*.palib)")); } //qDebug() << settings.value("library/path","none").toString(); refreshAmpView(); refreshSpeakerView(); refreshDacView(); this->exec(); } void library::on_pushButton_addAmp_clicked() { confirmAmpChanges(); m_cAmpCount+=1; cAmp* tempAmps=new cAmp[m_cAmpCount]; for (unsigned int i=0;ilistWidget_ampView->setCurrentRow(m_cAmpCount-1); ui->lineEdit_ampName->setFocus(); ui->lineEdit_ampName->selectAll(); } void library::refreshAmpView() { ui->listWidget_ampView->clear(); for (unsigned int i=0;ilistWidget_ampView->addItem(QString::fromStdString(m_pCamp[i].getName())); } //std::cerr<<"refreshAmpView started"<listWidget_modeSelector->clear(); if (m_cAmpCount>0){ if (m_pCamp[getCurrentAmpIndex()].getAmpModesCount()>0){ for (unsigned int i=0;ilistWidget_modeSelector->addItem(QString::fromStdString(m_pCamp[getCurrentAmpIndex()].getAmpMode(i).getName())); //std::cout <<"mode "<listWidget_speakerView->clear(); for (unsigned int i=0;ilistWidget_speakerView->addItem(QString::fromStdString(m_pSpeaker[i].getName())); } } void library::refreshDacView() { ui->listWidget_dacView->clear(); for (unsigned int i=0;ilistWidget_dacView->addItem(QString::fromStdString(m_pDac[i].name())); } } int library::getCurrentAmpIndex() { return ui->listWidget_ampView->currentRow(); } int library::getCurrentAmpModeIndex() { return ui->listWidget_modeSelector->currentRow(); } int library::getCurrentSpeakerIndex() { return ui->listWidget_speakerView->currentRow(); } int library::getCurrentDacIndex() { return ui->listWidget_dacView->currentRow(); } void library::ampEdited() { if(ui->lineEdit_ampName->text()!=QString::fromStdString(m_pCamp[getCurrentAmpIndex()].getName()) && unsaved==false){ ui->listWidget_ampView->currentItem()->setText(ui->listWidget_ampView->currentItem()->text()+QString::fromStdString("*")); unsaved =true; } } void library::speakerEdited() { if (ui->lineEdit_speakerName->text() != QString::fromStdString(m_pSpeaker[getCurrentSpeakerIndex()].getName()) && speakerUnsaved==false){ ui->listWidget_speakerView->currentItem()->setText(ui->listWidget_speakerView->currentItem()->text()+QString::fromStdString("*")); speakerUnsaved =true; } } void library::dacEdited() { if (ui->lineEdit_dacName->text()!= QString::fromStdString(m_pDac[getCurrentDacIndex()].name()) && dacUnsaved==false){ ui->listWidget_dacView->currentItem()->setText(ui->listWidget_dacView->currentItem()->text()+QString::fromStdString("*")); dacUnsaved =true; } } void library::confirmAmpChanges() { if (unsaved){ int selectedRow=getCurrentAmpIndex(); ui->tabWidget->setCurrentIndex(0); QMessageBox::StandardButton reply; reply = QMessageBox::question(this, "Unsaved Changes", "Save unsaved Changes?", QMessageBox::Yes|QMessageBox::No); if (reply == QMessageBox::Yes) { on_pushButton_applyChanges_clicked(); } refreshAmpView(); ui->listWidget_ampView->setCurrentRow(selectedRow); } } void library::confirmSpeakerChanges() { if (speakerUnsaved){ int selectedRow=getCurrentSpeakerIndex(); ui->tabWidget->setCurrentIndex(1); QMessageBox::StandardButton reply; reply = QMessageBox::question(this, "Unsaved Changes", "Save unsaved Changes?", QMessageBox::Yes|QMessageBox::No); if (reply == QMessageBox::Yes) { on_pushButton_applySpeaker_clicked(); } refreshSpeakerView(); ui->listWidget_speakerView->setCurrentRow(selectedRow); } } void library::confirmDacChanges() { if (dacUnsaved){ int selectedRow=getCurrentDacIndex(); ui->tabWidget->setCurrentIndex(2); QMessageBox::StandardButton reply; reply = QMessageBox::question(this, "Unsaved Changes", "Save unsaved Changes?", QMessageBox::Yes|QMessageBox::No); if (reply == QMessageBox::Yes) { on_pushButton_Apply_clicked(); } refreshDacView(); ui->listWidget_dacView->setCurrentRow(selectedRow); } } void library::printAllAmps() { std::cout << "Number of Amps: "<=0){ ui->lineEdit_ampName->setText(QString::fromStdString(m_pCamp[currentRow].getName())); ui->comboBox_sensUnit->setCurrentIndex(m_pCamp[currentRow].getSensivityUnit()); ui->doubleSpinBox_inputSensitivity->setValue(m_pCamp[currentRow].getSensitivity()); refreshModeOverview(); ui->listWidget_modeSelector->setCurrentRow(0); ui->lineEdit_ampName->setEnabled(true); ui->doubleSpinBox_inputSensitivity->setEnabled(true); ui->comboBox_sensUnit->setEnabled(true); ui->lineEdit_modeName->setEnabled(true); ui->listWidget_modeSelector->setEnabled(true); ui->spinBox_ratedImp->setEnabled(true); ui->spinBox_ratedPower->setEnabled(true); }else { ui->lineEdit_ampName->setEnabled(false); ui->doubleSpinBox_inputSensitivity->setEnabled(false); } } void library::on_pushButton_applyChanges_clicked() { if (getCurrentAmpIndex()>=0){ unsaved =false; m_pCamp[getCurrentAmpIndex()].setName(ui->lineEdit_ampName->text().toStdString()); m_pCamp[getCurrentAmpIndex()].setSensivity(ui->doubleSpinBox_inputSensitivity->value()); sensitivityUnit currentSens; if (ui->comboBox_sensUnit->currentIndex()==0){ currentSens=volt; }else{ currentSens=dBu; } m_pCamp[getCurrentAmpIndex()].setSensUnit(currentSens); int selectedRow=getCurrentAmpIndex(); refreshAmpView(); ui->listWidget_ampView->setCurrentRow(selectedRow); } } void library::on_comboBox_sensUnit_currentIndexChanged(int index) { ampEdited(); double oldValue=ui->doubleSpinBox_inputSensitivity->value(); if (index==0){ ui->doubleSpinBox_inputSensitivity->setSuffix(QString(" V")); ui->doubleSpinBox_inputSensitivity->setDecimals(2); ui->doubleSpinBox_inputSensitivity->setValue(0.7746*qPow(10,oldValue/20)); }else{ ui->doubleSpinBox_inputSensitivity->setSuffix(QString(" dBu")); ui->doubleSpinBox_inputSensitivity->setDecimals(1); ui->doubleSpinBox_inputSensitivity->setValue(20*std::log10(oldValue/0.7746)); } } void library::on_pushButton_deleteAmp_clicked() { if (getCurrentAmpIndex()>=0){ m_cAmpCount-=1; cAmp* tempAmps=new cAmp[m_cAmpCount]; unsigned int selectedRow=getCurrentAmpIndex(); for (unsigned int i=0;i0)){ ui->listWidget_ampView->setCurrentRow(0); }else { ui->listWidget_ampView->setCurrentRow(selectedRow-1); } } } void library::on_pushButton_addMode_clicked() { if (getCurrentAmpIndex()>=0) { if (ui->lineEdit_modeName->text()==""){ QMessageBox msgBox(QMessageBox::Warning,"No mode name","Mode name can't be empty. Please enter a name."); msgBox.exec(); }else{ cAmpMode mode(ui->lineEdit_modeName->text().toStdString(),ui->spinBox_ratedImp->value(),ui->spinBox_ratedPower->value()); m_pCamp[getCurrentAmpIndex()].addAmpMode(mode); } } refreshModeOverview(); } void library::on_listWidget_modeSelector_currentRowChanged(int currentRow) { if (getCurrentAmpIndex()>=0){ if (currentRow >=0){ ui->lineEdit_modeName->setText(QString::fromStdString(m_pCamp[getCurrentAmpIndex()].getAmpMode(getCurrentAmpModeIndex()).getName())); ui->spinBox_ratedImp->setValue(m_pCamp[getCurrentAmpIndex()].getAmpMode(getCurrentAmpModeIndex()).getRatedImp()); ui->spinBox_ratedPower->setValue(m_pCamp[getCurrentAmpIndex()].getAmpMode(getCurrentAmpModeIndex()).getRatedPower()); } } } void library::on_pushButton_deleteMode_clicked() { int selectedRow=getCurrentAmpModeIndex(); m_pCamp[getCurrentAmpIndex()].deleteAmpMode(getCurrentAmpModeIndex()); refreshModeOverview(); if ((selectedRow<1) && (m_pCamp[getCurrentAmpIndex()].getAmpModesCount())>0){ ui->listWidget_modeSelector->setCurrentRow(0); }else { ui->listWidget_modeSelector->setCurrentRow(selectedRow-1); } } void library::on_pushButton_applyMode_clicked() { unsaved =false; if (ui->lineEdit_modeName->text()==""){ QMessageBox msgBox(QMessageBox::Warning,"No mode name","Mode name can't be empty. Please enter a name."); msgBox.exec(); }else{ cAmpMode mode(ui->lineEdit_modeName->text().toStdString(),ui->spinBox_ratedImp->value(),ui->spinBox_ratedPower->value()); m_pCamp[getCurrentAmpIndex()].setAmpMode(getCurrentAmpModeIndex(),mode); } int selectedMode=getCurrentAmpModeIndex(); refreshModeOverview(); ui->listWidget_modeSelector->setCurrentRow(selectedMode); } void library::on_lineEdit_ampName_textEdited(const QString &arg1) { ampEdited(); } void library::on_pushButton_addSpeaker_clicked() { confirmSpeakerChanges(); m_SpeakerCount+=1; cSpeaker* tempSpeaker=new cSpeaker[m_SpeakerCount]; for (unsigned int i=0;ilistWidget_speakerView->setCurrentRow(m_SpeakerCount-1); ui->lineEdit_speakerName->setFocus(); ui->lineEdit_speakerName->selectAll(); } void library::on_listWidget_speakerView_currentRowChanged(int currentRow) { if (currentRow>=0){ ui->lineEdit_speakerName->setText(QString::fromStdString(m_pSpeaker[currentRow].getName())); ui->spinBox_speakerImp->setValue(m_pSpeaker[currentRow].getImpedance()); ui->spinBox_speakerRMSPower->setValue(m_pSpeaker[currentRow].getRMSPower()); ui->spinBox_speakerPeakPower->setValue(m_pSpeaker[currentRow].getPeakPower()); ui->spinBox_speakerHPF->setValue(m_pSpeaker[currentRow].getHPF()); ui->lineEdit_speakerName->setEnabled(true); ui->spinBox_speakerImp->setEnabled(true); ui->spinBox_speakerRMSPower->setEnabled(true); ui->spinBox_speakerPeakPower->setEnabled(true); ui->spinBox_speakerHPF->setEnabled(true); }else { ui->lineEdit_speakerName->setEnabled(false); //ui->spinBox_speakerImp->setEnabled(false); //ui->spinBox_speakerRMSPower->setEnabled(false); //ui->spinBox_speakerPeakPower->setEnabled(false); //ui->spinBox_speakerHPF->setEnabled(false); } } void library::on_pushButton_deleteSpeaker_clicked() { if (getCurrentSpeakerIndex()>=0){ m_SpeakerCount-=1; cSpeaker* tempSpeaker=new cSpeaker[m_SpeakerCount]; unsigned int selectedRow=getCurrentSpeakerIndex(); for (unsigned int i=0;i0)){ ui->listWidget_speakerView->setCurrentRow(0); }else { ui->listWidget_speakerView->setCurrentRow(selectedRow-1); } } } void library::on_pushButton_applySpeaker_clicked() { if (getCurrentSpeakerIndex()>=0){ speakerUnsaved =false; m_pSpeaker[getCurrentSpeakerIndex()].setName(ui->lineEdit_speakerName->text().toStdString()); m_pSpeaker[getCurrentSpeakerIndex()].setImpedance(ui->spinBox_speakerImp->value()); m_pSpeaker[getCurrentSpeakerIndex()].setRMSPower(ui->spinBox_speakerRMSPower->value()); m_pSpeaker[getCurrentSpeakerIndex()].setPeakPower(ui->spinBox_speakerPeakPower->value()); m_pSpeaker[getCurrentSpeakerIndex()].setHPF(ui->spinBox_speakerHPF->value()); int selectedRow=getCurrentSpeakerIndex(); refreshSpeakerView(); ui->listWidget_speakerView->setCurrentRow(selectedRow); } } void library::on_lineEdit_speakerName_textEdited(const QString &arg1) { speakerEdited(); } void library::on_pushButton_dacAdd_clicked() { confirmDacChanges(); m_dacCount+=1; cdac* tempDac=new cdac[m_dacCount]; for (unsigned int i=0;ilistWidget_dacView->setCurrentRow(m_dacCount-1); ui->lineEdit_dacName->setFocus(); ui->lineEdit_dacName->selectAll(); } void library::on_pushButton_deleteDac_clicked() { if (getCurrentDacIndex()>=0){ m_dacCount-=1; cdac* tempdac=new cdac[m_dacCount]; unsigned int selectedRow=getCurrentDacIndex(); for (unsigned int i=0;i0)){ ui->listWidget_dacView->setCurrentRow(0); }else { ui->listWidget_dacView->setCurrentRow(selectedRow-1); } } } void library::on_pushButton_Apply_clicked() { if (getCurrentDacIndex()>=0){ dacUnsaved =false; m_pDac[getCurrentDacIndex()].setName(ui->lineEdit_dacName->text().toStdString()); m_pDac[getCurrentDacIndex()].setOutputLevel(ui->spinBox_dacOutputLevel->value()); int selectedRow=getCurrentDacIndex(); refreshDacView(); ui->listWidget_dacView->setCurrentRow(selectedRow); } } void library::on_listWidget_dacView_currentRowChanged(int currentRow) { if (currentRow>=0){ ui->lineEdit_dacName->setText(QString::fromStdString(m_pDac[currentRow].name())); ui->spinBox_dacOutputLevel->setValue(m_pDac[currentRow].outputLevel()); ui->lineEdit_dacName->setEnabled(true); ui->spinBox_dacOutputLevel->setEnabled(true); }else{ ui->lineEdit_dacName->setEnabled(false); } } void library::on_lineEdit_dacName_textEdited(const QString &arg1) { //dacEdited(); } void library::on_spinBox_dacOutputLevel_editingFinished() { //dacEdited(); } void library::on_spinBox_speakerImp_editingFinished() { //speakerEdited(); } void library::on_spinBox_speakerRMSPower_editingFinished() { //speakerEdited(); } void library::on_spinBox_speakerPeakPower_editingFinished() { //speakerEdited(); } void library::on_spinBox_speakerHPF_editingFinished() { //speakerEdited(); } void library::on_doubleSpinBox_inputSensitivity_editingFinished() { //ampEdited(); }