Skip to content

Commit

Permalink
TableView3D: Fix for comms not being able to keep up with rapid keypr…
Browse files Browse the repository at this point in the history
…ess, but deferring sending until 0.250 seconds after the last key press.
  • Loading branch information
malcom2073 committed Jul 31, 2014
1 parent c347569 commit e887ab1
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 12 deletions.
84 changes: 72 additions & 12 deletions core/src/tableview3d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,15 @@ TableView3D::TableView3D(QWidget *parent)
//ui.tracingCheckBox->setVisible(false);
//ui.tracingCheckBox->setEnabled(false);
connect(ui.showMapPushButton,SIGNAL(clicked()),this,SLOT(showMapClicked()));
m_inputTimer = new QTimer(this);
connect(m_inputTimer,SIGNAL(timeout()),this,SLOT(inputTimerTimeout()));
}
void TableView3D::inputTimerTimeout()
{
setRange(m_queuedValList);
m_inputTimer->stop();
}

void TableView3D::tracingCheckBoxStateChanged(int newstate)
{
if (newstate == Qt::Checked)
Expand Down Expand Up @@ -245,6 +253,8 @@ void TableView3D::hotKeyPressed(int key,Qt::KeyboardModifier modifier)
return;
}
QList<QPair<QPair<int,int>,double> > vallist;
QList<QString> invalidreasons;
bool valid = true;
for (int i=0;i<ui.tableWidget->selectedItems().size();i++)
{

Expand Down Expand Up @@ -287,13 +297,41 @@ void TableView3D::hotKeyPressed(int key,Qt::KeyboardModifier modifier)
//Value
formattednumber = formatNumber(textd,m_metaData.zDp);
}
ui.tableWidget->setItem(ui.tableWidget->selectedItems()[i].y(),ui.tableWidget->selectedItems()[i].x(),formattednumber);
QString verifystr = verifyValue(ui.tableWidget->selectedItems()[i].y(),ui.tableWidget->selectedItems()[i].x(),formattednumber);
if (verifystr != "GOOD")
{
invalidreasons.append(verifystr);
valid = false;
}
else
{
ui.tableWidget->setItem(ui.tableWidget->selectedItems()[i].y(),ui.tableWidget->selectedItems()[i].x(),formattednumber);
}

//ui.tableWidget->selectedItems()[0]->setText(formatNumber(textd,m_metaData.zDp));
//setValue(ui.tableWidget->selectedItems()[i]->row(),ui.tableWidget->selectedItems()[i]->column(),textd);

}
setRange(vallist);
if (!valid)
{
//We had an error.
m_inputTimer->stop();
QMessageBox::information(0,"Error setting value: ",invalidreasons.at(0));
setRange(m_queuedValList);
}
if (m_inputTimer->isActive())
{
//Timer is already active, too soon!
//Let the table continue to increment... but don't fire off
m_queuedValList = vallist;
m_inputTimer->stop();
m_inputTimer->start(250);
}
else
{
m_inputTimer->start(250);
setRange(vallist);
}
}
else if (key == Qt::Key_Minus || key == Qt::Key_Underscore)
{
Expand All @@ -302,6 +340,8 @@ void TableView3D::hotKeyPressed(int key,Qt::KeyboardModifier modifier)
return;
}
QList<QPair<QPair<int,int>,double> > vallist;
QList<QString> invalidreasons;
bool valid = true;
for (int i=0;i<ui.tableWidget->selectedItems().size();i++)
{
QString text = "";
Expand Down Expand Up @@ -345,13 +385,41 @@ void TableView3D::hotKeyPressed(int key,Qt::KeyboardModifier modifier)
//Value
formattednumber = formatNumber(textd,m_metaData.zDp);
}
ui.tableWidget->setItem(ui.tableWidget->selectedItems()[i].y(),ui.tableWidget->selectedItems()[i].x(),formattednumber);
QString verifystr = verifyValue(ui.tableWidget->selectedItems()[i].y(),ui.tableWidget->selectedItems()[i].x(),formattednumber);
if (verifystr != "GOOD")
{
invalidreasons.append(verifystr);
valid = false;
}
else
{
ui.tableWidget->setItem(ui.tableWidget->selectedItems()[i].y(),ui.tableWidget->selectedItems()[i].x(),formattednumber);
}


//ui.tableWidget->selectedItems()[0]->setText(formatNumber(textd,m_metaData.zDp));
//setValue(ui.tableWidget->selectedItems()[0]->row(),ui.tableWidget->selectedItems()[0]->column(),textd);
}
setRange(vallist);
if (!valid)
{
//We had an error.
m_inputTimer->stop();
QMessageBox::information(0,"Error setting value: ",invalidreasons.at(0));
setRange(m_queuedValList);
}
if (m_inputTimer->isActive())
{
//Timer is already active, too soon!
//Let the table continue to increment... but don't fire off
m_queuedValList = vallist;
m_inputTimer->stop();
m_inputTimer->start(250);
}
else
{
m_inputTimer->start(250);
setRange(vallist);
}
}
}

Expand Down Expand Up @@ -445,8 +513,6 @@ void TableView3D::keyPressEvent(QKeyEvent *event)
}

//Disable signals, so we can write the table all at once
ui.tableWidget->disconnect(SIGNAL(cellChanged(int,int)));
ui.tableWidget->disconnect(SIGNAL(currentCellChanged(int,int,int,int)));
//bool valid = true;
QMap<int,QMap<int,QString> > tmpvaluemap;
QStringList invalidreasons;
Expand Down Expand Up @@ -507,8 +573,6 @@ void TableView3D::keyPressEvent(QKeyEvent *event)
QMessageBox::information(0,"Error",errorstr);
}*/
connect(ui.tableWidget,SIGNAL(cellChanged(int,int)),this,SLOT(tableCellChanged(int,int)));
connect(ui.tableWidget,SIGNAL(currentCellChanged(int,int,int,int)),this,SLOT(tableCurrentCellChanged(int,int,int,int)));
}
}
QString TableView3D::verifyValue(int row,int column,QString item)
Expand Down Expand Up @@ -558,8 +622,6 @@ QString TableView3D::verifyValue(int row,int column,QString item)
//Data is arranged as a
void TableView3D::setRange(QList<QPair<QPair<int,int>,double> > data)
{
ui.tableWidget->disconnect(SIGNAL(cellChanged(int,int)));
ui.tableWidget->disconnect(SIGNAL(currentCellChanged(int,int,int,int)));
QMap<int,QMap<int,QString> > tmpvaluemap;
bool valid = true;
QList<QString> invalidreasons;
Expand Down Expand Up @@ -608,8 +670,6 @@ void TableView3D::setRange(QList<QPair<QPair<int,int>,double> > data)
}
QMessageBox::information(0,"Error",errorstr);
}
connect(ui.tableWidget,SIGNAL(cellChanged(int,int)),this,SLOT(tableCellChanged(int,int)));
connect(ui.tableWidget,SIGNAL(currentCellChanged(int,int,int,int)),this,SLOT(tableCurrentCellChanged(int,int,int,int)));
}

void TableView3D::writeTable(bool ram)
Expand Down
5 changes: 5 additions & 0 deletions core/src/tableview3d.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include "ui_tableview3d.h"
#include "dataview.h"
#include "tablemap3d.h"
#include <QTimer>
class TableView3D : public DataView
{
Q_OBJECT
Expand All @@ -41,6 +42,7 @@ class TableView3D : public DataView
bool setData(QString name,DataBlock *data);
void passDatalog(QVariantMap data);
private:
QTimer *m_inputTimer;
void reColorTable(int rownum,int colnum);
QList<QPair<int,int> > m_highlightItemList;
int m_oldXLoc;
Expand All @@ -65,6 +67,7 @@ class TableView3D : public DataView
bool m_tracingEnabled;
void writeTable(bool ram);
QString verifyValue(int row,int column,QString item);
QList<QPair<QPair<int,int>,double> > m_queuedValList;
protected:
void contextMenuEvent(QContextMenuEvent *evt);
void keyPressEvent(QKeyEvent *event);
Expand All @@ -82,6 +85,8 @@ private slots:
void exportJson(QString filename);
void showMapClicked();
void hotKeyPressed(int key,Qt::KeyboardModifier modifier);
void inputTimerTimeout();

signals:
void show3DTable(unsigned short locationid,Table3DData *data);
void saveToFlash(unsigned short locationid);
Expand Down

0 comments on commit e887ab1

Please sign in to comment.