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/listwindow.cpp | |
| 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/listwindow.cpp')
| -rw-r--r-- | src/modules/list/listwindow.cpp | 95 |
1 files changed, 92 insertions, 3 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) |
