Additional coding on discrete state window.
This commit is contained in:
+171
-22
@@ -14,9 +14,47 @@ DiscreteStateWindow::DiscreteStateWindow(const QVector<CANFrame> *frames, QWidge
|
|||||||
timer = new QTimer();
|
timer = new QTimer();
|
||||||
timer->setInterval(100);
|
timer->setInterval(100);
|
||||||
|
|
||||||
|
isRealtime = ui->rbRealtime->isChecked();
|
||||||
|
typeChanged();
|
||||||
|
|
||||||
connect(ui->btnStart, SIGNAL(clicked(bool)), this, SLOT(handleStartButton()));
|
connect(ui->btnStart, SIGNAL(clicked(bool)), this, SLOT(handleStartButton()));
|
||||||
connect(timer, SIGNAL(timeout()), this, SLOT(handleTick()));
|
connect(timer, SIGNAL(timeout()), this, SLOT(handleTick()));
|
||||||
connect(MainWindow::getReference(), SIGNAL(framesUpdated(int)), this, SLOT(updatedFrames(int)));
|
connect(MainWindow::getReference(), SIGNAL(framesUpdated(int)), this, SLOT(updatedFrames(int)));
|
||||||
|
connect(ui->rbLogged, SIGNAL(clicked(bool)), this, SLOT(typeChanged()));
|
||||||
|
connect(ui->rbRealtime, SIGNAL(clicked(bool)), this, SLOT(typeChanged()));
|
||||||
|
|
||||||
|
connect(ui->btnAll, &QAbstractButton::clicked,
|
||||||
|
[=]()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < ui->listID->count(); i++)
|
||||||
|
{
|
||||||
|
QListWidgetItem *item = ui->listID->item(i);
|
||||||
|
item->setCheckState(Qt::Checked);
|
||||||
|
idFilters[Utility::ParseStringToNum(item->text())] = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(ui->btnNone, &QAbstractButton::clicked,
|
||||||
|
[=]()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < ui->listID->count(); i++)
|
||||||
|
{
|
||||||
|
QListWidgetItem *item = ui->listID->item(i);
|
||||||
|
item->setCheckState(Qt::Unchecked);
|
||||||
|
idFilters[Utility::ParseStringToNum(item->text())] = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(ui->listID, &QListWidget::itemChanged,
|
||||||
|
[=](QListWidgetItem *item)
|
||||||
|
{
|
||||||
|
bool isChecked = false;
|
||||||
|
int id = Utility::ParseStringToNum(item->text());
|
||||||
|
if (item->checkState() == Qt::Checked) isChecked = true;
|
||||||
|
idFilters[id] = isChecked;
|
||||||
|
});
|
||||||
|
|
||||||
|
refreshFilterList();
|
||||||
}
|
}
|
||||||
|
|
||||||
DiscreteStateWindow::~DiscreteStateWindow()
|
DiscreteStateWindow::~DiscreteStateWindow()
|
||||||
@@ -33,14 +71,45 @@ DiscreteStateWindow::~DiscreteStateWindow()
|
|||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiscreteStateWindow::typeChanged()
|
||||||
|
{
|
||||||
|
if (ui->rbLogged->isChecked())
|
||||||
|
{
|
||||||
|
ui->spinFreq->setEnabled(false);
|
||||||
|
ui->spinIterations->setEnabled(false);
|
||||||
|
ui->lblStatus->setEnabled(false);
|
||||||
|
ui->spinMaxBits->setEnabled(true);
|
||||||
|
ui->spinMinBits->setEnabled(true);
|
||||||
|
ui->listID->setEnabled(true);
|
||||||
|
ui->btnAll->setEnabled(true);
|
||||||
|
ui->btnNone->setEnabled(true);
|
||||||
|
isRealtime = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui->spinFreq->setEnabled(true);
|
||||||
|
ui->spinIterations->setEnabled(true);
|
||||||
|
ui->lblStatus->setEnabled(true);
|
||||||
|
ui->spinMaxBits->setEnabled(false);
|
||||||
|
ui->spinMinBits->setEnabled(false);
|
||||||
|
ui->listID->setEnabled(false);
|
||||||
|
ui->btnAll->setEnabled(false);
|
||||||
|
ui->btnNone->setEnabled(false);
|
||||||
|
isRealtime = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DiscreteStateWindow::updatedFrames(int numFrames)
|
void DiscreteStateWindow::updatedFrames(int numFrames)
|
||||||
{
|
{
|
||||||
CANFrame thisFrame;
|
CANFrame thisFrame;
|
||||||
if (numFrames == -1) //all frames deleted. Kill the display
|
if (numFrames == -1) //all frames deleted. Kill the display
|
||||||
{
|
{
|
||||||
|
ui->listID->clear();
|
||||||
|
idFilters.clear();
|
||||||
}
|
}
|
||||||
else if (numFrames == -2) //all new set of frames. Reset
|
else if (numFrames == -2) //all new set of frames. Reset
|
||||||
{
|
{
|
||||||
|
refreshFilterList();
|
||||||
}
|
}
|
||||||
else //just got some new frames. See if they are relevant.
|
else //just got some new frames. See if they are relevant.
|
||||||
{
|
{
|
||||||
@@ -48,12 +117,43 @@ void DiscreteStateWindow::updatedFrames(int numFrames)
|
|||||||
for (int i = modelFrames->count() - numFrames; i < modelFrames->count(); i++)
|
for (int i = modelFrames->count() - numFrames; i < modelFrames->count(); i++)
|
||||||
{
|
{
|
||||||
thisFrame = modelFrames->at(i);
|
thisFrame = modelFrames->at(i);
|
||||||
|
|
||||||
|
if (!idFilters.contains(thisFrame.ID))
|
||||||
|
{
|
||||||
|
idFilters.insert(thisFrame.ID, true);
|
||||||
|
QListWidgetItem* listItem = new QListWidgetItem(Utility::formatNumber(thisFrame.ID), ui->listID);
|
||||||
|
listItem->setFlags(listItem->flags() | Qt::ItemIsUserCheckable); // set checkable flag
|
||||||
|
listItem->setCheckState(Qt::Checked); //default all filters to be set active
|
||||||
|
}
|
||||||
|
|
||||||
if (operatingState == DWStates::IDLE) stateFrames[0]->append(thisFrame);
|
if (operatingState == DWStates::IDLE) stateFrames[0]->append(thisFrame);
|
||||||
else stateFrames[currToggleState + 1]->append(thisFrame);
|
else stateFrames[currToggleState + 1]->append(thisFrame);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiscreteStateWindow::refreshFilterList()
|
||||||
|
{
|
||||||
|
int id;
|
||||||
|
|
||||||
|
idFilters.clear();
|
||||||
|
ui->listID->clear();
|
||||||
|
|
||||||
|
for (int i = 0; i < modelFrames->length(); i++)
|
||||||
|
{
|
||||||
|
id = modelFrames->at(i).ID;
|
||||||
|
if (!idFilters.contains(id))
|
||||||
|
{
|
||||||
|
idFilters.insert(id, true);
|
||||||
|
QListWidgetItem* listItem = new QListWidgetItem(Utility::formatNumber(id), ui->listID);
|
||||||
|
listItem->setFlags(listItem->flags() | Qt::ItemIsUserCheckable); // set checkable flag
|
||||||
|
listItem->setCheckState(Qt::Checked); //default all filters to be set active
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ui->listID->sortItems();
|
||||||
|
}
|
||||||
|
|
||||||
void DiscreteStateWindow::showEvent(QShowEvent* event)
|
void DiscreteStateWindow::showEvent(QShowEvent* event)
|
||||||
{
|
{
|
||||||
QDialog::showEvent(event);
|
QDialog::showEvent(event);
|
||||||
@@ -97,7 +197,7 @@ void DiscreteStateWindow::updateStateLabel()
|
|||||||
switch(operatingState)
|
switch(operatingState)
|
||||||
{
|
{
|
||||||
case DWStates::IDLE:
|
case DWStates::IDLE:
|
||||||
ui->lblStatus->setText("WAIT");
|
ui->lblStatus->setText("IDLE");
|
||||||
pal = ui->lblStatus->palette();
|
pal = ui->lblStatus->palette();
|
||||||
pal.setColor(QPalette::WindowText, Qt::red);
|
pal.setColor(QPalette::WindowText, Qt::red);
|
||||||
ui->lblStatus->setPalette(pal);
|
ui->lblStatus->setPalette(pal);
|
||||||
@@ -109,7 +209,7 @@ void DiscreteStateWindow::updateStateLabel()
|
|||||||
ui->lblStatus->setPalette(pal);
|
ui->lblStatus->setPalette(pal);
|
||||||
break;
|
break;
|
||||||
case DWStates::COUNTDOWN_WAITING:
|
case DWStates::COUNTDOWN_WAITING:
|
||||||
ui->lblStatus->setText("Return to resting state");
|
ui->lblStatus->setText("Wait....");
|
||||||
pal = ui->lblStatus->palette();
|
pal = ui->lblStatus->palette();
|
||||||
pal.setColor(QPalette::WindowText, Qt::red);
|
pal.setColor(QPalette::WindowText, Qt::red);
|
||||||
ui->lblStatus->setPalette(pal);
|
ui->lblStatus->setPalette(pal);
|
||||||
@@ -120,32 +220,45 @@ void DiscreteStateWindow::updateStateLabel()
|
|||||||
pal.setColor(QPalette::WindowText, Qt::green);
|
pal.setColor(QPalette::WindowText, Qt::green);
|
||||||
ui->lblStatus->setPalette(pal);
|
ui->lblStatus->setPalette(pal);
|
||||||
break;
|
break;
|
||||||
|
case DWStates::DONE:
|
||||||
|
ui->lblStatus->setText("DONE");
|
||||||
|
pal = ui->lblStatus->palette();
|
||||||
|
pal.setColor(QPalette::WindowText, Qt::green);
|
||||||
|
ui->lblStatus->setPalette(pal);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiscreteStateWindow::handleStartButton()
|
void DiscreteStateWindow::handleStartButton()
|
||||||
{
|
{
|
||||||
operatingState = DWStates::COUNTDOWN_SIGNAL;
|
if (isRealtime)
|
||||||
|
|
||||||
ticksPerStateChange = ticksUntilStateChange = ui->spinFreq->value() * 10;
|
|
||||||
numToggleStates = ui->spinStates->value();
|
|
||||||
numIterations = ui->spinIterations->value();
|
|
||||||
|
|
||||||
currToggleState = 0;
|
|
||||||
currIteration = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < stateFrames.count(); i++)
|
|
||||||
{
|
{
|
||||||
stateFrames[i]->clear();
|
operatingState = DWStates::COUNTDOWN_SIGNAL;
|
||||||
delete(stateFrames[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int j = 0; j <= numToggleStates; j++)
|
ticksPerStateChange = ticksUntilStateChange = ui->spinFreq->value() * 10;
|
||||||
|
numToggleStates = ui->spinStates->value();
|
||||||
|
numIterations = ui->spinIterations->value();
|
||||||
|
|
||||||
|
currToggleState = 0;
|
||||||
|
currIteration = 0;
|
||||||
|
|
||||||
|
for (int i = stateFrames.count() - 1; i > 0; i--)
|
||||||
|
{
|
||||||
|
stateFrames[i]->clear();
|
||||||
|
stateFrames.removeAt(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int j = 0; j <= numToggleStates; j++)
|
||||||
|
{
|
||||||
|
stateFrames.append(new QVector<CANFrame>());
|
||||||
|
}
|
||||||
|
|
||||||
|
timer->start();
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
stateFrames.append(new QVector<CANFrame>());
|
calculateResults();
|
||||||
}
|
}
|
||||||
|
|
||||||
timer->start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiscreteStateWindow::handleTick()
|
void DiscreteStateWindow::handleTick()
|
||||||
@@ -168,11 +281,11 @@ void DiscreteStateWindow::handleTick()
|
|||||||
{
|
{
|
||||||
ticksUntilStateChange = ticksPerStateChange;
|
ticksUntilStateChange = ticksPerStateChange;
|
||||||
currIteration++;
|
currIteration++;
|
||||||
if (currIteration == numIterations)
|
if (currIteration > numIterations)
|
||||||
{
|
{
|
||||||
operatingState = DWStates::IDLE;
|
operatingState = DWStates::IDLE;
|
||||||
timer->stop();
|
timer->stop();
|
||||||
//call to calculate our findings here.
|
calculateResults();
|
||||||
}
|
}
|
||||||
else operatingState = DWStates::COUNTDOWN_SIGNAL;
|
else operatingState = DWStates::COUNTDOWN_SIGNAL;
|
||||||
}
|
}
|
||||||
@@ -184,7 +297,7 @@ void DiscreteStateWindow::handleTick()
|
|||||||
ticksUntilStateChange = ticksPerStateChange;
|
ticksUntilStateChange = ticksPerStateChange;
|
||||||
operatingState = DWStates::COUNTDOWN_WAITING;
|
operatingState = DWStates::COUNTDOWN_WAITING;
|
||||||
currToggleState++;
|
currToggleState++;
|
||||||
if (currToggleState == numToggleStates) currToggleState = 0;
|
if (currToggleState > numToggleStates) currToggleState = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -193,5 +306,41 @@ void DiscreteStateWindow::handleTick()
|
|||||||
|
|
||||||
void DiscreteStateWindow::calculateResults()
|
void DiscreteStateWindow::calculateResults()
|
||||||
{
|
{
|
||||||
|
int minBits, maxBits;
|
||||||
|
if (isRealtime)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else //use already loaded frames from main cache
|
||||||
|
{
|
||||||
|
//basic overview: run through all ID filters and see if it is enabled.
|
||||||
|
//If so add it to a giant list of messages by ID where each ID has its own
|
||||||
|
//list of messages
|
||||||
|
//Then, for each ID start a loop that runs from largest bits to smallest bits for scan
|
||||||
|
//For each value run through the algorithm for all messages. At the end list any matches
|
||||||
|
//the simplest approach seems to be to grab that number of bits and then record every
|
||||||
|
//unique value. IF the # of unique values is the same as the number of states then
|
||||||
|
//we've got a match.It should be noted that the # of states must be at least 2 - the idle
|
||||||
|
//state is 1 and then a second state at the minimum. Turn signals might be 3 states then
|
||||||
|
|
||||||
|
minBits = ui->spinMinBits->value();
|
||||||
|
maxBits = ui->spinMaxBits->value();
|
||||||
|
QHash<int, bool>::const_iterator it;
|
||||||
|
QList<CANFrame> frameCache;
|
||||||
|
for (it = idFilters.begin(); it != idFilters.end(); ++it)
|
||||||
|
{
|
||||||
|
if (it.value())
|
||||||
|
{
|
||||||
|
frameCache.clear();
|
||||||
|
for (int i = 0; i < modelFrames->count(); i++)
|
||||||
|
{
|
||||||
|
if (modelFrames->at(i).ID == it.key()) frameCache.append(modelFrames->at(i));
|
||||||
|
}
|
||||||
|
for (int bits = maxBits; bits >= minBits; bits--)
|
||||||
|
{
|
||||||
|
QList<int> values;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ enum DiscreteWindowState
|
|||||||
IDLE,
|
IDLE,
|
||||||
COUNTDOWN_SIGNAL,
|
COUNTDOWN_SIGNAL,
|
||||||
COUNTDOWN_WAITING,
|
COUNTDOWN_WAITING,
|
||||||
GETTING_SIGNAL
|
GETTING_SIGNAL,
|
||||||
|
DONE
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,6 +34,7 @@ private slots:
|
|||||||
void updatedFrames(int);
|
void updatedFrames(int);
|
||||||
void handleStartButton();
|
void handleStartButton();
|
||||||
void handleTick();
|
void handleTick();
|
||||||
|
void typeChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::DiscreteStateWindow *ui;
|
Ui::DiscreteStateWindow *ui;
|
||||||
@@ -46,7 +48,10 @@ private:
|
|||||||
int currToggleState;
|
int currToggleState;
|
||||||
int numIterations;
|
int numIterations;
|
||||||
int currIteration;
|
int currIteration;
|
||||||
|
bool isRealtime;
|
||||||
|
QHash<int, bool> idFilters;
|
||||||
|
|
||||||
|
void refreshFilterList();
|
||||||
void closeEvent(QCloseEvent *event);
|
void closeEvent(QCloseEvent *event);
|
||||||
void readSettings();
|
void readSettings();
|
||||||
void writeSettings();
|
void writeSettings();
|
||||||
|
|||||||
+213
-96
@@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>400</width>
|
<width>749</width>
|
||||||
<height>300</height>
|
<height>795</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@@ -31,63 +31,232 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
<item row="0" column="1" alignment="Qt::AlignHCenter">
|
<item>
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Number of States:</string>
|
<string>Number of States:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0" alignment="Qt::AlignHCenter">
|
<item>
|
||||||
<widget class="QLabel" name="label_2">
|
|
||||||
<property name="text">
|
|
||||||
<string>Toggle Frequency (Seconds)</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QSpinBox" name="spinFreq">
|
|
||||||
<property name="minimum">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>30</number>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<number>2</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QSpinBox" name="spinStates">
|
<widget class="QSpinBox" name="spinStates">
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<number>1</number>
|
<number>2</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>20</number>
|
<number>64</number>
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="2" alignment="Qt::AlignHCenter">
|
|
||||||
<widget class="QLabel" name="label_4">
|
|
||||||
<property name="text">
|
|
||||||
<string>Iterations</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="2">
|
|
||||||
<widget class="QSpinBox" name="spinIterations">
|
|
||||||
<property name="minimum">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>10</number>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="rbRealtime">
|
||||||
|
<property name="text">
|
||||||
|
<string>Realtime</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="rbLogged">
|
||||||
|
<property name="text">
|
||||||
|
<string>From logged data</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_4" stretch="2,2">
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Toggle Frequency (Seconds)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="spinFreq">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>30</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="text">
|
||||||
|
<string>Iterations</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="spinIterations">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>10</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="lblStatus">
|
||||||
|
<property name="palette">
|
||||||
|
<palette>
|
||||||
|
<active>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</active>
|
||||||
|
<inactive>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</inactive>
|
||||||
|
<disabled>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>120</red>
|
||||||
|
<green>120</green>
|
||||||
|
<blue>120</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</disabled>
|
||||||
|
</palette>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<family>Nirmala UI</family>
|
||||||
|
<pointsize>26</pointsize>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>WAIT</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_5">
|
||||||
|
<property name="text">
|
||||||
|
<string>Min Bits</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="spinMinBits">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>8</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_6">
|
||||||
|
<property name="text">
|
||||||
|
<string>Max Bits</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="spinMaxBits">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>8</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>8</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_7">
|
||||||
|
<property name="text">
|
||||||
|
<string>IDs to Scan</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QListWidget" name="listID"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="btnAll">
|
||||||
|
<property name="text">
|
||||||
|
<string>All</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="btnNone">
|
||||||
|
<property name="text">
|
||||||
|
<string>None</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QGridLayout" name="gridLayout"/>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="btnStart">
|
<widget class="QPushButton" name="btnStart">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -95,58 +264,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item alignment="Qt::AlignHCenter">
|
|
||||||
<widget class="QLabel" name="lblStatus">
|
|
||||||
<property name="palette">
|
|
||||||
<palette>
|
|
||||||
<active>
|
|
||||||
<colorrole role="WindowText">
|
|
||||||
<brush brushstyle="SolidPattern">
|
|
||||||
<color alpha="255">
|
|
||||||
<red>255</red>
|
|
||||||
<green>0</green>
|
|
||||||
<blue>0</blue>
|
|
||||||
</color>
|
|
||||||
</brush>
|
|
||||||
</colorrole>
|
|
||||||
</active>
|
|
||||||
<inactive>
|
|
||||||
<colorrole role="WindowText">
|
|
||||||
<brush brushstyle="SolidPattern">
|
|
||||||
<color alpha="255">
|
|
||||||
<red>255</red>
|
|
||||||
<green>0</green>
|
|
||||||
<blue>0</blue>
|
|
||||||
</color>
|
|
||||||
</brush>
|
|
||||||
</colorrole>
|
|
||||||
</inactive>
|
|
||||||
<disabled>
|
|
||||||
<colorrole role="WindowText">
|
|
||||||
<brush brushstyle="SolidPattern">
|
|
||||||
<color alpha="255">
|
|
||||||
<red>120</red>
|
|
||||||
<green>120</green>
|
|
||||||
<blue>120</blue>
|
|
||||||
</color>
|
|
||||||
</brush>
|
|
||||||
</colorrole>
|
|
||||||
</disabled>
|
|
||||||
</palette>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<family>Nirmala UI</family>
|
|
||||||
<pointsize>26</pointsize>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>WAIT</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|||||||
Reference in New Issue
Block a user