#include "library.h" #include "ui_library.h" #include #include #include #include #include library::library(QWidget *parent) : QDialog(parent), ui(new Ui::library) { ui->setupUi(this); unsaved=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::open() { ui->listWidget_ampView->setCurrentRow(0); 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(); this->exec(); saveLibraryToFile(); } void library::on_pushButton_addAmp_clicked() { 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_ampView->currentRow(); } int library::getCurrentAmpModeIndex() { return ui->listWidget_modeSelector->currentRow(); } 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); }else { ui->lineEdit_ampName->setEnabled(false); ui->doubleSpinBox_inputSensitivity->setEnabled(false); } } void library::on_pushButton_applyChanges_clicked() { if (getCurrentAmpIndex()>=0){ 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) { 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<0 && m_pCamp[getCurrentAmpIndex()].getAmpModesCount()){ 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) { if (unsaved==false){ ui->listWidget_ampView->currentItem()->setText(ui->listWidget_ampView->currentItem()->text()+QString::fromStdString("*")); unsaved =true; } }