aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/logview
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/logview')
-rw-r--r--src/modules/logview/LogViewWidget.h11
-rw-r--r--src/modules/logview/LogViewWindow.cpp351
-rw-r--r--src/modules/logview/LogViewWindow.h59
3 files changed, 287 insertions, 134 deletions
diff --git a/src/modules/logview/LogViewWidget.h b/src/modules/logview/LogViewWidget.h
index 66ce64019..f7fb5621a 100644
--- a/src/modules/logview/LogViewWidget.h
+++ b/src/modules/logview/LogViewWidget.h
@@ -28,10 +28,8 @@
#include "LogViewWindow.h"
#include "KviWindow.h"
-#include "KviScriptEditor.h"
-#include <QTreeWidget>
-class KviScriptEditor;
+#include <QTreeWidget>
class LogListViewItem : public QTreeWidgetItem
{
@@ -40,8 +38,10 @@ public:
LogListViewItem(QTreeWidget * par, LogFile::Type type, LogFile * fileData);
~LogListViewItem() {};
public:
- LogFile::Type m_type;
- LogFile* m_pFileData;
+ LogFile::Type m_type;
+ LogFile * m_pFileData;
+public:
+ LogFile * log(){ return m_pFileData; };
virtual QString fileName() const { return QString(); };
};
@@ -60,7 +60,6 @@ public:
~LogListViewItemType() {};
};
-
class LogListViewLog : public LogListViewItem
{
public:
diff --git a/src/modules/logview/LogViewWindow.cpp b/src/modules/logview/LogViewWindow.cpp
index 7d5c5f3c1..d420a126b 100644
--- a/src/modules/logview/LogViewWindow.cpp
+++ b/src/modules/logview/LogViewWindow.cpp
@@ -6,6 +6,7 @@
// 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)
+// Copyright (C) 2011 Elvio Basello (hellvis69 at gmail dot com)
//
// This program is FREE software. You can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -36,6 +37,7 @@
#include "KviApplication.h"
#include "KviFileUtils.h"
#include "KviTalPopupMenu.h"
+#include "KviControlCodes.h"
#include <QList>
#include <QPixmap>
@@ -56,6 +58,7 @@
#include <QMessageBox>
#include <QSplitter>
#include <QProgressBar>
+#include <QTextStream>
#ifdef COMPILE_ZLIB_SUPPORT
#include <zlib.h>
@@ -67,14 +70,6 @@ extern LogViewWindow * g_pLogViewWindow;
LogFile::LogFile(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
- */
-
m_szFilename = szName;
QFileInfo fi(m_szFilename);
@@ -158,6 +153,30 @@ void LogFile::getText(QString & szText)
}
+LogViewListView::LogViewListView(QWidget * pParent)
+: QTreeWidget(pParent)
+{
+ header()->setSortIndicatorShown(true);
+ setColumnCount(1);
+ setHeaderLabel(__tr2qs_ctx("Log File","log"));
+ setSelectionMode(QAbstractItemView::SingleSelection);
+ setSortingEnabled(true);
+ setRootIsDecorated(true);
+ setAnimated(true);
+}
+
+void LogViewListView::mousePressEvent(QMouseEvent * pEvent)
+{
+ if(pEvent->button() == Qt::RightButton)
+ {
+ QTreeWidgetItem * pItem = itemAt(pEvent->pos());
+ if(pItem)
+ emit rightButtonPressed(pItem,QCursor::pos());
+ }
+ QTreeWidget::mousePressEvent(pEvent);
+}
+
+
LogViewWindow::LogViewWindow(KviModuleExtensionDescriptor * pDesc, KviMainWindow * pMain)
: KviWindow(KviWindow::LogView,pMain,"log"),KviModuleExtension(pDesc)
{
@@ -235,7 +254,7 @@ LogViewWindow::LogViewWindow(KviModuleExtensionDescriptor * pDesc, KviMainWindow
pLayout->addWidget(m_pFromDateEdit,8,1);
connect(m_pEnableFromFilter,SIGNAL(toggled(bool)),m_pFromDateEdit,SLOT(setEnabled(bool)));
- m_pEnableToFilter = new QCheckBox(__tr2qs_ctx("Only newier than","log"),m_pSearchTab);
+ m_pEnableToFilter = new QCheckBox(__tr2qs_ctx("Only newer than","log"),m_pSearchTab);
m_pToDateEdit = new QDateEdit(m_pSearchTab);
m_pToDateEdit->setDate(QDate::currentDate());
m_pToDateEdit->setEnabled(false);
@@ -260,6 +279,10 @@ LogViewWindow::LogViewWindow(KviModuleExtensionDescriptor * pDesc, KviMainWindow
li.append(width()-110);
m_pSplitter->setSizes(li);
+ m_pExportLogPopup = new KviTalPopupMenu(this,"exportlog");
+ m_pExportLogPopup->insertItem(__tr2qs_ctx("plain text file","log"));
+ connect(m_pExportLogPopup,SIGNAL(activated(int)),this,SLOT(exportLog(int)));
+
m_pTimer = new QTimer(this);
m_pTimer->setSingleShot(true);
m_pTimer->setInterval(0);
@@ -287,11 +310,6 @@ void LogViewWindow::keyPressEvent(QKeyEvent * pEvent)
KviWindow::keyPressEvent(pEvent);
}
-void LogViewWindow::applyFilter()
-{
- setupItemList();
-}
-
QPixmap * LogViewWindow::myIconPtr()
{
return g_pIconManager->getSmallIcon(KviIconManager::Log);
@@ -318,6 +336,25 @@ QSize LogViewWindow::sizeHint() const
return ret;
}
+void LogViewWindow::recurseDirectory(const QString & szDir)
+{
+ QDir dir(szDir);
+ QFileInfoList list = dir.entryInfoList();
+ for(int i=0; i < list.count(); i++)
+ {
+ QFileInfo info = list[i];
+ if(info.isDir())
+ {
+ // recursive
+ if(info.fileName()!=".." && info.fileName()!=".")
+ recurseDirectory(info.filePath());
+ } else if(info.suffix() == "gz" || info.suffix() == "log")
+ {
+ m_logList.append(new LogFile(info.filePath()));
+ }
+ }
+}
+
void LogViewWindow::setupItemList()
{
if(m_logList.isEmpty())
@@ -326,17 +363,22 @@ void LogViewWindow::setupItemList()
m_pFilterButton->setEnabled(false);
m_pListView->clear();
- m_bAborted=false;
+ 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_pLastCategory = 0;
+ m_pLastGroupItem = 0;
m_logList.first();
m_pTimer->start(); //singleshot
}
+void LogViewWindow::applyFilter()
+{
+ setupItemList();
+}
+
void LogViewWindow::abortFilter()
{
m_bAborted = true;
@@ -349,23 +391,23 @@ void LogViewWindow::filterNext()
if(!pFile)
goto filter_last;
- if(pFile->type()==LogFile::Channel && !m_pShowChannelsCheck->isChecked())
+ if(pFile->type() == LogFile::Channel && !m_pShowChannelsCheck->isChecked())
goto filter_next;
- if(pFile->type()==LogFile::Console && !m_pShowConsolesCheck->isChecked())
+ if(pFile->type() == LogFile::Console && !m_pShowConsolesCheck->isChecked())
goto filter_next;
- if(pFile->type()==LogFile::DccChat && !m_pShowDccChatCheck->isChecked())
+ if(pFile->type() == LogFile::DccChat && !m_pShowDccChatCheck->isChecked())
goto filter_next;
- if(pFile->type()==LogFile::Other && !m_pShowOtherCheck->isChecked())
+ if(pFile->type() == LogFile::Other && !m_pShowOtherCheck->isChecked())
goto filter_next;
- if(pFile->type()==LogFile::Query && !m_pShowQueryesCheck->isChecked())
+ if(pFile->type() == LogFile::Query && !m_pShowQueryesCheck->isChecked())
goto filter_next;
if(m_pEnableFromFilter->isChecked())
- if(pFile->date()>m_pFromDateEdit->date())
+ if(pFile->date() > m_pFromDateEdit->date())
goto filter_next;
if(m_pEnableToFilter->isChecked())
- if(pFile->date()<m_pToDateEdit->date())
+ if(pFile->date() < m_pToDateEdit->date())
goto filter_next;
if(!m_pFileNameMask->text().isEmpty())
@@ -382,15 +424,15 @@ void LogViewWindow::filterNext()
if(m_pLastCategory)
{
- if(m_pLastCategory->m_type!=pFile->type())
+ if(m_pLastCategory->m_type != pFile->type())
{
- m_pLastCategory=0;
+ m_pLastCategory = 0;
for(int i=0; i < m_pListView->topLevelItemCount(); ++i)
{
- LogListViewItemType * pTmp = (LogListViewItemType*) m_pListView->topLevelItem(i);
+ LogListViewItemType * pTmp = (LogListViewItemType *)m_pListView->topLevelItem(i);
if(pTmp->m_type == pFile->type())
{
- m_pLastCategory=pTmp;
+ m_pLastCategory = pTmp;
break;
}
}
@@ -409,7 +451,7 @@ void LogViewWindow::filterNext()
m_pLastGroupItem = 0;
for(int i=0; i < m_pLastCategory->childCount(); ++i)
{
- LogListViewItemFolder * pTmp = (LogListViewItemFolder*) m_pLastCategory->child(i);
+ LogListViewItemFolder * pTmp = (LogListViewItemFolder *) m_pLastCategory->child(i);
if(pTmp->text(0) == m_szLastGroup)
{
m_pLastGroupItem = pTmp;
@@ -429,11 +471,11 @@ filter_next:
filter_last:
if(pFile && !m_bAborted)
{
- m_pProgressBar->setValue(m_pProgressBar->value()+1);
+ m_pProgressBar->setValue(m_pProgressBar->value() + 1);
m_pTimer->start(); //singleshot
} else {
m_pBottomLayout->setVisible(false);
- m_pListView->sortItems(0, Qt::AscendingOrder);
+ m_pListView->sortItems(0,Qt::AscendingOrder);
m_pProgressBar->setValue(0);
m_pFilterButton->setEnabled(true);
}
@@ -448,25 +490,6 @@ void LogViewWindow::cacheFileList()
setupItemList();
}
-void LogViewWindow::recurseDirectory(const QString & szDir)
-{
- QDir dir(szDir);
- QFileInfoList list = dir.entryInfoList();
- for(int iList=0; iList < list.count(); iList++)
- {
- QFileInfo info = list[iList];
- if(info.isDir())
- {
- // recursive
- if(info.fileName()!=".." && info.fileName()!=".")
- recurseDirectory(info.filePath());
- } else if(info.suffix() == "gz" || info.suffix() == "log")
- {
- m_logList.append(new LogFile(info.filePath()));
- }
- }
-}
-
void LogViewWindow::itemSelected(QTreeWidgetItem * it, QTreeWidgetItem *)
{
//A parent node
@@ -492,17 +515,21 @@ void LogViewWindow::itemSelected(QTreeWidgetItem * it, QTreeWidgetItem *)
m_pIrcView->repaint();
}
-void LogViewWindow::rightButtonClicked( QTreeWidgetItem * it, const QPoint &)
+void LogViewWindow::rightButtonClicked(QTreeWidgetItem * pItem, const QPoint &)
{
- if(!it)
+ if(!pItem)
return;
- m_pListView->setCurrentItem(it);
+ m_pListView->setCurrentItem(pItem);
KviTalPopupMenu * pPopup = new KviTalPopupMenu(this);
- if(((LogListViewItem *)it)->childCount())
- pPopup->insertItem(*(g_pIconManager->getSmallIcon(KviIconManager::Quit)),__tr2qs_ctx("Remove all these channel/query log files","log"),this,SLOT(deleteCurrent()));
- else
- pPopup->insertItem(*(g_pIconManager->getSmallIcon(KviIconManager::Quit)),__tr2qs_ctx("Remove file","log"),this,SLOT(deleteCurrent()));
+ if(((LogListViewItem *)pItem)->childCount())
+ {
+ //pPopup->insertItem(*(g_pIconManager->getSmallIcon(KviIconManager::UserList)),__tr2qs_ctx("Export all log files to","log"),m_pExportLogPopup);
+ pPopup->insertItem(*(g_pIconManager->getSmallIcon(KviIconManager::Quit)),__tr2qs_ctx("Remove all log files","log"),this,SLOT(deleteCurrent()));
+ } else {
+ pPopup->insertItem(*(g_pIconManager->getSmallIcon(KviIconManager::UserList)),__tr2qs_ctx("Export log file to","log"),m_pExportLogPopup);
+ pPopup->insertItem(*(g_pIconManager->getSmallIcon(KviIconManager::Quit)),__tr2qs_ctx("Remove log file","log"),this,SLOT(deleteCurrent()));
+ }
pPopup->exec(QCursor::pos());
}
@@ -510,51 +537,20 @@ void LogViewWindow::rightButtonClicked( QTreeWidgetItem * it, const QPoint &)
void LogViewWindow::deleteCurrent()
{
LogListViewItem * pItem = (LogListViewItem *)(m_pListView->currentItem());
- if(pItem)
+ if(!pItem)
+ return;
+
+ if(!pItem->childCount())
{
- if(pItem->childCount())
+ if(!pItem->fileName().isNull())
{
if(QMessageBox::question(
this,
- __tr2qs_ctx("Confirm current user logs delete","log"),
- __tr2qs_ctx("Do you really wish to delete all these channel/query logs?","log"),
+ __tr2qs_ctx("Confirm current user log delete","log"),
+ __tr2qs_ctx("Do you really wish to delete this log?","log"),
__tr2qs("&Yes"),__tr2qs("&No"),0,1) != 0)
return;
- KviPointerList <LogListViewItem> itemsList;
- itemsList.setAutoDelete(false);
- for(int i=0; i < pItem->childCount(); i++)
- {
- if(!pItem->child(i)->childCount())
- {
- itemsList.append((LogListViewItem*)pItem->child(i));
- continue;
- }
- LogListViewItem * pChild = (LogListViewItem*)pItem->child(i);
- for(int j=0; j < pChild->childCount(); j++)
- {
- if(!(LogListViewItem*)pChild->child(j))
- {
- qDebug("Null pointer in logviewitem");
- continue;
- }
- itemsList.append((LogListViewItem*)pChild->child(j));
- }
- }
- for(unsigned int u=0; u < itemsList.count(); u++)
- {
- LogListViewItem * pCurItem = itemsList.at(u);
- 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);
@@ -563,33 +559,164 @@ void LogViewWindow::deleteCurrent()
if(!pItem->parent()->childCount())
delete pItem->parent();
}
+ return;
}
-}
+ if(QMessageBox::question(
+ this,
+ __tr2qs_ctx("Confirm current user logs delete","log"),
+ __tr2qs_ctx("Do you really wish to delete all these logs?","log"),
+ __tr2qs("&Yes"),__tr2qs("&No"),0,1) != 0)
+ return;
+ KviPointerList<LogListViewItem> itemsList;
+ itemsList.setAutoDelete(false);
+ for(int i=0; i < pItem->childCount(); i++)
+ {
+ if(!pItem->child(i)->childCount())
+ {
+ itemsList.append((LogListViewItem *)pItem->child(i));
+ continue;
+ }
+ LogListViewItem * pChild = (LogListViewItem *)pItem->child(i);
+ for(int j=0; j < pChild->childCount(); j++)
+ {
+ if(!(LogListViewItem *)pChild->child(j))
+ {
+ qDebug("Null pointer in logviewitem");
+ continue;
+ }
+ itemsList.append((LogListViewItem *)pChild->child(j));
+ }
+ }
+ for(unsigned int u=0; u < itemsList.count(); u++)
+ {
+ LogListViewItem * pCurItem = itemsList.at(u);
+ if(!pCurItem->fileName().isNull())
+ {
+ QString szFname;
+ g_pApp->getLocalKvircDirectory(szFname,KviApplication::Log,pCurItem->fileName());
+ KviFileUtils::removeFile(szFname);
+ }
+ }
+ delete pItem;
+}
-LogViewListView::LogViewListView(QWidget * pParent)
-: QTreeWidget(pParent)
+void LogViewWindow::exportLog(int iId)
{
- header()->setSortIndicatorShown(true);
- setColumnCount(1);
- setHeaderLabel(__tr2qs_ctx("Log File","log"));
- setSelectionMode(QAbstractItemView::SingleSelection);
- setSortingEnabled(true);
- setRootIsDecorated(true);
- setAnimated(true);
+ LogListViewItem * pItem = (LogListViewItem *)(m_pListView->currentItem());
+ if(!pItem)
+ return;
+
+ if(!pItem->childCount())
+ {
+ // Export the log
+ createLog(pItem->log(),iId);
+ return;
+ }
+
+ // We selected a node in the log list, scan the children
+ KviPointerList<LogListViewItem> logList;
+ logList.setAutoDelete(false);
+ for(int i = 0; i < pItem->childCount(); i++)
+ {
+ if(!pItem->child(i)->childCount())
+ {
+ // The child is a log file, append it to the list
+ logList.append((LogListViewItem *)pItem->child(i));
+ continue;
+ }
+
+ // The child is a node, scan it
+ LogListViewItem * pChild = (LogListViewItem *)pItem->child(i);
+ for(int j=0; j < pChild->childCount(); j++)
+ {
+ if(!(LogListViewItem *)pChild->child(j))
+ {
+ qDebug("Null pointer in logviewitem");
+ continue;
+ }
+
+ // Add the child to the list
+ logList.append((LogListViewItem *)pChild->child(j));
+ }
+ }
+
+ // Scan the list
+ for(unsigned int u = 0; u < logList.count(); u++)
+ {
+ LogListViewItem * pCurItem = logList.at(u);
+ createLog(pCurItem->log(),iId);
+ }
}
-void LogViewListView::mousePressEvent(QMouseEvent * pEvent)
+void LogViewWindow::createLog(LogFile * pLog, int iId)
{
- if(pEvent->button() == Qt::RightButton)
+ if(!pLog)
+ return;
+
+ QString szBuffer, szLine, szTmp;
+ QRegExp rx;
+
+ // Open file for reading
+ QFile file(pLog->fileName());
+ if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
+ return;
+
+ // Set up a 16bit Unicode string
+ QTextStream stream(&file);
+ stream.setCodec("UTF-8");
+
+ switch(iId)
{
- QTreeWidgetItem * pItem = itemAt(pEvent->pos());
- if(pItem)
- emit rightButtonPressed(pItem,QCursor::pos());
+ case LogFile::PlainText:
+ {
+ // Scan the file
+ while(!stream.atEnd())
+ {
+ szTmp = stream.readLine();
+ szLine = KviControlCodes::stripControlBytes(szTmp);
+
+ // Remove icons' code
+ rx.setPattern("^\\d{1,3}\\s");
+ szLine.replace(rx,"");
+
+ // Remove link from a user speaking
+ // e.g.: <!ncHelLViS69> --> <HelLViS69>
+ rx.setPattern("\\s<!nc");
+ szLine.replace(rx," <");
+
+ // Remove link from a nick in a mask
+ // e.g.: !nFoo [~bar@!hfoo.bar] --> Foo [~bar@!hfoo.bar]
+ rx.setPattern("\\s!n");
+ szLine.replace(rx," ");
+
+ // Remove link from a host in a mask
+ // e.g.: Foo [~bar@!hfoo.bar] --> Foo [~bar@foo.bar]
+ rx.setPattern("@!h");
+ szLine.replace(rx,"@");
+
+ // Remove link from a channel
+ // e.g.: !c#reloaded --> #reloaded
+ rx.setPattern("!c#");
+ szLine.replace(rx,"#");
+
+ szBuffer += szLine;
+ szBuffer += "\n";
+ }
+
+ QFile log("/home/hellvis69/test.txt");
+ if(!log.open(QIODevice::WriteOnly | QIODevice::Text))
+ return;
+
+ log.write(szBuffer.toUtf8());
+ log.close();
+
+ break;
+ }
}
- QTreeWidget::mousePressEvent(pEvent);
}
+
#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES
#include "LogViewWindow.moc"
#endif //COMPILE_USE_STANDALONE_MOC_SOURCES
diff --git a/src/modules/logview/LogViewWindow.h b/src/modules/logview/LogViewWindow.h
index 2cea68d2c..e9330fba8 100644
--- a/src/modules/logview/LogViewWindow.h
+++ b/src/modules/logview/LogViewWindow.h
@@ -48,20 +48,37 @@ class QDateEdit;
/**
* \class LogFile
* \brief The LogFile class which handle any log file
+*
+* 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
*/
class LogFile
{
public:
/**
* \enum Type
- * \brief Holds the type of the log
+ * \brief Holds the type of the log file
*/
enum Type {
- Channel, /**< the log file of a channel */
- Console, /**< the log file of a console */
- Query, /**< the log file of a query */
- DccChat, /**< the log file of a dcc chat */
- Other /**< any other log file */
+ Channel = 0, /**< the log file of a channel */
+ Console = 1, /**< the log file of a console */
+ Query = 2, /**< the log file of a query */
+ DccChat = 3, /**< the log file of a dcc chat */
+ Other = 4, /**< any other log file */
+ };
+
+ /**
+ * \enum ExportType
+ * \brief Holds the type of the exported log file
+ */
+ enum ExportType {
+ PlainText, /**< export log in plain text file */
+ HTML, /**< export log in a HTML archive */
+ //XML, /**< export log in a XML file */
+ //DB /**< export log in a database file */
};
/**
@@ -120,19 +137,19 @@ class LogViewListView : public QTreeWidget
{
Q_OBJECT
public:
- LogViewListView(QWidget*);
+ LogViewListView(QWidget *);
~LogViewListView(){};
protected:
- void mousePressEvent (QMouseEvent *e);
+ void mousePressEvent(QMouseEvent * pEvent);
signals:
- void rightButtonPressed(QTreeWidgetItem *,QPoint);
+ void rightButtonPressed(QTreeWidgetItem *, QPoint);
};
class LogViewWindow : public KviWindow, public KviModuleExtension
{
Q_OBJECT
public:
- LogViewWindow(KviModuleExtensionDescriptor * d,KviMainWindow * lpFrm);
+ LogViewWindow(KviModuleExtensionDescriptor * pDesc, KviMainWindow * pMain);
~LogViewWindow();
protected:
KviPointerList<LogFile> m_logList;
@@ -170,24 +187,34 @@ protected:
QString m_szLastGroup;
bool m_bAborted;
QTimer * m_pTimer;
+ KviTalPopupMenu * m_pExportLogPopup;
protected:
- void recurseDirectory(const QString& sDir);
-
+ void recurseDirectory(const QString & szDir);
void setupItemList();
+
+ /**
+ * \brief Exports the log and creates the file in the selected format
+ * \param pLog The log file associated to the item selected in the popup
+ * \param iId The id of the item in the popup
+ * \return void
+ */
+ void createLog(LogFile * pLog, int iId);
+
virtual QPixmap * myIconPtr();
- virtual void resizeEvent(QResizeEvent *e);
- virtual void keyPressEvent(QKeyEvent *e);
+ virtual void resizeEvent(QResizeEvent * pEvent);
+ virtual void keyPressEvent(QKeyEvent * pEvent);
virtual void fillCaptionBuffers();
virtual void die();
virtual QSize sizeHint() const;
protected slots:
- void rightButtonClicked ( QTreeWidgetItem *, const QPoint &);
- void itemSelected(QTreeWidgetItem * it, QTreeWidgetItem *);
+ void rightButtonClicked(QTreeWidgetItem *, const QPoint &);
+ void itemSelected(QTreeWidgetItem * pItem, QTreeWidgetItem *);
void deleteCurrent();
void applyFilter();
void abortFilter();
void cacheFileList();
void filterNext();
+ void exportLog(int iId);
};
#endif //_LOGVIEWWINDOW_H_