[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdepim/certmanager
From:       Marc Mutz <Marc.Mutz () uni-bielefeld ! de>
Date:       2004-10-27 11:17:29
Message-ID: 20041027111729.09F3816B8A () office ! kde ! org
[Download RAW message or body]

CVS commit by mutz: 

- Speed up CRL cache dumping by an insane 4-digit percentage by
  o using QTextEdit with LogText format and
  o only updating the output window every second
- kill the process when closing the window, so it doesn't continue to suck CPU


  M +25 -5     crlview.cpp   1.7
  M +10 -2     crlview.h   1.4


--- kdepim/certmanager/crlview.cpp  #1.6:1.7
@@ -42,9 +42,11 @@
 #include <kpushbutton.h>
 #include <kstdguiitem.h>
+#include <kglobalsettings.h>
 
 #include <qlayout.h>
 #include <qlabel.h>
-#include <qtextview.h>
+#include <qtextedit.h>
 #include <qfontmetrics.h>
+#include <qtimer.h>
 
 CRLView::CRLView( QWidget* parent, const char* name, bool modal )
@@ -55,6 +57,7 @@ CRLView::CRLView( QWidget* parent, const
   topLayout->addWidget( new QLabel( i18n("CRL cache dump:"), this ) );
 
-  _textView = new QTextView( this );
-  _textView->setWordWrap( QTextEdit::NoWrap );
+  _textView = new QTextEdit( this );
+  _textView->setFont( KGlobalSettings::fixedFont() );
+  _textView->setTextFormat( QTextEdit::LogText );
   topLayout->addWidget( _textView );
 
@@ -76,9 +79,17 @@ CRLView::CRLView( QWidget* parent, const
   resize( _textView->fontMetrics().width( 'M' ) * 80,
           _textView->fontMetrics().lineSpacing() * 25 );
+
+  _timer = new QTimer( this );
+  connect( _timer, SIGNAL(timeout()), SLOT(slotAppendBuffer()) );
 }
 
 CRLView::~CRLView()
 {
-  delete _process;
+  delete _process; _process = 0;
+}
+
+void CRLView::closeEvent( QCloseEvent * e ) {
+  QDialog::closeEvent( e );
+  delete _process; _process = 0;
 }
 
@@ -87,4 +98,5 @@ void CRLView::slotUpdateView()
   _updateButton->setEnabled( false );
   _textView->clear();
+  _buffer = QString::null;
   if( _process == 0 ) {
     _process = new KProcess();
@@ -100,13 +112,21 @@ void CRLView::slotUpdateView()
     slotProcessExited();
   }
+  _timer->start( 1000 );
 }
 
 void CRLView::slotReadStdout( KProcess*, char* buf, int len)
 {
-  _textView->append( QString::fromUtf8( buf, len ) );
+  _buffer.append( QString::fromUtf8( buf, len ) );
+}
+
+void CRLView::slotAppendBuffer() {
+  _textView->append( _buffer );
+  _buffer = QString::null;
 }
 
 void CRLView::slotProcessExited()
 {
+  _timer->stop();
+  slotAppendBuffer();
   _updateButton->setEnabled( true );
 

--- kdepim/certmanager/crlview.h  #1.3:1.4
@@ -35,8 +35,10 @@
 
 #include <qdialog.h>
+#include <qstring.h>
 
-class QTextView;
+class QTextEdit;
 class QPushButton;
 class KProcess;
+class QTimer;
 
 class CRLView : public QDialog {
@@ -51,10 +53,16 @@ protected slots:
   void slotReadStdout( KProcess*, char* buf, int len);
   void slotProcessExited();
+  void slotAppendBuffer();
+
+protected:
+  void closeEvent( QCloseEvent * );
 
 private:  
-  QTextView*   _textView;
+  QTextEdit*   _textView;
   QPushButton* _updateButton;
   QPushButton* _closeButton;
   KProcess*    _process;
+  QTimer*      _timer;
+  QString      _buffer;
 };
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic