From d107d801ef3abfdf0beeb45a2f33ec52dafe3d5d Mon Sep 17 00:00:00 2001 From: Thorvald Natvig Date: Thu, 21 Sep 2006 12:10:43 +0000 Subject: [PATCH] Cleaned up overlay interface and made it show mute/deafen status. git-svn-id: https://mumble.svn.sourceforge.net/svnroot/mumble/trunk@373 05730e5d-ab1b-0410-a4ac-84af385074fa --- Overlay.h | 2 +- Overlay_win.cpp | 15 +++++++++++---- PlayerModel.cpp | 15 +++------------ 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/Overlay.h b/Overlay.h index ce7863fb5..4c05267b9 100644 --- a/Overlay.h +++ b/Overlay.h @@ -88,7 +88,7 @@ class Overlay : public QObject { bool isActive() const; public slots: void on_Timer_timeout(); - void setPlayers(QList players); + void updateOverlay(); void setActive(bool act); void toggleShow(); void forceSettings(); diff --git a/Overlay_win.cpp b/Overlay_win.cpp index d4a1bb773..b2005e00c 100644 --- a/Overlay_win.cpp +++ b/Overlay_win.cpp @@ -396,6 +396,7 @@ void Overlay::toggleShow() { } ReleaseMutex(hMutex); } + updateOverlay(); } void Overlay::forceSettings() { @@ -423,13 +424,14 @@ void Overlay::forceSettings() { sm->bReset = true; ReleaseMutex(hMutex); } + updateOverlay(); } #define SAFE_INC_IDX(x) x=(x < NUM_TEXTS) ? (x+1) : (NUM_TEXTS-1) typedef QPair qpChanCol; -void Overlay::setPlayers(QList players) { +void Overlay::updateOverlay() { DWORD colPlayer = g.s.qcOverlayPlayer.rgba(); DWORD colTalking = g.s.qcOverlayTalking.rgba(); DWORD colAltTalking = g.s.qcOverlayAltTalking.rgba(); @@ -442,7 +444,7 @@ void Overlay::setPlayers(QList players) { if (! sm) return; - if (players.count() > 0) { + if (g.sId) { Channel *home = Player::get(g.sId)->cChannel; foreach(Channel *c, home->allLinks()) { if (home == c) @@ -481,10 +483,15 @@ void Overlay::setPlayers(QList players) { } } - foreach(Player *p, players) { + foreach(Player *p, Player::get(g.sId)->cChannel->qlPlayers) { if (bShowAll || p->bTalking) { + QString name = p->qsName; + if (p->bDeaf || p->bSelfDeaf) + name = name + QString("(D)"); + else if (p->bMute || p->bSelfMute || p->bLocalMute) + name = name + QString("(M)"); sm->texts[idx].color = p->bTalking ? (p->bAltSpeak ? colAltTalking : colTalking) : colPlayer; - str = p->qsName.left(127); + str = name.left(127); wstr = reinterpret_cast(str.utf16()); wcscpy(sm->texts[idx].text, wstr); SAFE_INC_IDX(idx); diff --git a/PlayerModel.cpp b/PlayerModel.cpp index c3d80a5f3..1aa018c5b 100644 --- a/PlayerModel.cpp +++ b/PlayerModel.cpp @@ -694,8 +694,6 @@ void PlayerModel::playerTalkingChanged(bool bTalking) Player *p=static_cast(sender()); QModelIndex idx = index(p); emit dataChanged(idx, idx); -// if (g.sId && (p->cChannel == Player::get(g.sId)->cChannel)) - // If we can hear them, we need to update them updateOverlay(); } @@ -704,6 +702,8 @@ void PlayerModel::playerMuteDeafChanged() Player *p=static_cast(sender()); QModelIndex idx = index(p, 1); emit dataChanged(idx, idx); + if (g.sId && (p->cChannel == Player::get(g.sId)->cChannel)) + updateOverlay(); } Qt::DropActions PlayerModel::supportedDropActions() const { @@ -778,16 +778,7 @@ bool PlayerModel::dropMimeData (const QMimeData *md, Qt::DropAction action, int void PlayerModel::updateOverlay() const { #ifdef Q_OS_WIN - if (g.sId) { - Channel *c = Player::get(g.sId)->cChannel; - ModelItem *item = ModelItem::c_qhChannels.value(c); - if (item) { - g.o->setPlayers(item->qlPlayers); - return; - } - } - QList empty; - g.o->setPlayers(empty); + g.o->updateOverlay(); #endif }