Revision
14504
Author
jmesquita
Date
2009-08-13 03:23:08 -0500 (Thu, 13 Aug 2009)

Log Message

We can now filter realtime.

Modified Paths

Diff

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


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp	2009-08-13 07:05:53 UTC (rev 14503)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp	2009-08-13 08:23:08 UTC (rev 14504)
@@ -36,10 +36,14 @@
     QObject::connect(m_ui->checkDebug, SIGNAL(clicked(bool)),
                      this, SLOT(checkDebug(bool)));
 
-    QObject::connect(m_ui->btnFind, SIGNAL(clicked()),
-                     this, SLOT(find()));
-    QObject::connect(m_ui->lineFind, SIGNAL(textChanged(QString)),
-                     this, SLOT(findStringChanged(QString)));
+    QObject::connect(m_ui->btnFilterClear, SIGNAL(clicked()),
+                     this, SLOT(filterClear()));
+    QObject::connect(m_ui->lineFilter, SIGNAL(textChanged(QString)),
+                     this, SLOT(filterStringChanged()));
+    QObject::connect(m_ui->filterCaseSensitivityCheckBox, SIGNAL(toggled(bool)),
+                     this, SLOT(filterStringChanged()));
+    QObject::connect(m_ui->filterSyntaxComboBox, SIGNAL(currentIndexChanged(int)),
+                     this, SLOT(filterStringChanged()));
 
     QObject::connect(esl, SIGNAL(connected()),
                      this, SLOT(connected()));
@@ -108,47 +112,23 @@
         m_ui->consoleListView->scrollToBottom();
 }
 
-void ConsoleTabWidget::find()
+void ConsoleTabWidget::filterClear()
 {
-    if (m_ui->lineFind->text().isEmpty())
-        return;
-
-    QModelIndexList index;
-    if (m_ui->consoleListView->currentIndex().isValid())
-    {
-        index = model->match(m_ui->consoleListView->currentIndex(), Qt::DisplayRole, m_ui->lineFind->text(), -1, Qt::MatchContains|Qt::MatchWrap);
-    }
-    else
-    {
-        index =  model->match(model->index(0,0), Qt::DisplayRole, m_ui->lineFind->text(), -1, Qt::MatchContains|Qt::MatchWrap);
-    }
-
-    if (index.isEmpty())
-    {
-        QMessageBox::warning(this, tr("No match"), tr("No match found!"));
-    }
-    else
-    {
-        if (findNext == true && index.count() > 1)
-        {
-            m_ui->consoleListView->scrollTo(index.at(1));
-            m_ui->consoleListView->setCurrentIndex(index.at(1));
-        }
-        else
-        {
-            m_ui->consoleListView->scrollTo(index.at(0));
-            m_ui->consoleListView->setCurrentIndex(index.at(0));
-        }
-        findNext = true;
-        m_ui->btnFind->setText(tr("Find Next"));
-    }
+    m_ui->lineFilter->clear();
 }
 
-void ConsoleTabWidget::findStringChanged(QString findString)
+void ConsoleTabWidget::filterStringChanged()
 {
-    m_ui->btnFind->setDisabled(findString.isEmpty());
-    m_ui->btnFind->setText(tr("Find"));
-    findNext = false;
+    QRegExp::PatternSyntax syntax =
+            QRegExp::PatternSyntax(m_ui->filterSyntaxComboBox->itemData(
+                    m_ui->filterSyntaxComboBox->currentIndex()).toInt());
+    Qt::CaseSensitivity caseSensitivity =
+            m_ui->filterCaseSensitivityCheckBox->isChecked() ? Qt::CaseSensitive
+            : Qt::CaseInsensitive;
+
+    QRegExp regExp(m_ui->lineFilter->text(), caseSensitivity, syntax);
+    model->setFilterRegExp(regExp);
+    m_ui->btnFilterClear->setDisabled(m_ui->lineFilter->text().isEmpty());
 }
 
 void ConsoleTabWidget::connected()
@@ -200,6 +180,7 @@
         }
     }
     delete event;
+
 }
 
 void ConsoleTabWidget::addNewConsoleItem(QStandardItem *item)

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


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h	2009-08-13 07:05:53 UTC (rev 14503)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h	2009-08-13 08:23:08 UTC (rev 14504)
@@ -31,8 +31,8 @@
 
 private slots:
     void conditionalScroll();
-    void find();
-    void findStringChanged(QString);
+    void filterClear();
+    void filterStringChanged();
     void connected();
     void disconnected();
     void connectionFailed(QString);

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.ui (14503 => 14504)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.ui	2009-08-13 07:05:53 UTC (rev 14503)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.ui	2009-08-13 08:23:08 UTC (rev 14504)
@@ -6,18 +6,18 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>630</width>
-    <height>499</height>
+    <width>657</width>
+    <height>445</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>Form</string>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout_2">
+  <layout class="QVBoxLayout" name="verticalLayout_3">
    <item>
     <widget class="QGroupBox" name="groupBox_2">
      <property name="title">
-      <string>Find</string>
+      <string>Filter</string>
      </property>
      <property name="flat">
       <bool>false</bool>
@@ -25,23 +25,72 @@
      <property name="checkable">
       <bool>false</bool>
      </property>
-     <layout class="QHBoxLayout" name="horizontalLayout_3">
+     <layout class="QVBoxLayout" name="verticalLayout_2">
       <item>
-       <widget class="QLineEdit" name="lineFind"/>
+       <layout class="QHBoxLayout" name="horizontalLayout_3">
+        <item>
+         <widget class="QLineEdit" name="lineFilter"/>
+        </item>
+        <item>
+         <widget class="QComboBox" name="filterSyntaxComboBox">
+          <property name="sizeAdjustPolicy">
+           <enum>QComboBox::AdjustToContentsOnFirstShow</enum>
+          </property>
+          <item>
+           <property name="text">
+            <string>Regular Expression</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>Wildcard</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>Fixed String</string>
+           </property>
+          </item>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="btnFilterClear">
+          <property name="enabled">
+           <bool>false</bool>
+          </property>
+          <property name="text">
+           <string>&amp;Clear</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
       </item>
       <item>
-       <widget class="QPushButton" name="btnFind">
-        <property name="enabled">
-         <bool>false</bool>
-        </property>
-        <property name="text">
-         <string>Find</string>
-        </property>
-        <property name="icon">
-         <iconset resource="../../resources/resources.qrc">
-          <normaloff>:/icons/find_icon.png</normaloff>:/icons/find_icon.png</iconset>
-        </property>
-       </widget>
+       <layout class="QHBoxLayout" name="horizontalLayout_4">
+        <item>
+         <widget class="QCheckBox" name="filterCaseSensitivityCheckBox">
+          <property name="text">
+           <string>Case sensitive filter</string>
+          </property>
+          <property name="checked">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer name="horizontalSpacer">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>448</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
       </item>
      </layout>
     </widget>
@@ -221,10 +270,6 @@
    </item>
   </layout>
  </widget>
- <resources>
-  <include location="../../resources/resources.qrc"/>
-  <include location="../../resources/resources.qrc"/>
-  <include location="../../resources/resources.qrc"/>
- </resources>
+ <resources/>
  <connections/>
 </ui>

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/sortfilterproxymodel.cpp (14503 => 14504)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/sortfilterproxymodel.cpp	2009-08-13 07:05:53 UTC (rev 14503)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/sortfilterproxymodel.cpp	2009-08-13 08:23:08 UTC (rev 14504)
@@ -19,5 +19,6 @@
 {
     QModelIndex index0 = sourceModel()->index(source_row, 0, source_parent);
 
-    return loglevels.value(sourceModel()->data(index0, Qt::UserRole).toInt()) == true;
+    return (loglevels.value(sourceModel()->data(index0, Qt::UserRole).toInt()) == true
+            && sourceModel()->data(index0).toString().contains(filterRegExp()));
 }