Diff
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui (14801 => 14802)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui 2009-09-10 01:26:26 UTC (rev 14801)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui 2009-09-10 05:49:25 UTC (rev 14802)
@@ -74,6 +74,7 @@
</property>
<addaction name="action_Clear"/>
<addaction name="separator"/>
+ <addaction name="action_Find"/>
</widget>
<widget class="QMenu" name="menu_Console">
<property name="title">
@@ -163,6 +164,14 @@
<string>Ctrl+R</string>
</property>
</action>
+ <action name="action_Find">
+ <property name="text">
+ <string>&Find</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+F</string>
+ </property>
+ </action>
</widget>
<resources>
<include location="../../resources/resources.qrc"/>
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp (14801 => 14802)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp 2009-09-10 01:26:26 UTC (rev 14801)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp 2009-09-10 05:49:25 UTC (rev 14802)
@@ -35,6 +35,8 @@
this, SLOT(showRealtimeStats()));
QObject::connect(consoleWindow->action_Pastebin_Log, SIGNAL(triggered()),
this, SLOT(pastebinLog()));
+ QObject::connect(consoleWindow->action_Find, SIGNAL(triggered()),
+ this, SLOT(findText()));
}
ConsolePlugin::~ConsolePlugin(){}
@@ -183,6 +185,13 @@
tab->pastebinLog();
}
+void ConsolePlugin::findText()
+{
+ ConsoleTabWidget *tab = qobject_cast<ConsoleTabWidget*>(consoleWindow->tabConsole->currentWidget());
+ if (tab)
+ tab->findText();
+}
+
void ConsolePlugin::showRealtimeStats()
{
ConsoleTabWidget *tab = qobject_cast<ConsoleTabWidget*>(consoleWindow->tabConsole->currentWidget());
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.h (14801 => 14802)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.h 2009-09-10 01:26:26 UTC (rev 14801)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.h 2009-09-10 05:49:25 UTC (rev 14802)
@@ -80,6 +80,7 @@
void clearLogContents();
void saveLogToFile();
void pastebinLog();
+ void findText();
void showRealtimeStats();
void changeConsoleBackgroundColor();
void changeAlertBackgroundColor();
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.pro (14801 => 14802)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.pro 2009-09-10 01:26:26 UTC (rev 14801)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.pro 2009-09-10 05:49:25 UTC (rev 14802)
@@ -22,10 +22,8 @@
QT += network
TEMPLATE = lib
TARGET = consoleplugin
-
DESTDIR = ../../../bin/plugins/
macx:DESTDIR = ../../../bin/fsgui.app/Contents/PlugIns/fsgui
-
CONFIG += plugin
INCLUDEPATH = ../../fsgui/ \
../../interfaces \
@@ -35,21 +33,23 @@
consoletabwidget.h \
realtimestatisticsdialog.h \
realtimemodels.h \
- pastebindialog.h
+ pastebindialog.h \
+ finddialog.h
SOURCES = consoleplugin.cpp \
sortfilterproxymodel.cpp \
consoletabwidget.cpp \
realtimestatisticsdialog.cpp \
realtimemodels.cpp \
- pastebindialog.cpp
+ pastebindialog.cpp \
+ finddialog.cpp
FORMS += centralWidget.ui \
console_settings.ui \
consoletabwidget.ui \
realtimestatisticsdialog.ui \
- pastebindialog.ui
+ pastebindialog.ui \
+ finddialog.ui
LIBS += -L../../interfaces \
-linterfaces \
-L../../../../../../libs/esl/ \
-lesl
RESOURCES += ../../resources/resources.qrc
-
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp (14801 => 14802)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp 2009-09-10 01:26:26 UTC (rev 14801)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp 2009-09-10 05:49:25 UTC (rev 14802)
@@ -4,6 +4,7 @@
#include "monitorstatemachine.h"
#include "realtimestatisticsdialog.h"
#include "pastebindialog.h"
+#include "finddialog.h"
ConsoleTabWidget::ConsoleTabWidget(QWidget *parent, ESLconnection *eslconnection) :
QWidget(parent),
@@ -11,6 +12,7 @@
esl(eslconnection),
_rtStatsDlg(NULL),
_pastebinDlg(NULL),
+ _findDialog(NULL),
findNext(false)
{
m_ui->setupUi(this);
@@ -379,3 +381,13 @@
{
model->toggleReverseFlag();
}
+
+void ConsoleTabWidget::findText()
+{
+ if(!_findDialog)
+ _findDialog = new FindDialog(this, model, m_ui->consoleListView);
+
+ _findDialog->show();
+ _findDialog->raise();
+ _findDialog->activateWindow();
+}
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h (14801 => 14802)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h 2009-09-10 01:26:26 UTC (rev 14801)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h 2009-09-10 05:49:25 UTC (rev 14802)
@@ -53,6 +53,7 @@
class MonitorStateMachine;
class RealtimeStatisticsDialog;
class pastebinDialog;
+class FindDialog;
class ConsoleTabWidget : public QWidget {
Q_OBJECT
@@ -66,6 +67,7 @@
void saveLogToFile();
void pastebinLog();
void filterLogUUID(QString);
+ void findText();
protected:
void changeEvent(QEvent *e);
@@ -102,6 +104,7 @@
MonitorStateMachine *msm;
RealtimeStatisticsDialog *_rtStatsDlg;
pastebinDialog *_pastebinDlg;
+ FindDialog *_findDialog;
bool findNext;
bool autoScroll;
int currentLogLevel;
Added: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/finddialog.cpp (0 => 14802)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/finddialog.cpp (rev 0)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/finddialog.cpp 2009-09-10 05:49:25 UTC (rev 14802)
@@ -0,0 +1,118 @@
+#include <QtGui>
+#include "finddialog.h"
+#include "ui_finddialog.h"
+#include "sortfilterproxymodel.h"
+
+FindDialog::FindDialog(QWidget *parent, SortFilterProxyModel* model, QTableView *console) :
+ QDialog(parent),
+ m_ui(new Ui::FindDialog),
+ _model(model),
+ _console(console)
+{
+ m_ui->setupUi(this);
+ QObject::connect(m_ui->lineFind, SIGNAL(textChanged(QString)),
+ this, SLOT(findStringChanged(QString)));
+ QObject::connect(m_ui->btnFindNext, SIGNAL(clicked()),
+ this, SLOT(findNext()));
+ QObject::connect(m_ui->btnFindPrev, SIGNAL(clicked()),
+ this, SLOT(findPrevious()));
+
+ _currentHit = -1;
+}
+
+FindDialog::~FindDialog()
+{
+ delete m_ui;
+}
+
+void FindDialog::findNext()
+{
+ if (processFind())
+ {
+ _currentHit++;
+ _console->selectRow(_results.at(_currentHit).row());
+ if (_currentHit == _results.size()-1)
+ _currentHit--;
+ }
+}
+
+void FindDialog::findPrevious()
+{
+ if (processFind())
+ {
+ if (_currentHit == -1 || _currentHit == 0)
+ _currentHit = _results.size()-1;
+
+ _console->selectRow(_results.at(_currentHit).row());
+ _currentHit--;
+
+ }
+}
+
+void FindDialog::changeEvent(QEvent *e)
+{
+ QDialog::changeEvent(e);
+ switch (e->type()) {
+ case QEvent::LanguageChange:
+ m_ui->retranslateUi(this);
+ break;
+ default:
+ break;
+ }
+}
+
+bool FindDialog::processFind()
+{
+
+ QModelIndexList selectionList = _console->selectionModel()->selection().indexes();
+ QModelIndex start;
+ if (selectionList.isEmpty())
+ start = _model->index(0,0,QModelIndex());
+ else
+ start = selectionList.at(0);
+
+ /* String has changed. Restart the search!*/
+ if (QString::compare(m_ui->lineFind->text(), _findStr))
+ {
+ _findStr = m_ui->lineFind->text();
+ _currentHit = -1;
+
+ Qt::MatchFlags caseSensitivity =
+ m_ui->checkCaseSensitive->isChecked() ? Qt::MatchCaseSensitive
+ : Qt::MatchExactly;
+ switch (m_ui->comboStringType->currentIndex())
+ {
+ case 0:
+ {
+ _results = _model->match(start, Qt::DisplayRole, _findStr, -1, Qt::MatchContains | caseSensitivity);
+ break;
+ }
+ case 1:
+ {
+ _results = _model->match(start, Qt::DisplayRole, _findStr, -1, Qt::MatchRegExp | caseSensitivity);
+ break;
+ }
+ case 2:
+ {
+ _results = _model->match(start, Qt::DisplayRole, _findStr, -1, Qt::MatchWildcard | caseSensitivity);
+ break;
+ }
+ }
+
+
+ if (_results.isEmpty())
+ {
+ QMessageBox::warning(this, "FsGui", "No matches found!");
+ m_ui->lineFind->setText("");
+ m_ui->lineFind->setFocus();
+ return false;
+ }
+ }
+ return true;
+}
+
+void FindDialog::findStringChanged(QString ntext)
+{
+ m_ui->btnFindNext->setDisabled(ntext.isEmpty());
+ m_ui->btnFindPrev->setDisabled(ntext.isEmpty());
+}
Added: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/finddialog.h (0 => 14802)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/finddialog.h (rev 0)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/finddialog.h 2009-09-10 05:49:25 UTC (rev 14802)
@@ -0,0 +1,38 @@
+#ifndef FINDDIALOG_H
+#define FINDDIALOG_H
+
+#include <QtGui/QDialog>
+#include <QModelIndexList>
+
+namespace Ui {
+ class FindDialog;
+}
+
+class SortFilterProxyModel;
+class QTableView;
+
+class FindDialog : public QDialog {
+ Q_OBJECT
+public:
+ FindDialog(QWidget *parent, SortFilterProxyModel* model, QTableView* console);
+ ~FindDialog();
+
+protected:
+ void changeEvent(QEvent *e);
+
+private:
+ Ui::FindDialog *m_ui;
+ SortFilterProxyModel *_model;
+ QTableView *_console;
+ QString _findStr;
+ QModelIndexList _results;
+ int _currentHit;
+
+private slots:
+ bool processFind();
+ void findNext();
+ void findPrevious();
+ void findStringChanged(QString);
+};
+
+#endif // FINDDIALOG_H
Added: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/finddialog.ui (0 => 14802)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/finddialog.ui (rev 0)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/finddialog.ui 2009-09-10 05:49:25 UTC (rev 14802)
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>FindDialog</class>
+ <widget class="QDialog" name="FindDialog">
+ <property name="windowModality">
+ <enum>Qt::NonModal</enum>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>485</width>
+ <height>114</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Find ...</string>
+ </property>
+ <property name="sizeGripEnabled">
+ <bool>true</bool>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Find what?</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineFind"/>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QComboBox" name="comboStringType">
+ <item>
+ <property name="text">
+ <string>Contains</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Regular Expression</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Wildcard</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkCaseSensitive">
+ <property name="text">
+ <string>Case Sensitive</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="btnClose">
+ <property name="text">
+ <string>&Close</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="btnFindPrev">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Find &Previous</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="btnFindNext">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Find &Next</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>btnClose</sender>
+ <signal>clicked()</signal>
+ <receiver>FindDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>216</x>
+ <y>101</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>114</x>
+ <y>107</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>