diff options
| author | 2007-01-29 19:06:22 +0000 | |
|---|---|---|
| committer | 2007-01-29 19:06:22 +0000 | |
| commit | 5c4759ad7ad1c2e9bc11007d7f8251ab150bc285 (patch) | |
| tree | 132bd72dd6bb9f55b906f52dbfc2548430860bc7 /src | |
| parent | A bit more Qt 4.x port and a fix for the DCOP helper class (diff) | |
| download | KVIrc-5c4759ad7ad1c2e9bc11007d7f8251ab150bc285.tar.gz KVIrc-5c4759ad7ad1c2e9bc11007d7f8251ab150bc285.tar.bz2 KVIrc-5c4759ad7ad1c2e9bc11007d7f8251ab150bc285.zip | |
Introduced search in log files
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@281 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvirc/ui/kvi_ircviewtools.cpp | 8 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_ircviewtools.h | 2 | ||||
| -rw-r--r-- | src/modules/logview/logviewmdiwindow.cpp | 374 | ||||
| -rw-r--r-- | src/modules/logview/logviewmdiwindow.h | 71 | ||||
| -rw-r--r-- | src/modules/logview/logviewwidget.cpp | 40 | ||||
| -rw-r--r-- | src/modules/logview/logviewwidget.h | 43 |
6 files changed, 390 insertions, 148 deletions
diff --git a/src/kvirc/ui/kvi_ircviewtools.cpp b/src/kvirc/ui/kvi_ircviewtools.cpp index c2691cc09..2438f69ce 100644 --- a/src/kvirc/ui/kvi_ircviewtools.cpp +++ b/src/kvirc/ui/kvi_ircviewtools.cpp @@ -212,6 +212,14 @@ void KviIrcViewToolWidget::filterEnableNone() forceRepaint(); } +void KviIrcViewToolWidget::hideEvent ( QHideEvent * ){ + m_pIrcView->toggleToolWidget(); +} + +void KviIrcViewToolWidget::closeEvent ( QCloseEvent * e ){ + m_pIrcView->toggleToolWidget(); +} + void KviIrcViewToolWidget::filterLoad() { QString szFile; diff --git a/src/kvirc/ui/kvi_ircviewtools.h b/src/kvirc/ui/kvi_ircviewtools.h index 80d0e36a2..f17183f12 100644 --- a/src/kvirc/ui/kvi_ircviewtools.h +++ b/src/kvirc/ui/kvi_ircviewtools.h @@ -109,6 +109,8 @@ protected slots: void filterSave(); void filterLoad(); protected: + virtual void hideEvent( QHideEvent * ); + virtual void closeEvent( QCloseEvent * e ); virtual void mouseMoveEvent(QMouseEvent *); virtual void mousePressEvent(QMouseEvent *); }; diff --git a/src/modules/logview/logviewmdiwindow.cpp b/src/modules/logview/logviewmdiwindow.cpp index 951d33f8c..5faa80f79 100644 --- a/src/modules/logview/logviewmdiwindow.cpp +++ b/src/modules/logview/logviewmdiwindow.cpp @@ -32,6 +32,7 @@ #include "kvi_app.h" #include "kvi_fileutils.h" +#include <qaccel.h> #include <qpixmap.h> #include <qsplitter.h> #include <qtoolbutton.h> @@ -40,11 +41,18 @@ #include <qdir.h> #include "kvi_tal_popupmenu.h" #include <qcursor.h> +#include <qlayout.h> +#include <qpushbutton.h> +#include <qprogressdialog.h> #ifdef COMPILE_ZLIB_SUPPORT #include <zlib.h> #endif #include <qtextcodec.h> +#include "kvi_styled_controls.h" +#include <qdatetimeedit.h> +#include <qlineedit.h> +#include <qlabel.h> extern KviLogViewMDIWindow * g_pLogViewWindow; @@ -69,8 +77,70 @@ KviLogViewMDIWindow::KviLogViewMDIWindow(KviModuleExtensionDescriptor * d,KviFra connect(m_pListView,SIGNAL(selectionChanged(KviTalListViewItem *)),this,SLOT(itemSelected(KviTalListViewItem *))); connect(m_pListView,SIGNAL(rightButtonClicked ( KviTalListViewItem * , const QPoint &, int )),this,SLOT(rightButtonClicked ( KviTalListViewItem * , const QPoint &, int ))); - //m_pSearchTab = new KviTalVBox(m_pTabWidget); - //m_pTabWidget->insertTab(m_pSearchTab,__tr2qs_ctx("Search","logview")); + m_pSearchTab = new QWidget(m_pTabWidget); + m_pTabWidget->insertTab(m_pSearchTab,__tr2qs_ctx("Filter","logview")); + + QGridLayout *layout = new QGridLayout(m_pSearchTab,10,2,3,5); + + m_pShowChannelsCheck = new KviStyledCheckBox(__tr2qs_ctx("Show channel logs","logview"),m_pSearchTab); + m_pShowChannelsCheck->setChecked(true); + layout->addMultiCellWidget(m_pShowChannelsCheck,0,0,0,1); + + m_pShowQueryesCheck = new KviStyledCheckBox(__tr2qs_ctx("Show query logs","logview"),m_pSearchTab); + m_pShowQueryesCheck->setChecked(true); + layout->addMultiCellWidget(m_pShowQueryesCheck,1,1,0,1); + + m_pShowConsolesCheck = new KviStyledCheckBox(__tr2qs_ctx("Show console logs","logview"),m_pSearchTab); + m_pShowConsolesCheck->setChecked(true); + layout->addMultiCellWidget(m_pShowConsolesCheck,2,2,0,1); + + m_pShowDccChatCheck = new KviStyledCheckBox(__tr2qs_ctx("Show DCC chat logs","logview"),m_pSearchTab); + m_pShowDccChatCheck->setChecked(true); + layout->addMultiCellWidget(m_pShowDccChatCheck,3,3,0,1); + + m_pShowOtherCheck = new KviStyledCheckBox(__tr2qs_ctx("Show other logs","logview"),m_pSearchTab); + m_pShowOtherCheck->setChecked(true); + layout->addMultiCellWidget(m_pShowOtherCheck,4,4,0,1); + + QLabel *l; + l = new QLabel(__tr2qs_ctx("Contents filter","logview"),m_pSearchTab); + layout->addMultiCellWidget(l,5,5,0,1); + + l = new QLabel(__tr2qs_ctx("Log name mask:","logview"),m_pSearchTab); + m_pFileNameMask = new QLineEdit(m_pSearchTab); + connect(m_pFileNameMask,SIGNAL(returnPressed()),this,SLOT(applyFilter())); + layout->addWidget(l,6,0); + layout->addWidget(m_pFileNameMask,6,1); + + l = new QLabel(__tr2qs_ctx("Log contents mask:","logview"),m_pSearchTab); + m_pContentsMask = new QLineEdit(m_pSearchTab); + connect(m_pContentsMask,SIGNAL(returnPressed()),this,SLOT(applyFilter())); + layout->addWidget(l,7,0); + layout->addWidget(m_pContentsMask,7,1); + + m_pEnableFromFilter = new KviStyledCheckBox(__tr2qs_ctx("Only older than","logview"),m_pSearchTab); + m_pFromDateEdit = new QDateEdit(m_pSearchTab); + m_pFromDateEdit->setDate(QDate::currentDate()); + layout->addWidget(m_pEnableFromFilter,8,0); + layout->addWidget(m_pFromDateEdit,8,1); + connect(m_pEnableFromFilter,SIGNAL(toggled(bool)),m_pFromDateEdit,SLOT(setEnabled(bool))); + m_pFromDateEdit->setEnabled(false); + + m_pEnableToFilter = new KviStyledCheckBox(__tr2qs_ctx("Only newier than","logview"),m_pSearchTab); + m_pToDateEdit = new QDateEdit(m_pSearchTab); + m_pToDateEdit->setDate(QDate::currentDate()); + layout->addWidget(m_pEnableToFilter,9,0); + layout->addWidget(m_pToDateEdit,9,1); + connect(m_pEnableToFilter,SIGNAL(toggled(bool)),m_pToDateEdit,SLOT(setEnabled(bool))); + m_pToDateEdit->setEnabled(false); + + QPushButton *pb = new QPushButton(__tr2qs_ctx("Apply filter","logview"),m_pSearchTab); + connect(pb,SIGNAL(clicked()),this,SLOT(applyFilter())); + layout->addWidget(pb,10,1); + + QWidget *w = new QWidget(m_pSearchTab); + w->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored); + layout->addWidget(w,11,1); m_pIrcView = new KviIrcView(m_pSplitter,g_pFrame,this); m_pIrcView->setFocusPolicy(QWidget::ClickFocus); @@ -83,7 +153,13 @@ KviLogViewMDIWindow::KviLogViewMDIWindow(KviModuleExtensionDescriptor * d,KviFra g_pApp->getLocalKvircDirectory(m_szLogDirectory,KviApp::Log); KviQString::ensureLastCharIs(m_szLogDirectory,'/'); // Does this work on Windows? - oneTimeSetup(); + cacheFileList(); + setupItemList(); + + QAccel *a = new QAccel( this );
+ a->connectItem( a->insertItem(Key_F+CTRL),
+ m_pIrcView,
+ SLOT(toggleToolWidget()) ); } @@ -93,6 +169,12 @@ KviLogViewMDIWindow::~KviLogViewMDIWindow() g_pLogViewWindow = 0; } +void KviLogViewMDIWindow::applyFilter() +{ + setupItemList(); +} + + QPixmap * KviLogViewMDIWindow::myIconPtr() { return g_pIconManager->getSmallIcon(KVI_SMALLICON_LOG); @@ -128,90 +210,113 @@ QSize KviLogViewMDIWindow::sizeHint() const return ret; } -void KviLogViewMDIWindow::oneTimeSetup() +void KviLogViewMDIWindow::setupItemList() { - m_pListView->clear(); - KviStr tmp, lastTypeToken, lastNameToken; - QString szFname; - KviStr typeToken, nameToken, dateToken; - lastTypeToken = ""; - lastNameToken = ""; + m_pListView->clear(); + KviLogFile *pFile; + m_logList.begin(); + KviLogListViewItem *pLastCategory=0; + KviLogListViewItemFolder *pLastGroupItem; + QString szLastGroup; + QString szCurGroup; + const bool bShowChannel=m_pShowChannelsCheck->isChecked(); + const bool bShowQuery=m_pShowQueryesCheck->isChecked(); + const bool bShowConsole=m_pShowConsolesCheck->isChecked(); + const bool bShowOther=m_pShowOtherCheck->isChecked(); + const bool bShowDccChat=m_pShowDccChatCheck->isChecked(); - KviLogListViewItemType * typeNode; - KviLogListViewItemType * lastTypeNode = 0; - KviLogListViewItem * nameNode; - KviLogListViewItem * lastNameNode = 0; - KviLogListViewLog * logNode; + const bool filterFromDate=m_pEnableFromFilter->isChecked(); + const bool filterToDate=m_pEnableToFilter->isChecked(); - QStringList m_pFileNames = getFileNames(); - m_pFileNames.sort(); + const QString nameFilterText = m_pFileNameMask->text(); + const bool enableNameFilter = !nameFilterText.isEmpty(); - for(QStringList::Iterator it = m_pFileNames.begin(); it != m_pFileNames.end(); ++it) - { - szFname=(*it); - QFileInfo fi(szFname); - if(fi.extension(false)=="tmp") - continue; -#ifdef COMPILE_ZLIB_SUPPORT - if(fi.extension(false)=="gz") - tmp = fi.baseName(true); - else -#endif - tmp = szFname; - typeToken = tmp.getToken('_'); - // Ignore non-logs files, this includes '.' and '..' - if( (!kvi_strEqualCI(typeToken.ptr(),"channel")) && (!kvi_strEqualCI(typeToken.ptr(),"console")) && (!kvi_strEqualCI(typeToken.ptr(),"dccchat")) && (!kvi_strEqualCI(typeToken.ptr(),"query")) ) - continue; + const QString contentFilterText = m_pContentsMask->text(); + const bool enableContentFilter = !contentFilterText.isEmpty(); - // <type>_<name>.<network>_<date>.log + QDate fromDate = m_pFromDateEdit->date(); + QDate toDate = m_pToDateEdit->date(); - KviStr undecoded = tmp.getToken('.'); - nameToken.hexDecode(undecoded.ptr()); - - int idx = tmp.findFirstIdx("_2"); - if(idx != -1) + QString textBuffer; + + QProgressDialog progress( __tr2qs_ctx("Filtering files...","logview"),
+ __tr2qs_ctx("Abort filtering","logview"), m_logList.count(),
+ this, "progress", TRUE ); + + int i=0; + for(pFile=m_logList.first();pFile;pFile=m_logList.next()) + { + progress.setProgress( i );
+ i++;
+ g_pApp->processEvents();
+
+ if ( progress.wasCanceled() )
+ break; + + if(pFile->type()==KviLogFile::Channel && !bShowChannel) + continue; + if(pFile->type()==KviLogFile::Console && !bShowConsole) + continue; + if(pFile->type()==KviLogFile::DccChat && !bShowDccChat) + continue; + if(pFile->type()==KviLogFile::Other && !bShowOther) + continue; + if(pFile->type()==KviLogFile::Query && !bShowQuery) + continue; + + if(filterFromDate) + if(pFile->date()<fromDate) + continue; + + if(filterToDate) + if(pFile->date()>toDate) + continue; + + if(enableNameFilter) + if(!KviQString::matchStringCI(nameFilterText,pFile->name())) + continue; + + if(enableContentFilter) { - undecoded = tmp.left(idx); - tmp.cutLeft(idx + 1); - } else - undecoded = tmp.getToken('_'); + pFile->getText(textBuffer,m_szLogDirectory); + if(!KviQString::matchStringCI(contentFilterText,textBuffer)) + continue; + } - KviStr network; - network.hexDecode(undecoded.ptr()); - nameToken.append("@"); - nameToken.append(network); - dateToken.hexDecode(tmp.ptr()); - dateToken.cutRight(4); // '.log' + if(pLastCategory) + { + if(pLastCategory->m_type!=pFile->type()) + pLastCategory = new KviLogListViewItemType(m_pListView,pFile->type()); + } else { + pLastCategory = new KviLogListViewItemType(m_pListView,pFile->type()); + } - if(typeToken == "dccchat") // 'ip.add.r_ip.add.r_' - { - dateToken.getToken('_');dateToken.getToken('_'); - } - if(typeToken == lastTypeToken) - { - if(nameToken == lastNameToken) - logNode = new KviLogListViewLog(lastNameNode, dateToken.ptr(),(*it).ascii(),lastNameToken.ptr()); - else // New name node (channel-#kvirc, query-Kane,...) - { - lastNameToken = nameToken; - nameNode = new KviLogListViewItem(lastTypeNode,typeToken.ptr(),nameToken.ptr()); - lastNameNode = nameNode; + KviQString::sprintf(szCurGroup,__tr2qs_ctx("%Q on %Q","logview"),&(pFile->name()), + &(pFile->network()) + ); - logNode = new KviLogListViewLog(lastNameNode, dateToken.ptr(),(*it).ascii(),lastNameToken.ptr()); - } - }else // New type node (channel, query...) - { - lastTypeToken = typeToken; - typeNode = new KviLogListViewItemType(m_pListView,typeToken.ptr()); - lastTypeNode = typeNode; + if(szLastGroup!=szCurGroup) { + szLastGroup=szCurGroup; + pLastGroupItem=new KviLogListViewItemFolder(pLastCategory,szLastGroup); + } + new KviLogListViewLog(pLastGroupItem,pFile->type(),pFile); + } + progress.setProgress( m_logList.count() ); +} - lastNameToken = nameToken; - nameNode = new KviLogListViewItem(lastTypeNode,typeToken.ptr(),nameToken.ptr()); - lastNameNode = nameNode; +void KviLogViewMDIWindow::cacheFileList() +{ + QStringList m_pFileNames = getFileNames(); + m_pFileNames.sort(); + QString szFname; - logNode = new KviLogListViewLog(lastNameNode,dateToken.ptr(),(*it).ascii(),lastNameToken.ptr()); - } - } + for(QStringList::Iterator it = m_pFileNames.begin(); it != m_pFileNames.end(); ++it) + { + szFname=(*it); + QFileInfo fi(szFname); + if(fi.extension(false)=="gz" || fi.extension(false)=="log") + m_logList.append(new KviLogFile(szFname)); + } } void KviLogViewMDIWindow::itemSelected(KviTalListViewItem * it) @@ -219,53 +324,14 @@ void KviLogViewMDIWindow::itemSelected(KviTalListViewItem * it) bool bCompressed=0; //A parent node m_pIrcView->clearBuffer(); - if(!it || !it->parent() || (((KviLogListViewItem *)it)->fileName(0).isEmpty())) + if(!it || !it->parent() || !(((KviLogListViewItem *)it)->m_pFileData) ) { return; } - if(((KviLogListViewItem *)it)->fileName(0).isEmpty())return; - - KviStr logName = m_szLogDirectory; - QFile logFile; QString text; - logName.append(((KviLogListViewLog *)it)->fileName(0)); - QFileInfo fi(QString(logName.ptr())); -#ifdef COMPILE_ZLIB_SUPPORT - if(fi.extension(false)=="gz") - { - gzFile file=gzopen(QTextCodec::codecForLocale()->fromUnicode(logName.ptr()).data(),"rb"); - if(file) - { - char buff[1025]; - int len; - QCString data; - len=gzread(file,buff,1024); - while(len>0) - { - buff[len]=0; - data.append(buff); - len=gzread(file,buff,1024); - } - gzclose(file); - text = QString::fromUtf8(data); - } else { - debug("Cannot open compressed file %s",logName.ptr()); - } - } else { -#endif - logFile.setName(QString::fromUtf8(logName.ptr())); - - if(!logFile.open(IO_ReadOnly)) - return; - - QByteArray bytes; - bytes=logFile.readAll(); - text = QString::fromUtf8(bytes.data(), bytes.size()); - logFile.close(); -#ifdef COMPILE_ZLIB_SUPPORT - } -#endif + ((KviLogListViewItem *)it)->m_pFileData->getText(text,m_szLogDirectory); + QStringList lines=QStringList::split('\n',text); bool bOk; int iMsgType; @@ -314,4 +380,78 @@ void KviLogViewMDIWindow::deleteCurrent() } } +KviLogFile::KviLogFile(const QString& name) +{ + m_szFilename=name; + QFileInfo fi(m_szFilename); + m_bCompressed=(fi.extension(false)=="gz"); + QString typeToken = m_szFilename.section('_',0,0); + // Ignore non-logs files, this includes '.' and '..' + if( KviQString::equalCI(typeToken,"channel") ) + m_type = Channel; + else if( KviQString::equalCI(typeToken,"console") ) + m_type = Console; + else if( KviQString::equalCI(typeToken,"dccchat") ) + m_type = DccChat; + else if( KviQString::equalCI(typeToken,"query") ) + m_type = Query; + else + m_type = Other; + + KviStr undecoded = m_szFilename.section('.',0,0).section('_',1,1); + m_szName = undecoded.hexDecode(undecoded.ptr()).ptr(); + + undecoded = m_szFilename.section('.',1,1).section('_',0,0); + m_szNetwork = undecoded.hexDecode(undecoded.ptr()).ptr(); + + QString szDate = m_szFilename.section('.',1,3).section('_',1,1); + int iYear = szDate.section('.',0,0).toInt(); + int iMonth = szDate.section('.',1,1).toInt(); + int iDay = szDate.section('.',2,2).toInt(); + m_date.setYMD(iYear,iMonth,iDay); + + //debug("type=%i, name=%s, net=%s, date=%i %i %i",m_type,m_szName.ascii(),m_szNetwork.ascii(),iYear,iMonth,iDay); +} + +void KviLogFile::getText(QString & text,const QString& logDir){ + QString logName = logDir; + QFile logFile; + logName.append(fileName()); +#ifdef COMPILE_ZLIB_SUPPORT + if(m_bCompressed) + { + gzFile file=gzopen(logName.local8Bit().data(),"rb"); + if(file) + { + char buff[1025]; + int len; + QCString data; + len=gzread(file,buff,1024); + while(len>0) + { + buff[len]=0; + data.append(buff); + len=gzread(file,buff,1024); + } + gzclose(file); + text = QString::fromUtf8(data); + } else { + debug("Cannot open compressed file %s",logName.local8Bit().data()); + } + } else { +#endif + logFile.setName(logName); + + if(!logFile.open(IO_ReadOnly)) + return; + + QByteArray bytes; + bytes=logFile.readAll(); + text = QString::fromUtf8(bytes.data(), bytes.size()); + logFile.close(); +#ifdef COMPILE_ZLIB_SUPPORT + } +#endif +} + #include "logviewmdiwindow.moc" diff --git a/src/modules/logview/logviewmdiwindow.h b/src/modules/logview/logviewmdiwindow.h index 02cb8a387..de65c02d8 100644 --- a/src/modules/logview/logviewmdiwindow.h +++ b/src/modules/logview/logviewmdiwindow.h @@ -27,11 +27,47 @@ #include "kvi_tal_vbox.h" #include "kvi_tal_listview.h" +#include "kvi_list.h" #include <qtabwidget.h> +#include <qdatetime.h> class KviTalListView; class QStringList; class KviLogViewWidget; +class QCheckBox; +class QLineEdit; +class QDateEdit; + +class KviLogFile { + +public: + + enum KviLogTypes { + Channel, + Console, + Query, + DccChat, + Other + }; + + KviLogFile(const QString& name); + + const QString & fileName() { return m_szFilename; }; + const QString & name() { return m_szName; }; + const QString & network() { return m_szNetwork; }; + const QDate & date() { return m_date; }; + + void getText(QString & text,const QString& logDir); + + KviLogTypes type() { return m_type; }; +private: + KviLogTypes m_type; + QString m_szFilename; + bool m_bCompressed; + QString m_szName; + QString m_szNetwork; + QDate m_date; +}; class KviLogViewMDIWindow : public KviWindow , public KviModuleExtension { @@ -40,16 +76,37 @@ public: KviLogViewMDIWindow(KviModuleExtensionDescriptor * d,KviFrame * lpFrm); ~KviLogViewMDIWindow(); protected: - KviTalListView * m_pListView; - QStringList * m_pFileNames; - QString m_szLogDirectory; - QTabWidget * m_pTabWidget; + KviPtrList<KviLogFile> m_logList; + + KviTalListView * m_pListView; + + // Type filter + QCheckBox * m_pShowChannelsCheck; + QCheckBox * m_pShowQueryesCheck; + QCheckBox * m_pShowConsolesCheck; + QCheckBox * m_pShowOtherCheck; + QCheckBox * m_pShowDccChatCheck; + + // Content filter + QLineEdit * m_pFileNameMask; + QLineEdit * m_pContentsMask; + + // Date/time mask + QCheckBox * m_pEnableFromFilter; + QCheckBox * m_pEnableToFilter; + QDateEdit * m_pFromDateEdit; + QDateEdit * m_pToDateEdit; + + QStringList * m_pFileNames; + QString m_szLogDirectory; + QTabWidget * m_pTabWidget; KviTalVBox * m_pIndexTab; - KviTalVBox * m_pSearchTab; + QWidget * m_pSearchTab; protected: QStringList getFileNames(); - void oneTimeSetup(); + void setupItemList(); + void cacheFileList(); virtual QPixmap * myIconPtr(); virtual void resizeEvent(QResizeEvent *e); @@ -60,6 +117,8 @@ protected slots: void rightButtonClicked ( KviTalListViewItem *, const QPoint &, int ); void itemSelected(KviTalListViewItem * it); void deleteCurrent(); + void applyFilter(); }; #endif //_LOGVIEWMDIWINDOW_H_ + diff --git a/src/modules/logview/logviewwidget.cpp b/src/modules/logview/logviewwidget.cpp index 87888288f..29398b8f1 100644 --- a/src/modules/logview/logviewwidget.cpp +++ b/src/modules/logview/logviewwidget.cpp @@ -39,14 +39,38 @@ const QPixmap * KviLogListViewItemType::pixmap(int col) const { - if(KviQString::equalCI(m_szTypeName,"channel")) - return g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL); - else if(KviQString::equalCI(m_szTypeName,"query")) - return g_pIconManager->getSmallIcon(KVI_SMALLICON_QUERY); - else if(KviQString::equalCI(m_szTypeName,"dcc")) - return g_pIconManager->getSmallIcon(KVI_SMALLICON_DCCMSG); - else - return g_pIconManager->getSmallIcon(KVI_SMALLICON_CONSOLE); + + switch(m_type) + { + case KviLogFile::Channel: + return g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL); + case KviLogFile::Query: + return g_pIconManager->getSmallIcon(KVI_SMALLICON_QUERY); + case KviLogFile::DccChat: + return g_pIconManager->getSmallIcon(KVI_SMALLICON_DCCMSG); + case KviLogFile::Console: + return g_pIconManager->getSmallIcon(KVI_SMALLICON_CONSOLE); + default: + return g_pIconManager->getSmallIcon(KVI_SMALLICON_HELP); + } } +QString KviLogListViewItemType::text(int col) const +{ + switch(m_type) + { + case KviLogFile::Channel: + return __tr2qs_ctx("Channel","logview"); + case KviLogFile::Query: + return __tr2qs_ctx("Query","logview"); + case KviLogFile::DccChat: + return __tr2qs_ctx("DCC Chat","logview"); + case KviLogFile::Console: + return __tr2qs_ctx("Console","logview"); + default: + return __tr2qs_ctx("Other","logview"); + } +}; + + #include "logviewwidget.moc" diff --git a/src/modules/logview/logviewwidget.h b/src/modules/logview/logviewwidget.h index bc0ef146a..fec67d14b 100644 --- a/src/modules/logview/logviewwidget.h +++ b/src/modules/logview/logviewwidget.h @@ -25,6 +25,7 @@ #include "kvi_window.h" #include "kvi_scripteditor.h" +#include "logviewmdiwindow.h" #include "kvi_tal_listview.h" @@ -34,41 +35,49 @@ class KviScriptEditor; class KviLogListViewItem : public KviTalListViewItem { public: - KviLogListViewItem(KviTalListViewItem * par, const QString & typeName, const QString & name) - : KviTalListViewItem(par), m_szTypeName(typeName), m_szName(name) {}; - KviLogListViewItem(KviTalListView * par, const QString & typeName, const QString & name) - : KviTalListViewItem(par), m_szTypeName(typeName), m_szName(name) {}; + KviLogListViewItem(KviTalListViewItem * par, KviLogFile::KviLogTypes type, KviLogFile * fileData) + : KviTalListViewItem(par), m_type(type), m_pFileData(fileData) {}; + KviLogListViewItem(KviTalListView * par, KviLogFile::KviLogTypes type, KviLogFile * fileData) + : KviTalListViewItem(par), m_type(type), m_pFileData(fileData) {}; ~KviLogListViewItem() {}; public: - QString m_szTypeName; - QString m_szName; - virtual QString fileName(int col) const { return QString::null; }; - virtual QString text(int col) const { return m_szName; }; + KviLogFile::KviLogTypes m_type; + KviLogFile* m_pFileData; + + virtual QString fileName(int col) const { return m_pFileData ? m_pFileData->name() : QString::null; }; + virtual QString text(int col) const { return m_pFileData ? m_pFileData->name() : QString::null; }; }; +class KviLogListViewItemFolder : public KviLogListViewItem +{ +public: + KviLogListViewItemFolder(KviTalListViewItem * par, const QString& label) + : KviLogListViewItem(par,KviLogFile::Other,0),m_szLabel(label) {}; + ~KviLogListViewItemFolder() {}; +public: + QString m_szLabel; + virtual QString text(int col) const { return m_szLabel; }; +}; class KviLogListViewItemType : public KviLogListViewItem { public: - KviLogListViewItemType(KviTalListView * par, const QString & typeName) - : KviLogListViewItem(par,typeName,typeName) {}; + KviLogListViewItemType(KviTalListView * par, KviLogFile::KviLogTypes type) + : KviLogListViewItem(par,type,0) {}; ~KviLogListViewItemType() {}; public: virtual const QPixmap * pixmap(int col) const; + virtual QString text(int col) const; }; class KviLogListViewLog : public KviLogListViewItem { public: - KviLogListViewLog(KviTalListViewItem * par,const QString & date, const QString & fileName, const QString & owner) - : KviLogListViewItem(par,"",date), m_szFileName(fileName), m_szOwner(owner) {}; + KviLogListViewLog(KviTalListViewItem * par, KviLogFile::KviLogTypes type, KviLogFile * fileData) + : KviLogListViewItem(par,type,fileData){}; ~KviLogListViewLog() {}; -public: - QString m_szFileName; - QString m_szOwner; - virtual QString fileName(int col) const { return m_szFileName; }; - virtual QString owner(int col) const { return m_szOwner; }; + virtual QString text(int col) const { return m_pFileData->date().toString("dd.MM.yyyy"); }; }; |
