summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHong Jen Yee (PCMan)2016-09-01 16:10:46 +0200
committerHong Jen Yee (PCMan)2016-09-01 16:10:46 +0200
commitd31a1f4ad75293e5d0acadd9b8b6126d07d8b4b7 (patch)
treea2f9d7df575fb43d9bf7f50e808d30694f552183
parentFix translations. (diff)
downloadpavucontrol-slx-d31a1f4ad75293e5d0acadd9b8b6126d07d8b4b7.tar.gz
pavucontrol-slx-d31a1f4ad75293e5d0acadd9b8b6126d07d8b4b7.tar.xz
pavucontrol-slx-d31a1f4ad75293e5d0acadd9b8b6126d07d8b4b7.zip
Remove glibmm dependency.
-rw-r--r--CMakeLists.txt1
-rw-r--r--src/cardwidget.cc4
-rw-r--r--src/cardwidget.h14
-rw-r--r--src/devicewidget.cc17
-rw-r--r--src/devicewidget.h12
-rw-r--r--src/mainwindow.cc26
-rw-r--r--src/mainwindow.h2
-rw-r--r--src/pavucontrol.cc47
-rw-r--r--src/pavucontrol.h10
-rw-r--r--src/rolewidget.cc4
-rw-r--r--src/rolewidget.h4
-rw-r--r--src/sinkinputwidget.cc4
-rw-r--r--src/sinkwidget.cc2
-rw-r--r--src/sourceoutputwidget.cc4
-rw-r--r--src/sourcewidget.cc2
15 files changed, 67 insertions, 86 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6c97811..a8a1109 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -30,7 +30,6 @@ pkg_check_modules(
pkg_check_modules(
GLIB REQUIRED
glib-2.0
- glibmm-2.4 # c++ binding for glib
)
add_subdirectory(src)
diff --git a/src/cardwidget.cc b/src/cardwidget.cc
index 8406bfa..874fd56 100644
--- a/src/cardwidget.cc
+++ b/src/cardwidget.cc
@@ -40,8 +40,8 @@ void CardWidget::prepareMenu() {
/* Fill the ComboBox */
for (uint32_t i = 0; i < profiles.size(); ++i) {
const auto& profile = profiles[i];
- QByteArray name = profile.first.c_str();
- QString desc = QString::fromUtf8(profile.second.c_str());
+ QByteArray name = profile.first;
+ QString desc = QString::fromUtf8(profile.second);
profileList->addItem(desc, name);
if (profile.first == activeProfile)
active_idx = idx;
diff --git a/src/cardwidget.h b/src/cardwidget.h
index 81fc7be..4fbefd3 100644
--- a/src/cardwidget.h
+++ b/src/cardwidget.h
@@ -27,13 +27,13 @@
class PortInfo {
public:
- Glib::ustring name;
- Glib::ustring description;
+ QByteArray name;
+ QByteArray description;
uint32_t priority;
int available;
int direction;
int64_t latency_offset;
- std::vector<Glib::ustring> profiles;
+ std::vector<QByteArray> profiles;
};
class CardWidget : public QWidget, public Ui::CardWidget {
@@ -41,13 +41,13 @@ class CardWidget : public QWidget, public Ui::CardWidget {
public:
CardWidget(QWidget *parent = nullptr);
- Glib::ustring name;
+ QByteArray name;
uint32_t index;
bool updating;
- std::vector< std::pair<Glib::ustring,Glib::ustring> > profiles;
- std::map<Glib::ustring, PortInfo> ports;
- Glib::ustring activeProfile;
+ std::vector< std::pair<QByteArray,QByteArray> > profiles;
+ std::map<QByteArray, PortInfo> ports;
+ QByteArray activeProfile;
bool hasSinks;
bool hasSources;
diff --git a/src/devicewidget.cc b/src/devicewidget.cc
index eecc37d..da086e2 100644
--- a/src/devicewidget.cc
+++ b/src/devicewidget.cc
@@ -27,9 +27,10 @@
#include "mainwindow.h"
#include "devicewidget.h"
#include "channelwidget.h"
+#include <sstream>
/*** DeviceWidget ***/
-DeviceWidget::DeviceWidget(MainWindow* parent, Glib::ustring deviceType) :
+DeviceWidget::DeviceWidget(MainWindow* parent, QByteArray deviceType) :
MinimalStreamWidget(parent),
mpMainWindow(parent),
mDeviceType(deviceType),
@@ -141,17 +142,17 @@ void DeviceWidget::onOffsetChange() {
pa_operation *o;
int64_t offset;
std::ostringstream card_stream;
- Glib::ustring card_name;
+ QByteArray card_name;
if (!offsetButtonEnabled)
return;
offset = offsetButton->value() * 1000.0;
card_stream << card_index;
- card_name = card_stream.str();
+ card_name = QByteArray::fromStdString(card_stream.str());
if (!(o = pa_context_set_port_latency_offset(get_context(),
- card_name.c_str(), activePort.c_str(), offset, NULL, NULL))) {
+ card_name, activePort, offset, NULL, NULL))) {
show_error(tr("pa_context_set_port_latency_offset() failed").toUtf8().constData());
return;
}
@@ -191,8 +192,8 @@ void DeviceWidget::prepareMenu() {
portList->clear();
/* Fill the ComboBox's Model */
for (uint32_t i = 0; i < ports.size(); ++i) {
- QByteArray name = ports[i].first.c_str();
- QString desc = ports[i].second.c_str();
+ QByteArray name = ports[i].first;
+ QString desc = ports[i].second;
portList->addItem(desc, name);
if (ports[i].first == activePort)
active_idx = idx;
@@ -261,9 +262,9 @@ void DeviceWidget::renamePopup() {
dialog->set_default_response(Gtk::RESPONSE_OK);
if (Gtk::RESPONSE_OK == dialog->run()) {
pa_operation* o;
- gchar *key = g_markup_printf_escaped("%s:%s", mDeviceType.c_str(), name.c_str());
+ gchar *key = g_markup_printf_escaped("%s:%s", mDeviceType, name);
- if (!(o = pa_ext_device_manager_set_device_description(get_context(), key, renameText->get_text().c_str(), NULL, NULL))) {
+ if (!(o = pa_ext_device_manager_set_device_description(get_context(), key, renameText->get_text(), NULL, NULL))) {
show_error(tr("pa_ext_device_manager_write() failed").toUtf8().constData());
return;
}
diff --git a/src/devicewidget.h b/src/devicewidget.h
index 918d4ab..ba8bcea 100644
--- a/src/devicewidget.h
+++ b/src/devicewidget.h
@@ -34,7 +34,7 @@ class ChannelWidget;
class DeviceWidget : public MinimalStreamWidget, public Ui::DeviceWidget {
Q_OBJECT
public:
- DeviceWidget(MainWindow *parent, Glib::ustring deviceType = "");
+ DeviceWidget(MainWindow *parent, QByteArray deviceType = "");
void setChannelMap(const pa_channel_map &m, bool can_decibel);
void setVolume(const pa_cvolume &volume, bool force = false);
@@ -42,8 +42,8 @@ public:
void hideLockedChannels(bool hide = true);
- Glib::ustring name;
- Glib::ustring description;
+ QByteArray name;
+ QByteArray description;
uint32_t index, card_index;
bool offsetButtonEnabled;
@@ -69,8 +69,8 @@ public:
virtual void executeVolumeUpdate();
virtual void setBaseVolume(pa_volume_t v);
- std::vector< std::pair<Glib::ustring,Glib::ustring> > ports;
- Glib::ustring activePort;
+ std::vector< std::pair<QByteArray,QByteArray> > ports;
+ QByteArray activePort;
void prepareMenu();
@@ -85,7 +85,7 @@ protected:
// Gtk::MenuItem rename;
private:
- Glib::ustring mDeviceType;
+ QByteArray mDeviceType;
};
diff --git a/src/mainwindow.cc b/src/mainwindow.cc
index baba6a6..b8bf1a2 100644
--- a/src/mainwindow.cc
+++ b/src/mainwindow.cc
@@ -243,12 +243,12 @@ finish:
}
class DeviceWidget;
-static void updatePorts(DeviceWidget *w, std::map<Glib::ustring, PortInfo> &ports) {
- std::map<Glib::ustring, PortInfo>::iterator it;
+static void updatePorts(DeviceWidget *w, std::map<QByteArray, PortInfo> &ports) {
+ std::map<QByteArray, PortInfo>::iterator it;
PortInfo p;
for (uint32_t i = 0; i < w->ports.size(); i++) {
- Glib::ustring desc;
+ QByteArray desc;
it = ports.find(w->ports[i].first);
if (it == ports.end())
@@ -304,7 +304,7 @@ void MainWindow::updateCard(const pa_card_info &info) {
description = pa_proplist_gets(info.proplist, PA_PROP_DEVICE_DESCRIPTION);
w->name = description ? description : info.name;
- w->nameLabel->setText(QString::fromUtf8(w->name.c_str()));
+ w->nameLabel->setText(w->name);
icon = pa_proplist_gets(info.proplist, PA_PROP_DEVICE_ICON_NAME);
setIconByName(w->iconImage, icon ? icon : "audio-card");
@@ -336,8 +336,8 @@ void MainWindow::updateCard(const pa_card_info &info) {
w->profiles.clear();
for (std::set<pa_card_profile_info2>::iterator profileIt = profile_priorities.begin(); profileIt != profile_priorities.end(); ++profileIt) {
bool hasNo = false, hasOther = false;
- std::map<Glib::ustring, PortInfo>::iterator portIt;
- Glib::ustring desc = profileIt->description;
+ std::map<QByteArray, PortInfo>::iterator portIt;
+ QByteArray desc = profileIt->description;
for (portIt = w->ports.begin(); portIt != w->ports.end(); portIt++) {
PortInfo port = portIt->second;
@@ -358,7 +358,7 @@ void MainWindow::updateCard(const pa_card_info &info) {
if (!profileIt->available)
desc += tr(" (unavailable)").toUtf8().constData();
- w->profiles.push_back(std::pair<Glib::ustring,Glib::ustring>(profileIt->name, desc));
+ w->profiles.push_back(std::pair<QByteArray,QByteArray>(profileIt->name, desc));
}
w->activeProfile = info.active_profile ? info.active_profile->name : "";
@@ -448,12 +448,12 @@ bool MainWindow::updateSink(const pa_sink_info &info) {
port_priorities.insert(*info.ports[i]);
}
- std::vector< std::pair<Glib::ustring,Glib::ustring> > old_ports;
+ std::vector< std::pair<QByteArray,QByteArray> > old_ports;
old_ports.swap(w->ports);
std::stable_sort(old_ports.begin(), old_ports.end());
// w->ports.clear();
for (std::set<pa_sink_port_info>::iterator i = port_priorities.begin(); i != port_priorities.end(); ++i)
- w->ports.push_back(std::pair<Glib::ustring,Glib::ustring>(i->name, i->description));
+ w->ports.push_back(std::pair<QByteArray,QByteArray>(i->name, i->description));
std::stable_sort(w->ports.begin(), w->ports.end());
// check if the list is really changed
// FIXME: this is inefficient. Fix it later.
@@ -625,12 +625,12 @@ void MainWindow::updateSource(const pa_source_info &info) {
}
- std::vector< std::pair<Glib::ustring,Glib::ustring> > old_ports;
+ std::vector< std::pair<QByteArray,QByteArray> > old_ports;
old_ports.swap(w->ports);
std::stable_sort(old_ports.begin(), old_ports.end());
// w->ports.clear();
for (std::set<pa_source_port_info>::iterator i = port_priorities.begin(); i != port_priorities.end(); ++i)
- w->ports.push_back(std::pair<Glib::ustring,Glib::ustring>(i->name, i->description));
+ w->ports.push_back(std::pair<QByteArray,QByteArray>(i->name, i->description));
std::stable_sort(w->ports.begin(), w->ports.end());
// check if the list is really changed
// FIXME: this is inefficient. Fix it later.
@@ -1203,13 +1203,13 @@ void MainWindow::removeAllWidgets() {
}
void MainWindow::setConnectingMessage(const char *string) {
- Glib::ustring markup = "<i>";
+ QByteArray markup = "<i>";
if (!string)
markup += tr("Establishing connection to PulseAudio. Please wait...").toUtf8().constData();
else
markup += string;
markup += "</i>";
- connectingLabel->setText(QString::fromUtf8(markup.c_str()));
+ connectingLabel->setText(QString::fromUtf8(markup));
}
void MainWindow::onSinkTypeComboBoxChanged(int index) {
diff --git a/src/mainwindow.h b/src/mainwindow.h
index fe67de6..8ad454c 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -100,7 +100,7 @@ public:
bool createEventRoleWidget();
void deleteEventRoleWidget();
- Glib::ustring defaultSinkName, defaultSourceName;
+ QByteArray defaultSinkName, defaultSourceName;
bool canRenameDevices;
diff --git a/src/pavucontrol.cc b/src/pavucontrol.cc
index cc0ce4c..127edcd 100644
--- a/src/pavucontrol.cc
+++ b/src/pavucontrol.cc
@@ -47,6 +47,8 @@
#include <QLocale>
#include <QLibraryInfo>
#include <QTranslator>
+#include <QCommandLineParser>
+#include <QCommandLineOption>
static pa_context* context = NULL;
static pa_mainloop_api* api = NULL;
@@ -651,47 +653,34 @@ int main(int argc, char *argv[]) {
qApp->installTranslator(&qtTranslator);
QTranslator appTranslator;
- qDebug(PAVUCONTROL_QT_DATA_DIR "/translations");
if(appTranslator.load("pavucontrol-qt_" + locale, PAVUCONTROL_QT_DATA_DIR "/translations"))
qApp->installTranslator(&appTranslator);
- Glib::OptionContext options;
- options.set_summary("PulseAudio Volume Control");
- options.set_help_enabled();
+ QCommandLineParser parser;
+ parser.setApplicationDescription(QObject::tr("PulseAudio Volume Control"));
+ parser.addHelpOption();
- Glib::OptionGroup group("pulseaudio", "PAVUControl");
+ QCommandLineOption tabOption(QStringList() << "tab" << "t", QObject::tr("Select a specific tab on load."), "tab");
+ parser.addOption(tabOption);
- Glib::OptionEntry entry;
- entry.set_long_name("tab");
- entry.set_short_name('t');
- entry.set_description(QObject::tr("Select a specific tab on load.").toUtf8().constData());
- group.add_entry(entry, default_tab);
+ QCommandLineOption retryOption(QStringList() << "retry" << "r", QObject::tr("Retry forever if pa quits (every 5 seconds)."));
+ parser.addOption(retryOption);
- Glib::OptionEntry entry2;
- entry2.set_long_name("retry");
- entry2.set_short_name('r');
- entry2.set_description(QObject::tr("Retry forever if pa quits (every 5 seconds).").toUtf8().constData());
- group.add_entry(entry2, retry);
+ QCommandLineOption maximizeOption(QStringList() << "maximize" << "m", QObject::tr("Maximize the window."));
+ parser.addOption(maximizeOption);
- bool maximize = false;
- Glib::OptionEntry entry3;
- entry3.set_long_name("maximize");
- entry3.set_short_name('m');
- entry3.set_description(QObject::tr("Maximize the window.").toUtf8().constData());
- group.add_entry(entry3, maximize);
+ // QCommandLineOption versionOption("version", QObject::tr("Show version"));
+ // parser.addOption(versionOption);
- bool version = false;
- Glib::OptionEntry entry4;
- entry4.set_long_name("version");
- entry4.set_description(QObject::tr("Show version").toUtf8().constData());
- group.add_entry(entry4, version);
-
- options.set_main_group(group);
+ parser.process(app);
+ default_tab = parser.value(tabOption).toInt();
+ retry = parser.isSet(retryOption);
// ca_context_set_driver(ca_gtk_context_get(), "pulse");
- // MainWindow* mainWindow = MainWindow::create(maximize);
MainWindow* mainWindow = new MainWindow();
+ if(parser.isSet(maximizeOption))
+ mainWindow->showMaximized();
pa_glib_mainloop *m = pa_glib_mainloop_new(g_main_context_default());
g_assert(m);
diff --git a/src/pavucontrol.h b/src/pavucontrol.h
index 2820fb1..88769de 100644
--- a/src/pavucontrol.h
+++ b/src/pavucontrol.h
@@ -23,18 +23,10 @@
#include <signal.h>
#include <string.h>
-
-#include <libintl.h>
-
-// #include <gtkmm.h>
-#include <glibmm.h>
+#include <glib.h>
#include <pulse/pulseaudio.h>
-#ifndef GLADE_FILE
-#define GLADE_FILE "pavucontrol.glade"
-#endif
-
/* Can be removed when PulseAudio 0.9.23 or newer is required */
#ifndef PA_VOLUME_UI_MAX
# define PA_VOLUME_UI_MAX (pa_sw_volume_from_dB(+11.0))
diff --git a/src/rolewidget.cc b/src/rolewidget.cc
index 6bdb17a..93eb0a0 100644
--- a/src/rolewidget.cc
+++ b/src/rolewidget.cc
@@ -52,11 +52,11 @@ void RoleWidget::executeVolumeUpdate() {
if (updating)
return;
- info.name = role.c_str();
+ info.name = role;
info.channel_map.channels = 1;
info.channel_map.map[0] = PA_CHANNEL_POSITION_MONO;
info.volume = volume;
- info.device = device == "" ? NULL : device.c_str();
+ info.device = device == "" ? NULL : device.constData();
info.mute = muteToggleButton->isChecked();
pa_operation* o;
diff --git a/src/rolewidget.h b/src/rolewidget.h
index bc8e13d..fee684b 100644
--- a/src/rolewidget.h
+++ b/src/rolewidget.h
@@ -30,8 +30,8 @@ class RoleWidget : public StreamWidget {
public:
RoleWidget(MainWindow* parent);
- Glib::ustring role;
- Glib::ustring device;
+ QByteArray role;
+ QByteArray device;
virtual void onMuteToggleButton();
virtual void executeVolumeUpdate();
diff --git a/src/sinkinputwidget.cc b/src/sinkinputwidget.cc
index 1cae132..d41377e 100644
--- a/src/sinkinputwidget.cc
+++ b/src/sinkinputwidget.cc
@@ -46,7 +46,7 @@ void SinkInputWidget::setSinkIndex(uint32_t idx) {
if (mpMainWindow->sinkWidgets.count(idx)) {
SinkWidget *w = mpMainWindow->sinkWidgets[idx];
- deviceButton->setText(w->description.c_str());
+ deviceButton->setText(w->description);
}
else
deviceButton->setText(tr("Unknown output").toUtf8().constData());
@@ -106,7 +106,7 @@ void SinkInputWidget::buildMenu() {
#if 0
for (std::map<uint32_t, SinkWidget*>::iterator i = mpMainWindow->sinkWidgets.begin(); i != mpMainWindow->sinkWidgets.end(); ++i) {
SinkMenuItem *m;
- sinkMenuItems[i->second->index] = m = new SinkMenuItem(this, i->second->description.c_str(), i->second->index, i->second->index == mSinkIndex);
+ sinkMenuItems[i->second->index] = m = new SinkMenuItem(this, i->second->description, i->second->index, i->second->index == mSinkIndex);
menu.append(m->menuItem);
}
menu.show_all();
diff --git a/src/sinkwidget.cc b/src/sinkwidget.cc
index 3821123..ffcd7cb 100644
--- a/src/sinkwidget.cc
+++ b/src/sinkwidget.cc
@@ -127,7 +127,7 @@ void SinkWidget::onDefaultToggleButton() {
if (updating)
return;
- if (!(o = pa_context_set_default_sink(get_context(), name.c_str(), NULL, NULL))) {
+ if (!(o = pa_context_set_default_sink(get_context(), name, NULL, NULL))) {
show_error(tr("pa_context_set_default_sink() failed").toUtf8().constData());
return;
}
diff --git a/src/sourceoutputwidget.cc b/src/sourceoutputwidget.cc
index 711c5a4..29e5fee 100644
--- a/src/sourceoutputwidget.cc
+++ b/src/sourceoutputwidget.cc
@@ -52,7 +52,7 @@ void SourceOutputWidget::setSourceIndex(uint32_t idx) {
if (mpMainWindow->sourceWidgets.count(idx)) {
SourceWidget *w = mpMainWindow->sourceWidgets[idx];
- deviceButton->setText(w->description.c_str());
+ deviceButton->setText(w->description);
}
else
deviceButton->setText(tr("Unknown input").toUtf8().constData());
@@ -115,7 +115,7 @@ void SourceOutputWidget::buildMenu() {
#if 0
for (std::map<uint32_t, SourceWidget*>::iterator i = mpMainWindow->sourceWidgets.begin(); i != mpMainWindow->sourceWidgets.end(); ++i) {
SourceMenuItem *m;
- sourceMenuItems[i->second->index] = m = new SourceMenuItem(this, i->second->description.c_str(), i->second->index, i->second->index == mSourceIndex);
+ sourceMenuItems[i->second->index] = m = new SourceMenuItem(this, i->second->description, i->second->index, i->second->index == mSourceIndex);
menu.append(m->menuItem);
}
menu.show_all();
diff --git a/src/sourcewidget.cc b/src/sourcewidget.cc
index 21a2a12..147a47d 100644
--- a/src/sourcewidget.cc
+++ b/src/sourcewidget.cc
@@ -60,7 +60,7 @@ void SourceWidget::onDefaultToggleButton() {
if (updating)
return;
- if (!(o = pa_context_set_default_source(get_context(), name.c_str(), NULL, NULL))) {
+ if (!(o = pa_context_set_default_source(get_context(), name, NULL, NULL))) {
show_error(tr("pa_context_set_default_source() failed").toUtf8().constData());
return;
}