Added Speaker To Library

pull/4/head
Alexander Diamadis 5 years ago
parent 5388e4edf8
commit 1656e08b6f
Signed by: alex
GPG Key ID: 6A1609EFA141FD70

@ -11,6 +11,7 @@ CONFIG += c++11
SOURCES += \
camp.cpp \
campmode.cpp \
cspeaker.cpp \
library.cpp \
main.cpp \
mainwindow.cpp
@ -18,6 +19,7 @@ SOURCES += \
HEADERS += \
camp.h \
campmode.h \
cspeaker.h \
library.h \
mainwindow.h

@ -0,0 +1,96 @@
#include "cspeaker.h"
#include <QString>
cSpeaker::cSpeaker()
{
}
cSpeaker::cSpeaker(std::string name, unsigned short imp, unsigned short rmsPower, unsigned short peakPower, unsigned short hpf)
{
m_name=name;
m_imp=imp;
m_rmsPower=rmsPower;
m_peakPower=peakPower;
m_hpf=hpf;
}
std::string cSpeaker::getName()
{
return m_name;
}
unsigned short cSpeaker::getImpedance()
{
return m_imp;
}
unsigned short cSpeaker::getRMSPower()
{
return m_rmsPower;
}
unsigned short cSpeaker::getPeakPower()
{
return m_peakPower;
}
unsigned short cSpeaker::getHPF()
{
return m_hpf;
}
void cSpeaker::setName(std::string name)
{
m_name=name;
}
void cSpeaker::setImpedance(unsigned short imp)
{
m_imp=imp;
}
void cSpeaker::setRMSPower(unsigned short rmsPower)
{
m_rmsPower=rmsPower;
}
void cSpeaker::setPeakPower(unsigned short peakPower)
{
m_peakPower=peakPower;
}
void cSpeaker::setHPF(unsigned short hpf)
{
m_hpf=hpf;
}
QDataStream& operator<<(QDataStream& out, cSpeaker& speaker){
out << QString::fromStdString(speaker.getName());
out << (quint16)speaker.getImpedance();
out << (quint16)speaker.getRMSPower();
out << (quint16)speaker.getPeakPower();
out << (quint16)speaker.getHPF();
return out;
}
QDataStream& operator>>(QDataStream& in, cSpeaker& speaker){
QString name;
in >> name;
speaker.m_name=name.toStdString();
quint16 imp,rmsPower,peakPower,hpf;
in >> imp;
in >> rmsPower;
in >> peakPower;
in >> hpf;
speaker.m_imp=(unsigned short)imp;
speaker.m_rmsPower=(unsigned short)rmsPower;
speaker.m_peakPower=(unsigned short)peakPower;
speaker.m_hpf=(unsigned short)hpf;
return in;
}

@ -0,0 +1,33 @@
#ifndef CSPEAKER_H
#define CSPEAKER_H
#include <iostream>
#include <QDataStream>
class cSpeaker
{
public:
cSpeaker();
cSpeaker(std::string name, unsigned short imp, unsigned short rmsPower, unsigned short peakPower, unsigned short hpf);
std::string getName();
unsigned short getImpedance();
unsigned short getRMSPower();
unsigned short getPeakPower();
unsigned short getHPF();
void setName(std::string name);
void setImpedance(unsigned short imp);
void setRMSPower(unsigned short rmsPower);
void setPeakPower(unsigned short peakPower);
void setHPF(unsigned short hpf);
friend QDataStream& operator <<(QDataStream& out,cSpeaker& speaker);
friend QDataStream& operator >>(QDataStream& in,cSpeaker& speaker);
private:
std::string m_name;
unsigned short m_imp;
unsigned short m_rmsPower;
unsigned short m_peakPower;
unsigned short m_hpf;
};
#endif // CSPEAKER_H

@ -12,6 +12,7 @@ library::library(QWidget *parent) :
{
ui->setupUi(this);
unsaved=false;
speakerUnsaved=false;
}
library::~library()
@ -34,6 +35,22 @@ 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::open()
{
@ -44,7 +61,17 @@ void library::open()
}
//qDebug() << settings.value("library/path","none").toString();
refreshAmpView();
refreshSpeakerView();
this->exec();
if (unsaved or speakerUnsaved){
QMessageBox::StandardButton reply;
reply = QMessageBox::question(this, "Unsaved Changes", "Save unsaved Changes?",
QMessageBox::Yes|QMessageBox::No);
if (reply == QMessageBox::Yes) {
on_pushButton_applyChanges_clicked();
on_pushButton_applySpeaker_clicked();
}
}
saveLibraryToFile();
}
@ -98,6 +125,14 @@ void library::refreshModeOverview()
}
void library::refreshSpeakerView()
{
ui->listWidget_speakerView->clear();
for (unsigned int i=0;i<m_SpeakerCount;i++){
ui->listWidget_speakerView->addItem(QString::fromStdString(m_pSpeaker[i].getName()));
}
}
int library::getCurrentAmpIndex()
{
return ui->listWidget_ampView->currentRow();
@ -108,6 +143,11 @@ int library::getCurrentAmpModeIndex()
return ui->listWidget_modeSelector->currentRow();
}
int library::getCurrentSpeakerIndex()
{
return ui->listWidget_speakerView->currentRow();
}
void library::printAllAmps()
{
std::cout << "Number of Amps: "<<m_cAmpCount<<std::endl<<std::endl;
@ -136,6 +176,10 @@ void library::saveLibraryToFile()
for (unsigned int j=0;j<m_cAmpCount;j++){
out << m_pCamp[j];
}
out << (uint)m_SpeakerCount;
for (unsigned int j=0;j<m_SpeakerCount;j++){
out << m_pSpeaker[j];
}
}
}
@ -163,6 +207,7 @@ void library::on_listWidget_ampView_currentRowChanged(int currentRow)
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;
@ -290,3 +335,104 @@ void library::on_lineEdit_ampName_textEdited(const QString &arg1)
}
}
void library::on_pushButton_addSpeaker_clicked()
{
m_SpeakerCount+=1;
cSpeaker* tempSpeaker=new cSpeaker[m_SpeakerCount];
for (unsigned int i=0;i<m_SpeakerCount-1;i++){
tempSpeaker[i].setName(m_pSpeaker[i].getName());
tempSpeaker[i].setImpedance(m_pSpeaker[i].getImpedance());
tempSpeaker[i].setRMSPower(m_pSpeaker[i].getRMSPower());
tempSpeaker[i].setPeakPower(m_pSpeaker[i].getPeakPower());
tempSpeaker[i].setHPF(m_pSpeaker[i].getHPF());
}
delete [] m_pSpeaker;
m_pSpeaker=tempSpeaker;
m_pSpeaker[m_SpeakerCount-1]=cSpeaker("Unnamed Speaker",8,100,400,100);
refreshSpeakerView();
ui->listWidget_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;i<selectedRow;i++){
tempSpeaker[i]=m_pSpeaker[i];
}
for (unsigned int i=selectedRow+1;i<m_SpeakerCount+1;i++){
tempSpeaker[i-1]=m_pSpeaker[i];
}
delete [] m_pSpeaker;
m_pSpeaker=tempSpeaker;
refreshSpeakerView();
if (selectedRow-1<0 && m_SpeakerCount>0){
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)
{
if (speakerUnsaved==false){
ui->listWidget_speakerView->currentItem()->setText(ui->listWidget_speakerView->currentItem()->text()+QString::fromStdString("*"));
speakerUnsaved =true;
}
}

@ -3,6 +3,8 @@
#include <QDialog>
#include "camp.h"
#include "cspeaker.h"
namespace Ui {
class library;
}
@ -16,6 +18,11 @@ public:
void setAmpPointer(cAmp* pAmp,unsigned int ampCount);
unsigned int getAmpCount();
cAmp* getAmps();
void setSpeakerPointer(cSpeaker* pSpeaker, unsigned int speakerCount);
unsigned int getSpeakerCount();
cSpeaker* getSpeaker();
void open();
~library();
@ -46,20 +53,36 @@ private slots:
void on_lineEdit_ampName_textEdited(const QString &arg1);
void on_pushButton_addSpeaker_clicked();
void on_listWidget_speakerView_currentRowChanged(int currentRow);
void on_pushButton_deleteSpeaker_clicked();
void on_pushButton_applySpeaker_clicked();
void on_lineEdit_speakerName_textEdited(const QString &arg1);
private:
Ui::library *ui;
cAmp* m_pCamp;
unsigned int m_cAmpCount;
cSpeaker* m_pSpeaker;
unsigned int m_SpeakerCount;
void refreshAmpView();
void refreshAmpOverview();
void refreshModeOverview();
void refreshSpeakerView();
int getCurrentAmpIndex();
int getCurrentAmpModeIndex();
int getCurrentSpeakerIndex();
void printAllAmps();
bool unsaved;
bool speakerUnsaved;
void saveLibraryToFile();
};

@ -20,12 +20,15 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Close</set>
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="amps">
<attribute name="title">
<string>Amplifiers</string>
@ -215,10 +218,154 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<widget class="QWidget" name="tab_speaker">
<attribute name="title">
<string>Tab 2</string>
<string>Speaker</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QListWidget" name="listWidget_speakerView"/>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QPushButton" name="pushButton_addSpeaker">
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_deleteSpeaker">
<property name="text">
<string>Delete</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_applySpeaker">
<property name="text">
<string>Apply</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Name</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit_speakerName">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Rated Impedance</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="spinBox_speakerImp">
<property name="enabled">
<bool>true</bool>
</property>
<property name="suffix">
<string> Ohm</string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>32</number>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>RMS Power</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="spinBox_speakerRMSPower">
<property name="enabled">
<bool>true</bool>
</property>
<property name="suffix">
<string> W</string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>10000</number>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Peak Power</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="spinBox_speakerPeakPower">
<property name="enabled">
<bool>true</bool>
</property>
<property name="suffix">
<string> W</string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>10000</number>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Crossover highpass-frequency</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="spinBox_speakerHPF">
<property name="enabled">
<bool>true</bool>
</property>
<property name="suffix">
<string> Hz</string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>20000</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>

@ -16,9 +16,14 @@ MainWindow::MainWindow(QWidget *parent)
ui->setupUi(this);
m_ampCount=0;
m_pCAmp=Q_NULLPTR;
m_speakerCount=0;
m_pSpeaker=Q_NULLPTR;
loadLibrary();
refreshLibraryAmps();
refreshLibraryAmpModes();
refreshLibrarySpeaker();
}
MainWindow::~MainWindow()
@ -121,11 +126,17 @@ void MainWindow::on_actionEditLibrary_triggered()
{
library* dialog=new library;
dialog->setAmpPointer(m_pCAmp,m_ampCount);
dialog->setSpeakerPointer(m_pSpeaker,m_speakerCount);
dialog->open();
m_ampCount=dialog->getAmpCount();
m_pCAmp=dialog->getAmps();
m_pSpeaker=dialog->getSpeaker();
m_speakerCount=dialog->getSpeakerCount();
refreshLibraryAmps();
refreshLibraryAmpModes();
refreshLibrarySpeaker();
delete dialog;
}
@ -147,6 +158,14 @@ void MainWindow::refreshLibraryAmpModes()
}
}
void MainWindow::refreshLibrarySpeaker()
{
ui->comboBox_librarySpeaker->clear();
for (unsigned int i=0;i<m_speakerCount;i++){
ui->comboBox_librarySpeaker->addItem(QString::fromStdString(m_pSpeaker[i].getName()));
}
}
void MainWindow::loadLibrary()
{
QSettings settings("DKM-Tech","Pa-Calculator");
@ -171,6 +190,16 @@ void MainWindow::loadLibrary()
for (unsigned int j=0;j<m_ampCount;j++){
in >> m_pCAmp[j];
}
in >> count;
m_speakerCount=count;
if (m_speakerCount>0){
delete[] m_pSpeaker;
m_pSpeaker=new cSpeaker[m_speakerCount];
}
for (unsigned int j=0;j<m_speakerCount;j++){
in >> m_pSpeaker[j];
}
}
}
@ -183,7 +212,7 @@ void MainWindow::saveLibrary()
else {
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly)) {
QMessageBox::information(this, tr("Unable to open file"),
QMessageBox::information(this, tr("Unable to open file. New one will be created on exit at :")+fileName,
file.errorString());
return;
}
@ -219,7 +248,7 @@ void MainWindow::on_pushButton_clicked()
void MainWindow::on_actionChange_Library_Location_triggered()
{
QSettings settings("DKM-Tech","Pa-Calculator");
settings.setValue("library/path",QFileDialog::getSaveFileName(this,"Where to store the storage file?",settings.value("library/path",QString::fromStdString("")).toString(),"Pa Calculator Library File (*.palib)"));
settings.setValue("library/path",QFileDialog::getSaveFileName(this,"Where to store the libary file?",settings.value("library/path",QString::fromStdString("")).toString(),"Pa Calculator Library File (*.palib)"));
saveLibrary();
}
@ -232,3 +261,14 @@ void MainWindow::on_actionOpen_Library_triggered()
refreshLibraryAmps();
}
void MainWindow::on_pushButton_loadSpeaker_clicked()
{
if (ui->comboBox_librarySpeaker->currentIndex()>=0){
ui->spinBox_speakerImp->setValue(m_pSpeaker[ui->comboBox_librarySpeaker->currentIndex()].getImpedance());
ui->spinBox_speakerRMSPower->setValue(m_pSpeaker[ui->comboBox_librarySpeaker->currentIndex()].getRMSPower());
ui->spinBox_speakerPeakPower->setValue(m_pSpeaker[ui->comboBox_librarySpeaker->currentIndex()].getPeakPower());
ui->spinBox_speakerHPF->setValue(m_pSpeaker[ui->comboBox_librarySpeaker->currentIndex()].getHPF());
}
}

@ -3,6 +3,7 @@
#include <QMainWindow>
#include "camp.h"
#include "cspeaker.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
@ -31,14 +32,22 @@ private slots:
void on_actionOpen_Library_triggered();
void on_pushButton_loadSpeaker_clicked();
private:
Ui::MainWindow *ui;
cAmp* m_pCAmp;
unsigned int m_ampCount;
cSpeaker* m_pSpeaker;
unsigned int m_speakerCount;
void refreshLibraryAmps();
void refreshLibraryAmpModes();
void refreshLibrarySpeaker();
void loadLibrary();
void saveLibrary();

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>1084</width>
<width>1167</width>
<height>608</height>
</rect>
</property>
@ -163,7 +163,7 @@
<item row="7" column="1">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>Load Preset</string>
<string>Load Amp-Preset</string>
</property>
</widget>
</item>
@ -277,6 +277,36 @@
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_21">
<property name="text">
<string>Load Speaker from library</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="comboBox_librarySpeaker"/>
</item>
<item row="4" column="1">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="1">
<widget class="QPushButton" name="pushButton_loadSpeaker">
<property name="text">
<string>Load Speaker-Preset</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
@ -582,7 +612,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>1084</width>
<width>1167</width>
<height>24</height>
</rect>
</property>

Loading…
Cancel
Save