From c48cebd620d3f5330c104d85ac32f0aaffadaa14 Mon Sep 17 00:00:00 2001
From: Simon Rettberg
Date: Thu, 18 Aug 2022 20:27:25 +0200
Subject: Replace everything with new "slxmix" (work in progress)
---
.gitattributes | 18 -
.github/ISSUE_TEMPLATE.md | 43 -
.gitignore | 1 +
.translation-update | 1 -
AUTHORS | 9 -
CHANGELOG | 556 ----------
CMakeLists.txt | 33 +-
LICENSE | 339 ------
README.md | 56 -
src/CMakeLists.txt | 66 +-
src/PulseAudioQt/CMakeLists.txt | 49 +
src/PulseAudioQt/Card | 1 +
src/PulseAudioQt/CardPort | 1 +
src/PulseAudioQt/Client | 1 +
src/PulseAudioQt/Context | 1 +
src/PulseAudioQt/Device | 1 +
src/PulseAudioQt/IndexedPulseObject | 1 +
src/PulseAudioQt/Messages.sh | 4 +
src/PulseAudioQt/Models | 1 +
src/PulseAudioQt/Module | 1 +
src/PulseAudioQt/Port | 1 +
src/PulseAudioQt/Profile | 1 +
src/PulseAudioQt/PulseObject | 1 +
src/PulseAudioQt/Server | 1 +
src/PulseAudioQt/Sink | 1 +
src/PulseAudioQt/SinkInput | 1 +
src/PulseAudioQt/Source | 1 +
src/PulseAudioQt/SourceOutput | 1 +
src/PulseAudioQt/Stream | 1 +
src/PulseAudioQt/StreamRestore | 1 +
src/PulseAudioQt/VolumeObject | 1 +
src/PulseAudioQt/card.cpp | 168 +++
src/PulseAudioQt/card.h | 59 +
src/PulseAudioQt/card_p.h | 35 +
src/PulseAudioQt/cardport.cpp | 26 +
src/PulseAudioQt/cardport.h | 36 +
src/PulseAudioQt/client.cpp | 37 +
src/PulseAudioQt/client.h | 32 +
src/PulseAudioQt/client_p.h | 26 +
src/PulseAudioQt/context.cpp | 842 +++++++++++++++
src/PulseAudioQt/context.h | 238 +++++
src/PulseAudioQt/context_p.h | 85 ++
src/PulseAudioQt/debug.h | 1 +
src/PulseAudioQt/device.cpp | 74 ++
src/PulseAudioQt/device.h | 119 +++
src/PulseAudioQt/device_p.h | 111 ++
src/PulseAudioQt/indexedpulseobject.cpp | 39 +
src/PulseAudioQt/indexedpulseobject.h | 48 +
src/PulseAudioQt/indexedpulseobject_p.h | 35 +
src/PulseAudioQt/maps.cpp | 7 +
src/PulseAudioQt/maps.h | 165 +++
src/PulseAudioQt/models.cpp | 396 +++++++
src/PulseAudioQt/models.h | 163 +++
src/PulseAudioQt/models_p.h | 33 +
src/PulseAudioQt/module.cpp | 53 +
src/PulseAudioQt/module.h | 39 +
src/PulseAudioQt/module_p.h | 29 +
src/PulseAudioQt/operation.cpp | 44 +
src/PulseAudioQt/operation.h | 56 +
src/PulseAudioQt/port.cpp | 35 +
src/PulseAudioQt/port.h | 70 ++
src/PulseAudioQt/port_p.h | 47 +
src/PulseAudioQt/profile.cpp | 56 +
src/PulseAudioQt/profile.h | 81 ++
src/PulseAudioQt/profile_p.h | 59 +
src/PulseAudioQt/pulseaudioqt_export.h | 192 ++++
src/PulseAudioQt/pulseobject.cpp | 86 ++
src/PulseAudioQt/pulseobject.h | 76 ++
src/PulseAudioQt/pulseobject_p.h | 57 +
src/PulseAudioQt/server.cpp | 137 +++
src/PulseAudioQt/server.h | 57 +
src/PulseAudioQt/server_p.h | 28 +
src/PulseAudioQt/sink.cpp | 93 ++
src/PulseAudioQt/sink.h | 57 +
src/PulseAudioQt/sink_p.h | 25 +
src/PulseAudioQt/sinkinput.cpp | 66 ++
src/PulseAudioQt/sinkinput.h | 41 +
src/PulseAudioQt/sinkinput_p.h | 25 +
src/PulseAudioQt/source.cpp | 81 ++
src/PulseAudioQt/source.h | 44 +
src/PulseAudioQt/source_p.h | 24 +
src/PulseAudioQt/sourceoutput.cpp | 65 ++
src/PulseAudioQt/sourceoutput.h | 41 +
src/PulseAudioQt/sourceoutput_p.h | 26 +
src/PulseAudioQt/stream.cpp | 60 ++
src/PulseAudioQt/stream.h | 60 ++
src/PulseAudioQt/stream_p.h | 56 +
src/PulseAudioQt/streamrestore.cpp | 214 ++++
src/PulseAudioQt/streamrestore.h | 74 ++
src/PulseAudioQt/streamrestore_p.h | 42 +
src/PulseAudioQt/volumeobject.cpp | 70 ++
src/PulseAudioQt/volumeobject.h | 79 ++
src/PulseAudioQt/volumeobject_p.h | 67 ++
src/cardwidget.cc | 176 ---
src/cardwidget.h | 58 -
src/cardwidget.ui | 67 --
src/channel.cc | 169 ---
src/channel.h | 62 --
src/channelwidget.ui | 42 -
src/devicewidget.cc | 245 -----
src/devicewidget.h | 92 --
src/devicewidget.ui | 283 -----
src/elidinglabel.cc | 46 -
src/elidinglabel.h | 38 -
src/helper.cc | 75 --
src/helper.h | 61 --
src/icons/checkmark.svg | 21 +
src/icons/mute-off.svg | 31 +
src/icons/mute-on.svg | 49 +
src/icons/none.svg | 17 +
src/main.cpp | 306 ++++++
src/main.h | 16 +
src/mainwindow.cc | 1124 --------------------
src/mainwindow.cpp | 73 ++
src/mainwindow.h | 109 +-
src/mainwindow.ui | 358 +------
src/minimalstreamwidget.cc | 89 --
src/minimalstreamwidget.h | 56 -
src/pavucontrol-qt.desktop.in | 7 -
src/pavucontrol.cc | 869 ---------------
src/pavucontrol.h | 69 --
src/resources.qrc | 8 +
src/rolewidget.cc | 65 --
src/rolewidget.h | 40 -
src/sinkinputwidget.cc | 125 ---
src/sinkinputwidget.h | 77 --
src/sinkwidget.cc | 175 ---
src/sinkwidget.h | 64 --
src/slxoutput.cpp | 82 ++
src/slxoutput.h | 33 +
src/slxoutput.ui | 103 ++
src/sourceoutputwidget.cc | 136 ---
src/sourceoutputwidget.h | 80 --
src/sourcewidget.cc | 87 --
src/sourcewidget.h | 45 -
src/streamwidget.cc | 134 ---
src/streamwidget.h | 68 --
src/streamwidget.ui | 115 --
src/translations/CMakeLists.txt | 3 -
src/translations/pavucontrol-qt.desktop.yaml | 3 -
src/translations/pavucontrol-qt.ts | 733 -------------
src/translations/pavucontrol-qt_arn.ts | 733 -------------
src/translations/pavucontrol-qt_as.ts | 733 -------------
src/translations/pavucontrol-qt_ast.ts | 733 -------------
src/translations/pavucontrol-qt_bg.desktop.yaml | 4 -
src/translations/pavucontrol-qt_bg.ts | 739 -------------
src/translations/pavucontrol-qt_bn_IN.ts | 733 -------------
src/translations/pavucontrol-qt_ca.desktop.yaml | 3 -
src/translations/pavucontrol-qt_ca.ts | 739 -------------
src/translations/pavucontrol-qt_cs.desktop.yaml | 3 -
src/translations/pavucontrol-qt_cs.ts | 739 -------------
src/translations/pavucontrol-qt_cy.ts | 733 -------------
src/translations/pavucontrol-qt_da.desktop.yaml | 3 -
src/translations/pavucontrol-qt_da.ts | 739 -------------
src/translations/pavucontrol-qt_de.ts | 738 -------------
src/translations/pavucontrol-qt_el.ts | 738 -------------
src/translations/pavucontrol-qt_es.desktop.yaml | 3 -
src/translations/pavucontrol-qt_es.ts | 739 -------------
src/translations/pavucontrol-qt_et.desktop.yaml | 3 -
src/translations/pavucontrol-qt_et.ts | 739 -------------
src/translations/pavucontrol-qt_fi.ts | 739 -------------
src/translations/pavucontrol-qt_fr.desktop.yaml | 3 -
src/translations/pavucontrol-qt_fr.ts | 739 -------------
src/translations/pavucontrol-qt_gl.desktop.yaml | 3 -
src/translations/pavucontrol-qt_gl.ts | 739 -------------
src/translations/pavucontrol-qt_gu.ts | 733 -------------
src/translations/pavucontrol-qt_he.desktop.yaml | 3 -
src/translations/pavucontrol-qt_he.ts | 739 -------------
src/translations/pavucontrol-qt_hi.ts | 737 -------------
src/translations/pavucontrol-qt_hr.desktop.yaml | 3 -
src/translations/pavucontrol-qt_hr.ts | 739 -------------
src/translations/pavucontrol-qt_hu.desktop.yaml | 3 -
src/translations/pavucontrol-qt_hu.ts | 739 -------------
src/translations/pavucontrol-qt_id.ts | 739 -------------
src/translations/pavucontrol-qt_it.desktop.yaml | 3 -
src/translations/pavucontrol-qt_it.ts | 734 -------------
src/translations/pavucontrol-qt_ja.desktop.yaml | 3 -
src/translations/pavucontrol-qt_ja.ts | 738 -------------
src/translations/pavucontrol-qt_kn.ts | 733 -------------
src/translations/pavucontrol-qt_ko.desktop.yaml | 3 -
src/translations/pavucontrol-qt_ko.ts | 739 -------------
src/translations/pavucontrol-qt_lt.desktop.yaml | 3 -
src/translations/pavucontrol-qt_lt.ts | 740 -------------
src/translations/pavucontrol-qt_ml.ts | 733 -------------
src/translations/pavucontrol-qt_mr.ts | 733 -------------
src/translations/pavucontrol-qt_nb_NO.desktop.yaml | 3 -
src/translations/pavucontrol-qt_nb_NO.ts | 739 -------------
src/translations/pavucontrol-qt_nl.desktop.yaml | 3 -
src/translations/pavucontrol-qt_nl.ts | 736 -------------
src/translations/pavucontrol-qt_oc.desktop.yaml | 3 -
src/translations/pavucontrol-qt_or.ts | 733 -------------
src/translations/pavucontrol-qt_pa.ts | 733 -------------
src/translations/pavucontrol-qt_pl.desktop.yaml | 3 -
src/translations/pavucontrol-qt_pl.ts | 739 -------------
src/translations/pavucontrol-qt_pt.desktop.yaml | 3 -
src/translations/pavucontrol-qt_pt.ts | 739 -------------
src/translations/pavucontrol-qt_pt_BR.ts | 739 -------------
src/translations/pavucontrol-qt_ro.desktop.yaml | 3 -
src/translations/pavucontrol-qt_ro.ts | 740 -------------
src/translations/pavucontrol-qt_ru.desktop.yaml | 3 -
src/translations/pavucontrol-qt_ru.ts | 740 -------------
src/translations/pavucontrol-qt_si.desktop.yaml | 3 -
src/translations/pavucontrol-qt_si.ts | 733 -------------
src/translations/pavucontrol-qt_sk.desktop.yaml | 3 -
src/translations/pavucontrol-qt_sk.ts | 736 -------------
src/translations/pavucontrol-qt_sr.ts | 733 -------------
src/translations/pavucontrol-qt_sr@latin.ts | 733 -------------
src/translations/pavucontrol-qt_sv.ts | 733 -------------
src/translations/pavucontrol-qt_ta.ts | 733 -------------
src/translations/pavucontrol-qt_te.ts | 733 -------------
src/translations/pavucontrol-qt_th.ts | 733 -------------
src/translations/pavucontrol-qt_tr.desktop.yaml | 3 -
src/translations/pavucontrol-qt_tr.ts | 740 -------------
src/translations/pavucontrol-qt_uk.desktop.yaml | 3 -
src/translations/pavucontrol-qt_uk.ts | 739 -------------
src/translations/pavucontrol-qt_vi.desktop.yaml | 3 -
src/translations/pavucontrol-qt_zh_CN.desktop.yaml | 3 -
src/translations/pavucontrol-qt_zh_CN.ts | 737 -------------
src/translations/pavucontrol-qt_zh_TW.ts | 739 -------------
219 files changed, 6157 insertions(+), 44021 deletions(-)
delete mode 100644 .gitattributes
delete mode 100644 .github/ISSUE_TEMPLATE.md
delete mode 100644 .translation-update
delete mode 100644 AUTHORS
delete mode 100644 CHANGELOG
delete mode 100644 LICENSE
delete mode 100644 README.md
create mode 100644 src/PulseAudioQt/CMakeLists.txt
create mode 100644 src/PulseAudioQt/Card
create mode 100644 src/PulseAudioQt/CardPort
create mode 100644 src/PulseAudioQt/Client
create mode 100644 src/PulseAudioQt/Context
create mode 100644 src/PulseAudioQt/Device
create mode 100644 src/PulseAudioQt/IndexedPulseObject
create mode 100644 src/PulseAudioQt/Messages.sh
create mode 100644 src/PulseAudioQt/Models
create mode 100644 src/PulseAudioQt/Module
create mode 100644 src/PulseAudioQt/Port
create mode 100644 src/PulseAudioQt/Profile
create mode 100644 src/PulseAudioQt/PulseObject
create mode 100644 src/PulseAudioQt/Server
create mode 100644 src/PulseAudioQt/Sink
create mode 100644 src/PulseAudioQt/SinkInput
create mode 100644 src/PulseAudioQt/Source
create mode 100644 src/PulseAudioQt/SourceOutput
create mode 100644 src/PulseAudioQt/Stream
create mode 100644 src/PulseAudioQt/StreamRestore
create mode 100644 src/PulseAudioQt/VolumeObject
create mode 100644 src/PulseAudioQt/card.cpp
create mode 100644 src/PulseAudioQt/card.h
create mode 100644 src/PulseAudioQt/card_p.h
create mode 100644 src/PulseAudioQt/cardport.cpp
create mode 100644 src/PulseAudioQt/cardport.h
create mode 100644 src/PulseAudioQt/client.cpp
create mode 100644 src/PulseAudioQt/client.h
create mode 100644 src/PulseAudioQt/client_p.h
create mode 100644 src/PulseAudioQt/context.cpp
create mode 100644 src/PulseAudioQt/context.h
create mode 100644 src/PulseAudioQt/context_p.h
create mode 100644 src/PulseAudioQt/debug.h
create mode 100644 src/PulseAudioQt/device.cpp
create mode 100644 src/PulseAudioQt/device.h
create mode 100644 src/PulseAudioQt/device_p.h
create mode 100644 src/PulseAudioQt/indexedpulseobject.cpp
create mode 100644 src/PulseAudioQt/indexedpulseobject.h
create mode 100644 src/PulseAudioQt/indexedpulseobject_p.h
create mode 100644 src/PulseAudioQt/maps.cpp
create mode 100644 src/PulseAudioQt/maps.h
create mode 100644 src/PulseAudioQt/models.cpp
create mode 100644 src/PulseAudioQt/models.h
create mode 100644 src/PulseAudioQt/models_p.h
create mode 100644 src/PulseAudioQt/module.cpp
create mode 100644 src/PulseAudioQt/module.h
create mode 100644 src/PulseAudioQt/module_p.h
create mode 100644 src/PulseAudioQt/operation.cpp
create mode 100644 src/PulseAudioQt/operation.h
create mode 100644 src/PulseAudioQt/port.cpp
create mode 100644 src/PulseAudioQt/port.h
create mode 100644 src/PulseAudioQt/port_p.h
create mode 100644 src/PulseAudioQt/profile.cpp
create mode 100644 src/PulseAudioQt/profile.h
create mode 100644 src/PulseAudioQt/profile_p.h
create mode 100644 src/PulseAudioQt/pulseaudioqt_export.h
create mode 100644 src/PulseAudioQt/pulseobject.cpp
create mode 100644 src/PulseAudioQt/pulseobject.h
create mode 100644 src/PulseAudioQt/pulseobject_p.h
create mode 100644 src/PulseAudioQt/server.cpp
create mode 100644 src/PulseAudioQt/server.h
create mode 100644 src/PulseAudioQt/server_p.h
create mode 100644 src/PulseAudioQt/sink.cpp
create mode 100644 src/PulseAudioQt/sink.h
create mode 100644 src/PulseAudioQt/sink_p.h
create mode 100644 src/PulseAudioQt/sinkinput.cpp
create mode 100644 src/PulseAudioQt/sinkinput.h
create mode 100644 src/PulseAudioQt/sinkinput_p.h
create mode 100644 src/PulseAudioQt/source.cpp
create mode 100644 src/PulseAudioQt/source.h
create mode 100644 src/PulseAudioQt/source_p.h
create mode 100644 src/PulseAudioQt/sourceoutput.cpp
create mode 100644 src/PulseAudioQt/sourceoutput.h
create mode 100644 src/PulseAudioQt/sourceoutput_p.h
create mode 100644 src/PulseAudioQt/stream.cpp
create mode 100644 src/PulseAudioQt/stream.h
create mode 100644 src/PulseAudioQt/stream_p.h
create mode 100644 src/PulseAudioQt/streamrestore.cpp
create mode 100644 src/PulseAudioQt/streamrestore.h
create mode 100644 src/PulseAudioQt/streamrestore_p.h
create mode 100644 src/PulseAudioQt/volumeobject.cpp
create mode 100644 src/PulseAudioQt/volumeobject.h
create mode 100644 src/PulseAudioQt/volumeobject_p.h
delete mode 100644 src/cardwidget.cc
delete mode 100644 src/cardwidget.h
delete mode 100644 src/cardwidget.ui
delete mode 100644 src/channel.cc
delete mode 100644 src/channel.h
delete mode 100644 src/channelwidget.ui
delete mode 100644 src/devicewidget.cc
delete mode 100644 src/devicewidget.h
delete mode 100644 src/devicewidget.ui
delete mode 100644 src/elidinglabel.cc
delete mode 100644 src/elidinglabel.h
delete mode 100644 src/helper.cc
delete mode 100644 src/helper.h
create mode 100644 src/icons/checkmark.svg
create mode 100644 src/icons/mute-off.svg
create mode 100644 src/icons/mute-on.svg
create mode 100644 src/icons/none.svg
create mode 100644 src/main.cpp
create mode 100644 src/main.h
delete mode 100644 src/mainwindow.cc
create mode 100644 src/mainwindow.cpp
delete mode 100644 src/minimalstreamwidget.cc
delete mode 100644 src/minimalstreamwidget.h
delete mode 100644 src/pavucontrol-qt.desktop.in
delete mode 100644 src/pavucontrol.cc
delete mode 100644 src/pavucontrol.h
create mode 100644 src/resources.qrc
delete mode 100644 src/rolewidget.cc
delete mode 100644 src/rolewidget.h
delete mode 100644 src/sinkinputwidget.cc
delete mode 100644 src/sinkinputwidget.h
delete mode 100644 src/sinkwidget.cc
delete mode 100644 src/sinkwidget.h
create mode 100644 src/slxoutput.cpp
create mode 100644 src/slxoutput.h
create mode 100644 src/slxoutput.ui
delete mode 100644 src/sourceoutputwidget.cc
delete mode 100644 src/sourceoutputwidget.h
delete mode 100644 src/sourcewidget.cc
delete mode 100644 src/sourcewidget.h
delete mode 100644 src/streamwidget.cc
delete mode 100644 src/streamwidget.h
delete mode 100644 src/streamwidget.ui
delete mode 100644 src/translations/CMakeLists.txt
delete mode 100644 src/translations/pavucontrol-qt.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt.ts
delete mode 100644 src/translations/pavucontrol-qt_arn.ts
delete mode 100644 src/translations/pavucontrol-qt_as.ts
delete mode 100644 src/translations/pavucontrol-qt_ast.ts
delete mode 100644 src/translations/pavucontrol-qt_bg.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_bg.ts
delete mode 100644 src/translations/pavucontrol-qt_bn_IN.ts
delete mode 100644 src/translations/pavucontrol-qt_ca.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_ca.ts
delete mode 100644 src/translations/pavucontrol-qt_cs.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_cs.ts
delete mode 100644 src/translations/pavucontrol-qt_cy.ts
delete mode 100644 src/translations/pavucontrol-qt_da.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_da.ts
delete mode 100644 src/translations/pavucontrol-qt_de.ts
delete mode 100644 src/translations/pavucontrol-qt_el.ts
delete mode 100644 src/translations/pavucontrol-qt_es.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_es.ts
delete mode 100644 src/translations/pavucontrol-qt_et.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_et.ts
delete mode 100644 src/translations/pavucontrol-qt_fi.ts
delete mode 100644 src/translations/pavucontrol-qt_fr.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_fr.ts
delete mode 100644 src/translations/pavucontrol-qt_gl.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_gl.ts
delete mode 100644 src/translations/pavucontrol-qt_gu.ts
delete mode 100644 src/translations/pavucontrol-qt_he.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_he.ts
delete mode 100644 src/translations/pavucontrol-qt_hi.ts
delete mode 100644 src/translations/pavucontrol-qt_hr.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_hr.ts
delete mode 100644 src/translations/pavucontrol-qt_hu.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_hu.ts
delete mode 100644 src/translations/pavucontrol-qt_id.ts
delete mode 100644 src/translations/pavucontrol-qt_it.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_it.ts
delete mode 100644 src/translations/pavucontrol-qt_ja.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_ja.ts
delete mode 100644 src/translations/pavucontrol-qt_kn.ts
delete mode 100644 src/translations/pavucontrol-qt_ko.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_ko.ts
delete mode 100644 src/translations/pavucontrol-qt_lt.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_lt.ts
delete mode 100644 src/translations/pavucontrol-qt_ml.ts
delete mode 100644 src/translations/pavucontrol-qt_mr.ts
delete mode 100644 src/translations/pavucontrol-qt_nb_NO.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_nb_NO.ts
delete mode 100644 src/translations/pavucontrol-qt_nl.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_nl.ts
delete mode 100644 src/translations/pavucontrol-qt_oc.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_or.ts
delete mode 100644 src/translations/pavucontrol-qt_pa.ts
delete mode 100644 src/translations/pavucontrol-qt_pl.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_pl.ts
delete mode 100644 src/translations/pavucontrol-qt_pt.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_pt.ts
delete mode 100644 src/translations/pavucontrol-qt_pt_BR.ts
delete mode 100644 src/translations/pavucontrol-qt_ro.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_ro.ts
delete mode 100644 src/translations/pavucontrol-qt_ru.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_ru.ts
delete mode 100644 src/translations/pavucontrol-qt_si.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_si.ts
delete mode 100644 src/translations/pavucontrol-qt_sk.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_sk.ts
delete mode 100644 src/translations/pavucontrol-qt_sr.ts
delete mode 100644 src/translations/pavucontrol-qt_sr@latin.ts
delete mode 100644 src/translations/pavucontrol-qt_sv.ts
delete mode 100644 src/translations/pavucontrol-qt_ta.ts
delete mode 100644 src/translations/pavucontrol-qt_te.ts
delete mode 100644 src/translations/pavucontrol-qt_th.ts
delete mode 100644 src/translations/pavucontrol-qt_tr.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_tr.ts
delete mode 100644 src/translations/pavucontrol-qt_uk.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_uk.ts
delete mode 100644 src/translations/pavucontrol-qt_vi.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_zh_CN.desktop.yaml
delete mode 100644 src/translations/pavucontrol-qt_zh_CN.ts
delete mode 100644 src/translations/pavucontrol-qt_zh_TW.ts
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 75726e7..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1,18 +0,0 @@
-# remove files from deployment using `git archive`
-
-# git files
-.gitattributes export-ignore
-.github export-ignore
-.gitignore export-ignore
-
-# several files and directories we never want to export
-# a little bit belt and braces as the most of these files
-# should never ever be in the repository
-
-.*~ export-ignore
-.kdev4 export-ignore
-.translation-update export-ignore
-
-/build export-ignore
-/temp export-ignore
-/tmp export-ignore
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
deleted file mode 100644
index 9e10416..0000000
--- a/.github/ISSUE_TEMPLATE.md
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-##### Expected Behavior
-
-
-
-##### Current Behavior
-
-
-
-
-##### Possible Solution
-
-
-
-##### Steps to Reproduce (for bugs)
-
-
-1.
-2.
-3.
-4.
-
-##### Context
-
-
-
-
-##### System Information
-
-
-* Distribution & Version:
-* Kernel:
-* Qt Version:
-* libqtxdg Version:
-* lxqt-build-tools Version:
-* Package version:
diff --git a/.gitignore b/.gitignore
index c5b6a53..7263800 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+CMakeLists.txt.user
build
*~
.deps
diff --git a/.translation-update b/.translation-update
deleted file mode 100644
index f25285c..0000000
--- a/.translation-update
+++ /dev/null
@@ -1 +0,0 @@
-translations='./src'
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index 05c542b..0000000
--- a/AUTHORS
+++ /dev/null
@@ -1,9 +0,0 @@
-This is the Qt port of pavucontrol .
-
-The original authors of the gtk+ version of pavucontrol are:
-* Copyright 2006-2009 Lennart Poettering
-* Copyright 2009-2011 Colin Guthrie
-
-The Qt port pavucontrol-qt is derived from the gtk+ version.
-It's done by LXQt developers:
-* Copyright 2016 Hong Jen-Yee (PCMan)
diff --git a/CHANGELOG b/CHANGELOG
deleted file mode 100644
index d7d0180..0000000
--- a/CHANGELOG
+++ /dev/null
@@ -1,556 +0,0 @@
-pavucontrol-qt-0.17.0 / 2021-04-15
-==================================
- * Removed the unused dbus dependency.
-
-pavucontrol-qt-0.16.0 / 2020-11-01
-==================================
- * Safely iterate over card profile info array.
- * Fall back to default icon when no candidate is found.
- * Elide playback name label if needed
- * Don't force a height on progressbars.
- * Remove warnings about unused function parameters.
- * Wrapped the text of connecting error label.
-
-pavucontrol-qt-0.15.0 / 2020-04-23
-==================================
- * Bumped version to 0.15.0.
- * Avoid char raw strings literals memory allocations.
- * Don't use automatic string conversions.
- * Removed (duplicated) string casts definitions.
-
-pavucontrol-qt-0.14.1 / 2019-02-25
-==================================
-
- * Bumped version to 0.14.1
- * Only translations was changed.
-
-pavucontrol-qt-0.14.0 / 2019-01-25
-==================================
-
- * Bumped version to 0.14.0
- * Added FreeBSD installation instructions
- * Implementation fixed:
- - Some code modernizations like range based loops,
- auto declared iterators and use of nullptr
- - Don't use automatic string conversions
- - Remove unused Makefile.am
- - Treat the 'off' card profile specifically
- - Mainwindow: Don't use deprecated libpulse members
- * Improved cmake scripting
- - Set cmake_minimum_required to 3.1.0
- - Removed locale compile definitons
- * Moved translations from lxqt-l10n back to pavucontrol-qt
- - Removed obsolete translation fuctionality
- - Added translation promo in README.md
- * Translation updates
-
-pavucontrol-qt-0.4.0 / 2018-05-21
-=================================
-
- * Bumped minor version to 4
- * Spanish translation update
- * Qt5.11 beta: xxxwidget: include QAction explicitely
- * CMake: Prevent in-source builds
- * build: Use pkg-config's *_LDFLAGS
- * fix http -> https
- * Fixed mentions of LXDE
- * pavucontrol: Remove unique application constraint
- * Add Simplified Chinese desktop entry
-
-pavucontrol-qt-0.3.0 / 2017-09-24
-=================================
-
- * Release 0.3.0: Update changelog
- * Bump version to 0.3.0
- * correct spelling mistake
- * Added Lithuanian .desktop file
- * liblxqt make no sense here
- * Copied issue template
- * set Qt::AA_UseHighDpiPixmaps to true
- * Added version to cli options
- * Added default CMAKE_BUILD_TYPE and versioning
- * added pl.desktop
- * ui: Use "changes-prevent-symbolic" icon
- * MainWindow: Remove old GTK remnants
- * Add Catalan translation
- * Channel: Add slider snapping to 100%
- * Channel: Address compiler warnings
- * Channel: Align slider controls correclty
- * Channel: Add ticks to volume slider
- * Channel: Use percentage for volume scale
- * devicewidgte: Re-add device renaming
- * MainWindow: Force using the size from previous run
- * MainWindow: Add quit shortcut
- * Added pavucontrol-qt_da.desktop
-
-pavucontrol-qt-0.2.0 / 2016-12-11
-=================================
-
- * Release 0.2.0: Update changelog
- * Release 0.2.0: Update changelog
- * Use QSettings for storing configuration
- * Create pavucontrol-qt_pt.desktop
- * Use the new lxqt-build-tools package
- * - Add a simple single instance controller to avoid run multiple simultaneous applications
- * Use same approach as avidemux
- * Simply differentiate the namnig to avoid menu duplication
- * CMakeLists: Remove XdgUserDirs requirement
- * mainwindow: Set icon for eventRoleWidget
-
-pavucontrol-qt-0.1.0 / 2016-09-24
-=================================
-
- * Release 0.1.0: Add changelog
- * devicewidget: Remove debug
- * Address compiler warnings
- * streamwidget: Fix specific termination text
- * Re-add support for changing source output
- * streamwidget: Re-add "Terminate" context menu
- * Re-add support for changing sink input
- * ui: Lock channels by default
- * ui: Enable sink's advanced options only if digital
- * ui: Condense device advanced settings
- * ui: Align titles left
- * ui: Use "changes-prevent" icon for "Lock channels.."
- * ui: Don't stretch content horizontaly
- * ui: Simplify peak bar
- * channels: Align channel sliders
- * Add README.md
- * devicewidget: Set the PCM encoding always enabled
- * Properly install pavucontrol-qt.desktop file.
- * Prevent recursive signal handler invocation. * Replace some push buttons with tool buttons.
- * Add authors information.
- * Remove glibmm dependency.
- * Fix translations.
- * Replace GNU gettext with Qt tr() in all places.
- * Add missing ui files to CMakeLists.txt
- * Trivial fix for Timeout handlers.
- * Porting to Qt 5 - Finish the basic UI.
- * Make all source code compile with Qt5.
- * Port DeviceWidget and ChannelWidget to Qt5.
- * Add missing file.
- * Fix broken combo box in CardWidget. Remove unused code.
- * Port the sound card configuration page to Qt.
-
-start-qt / 2016-08-31
-=====================
-
- * Start working on a Qt5 port.
- * mainwindow: force icons to have sane size
- * Add checkbutton for disabling volume meters
- * .gitignore: add compile
- * mainwindow: Don't add a border on the outermost vbox
- * build-sys: Add m4 file for AX_CXX_COMPILE_STDCXX_11
- * doc: Update link to git repository
- * build-sys: Use C++11 for building
- * Remove Encoding key from .desktop file
- * i18n: improve one Italian string
- * i18n: Some fixes for the Italian translation
- * Add --version command line option
- * build-sys: Depend on libpulse >= 5.0
- * mainwindow: unavailable profiles are marked as such in their description
- * i18n: Updated Polish translation
- * build-sys: Release pavucontrol 3.0
- * doc: Adapt the sed expression for cleaning up links
- * build-sys: Don't dist m4/ChangeLog
- * build-sys: Fix README building
- * mainwindow: Remember device visibility selections
- * devicewidget, streamwidget: Show only one volume slider when channels are locked
- * mainwindow: Catch Gdk::PixbufError
- * Handle IO errors in icon setting code
- * Don't crash if pa_stream_peek returns NULL
- * Do not instantiate cardwidget, devicewidget and rolewidget with a type of EventBox
- * Reference the widget before returning it from ::create methods
- * Add horizontal scrollbars automatically
- * Add TRANSLATORS_README.txt
- * Add a --maximize command line option
- * pavucontrol: ellipsize labels to fix window resizing
- * build-sys: Use autoreconf in bootstrap.sh
- * sinkwidget: add support for AAC pass-through
- * added back support for gtkmm-2.4 builds
- * build-sys: Drop ChangeLog generation from git
- * build-sys: Prepare for a 2.0 release
- * sinkwidget: Move format selection options to 'Advanced' expander
- * devicewidget: Move latency offset into an expander
- * mainwindow: Fix iterator dereferencing style.
- * mainwindow: Show the availability of the ports and profiles.
- * mainwindow: Don't clear the "updating" flag in updateCard() too early.
- * Enable Automake's silent-rules option.
- * Add a few known peak-detect stream clients to a source-output blacklist
- * devicewidget: Add a latency offset spinbutton
- * sink/sourcewidget: Move the index and card_index to the devicewidget
- * cardwidget: Add a port class
- * bootstrap: Enable the pre-commit hook.
- * gitignore: Add *.swp.
- * Add --retry command line option
- * Fix theme under gtk3
- * build-sys: Prepare 1.0
- * build-sys: Switch to the tar-ustar format (as per a lot of GNOME stuff for 3.2) and distribute .xz files.
- * i18n: Add devicewidget to POTFILES.in
- * source: Only autosuspend network sources
- * build-sys: Prepare 0.99.2
- * Update device format stuff for (pre-release) API changes.
- * Check if PA_SINK_SET_FORMATS is defined before using it
- * Use sink flags to figure out if we can set formats
- * Add UI to select the formats supported by the receiver attached to a digitial sink
- * build-sys: Prepare 0.99.1
- * Fix strange vertical alignment of sinks/source/cards
- * Fix GTK Warnings under GTK3 due to combo box sizes
- * source-output: We will officially support source output volumes in 0.99
- * source-output: Don't set the channel map for the SO if we do not support SO volumes.
- * sink: Oops. I didn't mean to comment this out in the previous commit.
- * stream-volumes: Support source-output volume controls now available in PA.
- * i18n: Fix markup error in de translation.
- * Handle simple key events.
- * Deal more gracefully with disconnections.
- * Add support for gtkmm-3.0 and prefer it over gtkmm-2.* by default.
- * Ensure the marker for base volume is set on all channels.
- * volume: Don't bother setting the steps.
- * volume: Support volumes up to 11.
- * ui: Remove ellipsize attribute from some labels (causes ellipsis to be displayed rather than real text)
- * ui: Resave glade file without any changes to tidy it up
- * Drop the need to use libglademm
- * Add DONT_INHIBIT_AUTO_SUSPEND flag to monitor streams
- * source-outputs: Source outputs do not support volume control, so hide the mute and lock channels buttons
- * main: Format string fixes
- * main: Add a --tab command line argument to force a given tab to be displayed.
- * mainwindow: Fix clearing out of clients
- * mainwindow: Save/restore window size
- * mainwindow: Compact iterator decls
- * main: Cleanup labels after connection rework
- * source-outputs: Fix a bug where the 'no streams' label is sometimes shown along with the actual widget.
- * connection: Show a nice label when connecting to PA.
- * main: Automatically reconnect to PA upon disconnection
- * mainwindow: Add a method to remove all widgets (e.g. on disconnect)
- * streamwidget: Fix a compile warning.
- * Split out the creation of the PA context a little.
- * glade: ellipsize user supplied text strings
- * Allow for the sink input peak detect to survive across sink moves.
- * Update for the latest incarnation of module-device-manager
- * Use the correct update mode for device-restore database write
- * Add support for the device-manager module.
- * build-sys: prepare 0.9.10
- * add ja to LINGUAS
- * run make update-po
- * Sending translation for Hungarian
- * volume: Set the scale properly for delta changes via mouse/keyboard.
- * events: Hide output streams with a stream restore designator for the event widget.
- * Sending translation for Czech
- * Sending translation for Kannada
- * Sending translation for Japanese
- * Sending translation for French
- * Sending translation for Brazilian Portuguese
- * Sending translation for Hindi
- * Sending translation for Slovak
- * Require at least PulseAudio 0.9.16.
- * Sending translation for Danish
- * Sending translation for Portuguese
- * Sending translation for Serbian (Latin)
- * Sending translation for Serbian
- * Sending translation for Finnish
- * Sending translation for German
- * Sending translation for Ukrainian
- * build-sys: require at least gtkmn 2.16
- * Add missing source file to POTFILES.in.
- * Sending translation for Catalan
- * Sending translation for Polish
- * Sending translation for Spanish
- * Sending translation for Oriya
- * Sending translation for Dutch
- * Sending translation for po/ja.po
- * Sending translation for Telugu
- * Sending translation for Bengali (India)
- * Sending translation for Hindi
- * Sending translation for Marathi
- * Sending translation for Tamil
- * Sending translation for Malayalam
- * Sending translation for Gujarati
- * Sending translation for Malayalam
- * Sending translation for Punjabi
- * i18n: run make update-po
- * i18n: drop ko.po since it does not include a single translated string
- * Prepare 0.9.9 relase
- * drop reference to beepDevice
- * Sending translation for Tamil
- * Sending translation for Finnish
- * Sending translation for po/LINGUAS
- * fix event sound generation for volume changes
- * only assume that the minimal volume is silence for devices that can do dB volumes
- * use fallback icon scheme for stream icons, too
- * Sending translation for po/uk.po
- * Sending translation for po/ko.po
- * Sending translation for Swedish
- * Sending translation for Hungarian
- * glade: minor alignment fixes
- * Restructure the class inheritance a bit.
- * Rename event method to be more indicative of what it does.
- * Rename a variable to make it more generic
- * Add support for changing ports.
- * Don't use a hyperlink to display the device, just use a regular button.
- * Do not disable the default button when it's set.
- * Hide the terminate button.
- * More changes in the UI to try and make things neater.
- * Create the event role widget early so that it's always top of the list.
- * Change 'Default' to 'Use as fallback'
- * Move the setBaseVolume()/setSteps() methods to devicewidget (problem found after rebasing)
- * Include config.h in the cc file (after rebase)
- * Add a tooltip
- * Wire up all the new UI code.
- * Wire up the default toggle button (replaces the old menu)
- * Hook up the device combo box on change event
- * Remove the 'Default [Out|In]put' option from the combo for now.
- * Set the correct combo index for display purposes
- * Record in a map the combobox indexes vs. the sink/source indexes
- * Add setter/getter methods for sink/source indexes so we can update our combo boxes current item
- * Remove the kill menu item now we have a dedicated button
- * Wire up the terminate button
- * Set the pack_start on the deviceCombo
- * Set the mainwindow pointer via an init() method rather than directly via public member variable.
- * Adapt to new UI
- * Rebase the sink/source widgets on the device widget
- * Create a devicewidget based on streamwidget.
- * Glade UI changes. Code still needs to be updated
- * update po/
- * make sure that two card profiles with the same priority don't collide with each other
- * don't abort when icon is missing from the theme
- * Fix my name.
- * Sending translation for Punjabi
- * Sending translation for po/hi.po
- * Sending translation for Punjabi
- * Sending translation for Punjabi
- * Sending translation for Bengali (India)
- * Sending translation for Malayalam
- * Sending translation for Slovak
- * Sending translation for po/sr@latin.po
- * Sending translation for Serbian
- * Sending translation for French
- * Sending translation for French
- * Sending translation for Portuguese
- * Sending translation for Czech
- * Sending translation for Assamese
- * Sending translation for po/ru.po
- * Sending translation for Italian
- * Sending translation for Brazilian Portuguese
- * Sending translation for French
- * Sending translation for German
- * Sending translation for Danish
- * Sending translation for Dutch
- * Sending translation for Polish
- * Sending translation for Telugu
- * Sending translation for Marathi
- * Sending translation for Gujarati
- * Sending translation for Oriya
- * Sending translation for Kannada
- * Sending translation for Spanish
- * fix year
- * update screenshot
- * fix POTFILES.in
- * update README
- * bump version
- * don't show failure msgbox twice
- * reenable monitor streams
- * sort LINGUAS
- * add missing languages to LINGUAS
- * run make update-po
- * Sending translation for Portuguese
- * Sending translation for Portuguese
- * Sending translation for Polish
- * Sending translation for Assamese
- * don't show wait cursor forever if stream_restore extension is not available
- * Sending translation for po/LINGUAS
- * Sending translation for Portuguese
- * Sending translation for po/bn_IN.po
- * Sending translation for po/ta.po
- * Sending translation for po/as.po
- * Sending translation for po/te.po
- * Sending translation for po/kn.po
- * Sending translation for po/gu.po
- * Sending translation for po/sr@latin.po
- * Sending translation for Serbian
- * Sending translation for Portuguese
- * Sending translation for Serbian
- * Sending translation for Finnish
- * Sending translation for po/da.po
- * Sending translation for Dutch
- * Sending translation for po/mr.po
- * Sending translation for Portuguese
- * Sending translation for Portuguese
- * Sending translation for po/pt.po
- * Sending translation for po/or.po
- * Sending translation for Slovak
- * Sending translation for po/ml.po
- * Sending translation for po/it.po
- * Sending translation for Chinese (Simplified)
- * Order the card profiles by their priority
- * Silence a warning
- * Sending translation for Hungarian
- * configure steps for scales
- * visualize base volume
- * Updated catalan po
- * Shuffle some headers around a bit so that some systems don't have build errors
- * Use C style comments as per Lennart's fetish :p
- * Move config.h inclusion to the .cc files
- * Split mainwindow into it's own files.
- * Split rolewidget into it's own files.
- * Split sourceoutputwidget out into it's own files.
- * Split sinkinputwidget into it's own files.
- * Split sourcewidget into it's own files.
- * Split sinkwidget into it's own files.
- * Split cardwidget out into it's own files.
- * Move common setup into a shared header
- * Split out streamwidget into it's own files.
- * Split channelwidget into separate files. Also separate out the definition of streamwidget into it's own header
- * Include config.h in minimalstreamwidget.h
- * Split the minimalstreamwidget into it's own file
- * Updated Thai translation
- * Adding Punjabi (pa) Language to LINGUAS
- * updated Spanish translation
- * Remove the minimalStreamWindow. It's no longer used
- * Updated Polish translation
- * use the server provided icons
- * Initialise our dropdown at contruction and just repopulate it when the cardinfo callback is received
- * various small glade updates
- * fix version of libcanberra dependency, fixes PA bug #494
- * Fix the number of outstanding operations.
- * Typo: spell configuration right
- * Add a new widget for the card configuration and use it.
- * Create a new 'Configuration' tab
- * Silence some warnings
- * Initial support for changing card profiles.
- * run make update-po
- * Add 'Mixer' categorization to .desktop file
- * deal with non-initialized data from m-s-r
- * Punjabi translation for Module: A S Alam
- * Add fi (Finnish) to LINGUAS.
- * Add Finnish (fi) translation by Timo Jyrinki.
- * Added zh_CN to LINGUAS
- * Add zh_CN.po
- * Added sr and sr@latin to LINGUAS
- * Initial Serbian Latin translation
- * Initial Serbian translation
- * Updated LINGUAS
- * LINGUAS: Added cs.
- * Added Czech translation.
- * updated spanish translation
- * Added tr to LINGUAS
- * Added Turkish Translation
- * remove debug output
- * Added ca locale
- * Add sk to LINGUAS
- * First Slovak translation.
- * Updated Greek translation
- * Added catalan po
- * Add pt_BR to LINGUAS
- * Initial Brazilian Portuguese translation
- * Add nl to LINGUAS
- * Initial Dutch translation by Reinout van Schouwen
- * Updated de translation with input from gnome-de (thanks Hendrik Richter).
- * prepare release 0.9.7
- * initialize maximum buffer length to automatic value (uint32_t) -1 instead of smallest value 0
- * Updated de translation with input from gnome-de (thanks andre klapper).
- * Added sv to LINGUAS.
- * Added Swedish translation.
- * Updated Polish translation
- * Added el, fr, hu, pl to LINGUAS
- * Initial German translation
- * Added Hungarian translation
- * Updated French translation
- * Initial Polish translation
- * Started Greek translation
- * beep when changing volume
- * Install README files in doc/html directories.
- * Make use of common ZP_LYNX_DOC macro.
- * Create m4 directory, and set it up.
- * Bump autoconf requirement to 2.62 (latest released version).
- * Remove gettext macro, the package uses intltool instead.
- * improve german translation
- * add basic german translation
- * internationalize pavucontrol.cc
- * hide .desktop file from git
- * add i18n
- * generate changelog from git history
- * use system installed glade file
- * update license headers for GPL 2.0+
- * update bootstrap.sh a bit
- * add a special track for controlling event sound volume
- * bump required version
- * fix glade widget name case
- * hide tarballs from git
- * change 'git' tag in tarball name to 'svn'
- * bump revision
- * bump deps
- * remove $Id$
- * add gitignore
- * fix a typo spotted by Romain Tartière
- * Make icons work
- * show stream icons, don't show our own monitor streams, initialize client proplist properly
- * add volume meter support to each sink/source/record stream
- * more intelligent initial page selection
- * Also point the minimalStreamWindow downward
- * move no_xxx labels in the middle of the dialogs
- * properly initialize source output type dropdown; show string for record streams properly
- * switch to sink page by default if no streams are active
- * unclutter UI, remove redundant hint bar
- * show volume in decibel
- * Remove the white header, drop all references to PulseAudio to become a more normal program
- * move the lock/mute buttons to the same spot as the menu buttons
- * Merge patch from sjoerd that adds a new panel for listing recording streams, and makes the menu more visible by adding a button for it
- * prepare next pavucontrol release
- * don't crash if server has no default sink/source set
- * show radio buttons for the the sink menu items
- * prepare next release
- * add changelog to tarball
- * make stream title selectable, Closes #140 in pa trac
- * add option to kill a stream to popup menu
- * add popup menu to sink/source view to choose default device
- * use pretty channel names
- * add a combobox to the streams page, to filter application streams
- * Don't pass the button index to popup() for the GtkMenu to avoid strange GTK behaviour in newer versions. Identified by coling
- * add fedora-snapshot target
- * bump deps
- * support muting sink inputs, avoid duplicate events
- * fix button tooltips
- * fix lock icon
- * minor tweaks
- * Fix license mess: change everything to GPL
- * fix typo
- * update docs for 0.9.5
- * bump requirements
- * add lightbulb
- * - add new option "All Except Monitor Sources" to sources option menu - show a nice hint that one can right click on a stream
- * use the sink descripion instead of the name for the stream popup menu
- * In times where the sink/source names are generated from HAL UDIs don't show the cryptic device name any more
- * optimize redraw a little
- * add popup menu to stream list, allowing "hot" moving of playback streams between sinks
- * add focus target
- * show an watch cursor while loading device data
- * add combobox to show only a subset of sinks/sources, replacing the old monitor expander
- * prepare release 0.9.3
- * bump version
- * Make jhbuild happy by adding a file autgen.sh
- * show client name only if we have it
- * prepare 0.9.2 release
- * include config.h properly
- * s/polyp/pulse/ in README
- * s/polyp/pulse/g
- * update docs for 0.9.1
- * bump version number to 0.9.1
- * actually ship the .desktop file
- * use gtk_widget_queue_redraw() to try to workaround an issues that the sources are not shown
- * Add .desktop file.
- * set icon for the main window
- * use some icons from the icon spec
- * minor updates
- * prepare release 0.9.0
- * Show client name for playback streams
- * change scale behaviour to be more resposive * make "Streams" page the default
- * bump version number for polypaudio 0.9.0
- * bump for polypadio 0.8.1
- * make SIGPIPE warning disappear
- * fix glade file path
- * add screenshot for website
- * build system updates
- * add coumentation and license
- * show proper message boxes in case of error instead of printing just to STDERR
- * initial commit
- * Create trunk directory
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2c83719..0a4d476 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.10.0 FATAL_ERROR)
# CMP0000: Call the cmake_minimum_required() command at the beginning of the top-level
# CMakeLists.txt file even before calling the project() command.
# The cmake_minimum_required(VERSION) command implicitly invokes the cmake_policy(VERSION)
@@ -6,8 +6,6 @@ cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
# versions.
project(pavucontrol-qt)
-option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF)
-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -18,31 +16,24 @@ set(CMAKE_AUTOUIC ON)
include(GNUInstallDirs)
# Minimum Versions
-set(GLIB_MINIMUM_VERSION "2.50.0")
-set(LXQTBT_MINIMUM_VERSION "0.4.0")
set(QT_MINIMUM_VERSION "5.9.5")
-find_package(Qt5Widgets ${QT_MINIMUM_VERSION} REQUIRED)
-find_package(Qt5LinguistTools ${QT_MINIMUM_VERSION} REQUIRED)
-find_package(lxqt-build-tools ${LXQTBT_MINIMUM_VERSION} REQUIRED)
+find_package(PkgConfig REQUIRED)
-find_package(GLIB ${GLIB_MINIMUM_VERSION} REQUIRED)
+pkg_check_modules(LIBPULSE libpulse REQUIRED IMPORTED_TARGET)
+pkg_check_modules(LIBPULSE_MAINLOOP libpulse-mainloop-glib REQUIRED IMPORTED_TARGET)
-set(PAVUCONTROLQT_MAJOR_VERSION 0)
-set(PAVUCONTROLQT_MINOR_VERSION 17)
+set(PAVUCONTROLQT_MAJOR_VERSION 1)
+set(PAVUCONTROLQT_MINOR_VERSION 0)
set(PAVUCONTROLQT_PATCH_VERSION 0)
set(PAVUCONTROLQT_VERSION ${PAVUCONTROLQT_MAJOR_VERSION}.${PAVUCONTROLQT_MINOR_VERSION}.${PAVUCONTROLQT_PATCH_VERSION})
add_definitions("-DPAVUCONTROLQT_VERSION=\"${PAVUCONTROLQT_VERSION}\"")
-include(LXQtPreventInSourceBuilds)
-include(LXQtCompilerSettings NO_POLICY_SCOPE)
-include(LXQtTranslate)
-
-find_package(PkgConfig REQUIRED)
-pkg_check_modules(
- PULSE REQUIRED
- libpulse>=5.0
- libpulse-mainloop-glib>=0.9.16
-)
+#find_package(PkgConfig REQUIRED)
+#pkg_check_modules(
+# PULSE REQUIRED
+# libpulse>=5.0
+# libpulse-mainloop-glib>=0.9.16
+#)
add_subdirectory(src)
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index d511905..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program 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.
-
- This program 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 this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- , 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/README.md b/README.md
deleted file mode 100644
index 11e3337..0000000
--- a/README.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# pavucontrol-qt
-
-## Overview
-
-pavucontrol-qt is the Qt port of volume control [pavucontrol](https://freedesktop.org/software/pulseaudio/pavucontrol/) of sound server [PulseAudio](https://www.freedesktop.org/wiki/Software/PulseAudio/).
-
-As such it can be used to adjust all controls provided by PulseAudio as well as some additional settings.
-
-The software belongs to the LXQt project but its usage isn't limited to this desktop environment.
-
-## Installation
-
-### Compiling source code
-
-Runtime dependencies are qtbase and PulseAudio client library libpulse.
-Additional build dependencies are CMake and [liblxqt](https://github.com/lxqt/liblxqt) as well as optionally Git to pull latest VCS checkouts. The localization files were outsourced to repository [lxqt-l10n](https://github.com/lxqt/lxqt-l10n) so the corresponding dependencies are needed, too. Please refer to this repository's `README.md` for further information.
-
-Code configuration is handled by CMake. CMake variable `CMAKE_INSTALL_PREFIX` has to be set to `/usr` on most operating systems.
-
-To build run `make`, to install `make install` which accepts variable `DESTDIR` as usual.
-
-### Binary packages
-
-On Arch Linux the package [pavucontrol-qt](https://www.archlinux.org/packages/community/x86_64/pavucontrol-qt/) can be used and [pavucontrol-qt-git](https://aur.archlinux.org/packages/pavucontrol-qt-git/) is to build current checkouts of branch `master`.
-
-On FreeBSD the binary package is available as [pavucontrol-qt](https://www.freshports.org/audio/pavucontrol-qt/) and can be installed with `pkg install pavucontrol-qt`.
-
-#### Debian
-
-Package `pavucontrol-qt` is available in the official repositories as of Debian buster.
-
-#### Fedora
-
-Package `pavucontrol-qt` is available in the official repositories as of Fedora 31.
-
-#### OpenSuse
-
-Package `pavucontrol-qt` is available in the official repositories as of openSUSE Leap:15.2
-
-
-
-
-## Usage
-
-In LXQt sessions the binary is placed in sub-menu "Sound & Video" of the panel's main menu.
-
-The usage itself should be self-explanatory.
-
-
-## Translations
-
-Translations can be done in [LXQt-Weblate](https://translate.lxqt-project.org/projects/lxqt-configuration/pavucontrol-qt/).
-
-
-
-
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7e4effe..d7ff79a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,67 +1,43 @@
-include_directories(
- ${PULSE_INCLUDE_DIRS}
- ${GLIB_INCLUDE_DIRS}
-)
+#include_directories(
+# ${PULSE_INCLUDE_DIRS}
+# ${GLIB_INCLUDE_DIRS}
+#)
+
+add_subdirectory(PulseAudioQt)
+
+find_package(Qt5Widgets ${QT_MINIMUM_VERSION} REQUIRED)
+find_package(Qt5Core ${QT_MINIMUM_VERSION} REQUIRED)
+#find_package(Qt5LinguistTools ${QT_MINIMUM_VERSION} REQUIRED)
set(pavucontrol-qt_HDRS
- pavucontrol.h
+ main.h
mainwindow.h
- cardwidget.h
- channel.h
- devicewidget.h
- minimalstreamwidget.h
- rolewidget.h
- sinkinputwidget.h
- sinkwidget.h
- sourceoutputwidget.h
- sourcewidget.h
- streamwidget.h
- elidinglabel.h
- helper.h
+ slxoutput.h
)
set(pavucontrol-qt_SRCS
- pavucontrol.cc
- mainwindow.cc
- cardwidget.cc
- channel.cc
- devicewidget.cc
- minimalstreamwidget.cc
- rolewidget.cc
- sinkinputwidget.cc
- sinkwidget.cc
- sourceoutputwidget.cc
- sourcewidget.cc
- streamwidget.cc
- elidinglabel.cc
- helper.cc
+ main.cpp
+ mainwindow.cpp
+ slxoutput.cpp
)
set(pavucontrol-qt_UI
- cardwidget.ui
- devicewidget.ui
mainwindow.ui
- streamwidget.ui
+ slxoutput.ui
)
-# Translations
+qt5_add_resources(pavucontrol-qt_RCS resources.qrc)
add_executable(pavucontrol-qt
${pavucontrol-qt_SRCS}
- ${pavucontrol-qt_QM_FILES}
- ${pavucontrol-qt_QM_LOADER}
- ${DESKTOP_FILES}
-)
-set_property(
- TARGET pavucontrol-qt APPEND
- PROPERTY COMPILE_DEFINITIONS
- PAVUCONTROL_QT_DATA_DIR="${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}"
+ ${pavucontrol-qt_RCS}
)
+# ${PULSE_LDFLAGS}
+# ${GLIB_LDFLAGS}
target_link_libraries(pavucontrol-qt
Qt5::Widgets
- ${PULSE_LDFLAGS}
- ${GLIB_LDFLAGS}
+ KF5PulseAudioQt
)
install(TARGETS
diff --git a/src/PulseAudioQt/CMakeLists.txt b/src/PulseAudioQt/CMakeLists.txt
new file mode 100644
index 0000000..7578983
--- /dev/null
+++ b/src/PulseAudioQt/CMakeLists.txt
@@ -0,0 +1,49 @@
+add_library(KF5PulseAudioQt STATIC)
+
+project(PulseAudioQt)
+
+find_package(Qt5DBus ${QT_MINIMUM_VERSION} REQUIRED)
+find_package(Qt5Core ${QT_MINIMUM_VERSION} REQUIRED)
+find_package(Qt5Gui ${QT_MINIMUM_VERSION} REQUIRED)
+
+target_sources(KF5PulseAudioQt PRIVATE
+ card.cpp
+ cardport.cpp
+ client.cpp
+ context.cpp
+ device.cpp
+ maps.cpp
+ operation.cpp
+ port.cpp
+ profile.cpp
+ models.cpp
+ pulseobject.cpp
+ sink.cpp
+ sinkinput.cpp
+ source.cpp
+ sourceoutput.cpp
+ stream.cpp
+ volumeobject.cpp
+ server.cpp
+ streamrestore.cpp
+ module.cpp
+ indexedpulseobject.cpp
+)
+
+target_link_libraries(KF5PulseAudioQt
+ PUBLIC
+ Qt5::Core
+ PRIVATE
+ Qt5::Gui
+ Qt5::DBus
+ PkgConfig::LIBPULSE
+ PkgConfig::LIBPULSE_MAINLOOP
+)
+
+#target_include_directories(KF5PulseAudioQt INTERFACE "$" )
+
+#set_target_properties(KF5PulseAudioQt PROPERTIES VERSION ${PULSEAUDIOQT_VERSION}
+# SOVERSION ${PULSEAUDIOQT_SOVERSION}
+# EXPORT_NAME PulseAudioQt
+#)
+
diff --git a/src/PulseAudioQt/Card b/src/PulseAudioQt/Card
new file mode 100644
index 0000000..c618865
--- /dev/null
+++ b/src/PulseAudioQt/Card
@@ -0,0 +1 @@
+#include "card.h"
diff --git a/src/PulseAudioQt/CardPort b/src/PulseAudioQt/CardPort
new file mode 100644
index 0000000..71e4307
--- /dev/null
+++ b/src/PulseAudioQt/CardPort
@@ -0,0 +1 @@
+#include "cardport.h"
diff --git a/src/PulseAudioQt/Client b/src/PulseAudioQt/Client
new file mode 100644
index 0000000..f679c0d
--- /dev/null
+++ b/src/PulseAudioQt/Client
@@ -0,0 +1 @@
+#include "client.h"
diff --git a/src/PulseAudioQt/Context b/src/PulseAudioQt/Context
new file mode 100644
index 0000000..7e33fb6
--- /dev/null
+++ b/src/PulseAudioQt/Context
@@ -0,0 +1 @@
+#include "context.h"
diff --git a/src/PulseAudioQt/Device b/src/PulseAudioQt/Device
new file mode 100644
index 0000000..155c911
--- /dev/null
+++ b/src/PulseAudioQt/Device
@@ -0,0 +1 @@
+#include "device.h"
diff --git a/src/PulseAudioQt/IndexedPulseObject b/src/PulseAudioQt/IndexedPulseObject
new file mode 100644
index 0000000..491cb42
--- /dev/null
+++ b/src/PulseAudioQt/IndexedPulseObject
@@ -0,0 +1 @@
+#include "indexedpulseobject.h"
diff --git a/src/PulseAudioQt/Messages.sh b/src/PulseAudioQt/Messages.sh
new file mode 100644
index 0000000..fd6430e
--- /dev/null
+++ b/src/PulseAudioQt/Messages.sh
@@ -0,0 +1,4 @@
+#! /usr/bin/env bash
+$EXTRACTRC *.ui >> rc.cpp
+$XGETTEXT `find . -name \*.qml -o -name \*.cpp` -o $podir/kcm_pulseaudio.pot
+rm -f rc.cpp
diff --git a/src/PulseAudioQt/Models b/src/PulseAudioQt/Models
new file mode 100644
index 0000000..4925970
--- /dev/null
+++ b/src/PulseAudioQt/Models
@@ -0,0 +1 @@
+#include "models.h"
diff --git a/src/PulseAudioQt/Module b/src/PulseAudioQt/Module
new file mode 100644
index 0000000..0275ca9
--- /dev/null
+++ b/src/PulseAudioQt/Module
@@ -0,0 +1 @@
+#include "module.h"
diff --git a/src/PulseAudioQt/Port b/src/PulseAudioQt/Port
new file mode 100644
index 0000000..877e571
--- /dev/null
+++ b/src/PulseAudioQt/Port
@@ -0,0 +1 @@
+#include "port.h"
diff --git a/src/PulseAudioQt/Profile b/src/PulseAudioQt/Profile
new file mode 100644
index 0000000..5b20bae
--- /dev/null
+++ b/src/PulseAudioQt/Profile
@@ -0,0 +1 @@
+#include "profile.h"
diff --git a/src/PulseAudioQt/PulseObject b/src/PulseAudioQt/PulseObject
new file mode 100644
index 0000000..4189e21
--- /dev/null
+++ b/src/PulseAudioQt/PulseObject
@@ -0,0 +1 @@
+#include "pulseobject.h"
diff --git a/src/PulseAudioQt/Server b/src/PulseAudioQt/Server
new file mode 100644
index 0000000..bce425e
--- /dev/null
+++ b/src/PulseAudioQt/Server
@@ -0,0 +1 @@
+#include "server.h"
diff --git a/src/PulseAudioQt/Sink b/src/PulseAudioQt/Sink
new file mode 100644
index 0000000..9d8afe8
--- /dev/null
+++ b/src/PulseAudioQt/Sink
@@ -0,0 +1 @@
+#include "sink.h"
diff --git a/src/PulseAudioQt/SinkInput b/src/PulseAudioQt/SinkInput
new file mode 100644
index 0000000..c6f8760
--- /dev/null
+++ b/src/PulseAudioQt/SinkInput
@@ -0,0 +1 @@
+#include "sinkinput.h"
diff --git a/src/PulseAudioQt/Source b/src/PulseAudioQt/Source
new file mode 100644
index 0000000..a5c5313
--- /dev/null
+++ b/src/PulseAudioQt/Source
@@ -0,0 +1 @@
+#include "source.h"
diff --git a/src/PulseAudioQt/SourceOutput b/src/PulseAudioQt/SourceOutput
new file mode 100644
index 0000000..7a9e223
--- /dev/null
+++ b/src/PulseAudioQt/SourceOutput
@@ -0,0 +1 @@
+#include "sourceoutput.h"
diff --git a/src/PulseAudioQt/Stream b/src/PulseAudioQt/Stream
new file mode 100644
index 0000000..65e61e9
--- /dev/null
+++ b/src/PulseAudioQt/Stream
@@ -0,0 +1 @@
+#include "stream.h"
diff --git a/src/PulseAudioQt/StreamRestore b/src/PulseAudioQt/StreamRestore
new file mode 100644
index 0000000..f775c8c
--- /dev/null
+++ b/src/PulseAudioQt/StreamRestore
@@ -0,0 +1 @@
+#include "streamrestore.h"
diff --git a/src/PulseAudioQt/VolumeObject b/src/PulseAudioQt/VolumeObject
new file mode 100644
index 0000000..2f0c160
--- /dev/null
+++ b/src/PulseAudioQt/VolumeObject
@@ -0,0 +1 @@
+#include "volumeobject.h"
diff --git a/src/PulseAudioQt/card.cpp b/src/PulseAudioQt/card.cpp
new file mode 100644
index 0000000..122ce33
--- /dev/null
+++ b/src/PulseAudioQt/card.cpp
@@ -0,0 +1,168 @@
+/*
+ SPDX-FileCopyrightText: 2014-2015 Harald Sitter
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#include "card.h"
+#include "card_p.h"
+#include "debug.h"
+
+#include "context.h"
+#include "indexedpulseobject_p.h"
+#include "port_p.h"
+#include "profile_p.h"
+
+namespace PulseAudioQt
+{
+Card::Card(QObject *parent)
+ : IndexedPulseObject(parent)
+ , d(new CardPrivate(this))
+{
+ connect(Context::instance(), &Context::sinkAdded, this, &Card::sinksChanged);
+ connect(Context::instance(), &Context::sinkRemoved, this, &Card::sinksChanged);
+
+ connect(Context::instance(), &Context::sourceAdded, this, &Card::sourcesChanged);
+ connect(Context::instance(), &Context::sourceRemoved, this, &Card::sourcesChanged);
+}
+
+Card::~Card()
+{
+ delete d;
+}
+
+CardPrivate::CardPrivate(Card *q)
+ : q(q)
+{
+}
+
+CardPrivate::~CardPrivate()
+{
+}
+
+void CardPrivate::update(const pa_card_info *info)
+{
+ q->IndexedPulseObject::d->updatePulseObject(info);
+ q->PulseObject::d->updateProperties(info);
+ m_description = q->PulseObject::d->m_properties.value(QLatin1String(PA_PROP_DEVICE_DESCRIPTION), QString()).toString();
+
+ QStringList newProfiles;
+ QStringList existingProfiles;
+
+ for (const Profile *profile : qAsConst(m_profiles)) {
+ existingProfiles << profile->name();
+ }
+
+ for (auto **it = info->profiles2; it && *it != nullptr; ++it) {
+ const QString name = QString::fromUtf8((*it)->name);
+ newProfiles << name;
+ Profile *profile = nullptr;
+ if (existingProfiles.contains(name)) {
+ profile = m_profiles[existingProfiles.indexOf(name)];
+ } else {
+ profile = new Profile(q);
+ m_profiles << profile;
+ }
+ profile->d->setInfo(*it);
+ }
+
+ for (Profile *profile : qAsConst(m_profiles)) {
+ if (!newProfiles.contains(profile->name())) {
+ m_profiles.removeOne(profile);
+ delete profile;
+ }
+ }
+
+ for (Profile *profile : qAsConst(m_profiles)) {
+ if (info->active_profile2->name == profile->name()) {
+ m_activeProfileIndex = m_profiles.indexOf(profile);
+ }
+ }
+
+ Q_EMIT q->profilesChanged();
+ Q_EMIT q->activeProfileIndexChanged();
+
+ QStringList newPorts;
+ QStringList existingPorts;
+
+ for (const Port *port : qAsConst(m_ports)) {
+ existingPorts << port->name();
+ }
+ for (auto **it = info->ports; it && *it != nullptr; ++it) {
+ const QString name = QString::fromUtf8((*it)->name);
+ newPorts << name;
+ CardPort *port = nullptr;
+ if (existingPorts.contains(name)) {
+ port = m_ports[existingPorts.indexOf(name)];
+ } else {
+ port = new CardPort(q);
+ m_ports << port;
+ }
+ port->d->setInfo(*it);
+ }
+
+ for (CardPort *port : qAsConst(m_ports)) {
+ if (!newPorts.contains(port->name())) {
+ m_ports.removeOne(port);
+ delete port;
+ }
+ }
+
+ Q_EMIT q->portsChanged();
+}
+
+QString Card::description() const
+{
+ return d->m_description;
+}
+
+QList Card::profiles() const
+{
+ return d->m_profiles;
+}
+
+quint32 Card::activeProfileIndex() const
+{
+ return d->m_activeProfileIndex;
+}
+
+void Card::setActiveProfileIndex(quint32 profileIndex)
+{
+ const Profile *profile = qobject_cast(profiles().at(profileIndex));
+ Context::instance()->setCardProfile(index(), profile->name());
+}
+
+QList Card::ports() const
+{
+ return d->m_ports;
+}
+
+QList Card::sinks() const
+{
+ QList ret;
+
+ const auto allSinks = Context::instance()->sinks();
+ for (Sink *sink : allSinks) {
+ if (sink->cardIndex() == IndexedPulseObject::d->m_index) {
+ ret << sink;
+ }
+ }
+
+ return ret;
+}
+
+QList