aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/logview
diff options
context:
space:
mode:
authorGravatar Fabio Bas2010-09-19 15:04:11 +0000
committerGravatar Fabio Bas2010-09-19 15:04:11 +0000
commitdb1e8c87db59b4919b111ab8f603a5254ecec8d0 (patch)
tree5e71aaab86c3a0e1b96508fe2a21ce2d62ebe734 /src/modules/logview
parentsome fixes to url handler: (diff)
downloadKVIrc-db1e8c87db59b4919b111ab8f603a5254ecec8d0.tar.gz
KVIrc-db1e8c87db59b4919b111ab8f603a5254ecec8d0.tar.bz2
KVIrc-db1e8c87db59b4919b111ab8f603a5254ecec8d0.zip
removed logviewer progress dialog; added inline progressbar; fixes #968
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5021 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/logview')
-rw-r--r--src/modules/logview/logviewmdiwindow.cpp157
-rw-r--r--src/modules/logview/logviewmdiwindow.h15
2 files changed, 95 insertions, 77 deletions
diff --git a/src/modules/logview/logviewmdiwindow.cpp b/src/modules/logview/logviewmdiwindow.cpp
index 29ad77473..c2a407148 100644
--- a/src/modules/logview/logviewmdiwindow.cpp
+++ b/src/modules/logview/logviewmdiwindow.cpp
@@ -46,7 +46,6 @@
#include <QHeaderView>
#include <QLayout>
#include <QPushButton>
-#include <QProgressDialog>
#include <QTextCodec>
#include <QDateTimeEdit>
#include <QLineEdit>
@@ -56,6 +55,7 @@
#include <QByteArray>
#include <QMessageBox>
#include <QSplitter>
+#include <QProgressBar>
#ifdef COMPILE_ZLIB_SUPPORT
#include <zlib.h>
@@ -75,7 +75,15 @@ KviLogViewMDIWindow::KviLogViewMDIWindow(KviModuleExtensionDescriptor * d,KviFra
m_pSplitter->setObjectName("main_splitter");
m_pSplitter->setChildrenCollapsible(false);
- m_pTabWidget = new QTabWidget(m_pSplitter);
+ 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"));
@@ -163,6 +171,10 @@ KviLogViewMDIWindow::KviLogViewMDIWindow(KviModuleExtensionDescriptor * d,KviFra
g_pApp->getLocalKvircDirectory(m_szLogDirectory,KviApp::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()) );
@@ -223,96 +235,89 @@ void KviLogViewMDIWindow::setupItemList()
{
m_pFilterButton->setEnabled(false);
m_pListView->clear();
- KviLogFile *pFile;
- KviLogListViewItem *pLastCategory=0;
- KviLogListViewItemFolder *pLastGroupItem=0;
- 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();
- const bool filterFromDate=m_pEnableFromFilter->isChecked();
- const bool filterToDate=m_pEnableToFilter->isChecked();
+ m_bAborted=false;
+ m_pBottomLayout->setVisible(true);
+ m_pProgressBar->setRange(0, m_logList.count());
- const QString nameFilterText = m_pFileNameMask->text();
- const bool enableNameFilter = !nameFilterText.isEmpty();
+ m_pLastCategory=0;
+ m_pLastGroupItem=0;
+ m_logList.first();
+ m_pTimer->start(); //singleshot
+}
- const QString contentFilterText = m_pContentsMask->text();
- const bool enableContentFilter = !contentFilterText.isEmpty();
+void KviLogViewMDIWindow::abortFilter()
+{
+ m_bAborted=true;
+}
- QDate fromDate = m_pFromDateEdit->date();
- QDate toDate = m_pToDateEdit->date();
+void KviLogViewMDIWindow::filterNext()
+{
+ KviLogFile * pFile=m_logList.current();
+ QString szCurGroup;
- QString textBuffer;
- QProgressDialog progress( __tr2qs_ctx("Filtering files...","logview"),
- __tr2qs_ctx("Abort filtering","logview"), 0, m_logList.count(),
- this);
- progress.setObjectName("progress");
+ 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;
- int i=0;
- for(pFile=m_logList.first();pFile;pFile=m_logList.next())
- {
- progress.setValue( i );
- i++;
- g_pApp->processEvents();
+ if(m_pEnableFromFilter->isChecked())
+ if(pFile->date()>m_pFromDateEdit->date())
+ goto filter_next;
- if ( progress.wasCanceled() )
- break;
+ if(m_pEnableToFilter->isChecked())
+ if(pFile->date()<m_pToDateEdit->date())
+ goto filter_next;
- 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(!m_pFileNameMask->text().isEmpty())
+ if(!KviQString::matchString(m_pFileNameMask->text(),pFile->name()))
+ goto filter_next;
- if(filterFromDate)
- if(pFile->date()>fromDate)
- continue;
+ if(!m_pContentsMask->text().isEmpty())
+ {
+ QString textBuffer;
+ pFile->getText(textBuffer,m_szLogDirectory);
+ if(!KviQString::matchString(m_pContentsMask->text(),textBuffer))
+ goto filter_next;
+ }
- if(filterToDate)
- if(pFile->date()<toDate)
- continue;
+ 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());
+ }
- if(enableNameFilter)
- if(!KviQString::matchString(nameFilterText,pFile->name()))
- continue;
+ KviQString::sprintf(szCurGroup, __tr2qs_ctx("%Q on %Q","logview"), &(pFile->name()), &(pFile->network()));
- if(enableContentFilter)
- {
- pFile->getText(textBuffer,m_szLogDirectory);
- if(!KviQString::matchString(contentFilterText,textBuffer))
- continue;
- }
+ if(m_szLastGroup!=szCurGroup)
+ {
+ m_szLastGroup=szCurGroup;
+ m_pLastGroupItem=new KviLogListViewItemFolder(m_pLastCategory,m_szLastGroup);
+ }
- if(pLastCategory)
- {
- if(pLastCategory->m_type!=pFile->type())
- pLastCategory = new KviLogListViewItemType(m_pListView,pFile->type());
- } else {
- pLastCategory = new KviLogListViewItemType(m_pListView,pFile->type());
- }
+ new KviLogListViewLog(m_pLastGroupItem,pFile->type(),pFile);
- KviQString::sprintf(szCurGroup,__tr2qs_ctx("%Q on %Q","logview"),&(pFile->name()),
- &(pFile->network())
- );
+filter_next:
- if(szLastGroup!=szCurGroup) {
- szLastGroup=szCurGroup;
- pLastGroupItem=new KviLogListViewItemFolder(pLastCategory,szLastGroup);
- }
- new KviLogListViewLog(pLastGroupItem,pFile->type(),pFile);
+ pFile = m_logList.next();
+ 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);
}
- progress.setValue( m_logList.count() );
- m_pListView->sortItems(0, Qt::AscendingOrder);
- m_pFilterButton->setEnabled(true);
}
void KviLogViewMDIWindow::cacheFileList()
diff --git a/src/modules/logview/logviewmdiwindow.h b/src/modules/logview/logviewmdiwindow.h
index 5ee9fa36c..7cd8ba919 100644
--- a/src/modules/logview/logviewmdiwindow.h
+++ b/src/modules/logview/logviewmdiwindow.h
@@ -36,11 +36,13 @@
#include <QDateTime>
#include <QCheckBox>
+class QProgressBar;
class QStringList;
class QLineEdit;
class QDateEdit;
class KviLogViewWidget;
-
+class KviLogListViewItem;
+class KviLogListViewItemFolder;
class KviLogFile {
@@ -117,8 +119,17 @@ protected:
QString m_szLogDirectory;
QTabWidget * m_pTabWidget;
KviTalVBox * m_pIndexTab;
+ KviTalVBox * m_pLeftLayout;
QWidget * m_pSearchTab;
QPushButton * m_pFilterButton;
+ QPushButton * m_pCancelButton;
+ KviTalHBox * m_pBottomLayout;
+ QProgressBar * m_pProgressBar;
+ KviLogListViewItem * m_pLastCategory;
+ KviLogListViewItemFolder *m_pLastGroupItem;
+ QString m_szLastGroup;
+ bool m_bAborted;
+ QTimer * m_pTimer;
protected:
QStringList getFileNames();
@@ -134,7 +145,9 @@ protected slots:
void itemSelected(QTreeWidgetItem * it, QTreeWidgetItem *);
void deleteCurrent();
void applyFilter();
+ void abortFilter();
void cacheFileList();
+ void filterNext();
};
#endif //_LOGVIEWMDIWINDOW_H_