diff options
| author | 2019-12-29 23:26:57 +0000 | |
|---|---|---|
| committer | 2019-12-29 23:26:57 +0000 | |
| commit | 3a6377f190b44b9504d29bcd2ac12f8711b90083 (patch) | |
| tree | d84c5ff40993ef58024bd9a3fba6080434ae4493 /src/modules | |
| parent | Replace FindPythonLibs with FindPython3 in CMake (diff) | |
| parent | options/windowList: Add event names to alert level tips (diff) | |
| download | KVIrc-3a6377f190b44b9504d29bcd2ac12f8711b90083.tar.gz KVIrc-3a6377f190b44b9504d29bcd2ac12f8711b90083.tar.bz2 KVIrc-3a6377f190b44b9504d29bcd2ac12f8711b90083.zip | |
Merge branch 'master' into py3
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/dcc/DccChatWindow.h | 4 | ||||
| -rw-r--r-- | src/modules/dcc/DccVideoWindow.h | 2 | ||||
| -rw-r--r-- | src/modules/logview/LogViewWindow.cpp | 3 | ||||
| -rw-r--r-- | src/modules/options/OptionsWidget_servers.cpp | 72 | ||||
| -rw-r--r-- | src/modules/options/OptionsWidget_servers.h | 3 | ||||
| -rw-r--r-- | src/modules/options/OptionsWidget_windowList.cpp | 60 | ||||
| -rw-r--r-- | src/modules/url/libkviurl.cpp | 71 | ||||
| -rw-r--r-- | src/modules/url/libkviurl.h | 9 |
8 files changed, 110 insertions, 114 deletions
diff --git a/src/modules/dcc/DccChatWindow.h b/src/modules/dcc/DccChatWindow.h index 2af9892c0..298892d9d 100644 --- a/src/modules/dcc/DccChatWindow.h +++ b/src/modules/dcc/DccChatWindow.h @@ -62,10 +62,10 @@ protected: // since the thread is going to die // It should return true if the handing was successful // or false if the thread should be stopped - virtual bool handleIncomingData(KviDccThreadIncomingData * data, bool bCritical); + bool handleIncomingData(KviDccThreadIncomingData * data, bool bCritical); public: - virtual void sendRawData(const void * buffer, int len); // mutex (m_pOutBuffers usage) + void sendRawData(const void * buffer, int len); // mutex (m_pOutBuffers usage) }; class DccChatWindow : public DccWindow diff --git a/src/modules/dcc/DccVideoWindow.h b/src/modules/dcc/DccVideoWindow.h index 1210dcc8b..98bb622f5 100644 --- a/src/modules/dcc/DccVideoWindow.h +++ b/src/modules/dcc/DccVideoWindow.h @@ -104,7 +104,7 @@ protected: void stopPlaying(); bool isPlaying() const { return m_bPlaying; } void run() override; - bool handleIncomingData(KviDccThreadIncomingData * data, bool bCritical) override; + bool handleIncomingData(KviDccThreadIncomingData * data, bool bCritical); }; class DccVideoWindow : public DccWindow diff --git a/src/modules/logview/LogViewWindow.cpp b/src/modules/logview/LogViewWindow.cpp index f954ad9df..902339cb4 100644 --- a/src/modules/logview/LogViewWindow.cpp +++ b/src/modules/logview/LogViewWindow.cpp @@ -451,7 +451,8 @@ void LogViewWindow::rightButtonClicked(QTreeWidgetItem * pItem, const QPoint &) QMenu * pPopup = new QMenu(this); if(((LogListViewItem *)pItem)->childCount()) { - //pPopup->addAction(*(g_pIconManager->getSmallIcon(KviIconManager::UserList)),__tr2qs_ctx("Export all log files to","log"),m_pExportLogPopup); + // TODO: probably should allow to specify a directory instead of asking for file path on each log file + pPopup->addAction(*(g_pIconManager->getSmallIcon(KviIconManager::Save)), __tr2qs_ctx("Export All Log Files to", "log"))->setMenu(m_pExportLogPopup); pPopup->addAction(*(g_pIconManager->getSmallIcon(KviIconManager::Discard)), __tr2qs_ctx("Remove All Log Files Within This Folder", "log"), this, SLOT(deleteCurrent())); } else diff --git a/src/modules/options/OptionsWidget_servers.cpp b/src/modules/options/OptionsWidget_servers.cpp index 3e93b93c3..2ea746938 100644 --- a/src/modules/options/OptionsWidget_servers.cpp +++ b/src/modules/options/OptionsWidget_servers.cpp @@ -1307,7 +1307,7 @@ OptionsWidget_servers::OptionsWidget_servers(QWidget * parent) addWidgetToLayout(m_pFilterLabel, 0, 0, 0, 0); m_pFilterEdit = new QLineEdit(this); - connect(m_pFilterEdit, SIGNAL(textEdited(const QString &)), this, SLOT(filterTextEdited(const QString &))); + connect(m_pFilterEdit, SIGNAL(textEdited(const QString &)), this, SLOT(updateFilter())); KviTalToolTip::add(m_pFilterEdit, __tr2qs_ctx("If you are searching for a specific server or network, you can insert its name to filter the servers in the list", "options")); addWidgetToLayout(m_pFilterEdit, 1, 0, 1, 0); @@ -1317,7 +1317,7 @@ OptionsWidget_servers::OptionsWidget_servers(QWidget * parent) m_pShowFavoritesOnlyButton->setChecked(KVI_OPTION_BOOL(KviOption_boolShowFavoriteServersOnly)); KviTalToolTip::add(m_pShowFavoritesOnlyButton, __tr2qs_ctx("If this option is enabled, only servers you have favorited will be displayed", "options")); addWidgetToLayout(m_pShowFavoritesOnlyButton, 3, 0, 3, 0); - connect(m_pShowFavoritesOnlyButton, SIGNAL(toggled(bool)), this, SLOT(updateFavoritesFilter(bool))); // Sets the server to a favorite + connect(m_pShowFavoritesOnlyButton, SIGNAL(toggled(bool)), this, SLOT(updateFilter())); // Sets the server to a favorite m_pTreeWidget = new QTreeWidget(this); addWidgetToLayout(m_pTreeWidget, 0, 1, 1, 1); @@ -1501,10 +1501,8 @@ OptionsWidget_servers::OptionsWidget_servers(QWidget * parent) m_pClipboard = nullptr; - m_bShowingFavoritesOnly = KVI_OPTION_BOOL(KviOption_boolShowFavoriteServersOnly); - fillServerList(); - updateFavoritesFilter(KVI_OPTION_BOOL(KviOption_boolShowFavoriteServersOnly)); + updateFilter(); layout()->setRowStretch(1, 1); layout()->setColumnStretch(1, 1); @@ -1747,50 +1745,6 @@ void OptionsWidget_servers::serverNetworkEditTextEdited(const QString &) m_pTreeWidget->scrollToItem(m_pLastEditedItem, QTreeWidget::EnsureVisible); } -void OptionsWidget_servers::filterTextEdited(const QString &) -{ - QString szFilter = m_pFilterEdit->text().trimmed(); - - IrcServerOptionsTreeWidgetItem * network; - for(int i = 0; i < m_pTreeWidget->topLevelItemCount(); i++) - { - network = (IrcServerOptionsTreeWidgetItem *)m_pTreeWidget->topLevelItem(i); - if(network->m_pNetworkData->name().contains(szFilter, Qt::CaseInsensitive) || network->m_pNetworkData->description().contains(szFilter, Qt::CaseInsensitive)) - { - network->setHidden(false); - // if the net matches, we always show all its servers - IrcServerOptionsTreeWidgetItem * ch; - for(int j = 0; j < network->childCount(); j++) - { - ch = (IrcServerOptionsTreeWidgetItem *)network->child(j); - ch->setHidden(false); - } - } - else - { - uint uServers = 0; - - IrcServerOptionsTreeWidgetItem * ch; - for(int j = 0; j < network->childCount(); j++) - { - bool bHidden = true; - ch = (IrcServerOptionsTreeWidgetItem *)network->child(j); - if(ch->m_pServerData) - { - if(ch->m_pServerData->hostName().contains(szFilter, Qt::CaseInsensitive) || ch->m_pServerData->description().contains(szFilter, Qt::CaseInsensitive)) - bHidden = false; - } - - if(!bHidden) - uServers++; - ch->setHidden(bHidden); - } - // if at list one server matches, we show its network - network->setHidden(!uServers); - } - } -} - void OptionsWidget_servers::saveLastItem() { if(!m_pLastEditedItem) @@ -2078,36 +2032,40 @@ void OptionsWidget_servers::favoriteServer() m_pLastEditedItem->setIcon(0, *(g_pIconManager->getSmallIcon(icon))); if(m_bShowingFavoritesOnly) - updateFavoritesFilter(true); + updateFilter(); } -void OptionsWidget_servers::updateFavoritesFilter(bool bSet) +void OptionsWidget_servers::updateFilter() { - m_bShowingFavoritesOnly = bSet; + QString szFilter = m_pFilterEdit->text().trimmed(); + + m_bShowingFavoritesOnly = m_pShowFavoritesOnlyButton->isChecked(); IrcServerOptionsTreeWidgetItem * network; for(int i = 0; i < m_pTreeWidget->topLevelItemCount(); i++) { network = static_cast<IrcServerOptionsTreeWidgetItem *>(m_pTreeWidget->topLevelItem(i)); + bool bNetworkMatchesFilter = network->m_pNetworkData->name().contains(szFilter, Qt::CaseInsensitive) || network->m_pNetworkData->description().contains(szFilter, Qt::CaseInsensitive); uint uServers = 0; IrcServerOptionsTreeWidgetItem * ch; for(int j = 0; j < network->childCount(); j++) { - bool bHidden = bSet ? true : false; + bool bHidden = true; ch = static_cast<IrcServerOptionsTreeWidgetItem *>(network->child(j)); - if(ch->m_pServerData && bSet) + if(!m_bShowingFavoritesOnly || (ch->m_pServerData && ch->m_pServerData->favorite())) { - if(ch->m_pServerData->favorite()) + // if the net matches, we always show all its servers + if(bNetworkMatchesFilter || ch->m_pServerData->hostName().contains(szFilter, Qt::CaseInsensitive) || ch->m_pServerData->description().contains(szFilter, Qt::CaseInsensitive)) bHidden = false; } if(!bHidden) uServers++; ch->setHidden(bHidden); } - network->setHidden(!uServers); + network->setHidden(network->childCount() > 0 ? !uServers : (m_bShowingFavoritesOnly || !bNetworkMatchesFilter)); } - m_pShowFavoritesOnlyButton->setIcon(*(g_pIconManager->getSmallIcon(bSet ? KviIconManager::Favorite : KviIconManager::FavoriteOff))); + m_pShowFavoritesOnlyButton->setIcon(*(g_pIconManager->getSmallIcon(m_bShowingFavoritesOnly ? KviIconManager::Favorite : KviIconManager::FavoriteOff))); } void OptionsWidget_servers::copyServer() diff --git a/src/modules/options/OptionsWidget_servers.h b/src/modules/options/OptionsWidget_servers.h index 483a01777..98072b4ee 100644 --- a/src/modules/options/OptionsWidget_servers.h +++ b/src/modules/options/OptionsWidget_servers.h @@ -225,7 +225,7 @@ protected slots: void newNetwork(); void removeCurrent(); void newServer(); - void updateFavoritesFilter(bool bSet); + void updateFilter(); void favoriteServer(); void copyServer(); void pasteServer(); @@ -237,7 +237,6 @@ protected slots: void recentServersPopupClicked(QAction * pAction); void importPopupActivated(QAction * pAction); void serverNetworkEditTextEdited(const QString & szNewText); - void filterTextEdited(const QString & szNewText); public: virtual void commit(); diff --git a/src/modules/options/OptionsWidget_windowList.cpp b/src/modules/options/OptionsWidget_windowList.cpp index 9842e7ac5..1c61be88f 100644 --- a/src/modules/options/OptionsWidget_windowList.cpp +++ b/src/modules/options/OptionsWidget_windowList.cpp @@ -29,6 +29,9 @@ #define _WANT_OPTION_FLAGS_ #include "KviOptions.h" +#include <string> +#include <vector> + OptionsWidget_windowList::OptionsWidget_windowList(QWidget * parent) : KviOptionsWidget(parent) { @@ -84,6 +87,51 @@ OptionsWidget_windowListTree::OptionsWidget_windowListTree(QWidget * parent) OptionsWidget_windowListTree::~OptionsWidget_windowListTree() = default; +void addAlertLevels(KviOptionsWidget * widget, KviTalGroupBox * g) +{ + const QString available_options_text = __tr2qs_ctx("The following events trigger this alert level:", "options"); + const int alert_levels[5] = { + KviOption_colorTreeWindowListHighlight1Foreground, + KviOption_colorTreeWindowListHighlight2Foreground, + KviOption_colorTreeWindowListHighlight3Foreground, + KviOption_colorTreeWindowListHighlight4Foreground, + KviOption_colorTreeWindowListHighlight5Foreground + }; + + // Add alert levels 1 through 5 + for (int alert_level = KVI_MSGTYPE_MINLEVEL + 1; alert_level < KVI_MSGTYPE_MAXLEVEL + 1; alert_level++) + { + // Add the color selector + QString alert_level_qstr = "Alert level " + QString::number(alert_level) + ":"; + QByteArray alert_level_ba = alert_level_qstr.toUtf8(); + const int highlight_enum = alert_levels[alert_level - 1]; + KviColorSelector * sel = widget->addColorSelector(g, __tr2qs_ctx(alert_level_ba.constData(), "options"), highlight_enum); + + // Accumulate all message types for this alert level + std::vector<QString> alert_list; + for (int i = 0; i < KVI_NUM_MSGTYPE_OPTIONS; i++) + { + KviMessageTypeSettingsOption setting = g_msgtypeOptionsTable[i]; + if (setting.option.level() == alert_level) { + // Trim the prefix off the setting name and store + alert_list.push_back(setting.name.mid(KVI_MSGTYPE_OPTIONS_PREFIX_LEN)); + } + } + std::sort(alert_list.begin(), alert_list.end()); + + // Create the help text + QString help_text = available_options_text + "<br>"; + for (const auto& alert_type : alert_list) + { + if (alert_type != &alert_list.back()) + help_text += alert_type + ", "; + else + help_text += alert_type; + } + widget->mergeTip(sel, help_text); + } +} + OptionsWidget_windowListTreeForeground::OptionsWidget_windowListTreeForeground(QWidget * parent) : KviOptionsWidget(parent) { @@ -96,11 +144,7 @@ OptionsWidget_windowListTreeForeground::OptionsWidget_windowListTreeForeground(Q addColorSelector(g, __tr2qs_ctx("Normal:", "options"), KviOption_colorTreeWindowListForeground); addColorSelector(g, __tr2qs_ctx("Selected:", "options"), KviOption_colorTreeWindowListActiveForeground); - addColorSelector(g, __tr2qs_ctx("Alert level 1:", "options"), KviOption_colorTreeWindowListHighlight1Foreground); - addColorSelector(g, __tr2qs_ctx("Alert level 2:", "options"), KviOption_colorTreeWindowListHighlight2Foreground); - addColorSelector(g, __tr2qs_ctx("Alert level 3:", "options"), KviOption_colorTreeWindowListHighlight3Foreground); - addColorSelector(g, __tr2qs_ctx("Alert level 4:", "options"), KviOption_colorTreeWindowListHighlight4Foreground); - addColorSelector(g, __tr2qs_ctx("Alert level 5:", "options"), KviOption_colorTreeWindowListHighlight5Foreground); + addAlertLevels(this, g); addColorSelector(0, 2, 0, 2, __tr2qs_ctx("Progress bar color:", "options"), KviOption_colorTreeWindowListProgress); @@ -239,11 +283,7 @@ OptionsWidget_windowListClassic::OptionsWidget_windowListClassic(QWidget * paren KviTalGroupBox * g = addGroupBox(0, 1, 0, 1, Qt::Horizontal, __tr2qs_ctx("Text/Alert Colors", "options")); addColorSelector(g, __tr2qs_ctx("Normal:", "options"), KviOption_colorWindowListNormalText); addColorSelector(g, __tr2qs_ctx("Minimized:", "options"), KviOption_colorWindowListMinimizedText); - addColorSelector(g, __tr2qs_ctx("Alert level 1:", "options"), KviOption_colorWindowListHighlight1Text); - addColorSelector(g, __tr2qs_ctx("Alert level 2:", "options"), KviOption_colorWindowListHighlight2Text); - addColorSelector(g, __tr2qs_ctx("Alert level 3:", "options"), KviOption_colorWindowListHighlight3Text); - addColorSelector(g, __tr2qs_ctx("Alert level 4:", "options"), KviOption_colorWindowListHighlight4Text); - addColorSelector(g, __tr2qs_ctx("Alert level 5:", "options"), KviOption_colorWindowListHighlight5Text); + addAlertLevels(this, g); addColorSelector(0, 2, 0, 2, __tr2qs_ctx("Progress bar color:", "options"), KviOption_colorWindowListProgressBar); u = addUIntSelector(0, 3, 0, 3, __tr2qs_ctx("Minimum width of buttons:", "options"), KviOption_uintWindowListButtonMinWidth, 24, 9999, 100); diff --git a/src/modules/url/libkviurl.cpp b/src/modules/url/libkviurl.cpp index a10d5171c..5674cafc8 100644 --- a/src/modules/url/libkviurl.cpp +++ b/src/modules/url/libkviurl.cpp @@ -84,19 +84,6 @@ UrlDialogTreeWidget::UrlDialogTreeWidget(QWidget * par) { } -void UrlDialogTreeWidget::mousePressEvent(QMouseEvent * e) -{ - if(e->button() == Qt::RightButton) - { - QTreeWidgetItem * i = itemAt(e->pos()); - if(i) - emit rightButtonPressed(i, QCursor::pos()); - else - emit contextMenuRequested(QCursor::pos()); - } - QTreeWidget::mousePressEvent(e); -} - void UrlDialogTreeWidget::paintEvent(QPaintEvent * event) { QPainter * p = new QPainter(viewport()); @@ -153,9 +140,9 @@ UrlDialog::UrlDialog(std::unordered_set<KviUrl *>) labels << __tr2qs("URL") << __tr2qs("Window") << __tr2qs("Count") << __tr2qs("Timestamp"); m_pUrlList->setHeaderLabels(labels); - connect(m_pUrlList, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), SLOT(dblclk_url(QTreeWidgetItem *, int))); - connect(m_pUrlList, SIGNAL(rightButtonPressed(QTreeWidgetItem *, const QPoint &)), SLOT(popup(QTreeWidgetItem *, const QPoint &))); - connect(m_pUrlList, SIGNAL(contextMenuRequested(const QPoint &)), SLOT(contextMenu(const QPoint &))); + connect(m_pUrlList, SIGNAL(itemActivated(QTreeWidgetItem *, int)), SLOT(activate(QTreeWidgetItem *, int))); + connect(m_pUrlList, SIGNAL(customContextMenuRequested(const QPoint &)), SLOT(contextMenu(const QPoint &))); + m_pUrlList->setContextMenuPolicy(Qt::CustomContextMenu); m_pUrlList->setFocusPolicy(Qt::StrongFocus); m_pUrlList->setFocus(); } @@ -164,6 +151,8 @@ void UrlDialog::config() { if(!g_pConfigDialog) g_pConfigDialog = new ConfigDialog(); + else + g_pConfigDialog->show(); } void UrlDialog::help() @@ -195,6 +184,11 @@ void UrlDialog::close_slot() close(); } +void UrlDialog::open() +{ + open_url(m_szUrl); +} + void UrlDialog::remove() { if(!m_pUrlList->currentItem()) @@ -218,41 +212,48 @@ void UrlDialog::findtext() { } -void UrlDialog::dblclk_url(QTreeWidgetItem * item, int) +void UrlDialog::open_url(QString szUrl) { QString cmd = "openurl "; - QString szUrl = item->text(0); KviQString::escapeKvs(&szUrl); cmd.append(szUrl); KviKvsScript::run(cmd, this); } -void UrlDialog::popup(QTreeWidgetItem * item, const QPoint & point) +void UrlDialog::activate(QTreeWidgetItem * item, int) { - m_szUrl = item->text(0); - QMenu p("menu", nullptr); - p.addAction(__tr2qs("&Remove"), this, SLOT(remove())); + open_url(item->text(0)); +} - p.addSeparator(); - m_pListPopup = new QMenu("list", nullptr); +void UrlDialog::contextMenu(const QPoint & point) +{ + QTreeWidgetItem * item = m_pUrlList->itemAt(point); - for(auto & w : g_pMainWindow->windowList()) + QMenu p("contextmenu", nullptr); + if (item) { - if((w->type() == KviWindow::Channel) || (w->type() == KviWindow::Query) || (w->type() == KviWindow::DccChat)) + m_szUrl = item->text(0); + p.setDefaultAction(p.addAction(__tr2qs("&Open"), this, SLOT(open()))); + p.addAction(__tr2qs("&Remove"), this, SLOT(remove())); + + p.addSeparator(); + m_pListPopup = new QMenu("list", nullptr); + + for(auto & w : g_pMainWindow->windowList()) { - m_pListPopup->addAction(w->plainTextCaption()); + if((w->type() == KviWindow::Channel) || (w->type() == KviWindow::Query) || (w->type() == KviWindow::DccChat)) + { + m_pListPopup->addAction(w->plainTextCaption()); + } } + p.addAction(__tr2qs("&Say to Window"))->setMenu(m_pListPopup); + connect(m_pListPopup, SIGNAL(triggered(QAction *)), this, SLOT(sayToWin(QAction *))); + + p.addSeparator(); } - p.addAction(__tr2qs("&Say to Window"))->setMenu(m_pListPopup); - connect(m_pListPopup, SIGNAL(triggered(QAction *)), this, SLOT(sayToWin(QAction *))); - p.exec(point); -} -void UrlDialog::contextMenu(const QPoint & point) -{ - QMenu p("contextmenu", nullptr); p.addAction(__tr2qs("Configure"), this, SLOT(config())); - p.exec(point); + p.exec(m_pUrlList->viewport()->mapToGlobal(point)); } void UrlDialog::sayToWin(QAction * act) diff --git a/src/modules/url/libkviurl.h b/src/modules/url/libkviurl.h index cb14edac7..c1bb85282 100644 --- a/src/modules/url/libkviurl.h +++ b/src/modules/url/libkviurl.h @@ -64,11 +64,7 @@ public: ~UrlDialogTreeWidget(){}; protected: - void mousePressEvent(QMouseEvent * e) override; void paintEvent(QPaintEvent * event) override; -signals: - void rightButtonPressed(QTreeWidgetItem *, QPoint); - void contextMenuRequested(QPoint); }; class UrlDialog : public KviWindow @@ -97,10 +93,11 @@ protected slots: void loadList(); void clear(); void close_slot(); + void open(); void remove(); void findtext(); - void dblclk_url(QTreeWidgetItem * item, int); - void popup(QTreeWidgetItem * item, const QPoint & p); + void open_url(QString szUrl); + void activate(QTreeWidgetItem * item, int); void contextMenu(const QPoint & p); void sayToWin(QAction * act); }; |
