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

List:       kde-commits
Subject:    kdewebdev/quanta/messages
From:       Michal Rudolf <mrudolf () kdewebdev ! org>
Date:       2004-04-17 10:15:07
Message-ID: 20040417101507.6AA519A66 () office ! kde ! org
[Download RAW message or body]

CVS commit by mrudolf: 

Add commands to clear message log or save it to file


  M +54 -12    messageoutput.cpp   1.30
  M +7 -3      messageoutput.h   1.19


--- kdewebdev/quanta/messages/messageoutput.cpp  #1.29:1.30
@@ -16,9 +16,16 @@
  ***************************************************************************/
 
-#include <klocale.h>
-#include <kdebug.h>
+// KDE includes
 #include <kapplication.h>
-#include <qpopupmenu.h>
+#include <kdebug.h>
+#include <kfiledialog.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+#include <kpopupmenu.h>
+
+// Qt includes
 #include <qclipboard.h>
+#include <qfile.h>
+#include <qtextstream.h>
 
 #include "messageoutput.h"
@@ -36,10 +43,13 @@ MessageOutput::MessageOutput(QWidget *pa
   setFocusPolicy( NoFocus );
 
-  m_popupMenu = new QPopupMenu(this);
-  m_popupMenu->insertItem( i18n("Copy"), this, SLOT(copyContent()) ) ;
-  
-  connect( this, SIGNAL(selected(QListBoxItem*)), SLOT(clickItem(QListBoxItem*)) );
+  m_popupMenu = new KPopupMenu(this);
   connect(this, SIGNAL(contextMenuRequested(QListBoxItem*, const QPoint&)),
      this, SLOT(showMenu(QListBoxItem*, const QPoint&)));
+  m_popupMenu->insertItem( i18n("&Copy"), this, SLOT(copyContent()) ) ;
+  m_popupMenu->insertItem( i18n("&Save..."), this, SLOT(saveContent()) ) ;
+  m_popupMenu->insertSeparator();
+  m_popupMenu->insertItem( i18n("Clear"), this, SLOT(clear()) ) ;
+  
+  connect( this, SIGNAL(selected(QListBoxItem*)), SLOT(clickItem(QListBoxItem*)) );
 
 }
@@ -107,10 +117,41 @@ void MessageOutput::showMenu( QListBoxIt
 }
 
+QString MessageOutput::content()
+{
+  QString p_content;
+  for (uint i=0; i<count(); i++)
+    p_content.append(text(i) + "\n");  
+  return p_content; 
+}
+
 void MessageOutput::copyContent()
 {
-  QString content;
-  for (int i=0; i<count(); i++)
-    content.append(text(i) + "\n");  
-  kapp->clipboard()->setText(content, QClipboard::Clipboard);
+  kapp->clipboard()->setText(content(), QClipboard::Clipboard);
+}
+
+void MessageOutput::saveContent()
+{
+  KURL url=KFileDialog::getSaveURL(QDir::currentDirPath(),
+    i18n("*.log|Log files (*.log)\n*|All files"), this, i18n("Save log file..."));
+  if (url.isEmpty()) 
+    return;
+    
+  QFileInfo fileinfo(url.path());
+  if (fileinfo.exists() && KMessageBox::questionYesNo(0,
+      i18n("<qt>File<br><b>%1</b><br>already exists. Overwrite it?</qt>")
+      .arg(url.path())) == KMessageBox::No)
+    return;
+      
+  QFile file(url.path());
+  if (!file.open(IO_WriteOnly)) {
+     KMessageBox::error(0, i18n("<qt>Cannot save log file<br><b>%1</b></qt>")
+         .arg(url.url()));
+     return;
+   }
+   
+   QTextStream textfile(&file);
+   textfile << content();
+   file.close();
+
 }
 

--- kdewebdev/quanta/messages/messageoutput.h  #1.18:1.19
@@ -22,5 +22,5 @@
 
 class KProcess;
-class QPopupMenu;
+class KPopupMenu;
 
 /**class for displaing of
@@ -34,5 +34,6 @@ public:
   MessageOutput(QWidget *parent=0, const char *name=0);
   ~MessageOutput();
-  
+  // Return whole content as a single string with EOLs
+  QString content();
 
 public slots:
@@ -44,4 +45,7 @@ public slots:
   // Copy message content to clipboard
   void copyContent();
+  // Save message content to clipboard
+  void saveContent();
+
 
 public:
@@ -61,5 +65,5 @@ protected slots:
 private:
   uint m_maxItems;
-  QPopupMenu* m_popupMenu;
+  KPopupMenu* m_popupMenu;
 };
 


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

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