diff options
Diffstat (limited to 'src/cardwidget.cc')
-rw-r--r-- | src/cardwidget.cc | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/src/cardwidget.cc b/src/cardwidget.cc deleted file mode 100644 index 5755d46..0000000 --- a/src/cardwidget.cc +++ /dev/null @@ -1,176 +0,0 @@ -/*** - This file is part of pavucontrol. - - Copyright 2006-2008 Lennart Poettering - Copyright 2009 Colin Guthrie - - pavucontrol is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - pavucontrol is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with pavucontrol. If not, see <https://www.gnu.org/licenses/>. -***/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include "cardwidget.h" - -#include <QDebug> -#include <QHash> -#include <QSet> - -/*** CardWidget ***/ -CardWidget::CardWidget(QWidget* parent) : - QWidget(parent) { - setupUi(this); - connect(profileList, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CardWidget::onProfileChange); - connect(profileFlavorList, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CardWidget::onProfileFlavorChange); -} - - -void CardWidget::prepareMenu() { - int idx = 0; - - profileList->clear(); - /* Fill the ComboBox */ - for (auto k : profiles.keys()) { - auto & profile = profiles[k]; - auto desc = profile.getProfileName(); - profileList->addItem(desc, k); - if (profile.containsProfile(activeProfile)) { - profileList->setCurrentIndex(idx); - changeProfile(k); - } - ++idx; - } -} - -void CardWidget::changeProfile(const QString & name) -{ - auto &profile = profiles[name]; - auto old = profileFlavorList->currentText(); - profileFlavorList->clear(); - int idx = 0; - for (auto & entry : profile.entries) { - auto name = entry.getName(); - profileFlavorList->addItem(name, entry.id); - if (name == old || entry.id == activeProfile) { - profileFlavorList->setCurrentIndex(idx); - } - ++idx; - } - if (profileFlavorList->currentIndex() == -1) { - profileFlavorList->setCurrentIndex(0); - } -} - -void CardWidget::changeProfileFlavor(const QByteArray & id) { - pa_operation* o; - - if (!(o = pa_context_set_card_profile_by_index(get_context(), index, id.constData(), nullptr, nullptr))) { - show_error(tr("pa_context_set_card_profile_by_index() failed").toUtf8().constData()); - return; - } - - pa_operation_unref(o); -} - -void CardWidget::onProfileChange(int active) { - if (updating) - return; - - if (active != -1) - changeProfile(profileList->itemData(active).toString()); -} - -void CardWidget::onProfileFlavorChange(int active) { - if (updating) - return; - - if (active != -1) - changeProfileFlavor(profileFlavorList->itemData(active).toByteArray()); -} - -QString ProfileGroup::getProfileName() { - if (!name.isEmpty()) - return name; - // TODO - QHash<QString, int> counts; - //qDebug() << "Entries" << this; - for (auto n : entries) { - //qDebug() << n.tokens; - QSet<QString> tmp = n.tokens.toSet(); //(n.tokens.begin(), n.tokens.end()); - for (auto t : tmp) { - counts[t]++; - } - } - //qDebug() << counts; - QSet<QString> todo = counts.keys().toSet(); - for (auto &pe : entries) { - QMutableListIterator<QString> it(pe.tokens); - while (it.hasNext()) { - auto s = it.next(); - if (counts[s] == entries.size()) { - it.remove(); - if (todo.remove(s)) { - if (!name.isEmpty()) { - name.append(QLatin1Char(' ')); - } - name.append(s); - } - } - } - } - return name; -} - -void ProfileGroup::addEntry(const char *id, const char *name) { - auto *pe = new ProfileEntry; - bool paren = false; - const char *pos = name, *tokenStart = name; - //qDebug() << name << "is" << id; - while (*pos != '\0') { - if (!paren && isspace(*pos)) { - if (pos > tokenStart) { - pe->tokens.append(QString::fromUtf8(tokenStart, pos - tokenStart)); - } - tokenStart = pos + 1; - } - if (paren && *pos == ')') { - pe->tokens.append(QString::fromUtf8(tokenStart, pos - tokenStart + 1)); - paren = false; - tokenStart = pos + 1; - } - if (tokenStart == pos && *pos == '(') { - paren = true; - } - pos++; - } - if (pos > tokenStart) { - pe->tokens.append(QString::fromUtf8(tokenStart, pos - tokenStart)); - } - pe->id = id; - this->entries.append(*pe); - delete pe; -} - -QString ProfileEntry::getName() const { - return tokens.join(QLatin1String(" ")); -} - -bool ProfileGroup::containsProfile(const QByteArray &pro) const { - for (const auto &e : this->entries) { - if (e.id == pro) - return true; - } - return false; -} |