summary refs log tree commit diff
path: root/src/ActiveCallBar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ActiveCallBar.cpp')
-rw-r--r--src/ActiveCallBar.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/ActiveCallBar.cpp b/src/ActiveCallBar.cpp
new file mode 100644
index 00000000..a5ef754d
--- /dev/null
+++ b/src/ActiveCallBar.cpp
@@ -0,0 +1,74 @@
+#include <QHBoxLayout>
+#include <QIcon>
+#include <QLabel>
+#include <QString>
+
+#include "ActiveCallBar.h"
+#include "WebRTCSession.h"
+#include "ui/FlatButton.h"
+
+ActiveCallBar::ActiveCallBar(QWidget *parent)
+  : QWidget(parent)
+{
+        setAutoFillBackground(true);
+        auto p = palette();
+        p.setColor(backgroundRole(), Qt::green);
+        setPalette(p);
+
+        QFont f;
+        f.setPointSizeF(f.pointSizeF());
+
+        const int fontHeight    = QFontMetrics(f).height();
+        const int widgetMargin  = fontHeight / 3;
+        const int contentHeight = fontHeight * 3;
+
+        setFixedHeight(contentHeight + widgetMargin);
+
+        topLayout_ = new QHBoxLayout(this);
+        topLayout_->setSpacing(widgetMargin);
+        topLayout_->setContentsMargins(
+          2 * widgetMargin, widgetMargin, 2 * widgetMargin, widgetMargin);
+        topLayout_->setSizeConstraint(QLayout::SetMinimumSize);
+
+        QFont labelFont;
+        labelFont.setPointSizeF(labelFont.pointSizeF() * 1.2);
+        labelFont.setWeight(QFont::Medium);
+
+        callPartyLabel_ = new QLabel(this);
+        callPartyLabel_->setFont(labelFont);
+
+        // TODO microphone mute/unmute icons
+        muteBtn_ = new FlatButton(this);
+        QIcon muteIcon;
+        muteIcon.addFile(":/icons/icons/ui/do-not-disturb-rounded-sign.png");
+        muteBtn_->setIcon(muteIcon);
+        muteBtn_->setIconSize(QSize(buttonSize_ / 2, buttonSize_ / 2));
+        muteBtn_->setToolTip(tr("Mute Mic"));
+        muteBtn_->setFixedSize(buttonSize_, buttonSize_);
+        muteBtn_->setCornerRadius(buttonSize_ / 2);
+        connect(muteBtn_, &FlatButton::clicked, this, [this]() {
+                if (WebRTCSession::instance().toggleMuteAudioSrc(muted_)) {
+                        QIcon icon;
+                        if (muted_) {
+                                muteBtn_->setToolTip("Unmute Mic");
+                                icon.addFile(":/icons/icons/ui/round-remove-button.png");
+                        } else {
+                                muteBtn_->setToolTip("Mute Mic");
+                                icon.addFile(":/icons/icons/ui/do-not-disturb-rounded-sign.png");
+                        }
+                        muteBtn_->setIcon(icon);
+                }
+        });
+
+        topLayout_->addWidget(callPartyLabel_, 0, Qt::AlignLeft);
+        topLayout_->addWidget(muteBtn_, 0, Qt::AlignRight);
+}
+
+void
+ActiveCallBar::setCallParty(const QString &userid, const QString &displayName)
+{
+        if (!displayName.isEmpty() && displayName != userid)
+                callPartyLabel_->setText("Active Call: " + displayName + " (" + userid + ")");
+        else
+                callPartyLabel_->setText("Active Call: " + userid);
+}