diff --git a/ChannelListWidget.cpp b/ChannelListWidget.cpp index 23d319600244b0a0ed47f809f307e5591a9c32de..a76339ad02bcbb37353bfe91eedfe3cd9a691883 100644 --- a/ChannelListWidget.cpp +++ b/ChannelListWidget.cpp @@ -15,7 +15,7 @@ ChannelTree::ChannelTree(ChannelListWidget * widget, QWidget *parent) setExpandsOnDoubleClick(false); m_delegate = new MyItemDelegate; - setItemDelegate(m_delegate); + //setItemDelegate(m_delegate); QFile styleSheet("plugins\\qtTsOverlay\\tree.styl"); styleSheet.open(QIODevice::ReadOnly); @@ -25,6 +25,9 @@ ChannelTree::ChannelTree(ChannelListWidget * widget, QWidget *parent) setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + + setAttribute(Qt::WA_ShowWithoutActivating); + setFocusPolicy(Qt::NoFocus); } ChannelTree::~ChannelTree() diff --git a/ChannelListWidget.h b/ChannelListWidget.h index be46d6c7ded7554a736ef6017b4220c31656a9b8..7ed8f3ba16f066e002f6133aa5944296ef2624f7 100644 --- a/ChannelListWidget.h +++ b/ChannelListWidget.h @@ -27,9 +27,9 @@ public: oStyleOpt.state ^= QStyle::State_Selected; } - if (oStyleOpt.state & QStyle::State_HasFocus) { + /*if (oStyleOpt.state & QStyle::State_HasFocus) { oStyleOpt.state ^= QStyle::State_HasFocus; - } + }*/ // Paint QItemDelegate::paint(painter, oStyleOpt, index); diff --git a/Release/x64/qtTsOverlay_x64.dll b/Release/x64/qtTsOverlay_x64.dll index 1dbb7086470930cd4e56d873aa1b5d561a96adad..732d380f46dc73030124ed3d5b348f176ab27464 100644 Binary files a/Release/x64/qtTsOverlay_x64.dll and b/Release/x64/qtTsOverlay_x64.dll differ diff --git a/Release/x64/qtTsOverlay_x64.exp b/Release/x64/qtTsOverlay_x64.exp index 21a01332abf77117c19da03830edf8e9ca9af50a..4fc4598aabdfcb2cf2118011317b41250c8c3332 100644 Binary files a/Release/x64/qtTsOverlay_x64.exp and b/Release/x64/qtTsOverlay_x64.exp differ diff --git a/Release/x64/qtTsOverlay_x64.lib b/Release/x64/qtTsOverlay_x64.lib index 001eac3b74ac9fc01e81f3abea80236e02538573..757fdb110fdbca9b8649df84abf8e41355f3808b 100644 Binary files a/Release/x64/qtTsOverlay_x64.lib and b/Release/x64/qtTsOverlay_x64.lib differ diff --git a/overlaycontroller.cpp b/overlaycontroller.cpp index 47661a8cd7c4b6b831a84ea9d96f85a0f1828844..419199a2f796a4cfd705dc3d27ad05a02e5efc16 100644 --- a/overlaycontroller.cpp +++ b/overlaycontroller.cpp @@ -43,10 +43,10 @@ OverlayController::OverlayController(const struct TS3Functions funcs, quint64 se m_speakerOffset = 0; - m_debugWindow = new QLabel; - m_debugWindow->setGeometry(320, 200, 750, 500); + m_debugWindow = NULL; // = new QLabel; + /*m_debugWindow->setGeometry(320, 200, 750, 500); m_debugWindow->setAlignment(Qt::AlignTop | Qt::AlignLeft); - m_debugWindow->show(); + m_debugWindow->show();*/ m_SCHID = serverConnectionHandlerID; @@ -73,13 +73,13 @@ OverlayController::~OverlayController() while (!m_clientList.isEmpty()) delete m_clientList.takeFirst(); - delete m_debugWindow; + if (m_debugWindow != NULL) + delete m_debugWindow; delete m_tree; } void OverlayController::deleteChatLine(QWidget * line, QTimer *timer) { - //TODO: delete the given line instead of the last int index = m_msgLines.indexOf(line); if (index != -1) { @@ -105,8 +105,42 @@ void OverlayController::treeItemClicked(QTreeWidgetItem * item, int column) } else if (type == client) { + anyID ownID; + m_ts3.getClientID(m_SCHID, &ownID); anyID id = item->data(1, Qt::UserRole).value(); - m_ts3.requestClientPoke(m_SCHID, id, "", NULL); + + debugPrint(QString("ownID: %1 id: %2").arg(ownID).arg(id)); + + if (id == ownID) + { + int value[3]; + if (m_ts3.getClientSelfVariableAsInt(m_SCHID, CLIENT_INPUT_MUTED, &value[0]) != ERROR_ok) + value[0] = -1; + if (m_ts3.getClientSelfVariableAsInt(m_SCHID, CLIENT_OUTPUT_MUTED, &value[1]) != ERROR_ok) + value[1] = -1; + if (m_ts3.getClientSelfVariableAsInt(m_SCHID, CLIENT_INPUT_HARDWARE, &value[2]) != ERROR_ok) + value[2] = -1; + + // we have all information, nothing is lost + if (value[0] != -1 && value[1] != -1 && value[3] != -1) + { + // something was disabled => enable everything + if (value[0] || value[1] || !value[2]) + { + m_ts3.setClientSelfVariableAsInt(m_SCHID, CLIENT_INPUT_MUTED, 0); + m_ts3.setClientSelfVariableAsInt(m_SCHID, CLIENT_OUTPUT_MUTED, 0); + m_ts3.setClientSelfVariableAsInt(m_SCHID, CLIENT_INPUT_HARDWARE, 1); + } + // nothing was disabled => disable everything + else + { + m_ts3.setClientSelfVariableAsInt(m_SCHID, CLIENT_INPUT_MUTED, 1); + m_ts3.setClientSelfVariableAsInt(m_SCHID, CLIENT_OUTPUT_MUTED, 1); + } + } + } + else + m_ts3.requestClientPoke(m_SCHID, id, "", NULL); } } @@ -222,7 +256,8 @@ void OverlayController::removeSpeaker(QString name) void OverlayController::debugPrint(QString text) { - m_debugWindow->setText(text + "\n" + m_debugWindow->text()); + if (m_debugWindow != NULL) + m_debugWindow->setText(text + "\n" + m_debugWindow->text()); } void OverlayController::reset() @@ -353,7 +388,7 @@ void OverlayController::updateClientList() if (m_treeState == minimum) updateChannelList(); - //TODO: remove all clients + //remove all clients while (!m_clientList.isEmpty()) delete m_clientList.takeFirst(); @@ -402,12 +437,13 @@ void OverlayController::updateClientList() } m_ts3.freeMemory(clientIDList); } + + m_tree->getTree()->adjustSize(); + m_tree->adjustSize(); } void OverlayController::displayChannelList() { - m_tree->getTree()->adjustSize(); - m_tree->adjustSize(); m_tree->show(); } diff --git a/plugin.cpp b/plugin.cpp index c26ff7966781abe1de88f216fcda8c5edcb07689..f52404ba17aede45ac40ed1890710a3320144e3a 100644 --- a/plugin.cpp +++ b/plugin.cpp @@ -183,7 +183,7 @@ const char* ts3plugin_name() { /* Plugin version */ const char* ts3plugin_version() { - return "1.0"; + return "1.1"; } /* Plugin API version. Must be the same as the clients API major version, else the plugin fails to load. */