summaryrefslogtreecommitdiff
path: root/ui/qt/interface_sort_filter_model.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ui/qt/interface_sort_filter_model.cpp')
-rw-r--r--ui/qt/interface_sort_filter_model.cpp62
1 files changed, 48 insertions, 14 deletions
diff --git a/ui/qt/interface_sort_filter_model.cpp b/ui/qt/interface_sort_filter_model.cpp
index 9503fb16cc..5a1823a398 100644
--- a/ui/qt/interface_sort_filter_model.cpp
+++ b/ui/qt/interface_sort_filter_model.cpp
@@ -20,8 +20,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#include "interface_tree_model.h"
-#include "interface_sort_filter_model.h"
+#include "ui/qt/interface_tree_model.h"
+#include "ui/qt/interface_sort_filter_model.h"
#include <glib.h>
@@ -38,6 +38,10 @@ InterfaceSortFilterModel::InterfaceSortFilterModel(QObject *parent) :
{
_filterHidden = true;
+ /* Adding all columns, to have a default setting */
+ for ( int col = 0; col < IFTREE_COL_MAX; col++ )
+ _columns.append((InterfaceTreeColumns)col);
+
connect(wsApp, SIGNAL(preferencesChanged()), this, SLOT(resetPreferenceData()));
resetPreferenceData();
@@ -86,20 +90,22 @@ int InterfaceSortFilterModel::interfacesHidden()
QList<int> InterfaceSortFilterModel::typesDisplayed()
{
QList<int> shownTypes;
-#ifdef HAVE_LIBPCAP
- if ( ! global_capture_opts.all_ifaces )
+
+ if ( sourceModel()->rowCount() == 0 )
return shownTypes;
- for(unsigned int idx = 0; idx < global_capture_opts.all_ifaces->len; idx++)
+ for (int idx = 0; idx < sourceModel()->rowCount(); idx++)
{
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
- if ( ! device.hidden )
+ int type = ((InterfaceTreeModel *)sourceModel())->getColumnContent(idx, IFTREE_COL_TYPE).toInt();
+ bool hidden = ((InterfaceTreeModel *)sourceModel())->getColumnContent(idx, IFTREE_COL_HIDDEN).toBool();
+
+ if ( ! hidden )
{
- if ( ! shownTypes.contains(device.if_info.type) )
- shownTypes.append(device.if_info.type);
+ if ( ! shownTypes.contains(type) )
+ shownTypes.append(type);
}
}
-#endif
+
return shownTypes;
}
@@ -147,21 +153,49 @@ bool InterfaceSortFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex
int idx = realIndex.row();
/* No data loaded, we do not display anything */
- if ( ! global_capture_opts.all_ifaces || global_capture_opts.all_ifaces->len <= (guint) idx )
+ if ( sourceModel()->rowCount() == 0 )
return false;
- interface_t device = g_array_index(global_capture_opts.all_ifaces, interface_t, idx);
+ int type = ((InterfaceTreeModel *)sourceModel())->getColumnContent(idx, IFTREE_COL_TYPE).toInt();
+ bool hidden = ((InterfaceTreeModel *)sourceModel())->getColumnContent(idx, IFTREE_COL_HIDDEN).toBool();
- if ( device.hidden && _filterHidden )
+ if ( hidden && _filterHidden )
return false;
- if ( ! isInterfaceTypeShown(device.if_info.type) )
+ if ( ! isInterfaceTypeShown(type) )
return false;
#endif
return true;
}
+bool InterfaceSortFilterModel::filterAcceptsColumn(int sourceColumn, const QModelIndex & sourceParent) const
+{
+ QModelIndex realIndex = sourceModel()->index(0, sourceColumn, sourceParent);
+
+ if ( ! realIndex.isValid() )
+ return false;
+
+ if ( ! _columns.contains((InterfaceTreeColumns)sourceColumn) )
+ return false;
+
+ return true;
+}
+
+void InterfaceSortFilterModel::setColumns(QList<InterfaceTreeColumns> columns)
+{
+ _columns.clear();
+ _columns.append(columns);
+}
+
+int InterfaceSortFilterModel::mapSourceToColumn(InterfaceTreeColumns mdlIndex)
+{
+ if ( ! _columns.contains(mdlIndex) )
+ return -1;
+
+ return _columns.indexOf(mdlIndex, 0);
+}
+
/*
* Editor modelines
*