aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/options
diff options
context:
space:
mode:
authorGravatar Matt Ullman2015-11-03 05:39:10 -0500
committerGravatar Matt Ullman2015-11-04 04:09:02 -0500
commitd3f1dba5603d86a8f2c2f5c6cf9ee9b4b51c25e4 (patch)
tree99c069356837fb93b78413abe4007168592f9807 /src/modules/options
parentFix icon assignments cut != remove help != other (diff)
downloadKVIrc-d3f1dba5603d86a8f2c2f5c6cf9ee9b4b51c25e4.tar.gz
KVIrc-d3f1dba5603d86a8f2c2f5c6cf9ee9b4b51c25e4.tar.bz2
KVIrc-d3f1dba5603d86a8f2c2f5c6cf9ee9b4b51c25e4.zip
Add base work for favorites
Diffstat (limited to 'src/modules/options')
-rw-r--r--src/modules/options/OptionsWidgetContainer.cpp7
-rw-r--r--src/modules/options/OptionsWidgetContainer.h1
-rw-r--r--src/modules/options/OptionsWidget_servers.cpp74
-rw-r--r--src/modules/options/OptionsWidget_servers.h14
4 files changed, 88 insertions, 8 deletions
diff --git a/src/modules/options/OptionsWidgetContainer.cpp b/src/modules/options/OptionsWidgetContainer.cpp
index 86b872eb2..875420b7f 100644
--- a/src/modules/options/OptionsWidgetContainer.cpp
+++ b/src/modules/options/OptionsWidgetContainer.cpp
@@ -68,6 +68,13 @@ void OptionsWidgetContainer::setLeftCornerWidget(QWidget * pWidget)
m_pLayout->addWidget(pWidget,1,0);
}
+void OptionsWidgetContainer::setNextToLeft(QWidget * pWidget)
+{
+ if(!pWidget)
+ return;
+ m_pLayout->addWidget(pWidget,2,0);
+}
+
void OptionsWidgetContainer::optionsWidgetDestroyed()
{
m_pOptionsWidget = NULL;
diff --git a/src/modules/options/OptionsWidgetContainer.h b/src/modules/options/OptionsWidgetContainer.h
index 54164c3cf..42880ce16 100644
--- a/src/modules/options/OptionsWidgetContainer.h
+++ b/src/modules/options/OptionsWidgetContainer.h
@@ -44,6 +44,7 @@ protected:
public:
void setup(KviOptionsWidget * w);
void setLeftCornerWidget(QWidget * pWidget);
+ void setNextToLeft(QWidget * pWidget);
protected:
virtual void closeEvent(QCloseEvent *e);
virtual void showEvent(QShowEvent *e);
diff --git a/src/modules/options/OptionsWidget_servers.cpp b/src/modules/options/OptionsWidget_servers.cpp
index 7ed49db06..5d3ebca4c 100644
--- a/src/modules/options/OptionsWidget_servers.cpp
+++ b/src/modules/options/OptionsWidget_servers.cpp
@@ -1367,6 +1367,15 @@ OptionsWidget_servers::OptionsWidget_servers(QWidget * parent)
KviTalToolTip::add(m_pImportButton,__tr2qs_ctx("Import List","options"));
+ f = new QFrame(vbox);
+ f->setFrameStyle(QFrame::Sunken | QFrame::HLine);
+
+ m_pFavoriteServerButton = new QToolButton(vbox);
+ m_pFavoriteServerButton->setIcon(QIcon(*(g_pIconManager->getSmallIcon(KviIconManager::Server))));
+ m_pFavoriteServerButton->setAutoRaise(true);
+ connect(m_pFavoriteServerButton,SIGNAL(clicked()),this,SLOT(favoriteServer()));
+ KviTalToolTip::add(m_pFavoriteServerButton,__tr2qs_ctx("Favorite Server","options"));
+
QFrame * lll = new QFrame(vbox);
vbox->setStretchFactor(lll,100);
@@ -1394,6 +1403,7 @@ OptionsWidget_servers::OptionsWidget_servers(QWidget * parent)
KviTalToolTip::add(tb,__tr2qs_ctx("<center>This button shows a list of recently used servers. It allows you to quickly find them in the list.</center>","options"));
m_pShowThisDialogAtStartupSelector = NULL;
+ m_pShowFavoritesOnly = NULL;
// The "Show this dialog at startup" option is shown only when the server options widget is shown as standalone dialog
if(parent->inherits("OptionsWidgetContainer"))
@@ -1446,11 +1456,16 @@ OptionsWidget_servers::OptionsWidget_servers(QWidget * parent)
{
m_pShowThisDialogAtStartupSelector = addBoolSelector(pContainer,__tr2qs_ctx("Show this dialog at startup","options"),KviOption_boolShowServersConnectDialogOnStart);
pContainer->setLeftCornerWidget(m_pShowThisDialogAtStartupSelector);
+ m_pShowFavoritesOnly = addBoolSelector(pContainer,__tr2qs_ctx("Only display favorite servers","options"),KviOption_boolShowFavoriteServersOnly);
+ pContainer->setNextToLeft(m_pShowFavoritesOnly);
// This selector can be destroyed upon reparenting: make sure it's removed from the selector list
// (or we'll get a crash at commit() time...).
QObject::connect(m_pShowThisDialogAtStartupSelector,SIGNAL(destroyed()),this,SLOT(slotShowThisDialogAtStartupSelectorDestroyed()));
-
KviTalToolTip::add(m_pShowThisDialogAtStartupSelector,__tr2qs_ctx("<center>If this option is enabled, the servers dialog will appear every time you start KVIrc</center>","options"));
+
+ QObject::connect(m_pShowFavoritesOnly,SIGNAL(destroyed()),this,SLOT(slotSetShowFavoritesOnly()));
+ QObject::connect(m_pShowFavoritesOnly,SIGNAL(toggled(bool)),this,SLOT(updateFavoritesFilter(bool)));
+ KviTalToolTip::add(m_pShowFavoritesOnly,__tr2qs_ctx("<center>If this option is enabled, only servers you have favorited will be displayed</center>","options"));
}
new QShortcut(Qt::Key_Escape, parent, SLOT(close()));
@@ -1463,6 +1478,7 @@ OptionsWidget_servers::OptionsWidget_servers(QWidget * parent)
m_pClipboard = 0;
fillServerList();
+ updateFavoritesFilter(KVI_OPTION_BOOL(KviOption_boolShowFavoriteServersOnly));
layout()->setRowStretch(1,1);
layout()->setColumnStretch(1,1);
@@ -1494,6 +1510,14 @@ void OptionsWidget_servers::slotShowThisDialogAtStartupSelectorDestroyed()
m_pShowThisDialogAtStartupSelector = NULL;
}
+void OptionsWidget_servers::slotSetShowFavoritesOnly()
+{
+ KVI_ASSERT(m_pShowFavoritesOnly);
+
+ removeSelector(m_pShowFavoritesOnly);
+ m_pShowFavoritesOnly = NULL;
+}
+
void OptionsWidget_servers::recentServersPopupAboutToShow()
{
g_pApp->fillRecentServersPopup(m_pRecentPopup);
@@ -1661,6 +1685,7 @@ void OptionsWidget_servers::currentItemChanged(QTreeWidgetItem *it,QTreeWidgetIt
m_pRemoveButton->setEnabled(true);
m_pCopyServerButton->setEnabled(m_pLastEditedItem->m_pServerData);
+ m_pFavoriteServerButton->setEnabled(m_pLastEditedItem->m_pServerData);
if(m_pLastEditedItem->m_pServerData)
{
@@ -1673,6 +1698,7 @@ void OptionsWidget_servers::currentItemChanged(QTreeWidgetItem *it,QTreeWidgetIt
} else {
m_pRemoveButton->setEnabled(false);
m_pCopyServerButton->setEnabled(true);
+ m_pFavoriteServerButton->setEnabled(true);
if(m_pConnectCurrent)
m_pConnectCurrent->setEnabled(false);
@@ -1817,8 +1843,9 @@ void OptionsWidget_servers::commit()
void OptionsWidget_servers::customContextMenuRequested(const QPoint &pnt)
{
- QTreeWidgetItem *it=(QTreeWidgetItem *) m_pTreeWidget->itemAt(pnt);
- bool bServer = (it && ((IrcServerOptionsTreeWidgetItem *)it)->m_pServerData);
+ QTreeWidgetItem *it = static_cast<QTreeWidgetItem *>(m_pTreeWidget->itemAt(pnt));
+ bool bServer = (it && static_cast<IrcServerOptionsTreeWidgetItem *>(it)->m_pServerData);
+ bool bFavorite = (bServer && static_cast<IrcServerOptionsTreeWidgetItem *>(it)->m_pServerData->favorite());
m_pContextPopup->clear();
m_pContextPopup->addAction(*(g_pIconManager->getSmallIcon(KviIconManager::World)),__tr2qs_ctx("New Network","options"),this,SLOT(newNetwork()));
m_pContextPopup->addAction(*(g_pIconManager->getSmallIcon(KviIconManager::Cut)),__tr2qs_ctx("Remove Network","options"),this,SLOT(removeCurrent()))
@@ -1833,11 +1860,13 @@ void OptionsWidget_servers::customContextMenuRequested(const QPoint &pnt)
->setEnabled(m_pClipboard);
m_pContextPopup->addSeparator();
- // m_pContextPopup->addAction(__c2q(__tr("Merge list from server.ini","options")),this,SLOT(importFromIni()));
m_pContextPopup->addAction(__tr2qs_ctx("Clear List","options"),this,SLOT(clearList()));
m_pContextPopup->addSeparator();
m_pContextPopup->addAction(__tr2qs_ctx("Import List","options"))->setMenu(m_pImportPopup);
m_pContextPopup->popup(QCursor::pos());
+ m_pContextPopup->addSeparator();
+ m_pContextPopup->addAction(*(g_pIconManager->getSmallIcon(KviIconManager::Server)),__tr2qs_ctx(bFavorite?"Unfavorite Server":"Favorite Server","options"),this,SLOT(favoriteServer()));
+ m_pContextPopup->setEnabled(bServer);
}
void OptionsWidget_servers::importPopupAboutToShow()
@@ -1984,6 +2013,43 @@ void OptionsWidget_servers::newServer()
}
}
+void OptionsWidget_servers::favoriteServer()
+{
+ if(m_pLastEditedItem)
+ {
+ if(m_pLastEditedItem->m_pServerData->favorite())
+ m_pLastEditedItem->m_pServerData->setFavorite(false);
+ else
+ m_pLastEditedItem->m_pServerData->setFavorite(true);
+ }
+}
+
+void OptionsWidget_servers::updateFavoritesFilter(bool bSet)
+{
+ IrcServerOptionsTreeWidgetItem * network;
+ for(unsigned i = 0; i < m_pTreeWidget->topLevelItemCount(); i++)
+ {
+ network = static_cast<IrcServerOptionsTreeWidgetItem *>(m_pTreeWidget->topLevelItem(i));
+ uint uServers = 0;
+
+ IrcServerOptionsTreeWidgetItem * ch;
+ for (int j = 0; j < network->childCount(); j++)
+ {
+ bool bHidden = bSet ? true : false;
+ ch = static_cast<IrcServerOptionsTreeWidgetItem *>(network->child(j));
+ if(ch->m_pServerData && bSet)
+ {
+ if(ch->m_pServerData->favorite())
+ bHidden = false;
+ }
+ if(!bHidden)
+ uServers++;
+ ch->setHidden(bHidden);
+ }
+ network->setHidden(!uServers);
+ }
+}
+
void OptionsWidget_servers::copyServer()
{
if(m_pLastEditedItem)
diff --git a/src/modules/options/OptionsWidget_servers.h b/src/modules/options/OptionsWidget_servers.h
index 536175a90..adc0f7a22 100644
--- a/src/modules/options/OptionsWidget_servers.h
+++ b/src/modules/options/OptionsWidget_servers.h
@@ -96,7 +96,7 @@ protected:
QCheckBox * m_pAutoConnectCheck;
- QTreeWidget * m_pNickServTreeWidget;
+ QTreeWidget * m_pNickServTreeWidget;
QCheckBox * m_pNickServCheck;
QPushButton * m_pAddRuleButton;
QPushButton * m_pDelRuleButton;
@@ -182,9 +182,9 @@ protected:
QLabel * m_pFilterLabel;
QLineEdit * m_pFilterEdit;
QPushButton * m_pDetailsButton;
- QMenu * m_pRecentPopup;
- QMenu * m_pContextPopup;
- QMenu * m_pImportPopup;
+ QMenu * m_pRecentPopup;
+ QMenu * m_pContextPopup;
+ QMenu * m_pImportPopup;
KviIrcServer * m_pClipboard;
QPushButton * m_pConnectCurrent;
QPushButton * m_pConnectNew;
@@ -193,13 +193,16 @@ protected:
IrcNetworkDetailsWidget * m_pNetworkDetailsDialog;
KviMexServerImport * m_pImportFilter;
KviBoolSelector * m_pShowThisDialogAtStartupSelector;
+ KviBoolSelector * m_pShowFavoritesOnly;
QToolButton * m_pNewServerButton;
QToolButton * m_pNewNetworkButton;
QToolButton * m_pRemoveButton;
+ QToolButton * m_pFavoriteServer;
QToolButton * m_pCopyServerButton;
QToolButton * m_pPasteServerButton;
QToolButton * m_pImportButton;
+ QToolButton * m_pFavoriteServerButton;
private:
void fillServerList();
void saveLastItem();
@@ -215,6 +218,9 @@ protected slots:
void newNetwork();
void removeCurrent();
void newServer();
+ void slotSetShowFavoritesOnly();
+ void updateFavoritesFilter(bool bSet);
+ void favoriteServer();
void copyServer();
void pasteServer();
void clearList();