Fix select next transacion and use current time instead of ID
Select next activate, precharge and refresh now works every time and uses the current time instead of the ID to search for the next phase. Also add a new entry "Select next command" that selects the very first phase after the current positon.
This commit is contained in:
@@ -149,26 +149,28 @@ shared_ptr<Transaction> TraceDB::getTransactionByID(ID id)
|
||||
}
|
||||
|
||||
|
||||
shared_ptr<Transaction> TraceDB::getNextActivate(ID currentTransactionId)
|
||||
shared_ptr<Transaction> TraceDB::getNextActivate(traceTime time)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
QString queryText = queryTexts.queryHead +
|
||||
"WHERE TransactionID > :currentID AND PhaseName = 'ACT' LIMIT 1";
|
||||
"WHERE PhaseBegin > :traceTime AND PhaseName "
|
||||
"IN ('ACT','ACTB') ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
|
||||
query.prepare(queryText);
|
||||
query.bindValue(":currentID", currentTransactionId);
|
||||
query.bindValue(":traceTime", time);
|
||||
executeQuery(query);
|
||||
return parseTransactionFromQuery(query);
|
||||
}
|
||||
|
||||
shared_ptr<Transaction> TraceDB::getNextPrecharge(ID currentTransactionId)
|
||||
shared_ptr<Transaction> TraceDB::getNextPrecharge(traceTime time)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
QString queryText = queryTexts.queryHead +
|
||||
"WHERE TransactionID > :currentID AND PhaseName IN ('PRE','PREA') LIMIT 1";
|
||||
"WHERE PhaseBegin > :traceTime AND PhaseName "
|
||||
"IN ('PRE','PREA','PREB','PRESB') ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
|
||||
query.prepare(queryText);
|
||||
query.bindValue(":currentID", currentTransactionId);
|
||||
query.bindValue(":traceTime", time);
|
||||
executeQuery(query);
|
||||
return parseTransactionFromQuery(query);
|
||||
}
|
||||
@@ -197,13 +199,25 @@ shared_ptr<Transaction> TraceDB::getNextPrecharge(ID currentTransactionId)
|
||||
// return parseTransactionFromQuery(query);
|
||||
// }
|
||||
|
||||
shared_ptr<Transaction> TraceDB::getNextRefresh(ID currentTransactionId)
|
||||
shared_ptr<Transaction> TraceDB::getNextRefresh(traceTime time)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
QString queryText = queryTexts.queryHead +
|
||||
"WHERE TransactionID > :currentID AND PhaseName IN ('REFA') LIMIT 1";
|
||||
"WHERE PhaseBegin > :traceTime AND PhaseName "
|
||||
"IN ('REFA','REFB','REFSB','SREF','SREFB') ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
query.prepare(queryText);
|
||||
query.bindValue(":currentID", currentTransactionId);
|
||||
query.bindValue(":traceTime", time);
|
||||
executeQuery(query);
|
||||
return parseTransactionFromQuery(query);
|
||||
}
|
||||
|
||||
std::shared_ptr<Transaction> TraceDB::getNextCommand(traceTime time)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
QString queryText = queryTexts.queryHead +
|
||||
"WHERE PhaseBegin > :traceTime ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
query.prepare(queryText);
|
||||
query.bindValue(":traceTime", time);
|
||||
executeQuery(query);
|
||||
return parseTransactionFromQuery(query);
|
||||
}
|
||||
|
||||
@@ -86,9 +86,10 @@ public:
|
||||
QString queryText);
|
||||
std::vector<std::shared_ptr<Transaction>> getTransactionsInTimespan(
|
||||
const Timespan &span);
|
||||
std::shared_ptr<Transaction> getNextPrecharge(ID currentTransactionId);
|
||||
std::shared_ptr<Transaction> getNextActivate(ID currentTransactionId);
|
||||
std::shared_ptr<Transaction> getNextRefresh(ID currentTransactionId);
|
||||
std::shared_ptr<Transaction> getNextPrecharge(traceTime time);
|
||||
std::shared_ptr<Transaction> getNextActivate(traceTime time);
|
||||
std::shared_ptr<Transaction> getNextRefresh(traceTime time);
|
||||
std::shared_ptr<Transaction> getNextCommand(traceTime time);
|
||||
// std::shared_ptr<Transaction> getNextPreb(ID currentTransactionId);
|
||||
// std::shared_ptr<Transaction> getNextActb(ID currentTransactionId);
|
||||
// std::shared_ptr<Transaction> getNextRefb(ID currentTransactionId);
|
||||
|
||||
@@ -201,46 +201,46 @@ void TraceNavigator::selectLastTransaction()
|
||||
}
|
||||
|
||||
|
||||
void TraceNavigator::selectNextRefresh()
|
||||
void TraceNavigator::selectNextRefresh(traceTime time)
|
||||
{
|
||||
shared_ptr<Transaction> nextRefresh;
|
||||
|
||||
if (!SelectedTransactions().empty())
|
||||
nextRefresh = traceFile.getNextRefresh(SelectedTransactions().front()->id);
|
||||
else
|
||||
nextRefresh = traceFile.getNextRefresh(0);
|
||||
nextRefresh = traceFile.getNextRefresh(time);
|
||||
|
||||
if (nextRefresh)
|
||||
selectTransaction(nextRefresh);
|
||||
}
|
||||
|
||||
void TraceNavigator::selectNextActivate()
|
||||
void TraceNavigator::selectNextActivate(traceTime time)
|
||||
{
|
||||
shared_ptr<Transaction> nextActivate;
|
||||
|
||||
if (!SelectedTransactions().empty())
|
||||
nextActivate = traceFile.getNextActivate(SelectedTransactions().front()->id);
|
||||
else
|
||||
nextActivate = traceFile.getNextActivate(0);
|
||||
nextActivate = traceFile.getNextActivate(time);
|
||||
|
||||
if (nextActivate)
|
||||
selectTransaction(nextActivate);
|
||||
}
|
||||
|
||||
void TraceNavigator::selectNextPrecharge()
|
||||
void TraceNavigator::selectNextPrecharge(traceTime time)
|
||||
{
|
||||
shared_ptr<Transaction> nextPrecharge;
|
||||
|
||||
if (!SelectedTransactions().empty())
|
||||
nextPrecharge = traceFile.getNextPrecharge(
|
||||
SelectedTransactions().front()->id);
|
||||
else
|
||||
nextPrecharge = traceFile.getNextPrecharge(0);
|
||||
nextPrecharge = traceFile.getNextPrecharge(time);
|
||||
|
||||
if (nextPrecharge)
|
||||
selectTransaction(nextPrecharge);
|
||||
}
|
||||
|
||||
void TraceNavigator::selectNextCommand(traceTime time)
|
||||
{
|
||||
shared_ptr<Transaction> nextCommand;
|
||||
|
||||
nextCommand = traceFile.getNextCommand(time);
|
||||
|
||||
if (nextCommand)
|
||||
selectTransaction(nextCommand);
|
||||
}
|
||||
|
||||
// void TraceNavigator::selectNextActb()
|
||||
// {
|
||||
// shared_ptr<Transaction> nextActb;
|
||||
|
||||
@@ -87,12 +87,13 @@ public:
|
||||
void selectPreviousTransaction();
|
||||
void selectLastTransaction();
|
||||
void selectFirstTransaction();
|
||||
void selectNextRefresh();
|
||||
void selectNextActivate();
|
||||
void selectNextPrecharge();
|
||||
void selectNextActb();
|
||||
void selectNextPreb();
|
||||
void selectNextRefb();
|
||||
void selectNextRefresh(traceTime time);
|
||||
void selectNextActivate(traceTime time);
|
||||
void selectNextPrecharge(traceTime time);
|
||||
void selectNextCommand(traceTime time);
|
||||
// void selectNextActb();
|
||||
// void selectNextPreb();
|
||||
// void selectNextRefb();
|
||||
|
||||
void addSelectedTransactions(const std::vector<std::shared_ptr<Transaction>>
|
||||
&transactions);
|
||||
|
||||
@@ -97,23 +97,25 @@ void TracePlot::setUpActions()
|
||||
SLOT(on_executeQuery()));
|
||||
|
||||
selectNextRefresh = new QAction("Select next refresh", this);
|
||||
selectNextRefresh->setShortcut(QKeySequence("alt+r"));
|
||||
addAction(selectNextRefresh);
|
||||
QObject::connect(selectNextRefresh, SIGNAL(triggered()), this,
|
||||
SLOT(on_selectNextRefresh()));
|
||||
|
||||
selectNextActivate = new QAction("Select next activate", this);
|
||||
selectNextActivate->setShortcut(QKeySequence("alt+a"));
|
||||
addAction(selectNextActivate);
|
||||
QObject::connect(selectNextActivate, SIGNAL(triggered()), this,
|
||||
SLOT(on_selectNextActivate()));
|
||||
|
||||
selectNextPrecharge = new QAction("Select next precharge", this);
|
||||
selectNextPrecharge->setShortcut(QKeySequence("alt+p"));
|
||||
addAction(selectNextPrecharge);
|
||||
QObject::connect(selectNextPrecharge, SIGNAL(triggered()), this,
|
||||
SLOT(on_selectNextPrecharge()));
|
||||
|
||||
selectNextCommand = new QAction("Select next command", this);
|
||||
addAction(selectNextCommand);
|
||||
QObject::connect(selectNextCommand, SIGNAL(triggered()), this,
|
||||
SLOT(on_selectNextCommand()));
|
||||
|
||||
// selectNextActb = new QAction("Select next atcb", this);
|
||||
// selectNextActb->setShortcut(QKeySequence("alt+b"));
|
||||
// addAction(selectNextActb);
|
||||
@@ -169,7 +171,7 @@ void TracePlot::setUpContextMenu()
|
||||
contextMenu->addMenu(goToSubMenu);
|
||||
|
||||
QMenu *selectSubMenu = new QMenu("Select", contextMenu);
|
||||
selectSubMenu->addActions({selectNextRefresh, selectNextActivate, selectNextPrecharge /*, selectNextActb, selectNextPreb, selectNextRefb */});
|
||||
selectSubMenu->addActions({selectNextRefresh, selectNextActivate, selectNextPrecharge, selectNextCommand /*, selectNextActb, selectNextPreb, selectNextRefb */});
|
||||
contextMenu->addMenu(selectSubMenu);
|
||||
|
||||
contextMenu->addActions({showQueryEditor, insertComment, exportToPdf});
|
||||
@@ -427,17 +429,26 @@ void TracePlot::on_executeQuery()
|
||||
|
||||
void TracePlot::on_selectNextRefresh()
|
||||
{
|
||||
navigator->selectNextRefresh();
|
||||
traceTime time = invTransform(xBottom, contextMenuMouseDown.x());
|
||||
navigator->selectNextRefresh(time);
|
||||
}
|
||||
|
||||
void TracePlot::on_selectNextActivate()
|
||||
{
|
||||
navigator->selectNextActivate();
|
||||
traceTime time = invTransform(xBottom, contextMenuMouseDown.x());
|
||||
navigator->selectNextActivate(time);
|
||||
}
|
||||
|
||||
void TracePlot::on_selectNextPrecharge()
|
||||
{
|
||||
navigator->selectNextPrecharge();
|
||||
traceTime time = invTransform(xBottom, contextMenuMouseDown.x());
|
||||
navigator->selectNextPrecharge(time);
|
||||
}
|
||||
|
||||
void TracePlot::on_selectNextCommand()
|
||||
{
|
||||
traceTime time = invTransform(xBottom, contextMenuMouseDown.x());
|
||||
navigator->selectNextCommand(time);
|
||||
}
|
||||
|
||||
// void TracePlot::on_selectNextActb()
|
||||
|
||||
@@ -101,6 +101,7 @@ private Q_SLOTS:
|
||||
void on_selectNextRefresh();
|
||||
void on_selectNextActivate();
|
||||
void on_selectNextPrecharge();
|
||||
void on_selectNextCommand();
|
||||
// void on_selectNextActb();
|
||||
// void on_selectNextPreb();
|
||||
// void on_selectNextRefb();
|
||||
@@ -168,6 +169,7 @@ private:
|
||||
QAction *selectNextRefresh;
|
||||
QAction *selectNextActivate;
|
||||
QAction *selectNextPrecharge;
|
||||
QAction *selectNextCommand;
|
||||
// QAction *selectNextActb;
|
||||
// QAction *selectNextPreb;
|
||||
// QAction *selectNextRefb;
|
||||
|
||||
Reference in New Issue
Block a user