From 00ddcd302fb9eb38fad5969554189163e1ce7b8a Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Tue, 3 Mar 2015 23:53:11 +0100 Subject: [PATCH 1/2] Add "ShowChan <#chan>" command for showing channel details (#914) --- src/ClientCommand.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/src/ClientCommand.cpp b/src/ClientCommand.cpp index e2c955e7..4fb8db86 100644 --- a/src/ClientCommand.cpp +++ b/src/ClientCommand.cpp @@ -423,6 +423,67 @@ void CClient::UserCommand(CString& sLine) { PutStatus("There were [" + CString(sChans.size()) + "] channels matching [" + sPatterns + "]"); PutStatus("Disabled [" + CString(uDisabled) + "] channels"); } + } else if (sCommand.Equals("SHOWCHAN")) { + if (!m_pNetwork) { + PutStatus("You must be connected with a network to use this command"); + return; + } + + CString sChan = sLine.Token(1, true); + if (sChan.empty()) { + PutStatus("Usage: ShowChan <#chan>"); + return; + } + + CChan* pChan = m_pNetwork->FindChan(sChan); + if (!pChan) { + PutStatus("No such channel [" + sChan + "]"); + return; + } + sChan = pChan->GetPermStr() + pChan->GetName(); + CString sStatus = pChan->IsOn() ? (pChan->IsDetached() ? "Detached" : "Joined") : (pChan->IsDisabled() ? "Disabled" : "Trying"); + + CTable Table; + Table.AddColumn(sChan, false); + Table.AddColumn(sStatus); + + Table.AddRow(); + Table.SetCell(sChan, "InConfig"); + Table.SetCell(sStatus, CString(pChan->InConfig() ? "yes" : "no")); + + Table.AddRow(); + Table.SetCell(sChan, "Buffer"); + Table.SetCell(sStatus, CString(pChan->GetBuffer().Size()) + "/" + CString(pChan->GetBufferCount()) + CString(pChan->HasBufferCountSet() ? "" : " (default)")); + + Table.AddRow(); + Table.SetCell(sChan, "AutoClearChanBuffer"); + Table.SetCell(sStatus, CString(pChan->AutoClearChanBuffer() ? "yes" : "no") + CString(pChan->HasAutoClearChanBufferSet() ? "" : " (default)")); + + if (pChan->IsOn()) { + Table.AddRow(); + Table.SetCell(sChan, "Topic"); + Table.SetCell(sStatus, pChan->GetTopic()); + + Table.AddRow(); + Table.SetCell(sChan, "Modes"); + Table.SetCell(sStatus, pChan->GetModeString()); + + Table.AddRow(); + Table.SetCell(sChan, "Users"); + + VCString vsUsers; + vsUsers.push_back("All: " + CString(pChan->GetNickCount())); + + CIRCSock* pIRCSock = m_pNetwork->GetIRCSock(); + const CString& sPerms = pIRCSock ? pIRCSock->GetPerms() : ""; + map mPerms = pChan->GetPermCounts(); + for (char cPerm : sPerms) { + vsUsers.push_back(CString(cPerm) + ": " + CString(mPerms[cPerm])); + } + Table.SetCell(sStatus, CString(", ").Join(vsUsers.begin(), vsUsers.end())); + } + + PutStatus(Table); } else if (sCommand.Equals("LISTCHANS")) { if (!m_pNetwork) { PutStatus("You must be connected with a network to use this command"); @@ -1633,6 +1694,7 @@ void CClient::HelpUser(const CString& sFilter) { AddCommandHelp(Table, "DelTrustedServerFingerprint", "", "Delete a trusted server SSL certificate from current IRC network.", sFilter); AddCommandHelp(Table, "ListTrustedServerFingerprints", "", "List all trusted server SSL certificates of current IRC network.", sFilter); + AddCommandHelp(Table, "ShowChan", "<#chan>", "Show channel details", sFilter); AddCommandHelp(Table, "EnableChan", "<#chans>", "Enable channels", sFilter); AddCommandHelp(Table, "DisableChan", "<#chans>", "Disable channels", sFilter); AddCommandHelp(Table, "Detach", "<#chans>", "Detach from channels", sFilter); From 33825439170a3b2762db5d97d9474170d398e3f0 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 6 Mar 2015 22:15:41 +0100 Subject: [PATCH 2/2] Reduce ListChans columns to name & status (#914) --- src/ClientCommand.cpp | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/src/ClientCommand.cpp b/src/ClientCommand.cpp index 4fb8db86..e2c75f16 100644 --- a/src/ClientCommand.cpp +++ b/src/ClientCommand.cpp @@ -516,8 +516,6 @@ void CClient::UserCommand(CString& sLine) { } const vector& vChans = pNetwork->GetChans(); - CIRCSock* pIRCSock = pNetwork->GetIRCSock(); - const CString& sPerms = (pIRCSock) ? pIRCSock->GetPerms() : ""; if (vChans.empty()) { PutStatus("There are no channels defined."); @@ -527,17 +525,6 @@ void CClient::UserCommand(CString& sLine) { CTable Table; Table.AddColumn("Name"); Table.AddColumn("Status"); - Table.AddColumn("Conf"); - Table.AddColumn("Buf"); - Table.AddColumn("Clear"); - Table.AddColumn("Modes"); - Table.AddColumn("Users"); - - for (unsigned int p = 0; p < sPerms.size(); p++) { - CString sPerm; - sPerm += sPerms[p]; - Table.AddColumn(sPerm); - } unsigned int uNumDetached = 0, uNumDisabled = 0, uNumJoined = 0; @@ -546,17 +533,6 @@ void CClient::UserCommand(CString& sLine) { Table.AddRow(); Table.SetCell("Name", pChan->GetPermStr() + pChan->GetName()); Table.SetCell("Status", ((pChan->IsOn()) ? ((pChan->IsDetached()) ? "Detached" : "Joined") : ((pChan->IsDisabled()) ? "Disabled" : "Trying"))); - Table.SetCell("Conf", CString((pChan->InConfig()) ? "yes" : "")); - Table.SetCell("Buf", CString((pChan->HasBufferCountSet()) ? "*" : "") + CString(pChan->GetBufferCount())); - Table.SetCell("Clear", CString((pChan->HasAutoClearChanBufferSet()) ? "*" : "") + CString((pChan->AutoClearChanBuffer()) ? "yes" : "")); - Table.SetCell("Modes", pChan->GetModeString()); - Table.SetCell("Users", CString(pChan->GetNickCount())); - - map mPerms = pChan->GetPermCounts(); - for (unsigned int b = 0; b < sPerms.size(); b++) { - char cPerm = sPerms[b]; - Table.SetCell(CString(cPerm), CString(mPerms[cPerm])); - } if(pChan->IsDetached()) uNumDetached++; if(pChan->IsOn()) uNumJoined++;