aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Alexey Sokolov2019-12-29 23:26:57 +0000
committerGravatar Alexey Sokolov2019-12-29 23:26:57 +0000
commit3a6377f190b44b9504d29bcd2ac12f8711b90083 (patch)
treed84c5ff40993ef58024bd9a3fba6080434ae4493 /src/modules
parentReplace FindPythonLibs with FindPython3 in CMake (diff)
parentoptions/windowList: Add event names to alert level tips (diff)
downloadKVIrc-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.h4
-rw-r--r--src/modules/dcc/DccVideoWindow.h2
-rw-r--r--src/modules/logview/LogViewWindow.cpp3
-rw-r--r--src/modules/options/OptionsWidget_servers.cpp72
-rw-r--r--src/modules/options/OptionsWidget_servers.h3
-rw-r--r--src/modules/options/OptionsWidget_windowList.cpp60
-rw-r--r--src/modules/url/libkviurl.cpp71
-rw-r--r--src/modules/url/libkviurl.h9
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);
};