diff options
| author | 2007-02-26 10:06:22 +0000 | |
|---|---|---|
| committer | 2007-02-26 10:06:22 +0000 | |
| commit | 81e3af724c9a600c13987675c7ed7630216cdfd4 (patch) | |
| tree | a2ef195f9976f00f6780f637146da1f220d0828b /src/modules/list | |
| parent | compile fix for MacOS X, thanks to Matteo (Tom) (diff) | |
| download | KVIrc-81e3af724c9a600c13987675c7ed7630216cdfd4.tar.gz KVIrc-81e3af724c9a600c13987675c7ed7630216cdfd4.tar.bz2 KVIrc-81e3af724c9a600c13987675c7ed7630216cdfd4.zip | |
Added Export/Import feature to channel list module
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@374 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/list')
| -rw-r--r-- | src/modules/list/listwindow.cpp | 95 | ||||
| -rw-r--r-- | src/modules/list/listwindow.h | 14 |
2 files changed, 104 insertions, 5 deletions
diff --git a/src/modules/list/listwindow.cpp b/src/modules/list/listwindow.cpp index 81254e647..33b435622 100644 --- a/src/modules/list/listwindow.cpp +++ b/src/modules/list/listwindow.cpp @@ -39,6 +39,8 @@ #include "kvi_ircconnection.h" #include "kvi_qstring.h" #include "kvi_topicw.h" +#include "kvi_config.h" +#include "kvi_filedialog.h" #include <qtimer.h> #include <qpainter.h> @@ -46,6 +48,7 @@ #include <qsplitter.h> #include <qtooltip.h> #include "kvi_tal_hbox.h" +#include "kvi_msgbox.h" extern KviPtrList<KviListWindow> * g_pListWindowList; @@ -80,9 +83,13 @@ KviChannelListViewItem::~KviChannelListViewItem() { delete m_pData; } - +#ifdef COMPILE_USE_QT4 int KviChannelListViewItem::width ( const QFontMetrics & fm, const KviTalListView * lv, int column ) const +#else +int KviChannelListViewItem::width ( const QFontMetrics & fm, const QListView * lv, int column ) const +#endif { + debug("width request"); QString szText; switch(column) @@ -172,14 +179,21 @@ KviListWindow::KviListWindow(KviFrame * lpFrm,KviConsole * lpConsole) m_pVertSplitter = new QSplitter(QSplitter::Vertical,m_pSplitter,"vsplitter"); KviTalHBox * box = new KviTalHBox(m_pTopSplitter); + m_pOpenButton = new KviStyledToolButton(box); + m_pOpenButton->setPixmap(*(g_pIconManager->getBigIcon(KVI_BIGICON_OPEN))); + connect(m_pOpenButton,SIGNAL(clicked()),this,SLOT(importList())); + + m_pSaveButton = new KviStyledToolButton(box); + m_pSaveButton->setPixmap(*(g_pIconManager->getBigIcon(KVI_BIGICON_SAVE))); + connect(m_pSaveButton,SIGNAL(clicked()),this,SLOT(exportList())); - m_pRequestButton = new QToolButton(box,"request_button"); + m_pRequestButton = new KviStyledToolButton(box,"request_button"); m_pRequestButton->setUsesBigPixmap(false); m_pRequestButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_LIST))); connect(m_pRequestButton,SIGNAL(clicked()),this,SLOT(requestList())); QToolTip::add(m_pRequestButton,__tr2qs("Request List")); - m_pStopListDownloadButton = new QToolButton(box,"stoplistdownload_button"); + m_pStopListDownloadButton = new KviStyledToolButton(box,"stoplistdownload_button"); m_pStopListDownloadButton->setUsesBigPixmap(false); m_pStopListDownloadButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NICKNAMEPROBLEM))); connect(m_pStopListDownloadButton,SIGNAL(clicked()),this,SLOT(stoplistdownload())); @@ -199,6 +213,8 @@ KviListWindow::KviListWindow(KviFrame * lpFrm,KviConsole * lpConsole) m_pListView->addColumn(__tr2qs("Users")); m_pListView->addColumn(__tr2qs("Topic")); m_pListView->setAllColumnsShowFocus(TRUE); + m_pListView->setColumnWidthMode(2,QListView::Maximum); + m_pListView->setColumnWidthMode(3,QListView::Maximum); m_pListView->setSorting(100); connect(m_pListView,SIGNAL(doubleClicked(KviTalListViewItem *)),this,SLOT(itemDoubleClicked(KviTalListViewItem *))); @@ -312,6 +328,79 @@ void KviListWindow::die() close(); } +void KviListWindow::exportList() +{ + if(!m_pListView->firstChild()) + { + KviMessageBox::warning(__tr2qs("You cannot export an empty list")); + return; + } + + QString szFile; + if(connection()) + { + KviQString::sprintf(szFile,__tr2qs("Channel list for %Q - %Q"), + &(connection()->networkName()),&(QDateTime::currentDateTime().toString("d MMM yyyy hh-mm"))); + } else { + szFile = __tr2qs("Channel list"); + } + if(KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose filename"),szFile, + __tr2qs("Configuration files (*.kvc)"),false, + false,true,this)) + { + if(QFileInfo(szFile).extension()!="kvc") + szFile.append(".kvc"); + KviConfig cfg(szFile,KviConfig::Write); + cfg.clear(); + KviTalListViewItemIterator it(m_pListView); + + while(it.current()) + { + KviChannelListViewItemData* pData= ((KviChannelListViewItem*) ( it.current() ))->m_pData; + cfg.setGroup(pData->m_szChan); + // Write properties + cfg.writeEntry("topic",pData->m_szTopic); + cfg.writeEntry("users",pData->m_szUsers); +// cfg.writeEntry("usersKey",pData->m_szUsersKey); + ++it; + } + } +} + +void KviListWindow::importList() +{ + + QString szFile; + if(KviFileDialog::askForOpenFileName(szFile,__tr2qs("Choose filename"),QString::null, + __tr2qs("Configuration files (*.kvc)"),false, + false,this)) + { + if(m_pConsole->isConnected()) + { + m_pConsole->connection()->sendFmtData("list stoplistdownloadnow"); + outputNoFmt(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Stopping the list download...")); //G&N mar 2005 + } + + m_pItemList->clear(); + + KviConfig cfg(szFile,KviConfig::Read); + KviConfigIterator it(*cfg.dict()); + while(it.current()) + { + cfg.setGroup(it.currentKey()); + m_pItemList->append( + new KviChannelListViewItemData( + it.currentKey(), + cfg.readQStringEntry("users","0"), + cfg.readQStringEntry("topic","") + ) + ); + ++it; + } + flush(); + } +} + void KviListWindow::control(int message) { switch(message) diff --git a/src/modules/list/listwindow.h b/src/modules/list/listwindow.h index 009522662..a8c10e486 100644 --- a/src/modules/list/listwindow.h +++ b/src/modules/list/listwindow.h @@ -42,6 +42,7 @@ class KviThemedLabel; class KviChannelListViewItemData { friend class KviChannelListViewItem; + friend class KviListWindow; public: KviChannelListViewItemData(const QString &szChan,const QString &szUsers,const QString &szTopic); ~KviChannelListViewItemData(); @@ -54,6 +55,7 @@ protected: class KviChannelListViewItem : public KviTalListViewItem { + friend class KviListWindow; public: KviChannelListViewItem(KviTalListView * v,KviChannelListViewItemData * pData); ~KviChannelListViewItem(); @@ -61,7 +63,11 @@ protected: KviChannelListViewItemData * m_pData; public: const QString & channel(){ return m_pData->m_szChan; }; - virtual int width ( const QFontMetrics & fm, const KviTalListView * lv, int c ) const; +#ifdef COMPILE_USE_QT4 + int width ( const QFontMetrics & fm, const KviTalListView * lv, int column ) const; +#else + int width ( const QFontMetrics & fm, const QListView * lv, int column ) const; +#endif protected: virtual void paintCell(QPainter * p,const QColorGroup &cg,int col,int wdth,int align); virtual QString key(int col,bool) const; @@ -78,10 +84,12 @@ public: protected: QSplitter * m_pVertSplitter; QSplitter * m_pTopSplitter; - KviTalListView * m_pListView; + KviTalListView * m_pListView; QLineEdit * m_pParamsEdit; QToolButton * m_pRequestButton; QToolButton * m_pStopListDownloadButton; + QToolButton * m_pOpenButton; + QToolButton * m_pSaveButton; KviThemedLabel * m_pInfoLabel; QTimer * m_pFlushTimer; KviPtrList<KviChannelListViewItemData> * m_pItemList; @@ -101,6 +109,8 @@ protected slots: void requestList(); void stoplistdownload(); void connectionStateChange(); + void exportList(); + void importList(); public: virtual QSize sizeHint() const; private: |
