Revision
14615
Author
jmesquita
Date
2009-08-24 01:02:56 -0500 (Mon, 24 Aug 2009)

Log Message

Add the ability to save log file

Modified Paths

Diff

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui (14614 => 14615)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui	2009-08-24 03:08:22 UTC (rev 14614)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui	2009-08-24 06:02:56 UTC (rev 14615)
@@ -47,7 +47,7 @@
      <x>0</x>
      <y>0</y>
      <width>673</width>
-     <height>25</height>
+     <height>22</height>
     </rect>
    </property>
    <widget class="QMenu" name="menu_Server">
@@ -63,6 +63,8 @@
     <property name="title">
      <string>&amp;File</string>
     </property>
+    <addaction name="action_Save_log"/>
+    <addaction name="separator"/>
     <addaction name="action_Close"/>
    </widget>
    <widget class="QMenu" name="menu_Edit">
@@ -134,6 +136,11 @@
     <string>Realtime &amp;Statistics</string>
    </property>
   </action>
+  <action name="action_Save_log">
+   <property name="text">
+    <string>&amp;Save log</string>
+   </property>
+  </action>
  </widget>
  <resources>
   <include location="../../resources/resources.qrc"/>

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp (14614 => 14615)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp	2009-08-24 03:08:22 UTC (rev 14614)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp	2009-08-24 06:02:56 UTC (rev 14615)
@@ -27,6 +27,8 @@
                      this, SLOT(disconnect()));
     QObject::connect(consoleWindow->action_Clear, SIGNAL(triggered()),
                      this, SLOT(clearLogContents()));
+    QObject::connect(consoleWindow->action_Save_log, SIGNAL(triggered()),
+                     this, SLOT(saveLogToFile()));
     QObject::connect(consoleWindow->actionRealtime_Statistics, SIGNAL(triggered()),
                      this, SLOT(showRealtimeStats()));
 }
@@ -165,6 +167,13 @@
         tab->clearConsoleContents();
 }
 
+void ConsolePlugin::saveLogToFile()
+{
+    ConsoleTabWidget *tab = qobject_cast<ConsoleTabWidget*>(consoleWindow->tabConsole->currentWidget());
+    if (tab)
+        tab->saveLogToFile();
+}
+
 void ConsolePlugin::showRealtimeStats()
 {
     ConsoleTabWidget *tab = qobject_cast<ConsoleTabWidget*>(consoleWindow->tabConsole->currentWidget());

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.h (14614 => 14615)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.h	2009-08-24 03:08:22 UTC (rev 14614)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.h	2009-08-24 06:02:56 UTC (rev 14615)
@@ -75,6 +75,7 @@
     void disconnect();
     void newConnection();
     void clearLogContents();
+    void saveLogToFile();
     void showRealtimeStats();
     void changeConsoleBackgroundColor();
     void changeAlertBackgroundColor();

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp (14614 => 14615)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp	2009-08-24 03:08:22 UTC (rev 14614)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp	2009-08-24 06:02:56 UTC (rev 14615)
@@ -330,3 +330,27 @@
     m_ui->filterSyntaxComboBox->setCurrentIndex(3);
     m_ui->lineFilter->setText(uuid);
 }
+
+void ConsoleTabWidget::saveLogToFile()
+{
+    QString fileName = QFileDialog::getSaveFileName(this);
+    if (fileName.isEmpty())
+        return;
+
+    QFile file(fileName);
+    if (!file.open(QFile::WriteOnly | QFile::Text)) {
+        QMessageBox::warning(this, tr("Application"),
+                             tr("Cannot write file %1:\n%2.")
+                             .arg(fileName)
+                             .arg(file.errorString()));
+        return;
+    }
+
+    QTextStream out(&file);
+    QApplication::setOverrideCursor(Qt::WaitCursor);
+    foreach(QStandardItem *item, sourceModel->modelData())
+    {
+        out << item->data(Qt::DisplayRole).toString() << "\n";
+    }
+    QApplication::restoreOverrideCursor();
+}

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h (14614 => 14615)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h	2009-08-24 03:08:22 UTC (rev 14614)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h	2009-08-24 06:02:56 UTC (rev 14615)
@@ -62,6 +62,7 @@
 public slots:
     void clearConsoleContents();
     void showRealtimeStats();
+    void saveLogToFile();
     void filterLogUUID(QString);
 
 protected:

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/sortfilterproxymodel.h (14614 => 14615)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/sortfilterproxymodel.h	2009-08-24 03:08:22 UTC (rev 14614)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/sortfilterproxymodel.h	2009-08-24 06:02:56 UTC (rev 14615)
@@ -56,6 +56,7 @@
     QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const;
     void appendRow ( QStandardItem* item );
     void clear();
+    QList<QStandardItem *> modelData() { return _listDisplayModel; }
 
     enum {
         LogLevelRole = Qt::UserRole,