[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [sflphone-kde] src: [ #50453 ] Add JACK support
From: Emmanuel Lepage Vallee <emmanuel.lepage () savoirfairelinux ! com>
Date: 2014-06-30 19:42:37
Message-ID: E1X1hTJ-0003Uy-Jh () scm ! kde ! org
[Download RAW message or body]
Git commit 3e9db57b0adf35300571457d8ad4a6465c8e9437 by Emmanuel Lepage Vallee.
Committed on 30/06/2014 at 15:39.
Pushed by lepagevalleeemmanuel into branch 'master'.
[ #50453 ] Add JACK support
M +21 -11 src/conf/dlgaudio.cpp
M +0 -1 src/conf/dlggeneral.cpp
M +73 -9 src/lib/audiosettingsmodel.cpp
M +29 -16 src/lib/audiosettingsmodel.h
M +2 -0 src/lib/dbus/configurationmanager-introspec.xml
M +0 -1 src/sflphone.cpp
M +0 -2 src/sflphoneview.cpp
http://commits.kde.org/sflphone-kde/3e9db57b0adf35300571457d8ad4a6465c8e9437
diff --git a/src/conf/dlgaudio.cpp b/src/conf/dlgaudio.cpp
index acf7963..4baadc2 100644
--- a/src/conf/dlgaudio.cpp
+++ b/src/conf/dlgaudio.cpp
@@ -26,7 +26,6 @@
#include <KLineEdit>
//SFLPhone
-#include "lib/dbus/configurationmanager.h"
#include "klib/kcfg_settings.h"
#include "conf/configurationdialog.h"
#include "lib/sflphone_const.h"
@@ -38,11 +37,10 @@ DlgAudio::DlgAudio(KConfigDialog *parent)
{
setupUi(this);
- ConfigurationManagerInterface& configurationManager = \
DBus::ConfigurationManager::instance();
- m_pAlwaysRecordCK->setChecked(configurationManager.getIsAlwaysRecording());
+ m_pAlwaysRecordCK->setChecked(AudioSettingsModel::instance()->isAlwaysRecording());
KUrlRequester_destinationFolder->setMode(KFile::Directory|KFile::ExistingOnly|KFile::LocalOnly);
- KUrlRequester_destinationFolder->setUrl(KUrl(configurationManager.getRecordPath()));
+ KUrlRequester_destinationFolder->setUrl(KUrl(AudioSettingsModel::instance()->recordPath()));
KUrlRequester_destinationFolder->lineEdit()->setReadOnly(true);
m_pSuppressNoise->setChecked(AudioSettingsModel::instance()->isNoiseSuppressEnabled());
@@ -55,7 +53,7 @@ DlgAudio::DlgAudio(KConfigDialog *parent)
box_alsaPlugin->setModel (AudioSettingsModel::instance()->alsaPluginModel () \
); loadAlsaSettings();
- m_pManager->setCurrentIndex \
(AudioSettingsModel::instance()->audioManagerModel()->currentManager().row()); + \
m_pManager->setCurrentIndex \
(AudioSettingsModel::instance()->audioManagerModel()->currentManagerIndex().row());
connect( box_alsaPlugin , SIGNAL(activated(int)) , parent, \
SLOT(updateButtons())); connect( this , SIGNAL(updateButtons()), parent, \
SLOT(updateButtons())); @@ -71,6 +69,8 @@ DlgAudio::DlgAudio(KConfigDialog *parent)
connect( KUrlRequester_destinationFolder , SIGNAL(textChanged(QString)) , \
SLOT(changed())); connect( m_pManager , \
SIGNAL(currentIndexChanged(int)) ,
AudioSettingsModel::instance()->audioManagerModel(),SLOT(setCurrentManager(int)));
+ connect(AudioSettingsModel::instance()->audioManagerModel(),SIGNAL(currentManagerChanged(int)),m_pManager,
+ SLOT(setCurrentIndex(int)));
connect( m_pManager , SIGNAL(currentIndexChanged(int)) , \
SLOT(loadAlsaSettings())); }
@@ -91,11 +91,8 @@ void DlgAudio::updateSettings()
if (m_Changed) {
m_IsLoading = true;
- ConfigurationManagerInterface& configurationManager = \
DBus::ConfigurationManager::instance();
- configurationManager.setRecordPath(KUrlRequester_destinationFolder->lineEdit()->text());
-// configurationManager.setAudioPlugin(box_alsaPlugin->currentText());
-
- configurationManager.setIsAlwaysRecording ( m_pAlwaysRecordCK->isChecked() \
); + AudioSettingsModel::instance()->setRecordPath(KUrlRequester_destinationFolder->lineEdit()->text());
+ AudioSettingsModel::instance()->setAlwaysRecording(m_pAlwaysRecordCK->isChecked());
AudioSettingsModel::instance()->inputDeviceModel \
()->setCurrentDevice(alsaInputDevice->currentIndex ());
AudioSettingsModel::instance()->outputDeviceModel \
()->setCurrentDevice(alsaOutputDevice->currentIndex ()); @@ -118,7 +115,20 @@ bool \
DlgAudio::hasChanged() ///Tag the dialog as needing saving
void DlgAudio::changed()
{
- box_alsaPlugin->setDisabled(m_pManager->currentIndex());
+ switch (AudioSettingsModel::instance()->audioManagerModel()->currentManager()) {
+ case AudioManagerModel::Manager::PULSE:
+ box_alsaPlugin->setDisabled(true);
+ stackedWidget_interfaceSpecificSettings->setVisible(true);
+ break;
+ case AudioManagerModel::Manager::ALSA:
+ box_alsaPlugin->setDisabled(false);
+ stackedWidget_interfaceSpecificSettings->setVisible(true);
+ break;
+ case AudioManagerModel::Manager::JACK:
+ box_alsaPlugin->setDisabled(true);
+ stackedWidget_interfaceSpecificSettings->setVisible(false);
+ break;
+ };
if (!m_IsLoading) {
m_Changed = true;
emit updateButtons();
diff --git a/src/conf/dlggeneral.cpp b/src/conf/dlggeneral.cpp
index f3cba00..c9f8623 100644
--- a/src/conf/dlggeneral.cpp
+++ b/src/conf/dlggeneral.cpp
@@ -30,7 +30,6 @@
//SFLPhone
#include "klib/kcfg_settings.h"
#include "conf/configurationdialog.h"
-#include "lib/dbus/configurationmanager.h"
#include "lib/historymodel.h"
///Constructor
diff --git a/src/lib/audiosettingsmodel.cpp b/src/lib/audiosettingsmodel.cpp
index 17d2a1a..dda2733 100644
--- a/src/lib/audiosettingsmodel.cpp
+++ b/src/lib/audiosettingsmodel.cpp
@@ -168,6 +168,34 @@ bool AudioSettingsModel::isCaptureMuted() const
return DBus::ConfigurationManager::instance().isCaptureMuted();
}
+///Set where the call recordings will be saved
+void AudioSettingsModel::setRecordPath(const QUrl& path)
+{
+ ConfigurationManagerInterface& configurationManager = \
DBus::ConfigurationManager::instance(); + \
configurationManager.setRecordPath(path.toString()); +}
+
+///Return the path where recordings are going to be saved
+QUrl AudioSettingsModel::recordPath() const
+{
+ ConfigurationManagerInterface& configurationManager = \
DBus::ConfigurationManager::instance(); + return \
QUrl(configurationManager.getRecordPath()); +}
+
+///are all calls recorded by default
+bool AudioSettingsModel::isAlwaysRecording() const
+{
+ ConfigurationManagerInterface& configurationManager = \
DBus::ConfigurationManager::instance(); + return \
configurationManager.getIsAlwaysRecording(); +}
+
+///Set if all calls needs to be recorded
+void AudioSettingsModel::setAlwaysRecording(bool record)
+{
+ ConfigurationManagerInterface& configurationManager = \
DBus::ConfigurationManager::instance(); + configurationManager.setIsAlwaysRecording \
( record ); +}
+
int AudioSettingsModel::playbackVolume() const
{
ConfigurationManagerInterface& configurationManager = \
DBus::ConfigurationManager::instance(); @@ -500,7 +528,24 @@ void \
OutputDeviceModel::reload() ///Constructor
AudioManagerModel::AudioManagerModel(QObject* parent) : QAbstractListModel(parent)
{
- m_lDeviceList << "ALSA" << "Pulse Audio";
+ ConfigurationManagerInterface& configurationManager = \
DBus::ConfigurationManager::instance(); + const QStringList managers = \
configurationManager.getSupportedAudioManagers(); + foreach(const QString& \
m,managers) { + if (m == ManagerName::PULSEAUDIO) {
+ m_lSupportedManagers << Manager::PULSE;
+ m_lDeviceList << "Pulse Audio";
+ }
+ else if (m == ManagerName::ALSA) {
+ m_lSupportedManagers << Manager::ALSA;
+ m_lDeviceList<< "ALSA";
+ }
+ else if (m == ManagerName::JACK) {
+ m_lSupportedManagers << Manager::JACK;
+ m_lDeviceList<< "Jack";
+ }
+ else
+ qDebug() << "Unsupported audio manager" << m;
+ }
}
///Destructor
@@ -549,7 +594,7 @@ bool AudioManagerModel::setData( const QModelIndex& index, const \
QVariant &value
* Return the current audio manager
* @warning Changes to the current index model will invalid Input/Output/Ringtone \
devices models
*/
-QModelIndex AudioManagerModel::currentManager() const
+QModelIndex AudioManagerModel::currentManagerIndex() const
{
ConfigurationManagerInterface& configurationManager = \
DBus::ConfigurationManager::instance(); const QString manager = \
configurationManager.getAudioManager(); @@ -557,32 +602,51 @@ QModelIndex \
AudioManagerModel::currentManager() const return index((int)Manager::PULSE,0);
else if (manager == ManagerName::ALSA)
return index((int)Manager::ALSA,0);
+ else if (manager == ManagerName::JACK)
+ return index((int)Manager::JACK,0);
return QModelIndex();
}
+AudioManagerModel::Manager AudioManagerModel::currentManager() const
+{
+ return m_lSupportedManagers[currentManagerIndex().row()];
+}
+
///Set current audio manager
-void AudioManagerModel::setCurrentManager(const QModelIndex& idx)
+bool AudioManagerModel::setCurrentManager(const QModelIndex& idx)
{
if (!idx.isValid())
- return;
+ return false;
+ bool ret = true;
ConfigurationManagerInterface& configurationManager = \
DBus::ConfigurationManager::instance();
- switch (static_cast<Manager>(idx.row())) {
+ switch (m_lSupportedManagers[idx.row()]) {
case Manager::PULSE:
- configurationManager.setAudioManager(ManagerName::PULSEAUDIO);
+ ret = configurationManager.setAudioManager(ManagerName::PULSEAUDIO);
AudioSettingsModel::instance()->reload();
break;
case Manager::ALSA:
- configurationManager.setAudioManager(ManagerName::ALSA);
+ ret = configurationManager.setAudioManager(ManagerName::ALSA);
+ AudioSettingsModel::instance()->reload();
+ break;
+ case Manager::JACK:
+ ret = configurationManager.setAudioManager(ManagerName::JACK);
AudioSettingsModel::instance()->reload();
break;
};
+ if (!ret) {
+ const QModelIndex& newIdx = currentManagerIndex();
+ emit currentManagerChanged(currentManager());
+ emit currentManagerChanged(newIdx);
+ emit currentManagerChanged(newIdx.row());
+ }
+ return ret;
}
///QCombobox -> QModelIndex shim
-void AudioManagerModel::setCurrentManager(int idx)
+bool AudioManagerModel::setCurrentManager(int idx)
{
- setCurrentManager(index(idx,0));
+ return setCurrentManager(index(idx,0));
}
/****************************************************************
diff --git a/src/lib/audiosettingsmodel.h b/src/lib/audiosettingsmodel.h
index 91d3b71..72db9da 100644
--- a/src/lib/audiosettingsmodel.h
+++ b/src/lib/audiosettingsmodel.h
@@ -54,15 +54,19 @@ public:
RingtoneDeviceModel* ringtoneDeviceModel();
bool isRoomToneEnabled ();
bool isNoiseSuppressEnabled () const;
- bool isPlaybackMuted() const;
- bool isCaptureMuted () const;
- bool areDTMFMuted () const;
- int playbackVolume () const;
- int captureVolume () const;
+ bool isPlaybackMuted () const;
+ bool isCaptureMuted () const;
+ bool isAlwaysRecording() const;
+ bool areDTMFMuted () const;
+ int playbackVolume () const;
+ int captureVolume () const;
+ QUrl recordPath () const;
//Setters
- void setEnableRoomTone ( bool enable );
- void setNoiseSuppressState( bool enabled );
+ void setEnableRoomTone ( bool enable );
+ void setNoiseSuppressState( bool enabled );
+ void setRecordPath ( const QUrl& path );
+ void setAlwaysRecording ( bool record );
//Room tone type
enum class ToneType {
@@ -195,6 +199,12 @@ private:
class LIB_EXPORT AudioManagerModel : public QAbstractListModel {
Q_OBJECT
public:
+
+ enum class Manager {
+ ALSA =0,
+ PULSE=1,
+ JACK =2,
+ };
explicit AudioManagerModel(QObject* parent);
virtual ~AudioManagerModel();
@@ -205,27 +215,30 @@ public:
virtual bool setData ( const QModelIndex& index, const QVariant &value, \
int role);
//Getters
- QModelIndex currentManager() const;
+ QModelIndex currentManagerIndex() const;
+ Manager currentManager() const;
//Setters
- void setCurrentManager(const QModelIndex& index);
+ bool setCurrentManager(const QModelIndex& index);
public Q_SLOTS:
- void setCurrentManager(int idx);
+ bool setCurrentManager(int idx);
+Q_SIGNALS:
+ void currentManagerChanged(Manager);
+ void currentManagerChanged(int);
+ void currentManagerChanged(const QModelIndex&);
private:
- QStringList m_lDeviceList;
class ManagerName {
public:
constexpr static const char* PULSEAUDIO = "pulseaudio";
- constexpr static const char* ALSA = "alsa";
+ constexpr static const char* ALSA = "alsa" ;
+ constexpr static const char* JACK = "jack" ;
};
- enum class Manager {
- ALSA =0,
- PULSE=1,
- };
+ QStringList m_lDeviceList;
+ QList<Manager> m_lSupportedManagers;
};
class LIB_EXPORT RingtoneDeviceModel: public QAbstractListModel {
diff --git a/src/lib/dbus/configurationmanager-introspec.xml \
b/src/lib/dbus/configurationmanager-introspec.xml index 9fdfed6..de46752 100644
--- a/src/lib/dbus/configurationmanager-introspec.xml
+++ b/src/lib/dbus/configurationmanager-introspec.xml
@@ -313,6 +313,8 @@
<method name="setAudioManager" tp:name-for-bindings="setAudioManager">
<arg type="s" name="api" direction="in">
</arg>
+ <arg type="b" name="success" direction="out">
+ </arg>
</method>
<method name="getSupportedAudioManagers" \
tp:name-for-bindings="getSupportedAudioManagers">
diff --git a/src/sflphone.cpp b/src/sflphone.cpp
index eb1d597..d423997 100644
--- a/src/sflphone.cpp
+++ b/src/sflphone.cpp
@@ -48,7 +48,6 @@
//sflphone library
#include "lib/sflphone_const.h"
#include "lib/dbus/instancemanager.h"
-#include "lib/dbus/configurationmanager.h"
#include "lib/contact.h"
#include "lib/accountlistmodel.h"
#include "lib/instantmessagingmodel.h"
diff --git a/src/sflphoneview.cpp b/src/sflphoneview.cpp
index fa4ae01..9233a5c 100644
--- a/src/sflphoneview.cpp
+++ b/src/sflphoneview.cpp
@@ -64,8 +64,6 @@
//sflphone library
#include "klib/kcfg_settings.h"
#include "lib/phonenumber.h"
-#include "lib/typedefs.h"
-#include "lib/dbus/configurationmanager.h"
#include "lib/dbus/callmanager.h"
#include "lib/dbus/instancemanager.h"
#include "lib/sflphone_const.h"
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic