diff --git a/abstractdata.cpp b/abstractdata.cpp index 3539db5..abe8fa9 100644 --- a/abstractdata.cpp +++ b/abstractdata.cpp @@ -1,8 +1,13 @@ +#include + +#include "global.h" #include "abstractdata.h" #include "hpusb.h" AbstractData::AbstractData(QString name_in, hp_DataType type_in) { + + // qDebug()<<"base class called "<getFileName()); + hpcalc = calc; + filename=treeItem->getFileName(); + type=treeItem->getType(); + if (hpcalc) { + data=calc->getData(filename,type); + } + + setup(); + setWindowTitle(filename); } void hp_mdiTextEdit::setup() { + QString text; textEdit = new textEditor(this); + + qDebug()<<"hp_mdiTextEdit::setup"; + + if (data) { + + qDebug()<<"hp_mdiTextEdit::setup - Data not null"; + qDebug()<getName(); + qDebug()<getType(); + + if (data->getType()==HP_NOTE) { + qDebug()<<"hp_mdiTextEdit::setup - Its a Note"; + Notes *note; + note=(Notes *)data; + text=note->getNote(); + } + + if (data->getType()==HP_PROG) { + Program *note; + note=(Program *)data; + text=note->getProg(); + } + qDebug()<setPlainText(text); + } + else { + qDebug()<<"hp_mdiTextEdit::setup - Data Null"; + } setWidget(textEdit); } diff --git a/hp_mditexteditor.h b/hp_mditexteditor.h index 55b2a6c..4680713 100644 --- a/hp_mditexteditor.h +++ b/hp_mditexteditor.h @@ -5,8 +5,10 @@ #include #include #include +#include "hpdata.h" class hpTreeItem; +class hpCalcData; #include "texteditor.h" @@ -16,11 +18,16 @@ class hp_mdiTextEdit: public QMdiSubWindow protected: - textEditor * textEdit; - hpTreeItem * hptreeitem; + textEditor * textEdit =nullptr; + hpTreeItem * hptreeitem =nullptr; + hpCalcData * hpcalc =nullptr; + QString filename; + hp_DataType type; + AbstractData * data =nullptr; public: - hp_mdiTextEdit(QWidget * parent = nullptr, hpTreeItem * treeItem = nullptr); + hp_mdiTextEdit(QWidget * parent = nullptr, hpTreeItem * treeItem = nullptr, + hpCalcData * dataStore =nullptr); void setup(); void show(); ~hp_mdiTextEdit(); diff --git a/hpdata.cpp b/hpdata.cpp index 5efb1dd..5e6d16f 100644 --- a/hpdata.cpp +++ b/hpdata.cpp @@ -98,6 +98,18 @@ int hpCalcData::findData(QString name, hp_DataType dataType) { return 0; } +//returns position of entry in list or returns 0; +AbstractData * hpCalcData::getData(QString name, hp_DataType dataType) { + + for (int i = 0; i < lData.size(); ++i) { + if (lData.at(i)->equivalent(name,dataType)) { + return lData.at(i); + } + } + + return nullptr; +} + AbstractData * hpCalcData::dataAt(int i) { return lData.at(i); } @@ -203,6 +215,20 @@ void hpCalcData::recvProg(hp_Prog program) { emit emitChange(HP_PROG); } +//recieve Program +void hpCalcData::recvNote(hp_Note note) { + + log("Recieving Note"); + qDebug()<<"hpCalcData::recvNote"; + + qDebug()<getInfo(); hpinfodlg = new hp_infoDialog(mdiwin,hpinfo); - //hpinfodlg->move(700,400); hpinfodlg->show(); } break; @@ -114,8 +117,15 @@ void hpTreeItem::clickAction(QMdiArea * mdiwin) { hpvaredit ->show(); break; case HP_LIST: - if (hpvaredit==nullptr) - hpvaredit = new hp_mdiVariableEdit(mdiwin,this); + qDebug()<getData(getFileName(),HP_LIST); + } + if (data) { + hpvaredit = new hp_mdiVariableEdit(mdiwin,this); + } + } if (hpvaredit!=nullptr) hpvaredit ->show(); break; @@ -125,13 +135,24 @@ void hpTreeItem::clickAction(QMdiArea * mdiwin) { if (hpvaredit!=nullptr) hpvaredit ->show(); break; - case HP_NOTE: + case HP_NOTE: { + hpCalcData * dataStore; + dataStore = getDataStore(); + if (hptextedit==nullptr) - hptextedit = new hp_mdiTextEdit(mdiwin,this); + hptextedit = new hp_mdiTextEdit(mdiwin,this, dataStore); if (hptextedit!=nullptr) hptextedit ->show(); + } break; - case HP_PROG: + case HP_PROG: { + hpCalcData * dataStore; + dataStore = getDataStore(); + if (hptextedit==nullptr) + hptextedit = new hp_mdiTextEdit(mdiwin,this, dataStore); + if (hptextedit!=nullptr) + hptextedit ->show(); + } break; case HP_REAL: if (hpvaredit==nullptr) @@ -144,9 +165,6 @@ void hpTreeItem::clickAction(QMdiArea * mdiwin) { break; default: ; } - - // log(test+getDataStore()->getInfo().serialnum); - } void hpTreeItem::contextAction(QMdiArea * mdiwin, contextActionType cta) { @@ -251,6 +269,9 @@ void hpTreeItem::dataChange(hp_Change hpchange) { case HP_LIST: { refresh(); } + case HP_NOTE: { + refresh(); + } case HP_PROG: { refresh(); } @@ -268,12 +289,12 @@ void hpTreeItem::addChild(AbstractData *obj) { QString name; //create fixed variable list - qDebug()<<"hpTreeItem:getting object data"; + // qDebug()<<"hpTreeItem:getting object data"; type= obj->getType(); name=obj->getName(); - qDebug()<<"hpTreeItem:Object not null "<setIcon(QIcon(func_list[HP_LIST][1])); + + } + break; + case HP_NOTE: { + subItem->setIcon(QIcon(func_list[HP_NOTE][1])); + qDebug()<<"hpTreeItem: Creating Note type:"<type) { case HP_HDR_PNG: @@ -600,7 +600,8 @@ int hpusb::send_info(hp_pkt_in * pkt) { log("unpacking data"); int ind=0; - QTextCodec * codec = QTextCodec::codecForName("UTF-8"); + QTextCodec * codec = QTextCodec::codecForName("UTF-16 Little Endian"); + QTextCodec * codec8 = QTextCodec::codecForName("UTF-8"); QByteArray rd= pkt->array; //find name @@ -611,30 +612,36 @@ int hpusb::send_info(hp_pkt_in * pkt) { name = codec->toUnicode(str1); hpinfo.name=name; + + //unsigned char searchstr[] = {0x80,0x20,0x80,0x01,0x62}; + //ind+=rd.indexOf((char *) searchstr,ind+64); + ind +=64; + + //find Application Version + str1 =rd.mid(ind,10); + qDebug()<toUnicode(str1); + hpinfo.appver=app; + log(app); + //find OS Version - unsigned char searchstr[] = {0x80,0x20,0x80,0x01,0x62,0x01}; - ind+=rd.indexOf((char *) searchstr,ind+64)+4; - qDebug()<toUnicode(str1); + osv = codec8->toUnicode(str1); hpinfo.osver=osv; - qDebug()<toUnicode(str1); + serial = codec8->toUnicode(str1); hpinfo.serialnum=serial; log(serial); - - //find Application Version - ind+=16; - str1 =rd.mid(ind,16); - pkt->calc->recvInfo(hpinfo); return 0; @@ -676,13 +683,10 @@ int hpusb::send_file(hp_pkt_in * pkt) { qDebug()<<"hpusb:In File Processor"; QString filename; - int ind,ind2; - QTextCodec * codec = QTextCodec::codecForName("UTF-8"); + QTextCodec * codec = QTextCodec::codecForName("UTF-16LE"); QByteArray rd= pkt->array; - QByteArray start = QByteArrayLiteral("\x02"); - int len; len = rd[0]; @@ -692,11 +696,15 @@ int hpusb::send_file(hp_pkt_in * pkt) { log(QString("File: %1 Type: %2").arg(filename).arg(pkt->pkt_type)); qDebug()<<"hpusb:Checking file type"; + qDebug()<pkt_type); + qDebug()<pkt_type) { case HP_TP_SETTINGS: qDebug()<<"hpusb:File type settings"; + qDebug()<calc->recvData(sData); } break; + case HP_TP_NOTE: { + //get a note + int size; + qDebug()<<"hpusb:File type Note"; + hp_Note note; + note.filename=filename; + + qDebug()<toUnicode(str1); + pkt->calc->recvNote(note); + } + break; case HP_TP_PROG: { //get a grogram + int size; qDebug()<<"hpusb:File type program"; hp_Prog prog; prog.filename=filename; - QByteArray str1 =rd.mid(len,rd.size()-len); + + qDebug()<toUnicode(str1); pkt->calc->recvProg(prog); } @@ -890,7 +916,7 @@ int hpusb::lookfordouble (QByteArray rd, int start) { long double num=0; QString app; QByteArray str1; - QTextCodec * codec = QTextCodec::codecForName("UTF-8"); + QTextCodec * codec = QTextCodec::codecForName("UTF-16"); app = codec->toUnicode(str1); log(app); diff --git a/hpusb.h b/hpusb.h index 91a76b6..ce96f43 100644 --- a/hpusb.h +++ b/hpusb.h @@ -76,6 +76,7 @@ enum hp_pkt_type { HP_TP_FUNCTIONS=02, HP_TP_LIST=03, HP_TP_MATRIX=04, + HP_TP_NOTE=05, HP_TP_PROG=06, HP_TP_CUSTOM=11 };