Revision
14471
Author
jmesquita
Date
2009-08-09 00:55:48 -0500 (Sun, 09 Aug 2009)

Log Message

Confirm application exit.

Modified Paths

Diff

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/fsgui/appmanager.cpp (14470 => 14471)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/fsgui/appmanager.cpp	2009-08-09 05:21:08 UTC (rev 14470)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/fsgui/appmanager.cpp	2009-08-09 05:55:48 UTC (rev 14471)
@@ -10,6 +10,7 @@
 AppManager::AppManager(QObject *parent)
     : QObject(parent)
 {
+    reallyClose = NULL;
     QObject::connect(qApp, SIGNAL(lastWindowClosed()),
                      this, SLOT(lastWindowClosed()));
 
@@ -40,16 +41,16 @@
     action_exit = new QAction(tr("E&xit"), this);
     action_exit->setShortcut(tr("Ctrl+Q"));
     action_exit->setToolTip(tr("Exit FsGui"));
-    QWidget::connect(action_exit, SIGNAL(triggered()),
+    QObject::connect(action_exit, SIGNAL(triggered()),
                      qApp, SLOT(closeAllWindows()));
 
     action_preferences = new QAction(tr("&Preferences"), this);
-    QWidget::connect(action_preferences, SIGNAL(triggered()),
+    QObject::connect(action_preferences, SIGNAL(triggered()),
                      settings, SLOT(show()));
 
     action_about = new QAction(tr("&About"), this);
     action_about->setShortcut(QKeySequence::HelpContents);
-    QWidget::connect(action_about, SIGNAL(triggered()),
+    QObject::connect(action_about, SIGNAL(triggered()),
                      this, SLOT(about()));
 }
 
@@ -66,7 +67,7 @@
             list.at(i)->menu()->addAction(action_exit);
             file_exists = true;
         }
-        if (QString::compare(list.at(i)->text(), tr("&Preferences"), Qt::CaseInsensitive) == 0)
+        if (QString::compare(list.at(i)->text(), tr("&Edit"), Qt::CaseInsensitive) == 0)
         {
             list.at(i)->menu()->addAction(action_preferences);
             edit_exists = true;
@@ -153,9 +154,30 @@
 
 void AppManager::lastWindowClosed()
 {
-    for (int i = 0; i < list_available_monitor_plugins.size(); ++i)
+    if (!reallyClose)
     {
-        list_available_monitor_plugins.at(i)->unload();
+        reallyClose = new QMessageBox();
+        reallyClose->setText("Do you really want to close FsGui?");
+        reallyClose->setStandardButtons(QMessageBox::Yes | QMessageBox::No);
+        reallyClose->setDefaultButton(QMessageBox::Yes);
+        reallyClose->setIcon(QMessageBox::Warning);
+        int ret = reallyClose->exec();
+        if(ret == QMessageBox::Yes)
+        {
+            for (int i = 0; i < list_available_monitor_plugins.size(); ++i)
+            {
+                list_available_monitor_plugins.at(i)->unload();
+            }
+            exit(0);
+        }
+        else
+        {
+            delete reallyClose;
+            reallyClose = NULL;
+            settings->show();
+            settings->raise();
+            settings->activateWindow();
+        }
     }
 }
 

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/fsgui/appmanager.h (14470 => 14471)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/fsgui/appmanager.h	2009-08-09 05:21:08 UTC (rev 14470)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/fsgui/appmanager.h	2009-08-09 05:55:48 UTC (rev 14471)
@@ -12,6 +12,7 @@
 class QMenu;
 class QMenuBar;
 class QListWidgetItem;
+class QMessageBox;
 class MonitorInterface;
 class SettingsDialog;
 class ServerManager;
@@ -51,6 +52,7 @@
     ServerManager *serverManager; /*< The dialog that can fetch new esl connections from the config */
     SettingsDialog *settings; /*< Settings dialog */
     Ui::pluginConfigPage *pluginConfigPage; /*< The plugin config page being used */
+    QMessageBox *reallyClose;
 
 private slots:
     /*!

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


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui	2009-08-09 05:21:08 UTC (rev 14470)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui	2009-08-09 05:55:48 UTC (rev 14471)
@@ -65,7 +65,14 @@
     </property>
     <addaction name="action_Close"/>
    </widget>
+   <widget class="QMenu" name="menu_Edit">
+    <property name="title">
+     <string>&amp;Edit</string>
+    </property>
+    <addaction name="action_Clear"/>
+   </widget>
    <addaction name="menu_File"/>
+   <addaction name="menu_Edit"/>
    <addaction name="menu_Server"/>
   </widget>
   <widget class="QStatusBar" name="statusbar"/>
@@ -98,6 +105,11 @@
     <string>&amp;Server Manager</string>
    </property>
   </action>
+  <action name="action_Clear">
+   <property name="text">
+    <string>&amp;Clear</string>
+   </property>
+  </action>
  </widget>
  <resources>
   <include location="../../resources/resources.qrc"/>

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


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp	2009-08-09 05:21:08 UTC (rev 14470)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp	2009-08-09 05:55:48 UTC (rev 14471)
@@ -25,6 +25,8 @@
                      this, SLOT(connect()));
     QObject::connect(consoleWindow->action_Disconnect, SIGNAL(triggered()),
                      this, SLOT(disconnect()));
+    QObject::connect(consoleWindow->action_Clear, SIGNAL(triggered()),
+                     this, SLOT(clearLogContents()));
 }
 
 ConsolePlugin::~ConsolePlugin(){}
@@ -134,6 +136,13 @@
     }
 }
 
+void ConsolePlugin::clearLogContents()
+{
+    ConsoleTabWidget *tab = qobject_cast<ConsoleTabWidget*>(consoleWindow->tabConsole->currentWidget());
+    if (tab)
+        tab->clearConsoleContents();
+}
+
 void ConsolePlugin::connectionStateChanged()
 {
     tabChanged(consoleWindow->tabConsole->currentIndex());

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


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.h	2009-08-09 05:21:08 UTC (rev 14470)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.h	2009-08-09 05:55:48 UTC (rev 14471)
@@ -32,6 +32,7 @@
     void connect();
     void disconnect();
     void newConnection();
+    void clearLogContents();
     void changeConsoleBackgroundColor();
     void changeAlertBackgroundColor();
     void changeCriticalBackgroundColor();

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


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp	2009-08-09 05:21:08 UTC (rev 14470)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp	2009-08-09 05:55:48 UTC (rev 14471)
@@ -50,6 +50,11 @@
     delete m_ui;
 }
 
+void ConsoleTabWidget::clearConsoleContents()
+{
+    sourceModel->clear();
+}
+
 void ConsoleTabWidget::changeEvent(QEvent *e)
 {
     QWidget::changeEvent(e);

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


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h	2009-08-09 05:21:08 UTC (rev 14470)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h	2009-08-09 05:55:48 UTC (rev 14471)
@@ -19,6 +19,9 @@
     ConsoleTabWidget(QWidget *parent, ESLconnection *eslconnection);
     ~ConsoleTabWidget();
 
+public slots:
+    void clearConsoleContents();
+
 protected:
     void changeEvent(QEvent *e);