Skip to content

Commit

Permalink
Fixed duration filter bug
Browse files Browse the repository at this point in the history
  • Loading branch information
virajparimi committed Jul 7, 2018
1 parent cbd1b1e commit 75e35e3
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 5 deletions.
65 changes: 60 additions & 5 deletions src/addfunctionsdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ AddFunctionsDialog::AddFunctionsDialog(QWidget *parent, QList<Trace *> _traces,
traces(_traces),
start(0),
end(0),
duration(0),
option(0),
allClicked(false),
matchingFunctions(QMap<int, Function *>()),
matchingEvents(QList<Event *>()),
Expand All @@ -28,12 +30,18 @@ AddFunctionsDialog::AddFunctionsDialog(QWidget *parent, QList<Trace *> _traces,
ui->filterMSec->setVisible(false);
ui->filterNSec->setVisible(false);

ui->filterRadioGroup->setId(ui->filterSec, 0);
ui->filterRadioGroup->setId(ui->filterMSec, 1);
ui->filterRadioGroup->setId(ui->filterNSec, 2);

connect(ui->filterOptions, SIGNAL(currentIndexChanged(int)), this, SLOT(switchVisibility(int)));
connect(ui->filterButton, SIGNAL(clicked()), this, SLOT(captureInput()));
connect(ui->selectAllFunctions, SIGNAL(clicked(bool)), this, SLOT(selectAll(bool)));
connect(ui->filterTable, SIGNAL(itemChanged(QTableWidgetItem*)), this, SLOT(addToSelectedEvents(QTableWidgetItem*)));
connect(ui->filterStart, SIGNAL(valueChanged(double)), this, SLOT(captureStartTime(double)));
connect(ui->filterEnd, SIGNAL(valueChanged(double)), this, SLOT(captureEndTime(double)));
connect(ui->filterDuration, SIGNAL(valueChanged(double)), this, SLOT(captureDuration(double)));
connect(ui->filterRadioGroup, SIGNAL(buttonClicked(int)), this, SLOT(captureOption(int)));
}

AddFunctionsDialog::~AddFunctionsDialog()
Expand Down Expand Up @@ -100,11 +108,19 @@ void AddFunctionsDialog::switchVisibility(int option)

void AddFunctionsDialog::captureInput()
{
QString filterString = ui->filterString->toPlainText();
this->matchingEvents.clear();
this->matchingFunctions.clear();
ui->filterTable->clear();
filterByString(filterString);
if (ui->filterOptions->currentIndex() == 0 || ui->filterOptions->currentIndex() == 1)
{
QString filterString = ui->filterString->toPlainText();
this->matchingEvents.clear();
this->matchingFunctions.clear();
ui->filterTable->clear();
filterByString(filterString);
}
else if (ui->filterOptions->currentIndex() == 3)
{
if (duration > 0)
filterByDuration(duration, option);
}
}

void AddFunctionsDialog::captureStartTime(double time)
Expand All @@ -131,6 +147,19 @@ void AddFunctionsDialog::captureEndTime(double time)
}
}

void AddFunctionsDialog::captureDuration(double time)
{
if (ui->filterOptions->currentIndex() == 3)
{
duration = time;
}
}

void AddFunctionsDialog::captureOption(int id)
{
option = id;
}

void AddFunctionsDialog::selectAll(bool checked)
{
if (checked)
Expand Down Expand Up @@ -260,6 +289,32 @@ void AddFunctionsDialog::filterByTime(unsigned long long start, unsigned long lo
}
}

void AddFunctionsDialog::filterByDuration(unsigned long long duration, int option)
{
if (!this->traces.empty())
{
for (QList<Trace *>::Iterator trc = this->traces.begin();
trc != this->traces.end(); ++trc)
{
for (QVector<QVector<Event *> *>::Iterator eitr = (*trc)->events->begin();
eitr != (*trc)->events->end(); ++eitr)
{
for (QVector<Event *>::Iterator itr = (*eitr)->begin();
itr != (*eitr)->end(); ++itr)
{
if ( abs((*itr)->enter - (*itr)->exit) >= duration)
{
if (!this->matchingEvents.contains(*itr)) {
this->matchingEvents.append(*itr);
}
}
}
}
}
populateTable();
}
}

void AddFunctionsDialog::populateTable()
{
ui->filterTable->setRowCount(this->matchingEvents.size());
Expand Down
5 changes: 5 additions & 0 deletions src/addfunctionsdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,16 @@ public slots:
void addToSelectedEvents(QTableWidgetItem *);
void captureStartTime(double);
void captureEndTime(double);
void captureDuration(double);
void captureOption(int);

private:
Ui::AddFunctionsDialog *ui;
QList<Trace *> traces;
unsigned long long start;
unsigned long long end;
unsigned long long duration;
int option;
QMap<int, Function *> matchingFunctions;
QList<Event *> matchingEvents;
QSet<Event *> selectedEvents;
Expand All @@ -47,6 +51,7 @@ public slots:
void getMatches(QString string);
void filterByString(QString name);
void filterByTime(unsigned long long start, unsigned long long end);
void filterByDuration(unsigned long long duration, int option);
void populateTable();
};

Expand Down
18 changes: 18 additions & 0 deletions src/addfunctionsdialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,12 @@
<property name="text">
<string>s</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">filterRadioGroup</string>
</attribute>
</widget>
<widget class="QRadioButton" name="filterMSec">
<property name="geometry">
Expand All @@ -272,6 +278,9 @@
<property name="text">
<string>ms</string>
</property>
<attribute name="buttonGroup">
<string notr="true">filterRadioGroup</string>
</attribute>
</widget>
<widget class="QRadioButton" name="filterNSec">
<property name="geometry">
Expand All @@ -285,6 +294,12 @@
<property name="text">
<string>ns</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">filterRadioGroup</string>
</attribute>
</widget>
</widget>
<resources/>
Expand Down Expand Up @@ -322,4 +337,7 @@
</hints>
</connection>
</connections>
<buttongroups>
<buttongroup name="filterRadioGroup"/>
</buttongroups>
</ui>

0 comments on commit 75e35e3

Please sign in to comment.