diff options
| author | 2011-01-01 20:19:56 +0000 | |
|---|---|---|
| committer | 2011-01-01 20:19:56 +0000 | |
| commit | c601b5a27f74b16158adafe429faefbe573e64a2 (patch) | |
| tree | a3cde3206a45628f8ac86e8dfbdab70b20c3a831 /src/modules/logview/logviewmdiwindow.cpp | |
| parent | probable compilation fix for rijndaled/crypto++ (diff) | |
| download | KVIrc-c601b5a27f74b16158adafe429faefbe573e64a2.tar.gz KVIrc-c601b5a27f74b16158adafe429faefbe573e64a2.tar.bz2 KVIrc-c601b5a27f74b16158adafe429faefbe573e64a2.zip | |
The big rename for modules. Still some details remaining.
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5284 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/logview/logviewmdiwindow.cpp')
| -rw-r--r-- | src/modules/logview/logviewmdiwindow.cpp | 567 |
1 files changed, 0 insertions, 567 deletions
diff --git a/src/modules/logview/logviewmdiwindow.cpp b/src/modules/logview/logviewmdiwindow.cpp deleted file mode 100644 index 19fd41173..000000000 --- a/src/modules/logview/logviewmdiwindow.cpp +++ /dev/null @@ -1,567 +0,0 @@ -//============================================================================= -// -// File : logviewmdiwindow.cpp -// Creation date : Tue Apr 23 2002 18:08:22 by Juanjo Alvarez -// -// This file is part of the KVIrc irc client distribution -// Copyright (C) 2002 Juanjo Alvarez -// Copyright (C) 2002-2010 Szymon Stefanek (pragma at kvirc dot net) -// -// This program is FREE software. You can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your opinion) any later version. -// -// This program is distributed in the HOPE that it will be USEFUL, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -// See the GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, write to the Free Software Foundation, -// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// -//============================================================================= - -#include "logviewmdiwindow.h" -#include "logviewwidget.h" - -#include "KviIconManager.h" -#include "KviLocale.h" -#include "KviModule.h" -#include "KviOptions.h" -#include "KviMainWindow.h" -#include "KviIrcView.h" -#include "KviQString.h" -#include "KviApplication.h" -#include "KviFileUtils.h" -#include "KviTalPopupMenu.h" - -#include <QList> -#include <QPixmap> -#include <QToolButton> -#include <QFileInfo> -#include <QDir> -#include <QCursor> -#include <QHeaderView> -#include <QLayout> -#include <QPushButton> -#include <QTextCodec> -#include <QDateTimeEdit> -#include <QLineEdit> -#include <QLabel> -#include <QShortcut> -#include <QMouseEvent> -#include <QByteArray> -#include <QMessageBox> -#include <QSplitter> -#include <QProgressBar> - -#ifdef COMPILE_ZLIB_SUPPORT - #include <zlib.h> -#endif - -#include <limits.h> //for INT_MAX - -extern KviLogViewMDIWindow * g_pLogViewWindow; - -KviLogViewMDIWindow::KviLogViewMDIWindow(KviModuleExtensionDescriptor * d,KviMainWindow * lpFrm) -: KviWindow(KVI_WINDOW_TYPE_LOGVIEW,lpFrm,"logview"), KviModuleExtension(d) -{ - g_pLogViewWindow = this; -// m_pLogViewWidget = new KviLogViewWidget(this); - - m_pSplitter = new KviTalSplitter(Qt::Horizontal,this); - m_pSplitter->setObjectName("main_splitter"); - m_pSplitter->setChildrenCollapsible(false); - - m_pLeftLayout = new KviTalVBox(m_pSplitter); - m_pTabWidget = new QTabWidget(m_pLeftLayout); - m_pBottomLayout = new KviTalHBox(m_pLeftLayout); - m_pProgressBar = new QProgressBar(m_pBottomLayout); - - m_pCancelButton = new QPushButton(m_pBottomLayout); - m_pCancelButton->setText(__tr2qs_ctx("Cancel","logview")); - connect(m_pCancelButton,SIGNAL(clicked()),this,SLOT(abortFilter())); - m_pBottomLayout->setVisible(false); - - m_pIndexTab = new KviTalVBox(m_pTabWidget); - m_pTabWidget->addTab(m_pIndexTab,__tr2qs_ctx("Index","logview")); - - m_pListView = new KviLogViewListView(m_pIndexTab); - - connect(m_pListView,SIGNAL(currentItemChanged(QTreeWidgetItem *,QTreeWidgetItem *)),this,SLOT(itemSelected(QTreeWidgetItem *,QTreeWidgetItem *))); - connect(m_pListView,SIGNAL(rightButtonPressed(QTreeWidgetItem *,QPoint)), - this,SLOT(rightButtonClicked(QTreeWidgetItem *,QPoint))); - - m_pSearchTab = new QWidget(m_pTabWidget); - m_pTabWidget->addTab(m_pSearchTab,__tr2qs_ctx("Filter","logview")); - - QGridLayout *layout = new QGridLayout(m_pSearchTab); - - m_pShowChannelsCheck = new QCheckBox(__tr2qs_ctx("Show channel logs","logview"),m_pSearchTab); - m_pShowChannelsCheck->setChecked(true); - layout->addWidget(m_pShowChannelsCheck,0,0,1,2); - - m_pShowQueryesCheck = new QCheckBox(__tr2qs_ctx("Show query logs","logview"),m_pSearchTab); - m_pShowQueryesCheck->setChecked(true); - layout->addWidget(m_pShowQueryesCheck,1,0,1,2); - - m_pShowConsolesCheck = new QCheckBox(__tr2qs_ctx("Show console logs","logview"),m_pSearchTab); - m_pShowConsolesCheck->setChecked(true); - layout->addWidget(m_pShowConsolesCheck,2,0,1,2); - - m_pShowDccChatCheck = new QCheckBox(__tr2qs_ctx("Show DCC chat logs","logview"),m_pSearchTab); - m_pShowDccChatCheck->setChecked(true); - layout->addWidget(m_pShowDccChatCheck,3,0,1,2); - - m_pShowOtherCheck = new QCheckBox(__tr2qs_ctx("Show other logs","logview"),m_pSearchTab); - m_pShowOtherCheck->setChecked(true); - layout->addWidget(m_pShowOtherCheck,4,0,1,2); - - QLabel *l; - l = new QLabel(__tr2qs_ctx("Contents filter","logview"),m_pSearchTab); - layout->addWidget(l,5,0,1,2); - - 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 QCheckBox(__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 QCheckBox(__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); - - m_pFilterButton = new QPushButton(__tr2qs_ctx("Apply filter","logview"),m_pSearchTab); - connect(m_pFilterButton,SIGNAL(clicked()),this,SLOT(applyFilter())); - layout->addWidget(m_pFilterButton,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->setMaxBufferSize(INT_MAX); - m_pIrcView->setFocusPolicy(Qt::ClickFocus); - - QList<int> li; - li.append(110); - li.append(width()-110); - m_pSplitter->setSizes(li); - - g_pApp->getLocalKvircDirectory(m_szLogDirectory,KviApplication::Log); - KviQString::ensureLastCharIs(m_szLogDirectory,'/'); // Does this work on Windows? - - m_pTimer = new QTimer(this); - m_pTimer->setSingleShot(true); - m_pTimer->setInterval(0); - connect(m_pTimer, SIGNAL(timeout()), this, SLOT(filterNext())); - //avoid to execute the long time-consuming procedure of log indexing here: - //we could still be inside the context of the "Browse log files" QAction - QTimer::singleShot( 0, this, SLOT(cacheFileList()) ); -} - -KviLogViewMDIWindow::~KviLogViewMDIWindow() -{ - g_pLogViewWindow = 0; -} - -void KviLogViewMDIWindow::keyPressEvent(QKeyEvent *e) -{ -//Make CtrlKey and CommandKey ("Apple") behave equally on MacOSX. -//This way typical X11 and Apple shortcuts can be used simultanously within the input line. - if((e->modifiers() & Qt::ControlModifier) || (e->modifiers() & Qt::AltModifier) || (e->modifiers() & Qt::MetaModifier)) - { - if(e->key() == Qt::Key_F) - { - m_pIrcView->toggleToolWidget(); - return; - } - } - KviWindow::keyPressEvent(e); -} - -void KviLogViewMDIWindow::applyFilter() -{ - setupItemList(); -} - -QPixmap * KviLogViewMDIWindow::myIconPtr() -{ - return g_pIconManager->getSmallIcon(KVI_SMALLICON_LOG); -} - -void KviLogViewMDIWindow::resizeEvent(QResizeEvent *) -{ - m_pSplitter->setGeometry(0,0,width(),height()); -} - -void KviLogViewMDIWindow::fillCaptionBuffers() -{ - m_szPlainTextCaption = __tr2qs_ctx("Log Viewer","logview"); -} - -void KviLogViewMDIWindow::die() -{ - close(); -} - -QSize KviLogViewMDIWindow::sizeHint() const -{ - QSize ret(m_pSplitter->sizeHint().width(),m_pIrcView->sizeHint().height()); - return ret; -} - -void KviLogViewMDIWindow::setupItemList() -{ - if(m_logList.isEmpty()) - return; - - m_pFilterButton->setEnabled(false); - m_pListView->clear(); - - m_bAborted=false; - m_pBottomLayout->setVisible(true); - m_pProgressBar->setRange(0, m_logList.count()); - m_pProgressBar->setValue(0); - - m_pLastCategory=0; - m_pLastGroupItem=0; - m_logList.first(); - m_pTimer->start(); //singleshot -} - -void KviLogViewMDIWindow::abortFilter() -{ - m_bAborted=true; -} - -void KviLogViewMDIWindow::filterNext() -{ - QString szCurGroup; - KviLogFile * pFile=m_logList.current(); - if(!pFile) - goto filter_last; - - if(pFile->type()==KviLogFile::Channel && !m_pShowChannelsCheck->isChecked()) - goto filter_next; - if(pFile->type()==KviLogFile::Console && !m_pShowConsolesCheck->isChecked()) - goto filter_next; - if(pFile->type()==KviLogFile::DccChat && !m_pShowDccChatCheck->isChecked()) - goto filter_next; - if(pFile->type()==KviLogFile::Other && !m_pShowOtherCheck->isChecked()) - goto filter_next; - if(pFile->type()==KviLogFile::Query && !m_pShowQueryesCheck->isChecked()) - goto filter_next; - - if(m_pEnableFromFilter->isChecked()) - if(pFile->date()>m_pFromDateEdit->date()) - goto filter_next; - - if(m_pEnableToFilter->isChecked()) - if(pFile->date()<m_pToDateEdit->date()) - goto filter_next; - - if(!m_pFileNameMask->text().isEmpty()) - if(!KviQString::matchString(m_pFileNameMask->text(),pFile->name())) - goto filter_next; - - if(!m_pContentsMask->text().isEmpty()) - { - QString textBuffer; - pFile->getText(textBuffer,m_szLogDirectory); - if(!KviQString::matchString(m_pContentsMask->text(),textBuffer)) - goto filter_next; - } - - if(m_pLastCategory) - { - if(m_pLastCategory->m_type!=pFile->type()) - m_pLastCategory = new KviLogListViewItemType(m_pListView,pFile->type()); - } else { - m_pLastCategory = new KviLogListViewItemType(m_pListView,pFile->type()); - } - - KviQString::sprintf(szCurGroup, __tr2qs_ctx("%Q on %Q","logview"), &(pFile->name()), &(pFile->network())); - - if(m_szLastGroup!=szCurGroup) - { - m_szLastGroup=szCurGroup; - m_pLastGroupItem=new KviLogListViewItemFolder(m_pLastCategory,m_szLastGroup); - } - - new KviLogListViewLog(m_pLastGroupItem,pFile->type(),pFile); - -filter_next: - pFile = m_logList.next(); - -filter_last: - if(pFile && !m_bAborted) - { - m_pProgressBar->setValue(m_pProgressBar->value()+1); - m_pTimer->start(); //singleshot - } else { - m_pBottomLayout->setVisible(false); - m_pListView->sortItems(0, Qt::AscendingOrder); - m_pProgressBar->setValue(0); - m_pFilterButton->setEnabled(true); - } -} - -void KviLogViewMDIWindow::cacheFileList() -{ - QStringList m_pFileNames = getFileNames(); - m_pFileNames.sort(); - QString szFname; - - for(QStringList::Iterator it = m_pFileNames.begin(); it != m_pFileNames.end(); ++it) - { - szFname=(*it); - QFileInfo fi(szFname); - if(fi.suffix()=="gz" || fi.suffix()=="log") - m_logList.append(new KviLogFile(szFname)); - } - - setupItemList(); -} - -void KviLogViewMDIWindow::itemSelected(QTreeWidgetItem * it,QTreeWidgetItem *) -{ - //A parent node - m_pIrcView->clearBuffer(); - if(!it || !it->parent() || !(((KviLogListViewItem *)it)->m_pFileData) ) - { - return; - } - - QString text; - ((KviLogListViewItem *)it)->m_pFileData->getText(text,m_szLogDirectory); - - QStringList lines= text.split('\n'); - bool bOk; - int iMsgType; - for ( QStringList::Iterator it = lines.begin(); it != lines.end(); ++it ) { - QString num=(*it).section(' ',0,0); - iMsgType=num.toInt(&bOk); - if(bOk) - outputNoFmt(iMsgType,(*it).section(' ',1),KviIrcView::NoRepaint | KviIrcView::NoTimestamp); - else - outputNoFmt(0,*it,KviIrcView::NoRepaint | KviIrcView::NoTimestamp); - } - m_pIrcView->repaint(); -} - -QStringList KviLogViewMDIWindow::getFileNames() -{ - QString logPath; - g_pApp->getLocalKvircDirectory(logPath,KviApplication::Log); - QString qPath(logPath); - QDir logDir(qPath); - return logDir.entryList(); -} - -void KviLogViewMDIWindow::rightButtonClicked ( QTreeWidgetItem * it, const QPoint &) -{ - if(!it) return; - m_pListView->setCurrentItem(it); - - KviTalPopupMenu* popup = new KviTalPopupMenu(this); - if(((KviLogListViewItem *)it)->childCount()) - popup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUIT)),__tr2qs_ctx("Remove all these channel/query log files","logview"),this,SLOT(deleteCurrent())); - else popup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUIT)),__tr2qs_ctx("Remove file","logview"),this,SLOT(deleteCurrent())); - - popup->exec( QCursor::pos() ); -} - -void KviLogViewMDIWindow::deleteCurrent() -{ - KviLogListViewItem* pItem = (KviLogListViewItem *)(m_pListView->currentItem()); - if(pItem) - { - if (pItem->childCount()) - { - if(QMessageBox::question( - this, - __tr2qs("Confirm current user logs delete"), - "Do you really wish to delete all these channel/query logs?", __tr2qs("&Yes"), __tr2qs("&No"),0,1 - ) != 0) return; - KviPointerList <KviLogListViewItem> itemsList; - itemsList.setAutoDelete(false); - for(int i=0;i<pItem->childCount();i++) - { - if (!pItem->child(i)->childCount()) - { - itemsList.append((KviLogListViewItem*)pItem->child(i)); - continue; - } - KviLogListViewItem* pChild=(KviLogListViewItem*)pItem->child(i); - for(int j=0;j<pChild->childCount();j++) - { - if (!(KviLogListViewItem*)pChild->child(j)) - { - qDebug("Null pointer in logviewitem"); - continue; - } - itemsList.append((KviLogListViewItem*)pChild->child(j)); - } - } - for(unsigned int i=0;i<itemsList.count();i++) - { - KviLogListViewItem *pCurItem=itemsList.at(i); - if(!pCurItem->fileName().isNull()) - { - QString szFname; - g_pApp->getLocalKvircDirectory(szFname,KviApplication::Log,pCurItem->fileName()); - KviFileUtils::removeFile(szFname); - } - } - delete pItem; - return; - } - if(!pItem->fileName().isNull()) - { - QString szFname; - g_pApp->getLocalKvircDirectory(szFname,KviApplication::Log,pItem->fileName()); - KviFileUtils::removeFile(szFname); - delete pItem; - m_pIrcView->clearBuffer(); - if (!pItem->parent()->childCount()) delete pItem->parent(); - } - } -} - -KviLogFile::KviLogFile(const QString & szName) -{ - /* - Log is in the format - $type_$nick.$network_$YYYY.$MM.$DD.log - Examples: - query_noldor.azzurra_2009.05.20.log - channel_#slackware.azzurra_2009.11.03.log - */ - - QString szTmpName = szName; - m_szFilename = szName; - - QFileInfo fi(m_szFilename); - m_bCompressed = (fi.suffix() == "gz"); - if(m_bCompressed) - { - //removes trailing dot and extension - szTmpName.chop(3); - } - QString szTypeToken = szTmpName.section('_',0,0); - // Ignore non-logs files, this includes '.' and '..' - if(KviQString::equalCI(szTypeToken,"channel")) - m_type = Channel; - else if(KviQString::equalCI(szTypeToken,"console")) - m_type = Console; - else if(KviQString::equalCI(szTypeToken,"dccchat")) - m_type = DccChat; - else if(KviQString::equalCI(szTypeToken,"query")) - m_type = Query; - else - m_type = Other; - - KviCString szUndecoded = szTmpName.section('.',0,0); - szUndecoded.cutToFirst('_'); - m_szName = szUndecoded.hexDecode(szUndecoded.ptr()).ptr(); - - szUndecoded = szTmpName.section('.',1).section('_',0,-2); - m_szNetwork = szUndecoded.hexDecode(szUndecoded.ptr()).ptr(); - - QString szDate = szTmpName.section('_',-1).section('.',0,-2); - 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); - - //qDebug("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.toLocal8Bit().data(),"rb"); - if(file) - { - char buff[1025]; - int len; - QByteArray data; - //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 { - qDebug("Cannot open compressed file %s",logName.toLocal8Bit().data()); - } - } else { -#endif - logFile.setFileName(logName); - - if(!logFile.open(QIODevice::ReadOnly)) - return; - - QByteArray bytes; - bytes=logFile.readAll(); - text = QString::fromUtf8(bytes.data(), bytes.size()); - logFile.close(); -#ifdef COMPILE_ZLIB_SUPPORT - } -#endif -} - -KviLogViewListView::KviLogViewListView(QWidget * par) -: QTreeWidget(par) -{ - header()->setSortIndicatorShown(true); - setColumnCount(1); - setHeaderLabel(__tr2qs_ctx("Log File","logview")); - setSelectionMode(QAbstractItemView::SingleSelection); - setSortingEnabled(true); - setRootIsDecorated(true); - setAnimated(true); -} - -void KviLogViewListView::mousePressEvent (QMouseEvent *e) -{ - if (e->button() == Qt::RightButton) - { - QTreeWidgetItem *i=itemAt(e->pos()); - if (i) emit rightButtonPressed(i,QCursor::pos()); - } - QTreeWidget::mousePressEvent(e); -} - -#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES -#include "logviewmdiwindow.moc" -#endif //!COMPILE_USE_STANDALONE_MOC_SOURCES |
