From c2e410f637e2b503cfb685e798e2e25a4398c34a Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Mon, 26 Aug 2019 13:59:27 -0400 Subject: [PATCH] 2019-08-26 Fred Gleason * Updated rdalsaconfig(8) to include a 'rate ' line in each asound.conf(5) entry. --- ChangeLog | 3 +++ utils/rdalsaconfig/rdalsaconfig.cpp | 16 +++++++++++++++- utils/rdalsaconfig/rdalsamodel.cpp | 17 ++++++++++++++++- utils/rdalsaconfig/rdalsamodel.h | 4 +++- 4 files changed, 37 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8781b3bd..ef261711 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18950,3 +18950,6 @@ 2019-08-24 Fred Gleason * Refactored rdalsaconfig(8) to use ALSA device IDs rather than ordinal numbers in asound.conf(5). +2019-08-26 Fred Gleason + * Updated rdalsaconfig(8) to include a 'rate ' line in + each asound.conf(5) entry. diff --git a/utils/rdalsaconfig/rdalsaconfig.cpp b/utils/rdalsaconfig/rdalsaconfig.cpp index aa3b3d7c..950d2235 100644 --- a/utils/rdalsaconfig/rdalsaconfig.cpp +++ b/utils/rdalsaconfig/rdalsaconfig.cpp @@ -28,6 +28,8 @@ #include #include +#include + #include #include @@ -66,6 +68,8 @@ void StartDaemons() MainWidget::MainWidget(QWidget *parent) : QWidget(parent) { + QString err_msg; + setWindowTitle(tr("RDAlsaConfig")+" v"+VERSION); // @@ -79,6 +83,15 @@ MainWidget::MainWidget(QWidget *parent) setMinimumWidth(sizeHint().width()); setMinimumHeight(sizeHint().height()); + // + // Open the Database + // + rda=new RDApplication("RDAlsaConfig","rdalsaconfig",RDALSACONFIG_USAGE,this); + if(!rda->open(&err_msg)) { + QMessageBox::critical(this,"RDAlsaConfig - "+tr("Error"),err_msg); + exit(1); + } + // // Generate Fonts // @@ -121,7 +134,7 @@ MainWidget::MainWidget(QWidget *parent) // // Load Available Devices and Configuration // - alsa_system_model=new RDAlsaModel(); + alsa_system_model=new RDAlsaModel(rda->system()->sampleRate(),this); alsa_system_list->setModel(alsa_system_model); LoadConfig(); @@ -336,6 +349,7 @@ void MainWidget::SaveConfig() const fprintf(f," card %s\n", (const char *)alsa_system_model->card(indexes.at(i))->id().toUtf8()); fprintf(f," device %d\n",alsa_system_model->pcmNumber(indexes.at(i))); + fprintf(f," rate %u\n",rda->system()->sampleRate()); if(alsa_system_model->card(indexes.at(i))->id()=="Axia") { fprintf(f," channels 2\n"); } diff --git a/utils/rdalsaconfig/rdalsamodel.cpp b/utils/rdalsaconfig/rdalsamodel.cpp index 497e6b25..f01828cd 100644 --- a/utils/rdalsaconfig/rdalsamodel.cpp +++ b/utils/rdalsaconfig/rdalsamodel.cpp @@ -26,9 +26,11 @@ #include -RDAlsaModel::RDAlsaModel(QObject *parent) +RDAlsaModel::RDAlsaModel(unsigned samprate,QObject *parent) : QAbstractListModel(parent) { + model_sample_rate=samprate; + LoadSystemConfig(); } @@ -45,6 +47,19 @@ int RDAlsaModel::rowCount(const QModelIndex &parent) const } +Qt::ItemFlags RDAlsaModel::flags(const QModelIndex &index) const +{ + Qt::ItemFlags flags=QAbstractListModel::flags(index); + + if((model_alsa_cards.at(model_card_index.at(index.row()))->id()=="Axia")&& + (model_sample_rate!=48000)) { + flags=flags&Qt::ItemIsEnabled; + } + + return flags; +} + + QVariant RDAlsaModel::data(const QModelIndex &index,int role) const { int row=index.row(); diff --git a/utils/rdalsaconfig/rdalsamodel.h b/utils/rdalsaconfig/rdalsamodel.h index bd4e9148..c7ce6d7a 100644 --- a/utils/rdalsaconfig/rdalsamodel.h +++ b/utils/rdalsaconfig/rdalsamodel.h @@ -36,8 +36,9 @@ class RDAlsaModel : public QAbstractListModel { Q_OBJECT; public: - RDAlsaModel(QObject *parent=0); + RDAlsaModel(unsigned samprate,QObject *parent=0); int rowCount(const QModelIndex &parent=QModelIndex()) const; + Qt::ItemFlags flags(const QModelIndex &index) const; QVariant data(const QModelIndex &index,int role=Qt::DisplayRole) const; QVariant headerData(int section,Qt::Orientation orient, int role=Qt::DisplayRole) const; @@ -50,6 +51,7 @@ class RDAlsaModel : public QAbstractListModel QList model_alsa_cards; QList model_card_index; QList model_pcm_index; + unsigned model_sample_rate; };