YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
yarprunPortSorting.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-License-Identifier: LGPL-2.1-or-later
4 */
5
6#include <QString>
7#include <string>
8#include <cstdio>
9#include <ctime>
10#include "yarprunPortSorting.h"
11
12YarprunPortsSortFilterProxyModel::YarprunPortsSortFilterProxyModel( QObject *parent ) : QSortFilterProxyModel( parent )
13{
14}
15
16bool YarprunPortsSortFilterProxyModel::lessThan( const QModelIndex &left, const QModelIndex &right ) const
17{
18 if (left.column()==0)
19 {
20 //sorting by ip
21 int l1,l2,l3,l4;
22 int r1,r2,r3,r4;
23 QString leftIp = this->sourceModel()->data( left ).toString();
24 QString rightIp = this->sourceModel()->data( right ).toString();
25 leftIp.replace('.', ' ');
26 rightIp.replace('.', ' ');
27 int lres = sscanf (leftIp.toStdString().c_str(),"%d %d %d %d",&l1,&l2,&l3,&l4);
28 int rres = sscanf (rightIp.toStdString().c_str(),"%d %d %d %d",&r1,&r2,&r3,&r4);
29 Q_UNUSED(lres);
30 Q_UNUSED(rres);
31 int lval = (l1 * 16777216) + (l2 * 65536) + (l3 * 256) + (l4);
32 int rval = (r1 * 16777216) + (r2 * 65536) + (r3 * 256) + (r4);
33 return lval < rval;
34 }
35 else if (left.column()==2)
36 {
37 QString leftStr = this->sourceModel()->data( left ).toString();
38 QString rightStr = this->sourceModel()->data( right ).toString();
39 struct tm left_time;
40 struct tm right_time;
41 memset(&left_time, 0, sizeof(struct tm));
42 memset(&right_time, 0, sizeof(struct tm));
43 sscanf(leftStr.toStdString().c_str(), "%d:%d:%d %d/%d/%d", &left_time.tm_hour, &left_time.tm_min, &left_time.tm_sec, &left_time.tm_mday, &left_time.tm_mon, &left_time.tm_year);
44 sscanf(rightStr.toStdString().c_str(), "%d:%d:%d %d/%d/%d", &right_time.tm_hour, &right_time.tm_min, &right_time.tm_sec, &right_time.tm_mday, &right_time.tm_mon, &right_time.tm_year);
45 left_time.tm_year-=1900;
46 right_time.tm_year-=1900;
47 double diff = difftime(mktime(&left_time), mktime(&right_time));
48 return diff > 0;
49 }
50 else if (left.column()==3 || left.column()==4 || left.column()==5)
51 {
52 //sorting by log size
53 int leftInt = this->sourceModel()->data( left ).toInt();
54 int rightInt = this->sourceModel()->data( right ).toInt();
55 return leftInt < rightInt;
56 }
57
58 return QSortFilterProxyModel::lessThan(left,right);
59}
bool lessThan(const QModelIndex &left, const QModelIndex &right) const override
YarprunPortsSortFilterProxyModel(QObject *parent=0)
int diff(std::string contextName, folderType fType, bool verbose)