QtHPConnect/hptreeitem.cpp
2019-02-17 18:24:52 +02:00

264 lines
7.5 KiB
C++

#include "hptreeitem.h"
#include "global.h"
#include "hpdata.h"
#include "hp_mditexteditor.h"
#include "hp_infodialog.h"
#include "hp_settingsdlg.h"
#include <QMessageBox>
#include <QString>
#define FUNC_NUM 9
const QString hpTreeItem::func_list[FUNC_NUM][2]={{"Application Library",":/icons/apps_32x32.png"},
{"CAS Vars",":/icons/casFolder_32x32.png"},
{"Complex",":/icons/complex_32x32.png"},
{"Lists",":/icons/list_32x32.png"},
{"Matrices",":/icons/table_32x32.png"},
{"Notes",":/icons/note_32x32.png"},
{"Programs",":/icons/program_32x32.png"},
{"Real",":/icons/real_32x32.png"},
{"Variables",":/icons/varFolder_32x32.png"}
};
const DataType hpTreeItem::func_type[FUNC_NUM]={HP_APP,
HP_CAS,
HP_COMPLEX,
HP_LIST,
HP_MATRIC,
HP_NOTE,
HP_PROG,
HP_REAL,
HP_VAR
};
//QString hpTreeItem::hp_name;
hpTreeItem::hpTreeItem()
:QStandardItem() {
}
hpTreeItem::hpTreeItem(const QString & name,hpCalcData * hpDataStore,int flag)
:QStandardItem(name)
{
setEditable(0);
setDataStore(hpDataStore);
if (flag==0)
setGraphicTree();
}
QStandardItem * hpTreeItem::clone() const {
//return new hpTreeItem(QStringLiteral("test"),getDataStore(),0);
}
void hpTreeItem::setGraphicTree() {
int func_num=FUNC_NUM;
hpTreeItem * newChild;
hpTreeItem * subItem;
int i,j;
for (i=0; i<func_num; i++)
{
newChild= new hpTreeItem(func_list[i][0],getDataStore(),1);
newChild->setType(func_type[i]);
newChild->setIcon(QIcon(func_list[i][1]));
newChild->setEditable(0);
newChild->setToolTip(QString("Manage Applications"));
// newChild->getDataStore()->getInfo().serialnum="12-3456";
appendRow(newChild);
switch (func_type[i]) {
case HP_MATRIC: {
QString name;
//create fixed variable list
for (j=0;j<10;j++) {
name="M"+QString().sprintf("%d",j);
subItem= new hpTreeItem(name,getDataStore(),1);
subItem->setIcon(QIcon(func_list[i][1]));
subItem->setType(func_type[i]);
newChild->appendRow(subItem);
}
}
break;
case HP_LIST: {
QString name;
//create fixed variable list
for (j=0;j<10;j++) {
name="L"+QString().sprintf("%d",j);
subItem= new hpTreeItem(name,getDataStore(),1);
subItem->setIcon(QIcon(func_list[i][1]));
subItem->setType(func_type[i]);
newChild->appendRow(subItem);
}
}
break;
}
}
}
void hpTreeItem::clickAction(QMdiArea * mdiwin) {
hp_infoDialog * hpinfodlg;
hp_Information hpinfo;
// QString test;
// test=data(Qt::DisplayRole).toString();
switch (getType()) {
case HP_MAIN: {
hpCalcData * dataStore;
dataStore = getDataStore();
hpinfo=dataStore->getInfo();
hpinfodlg = new hp_infoDialog(mdiwin,hpinfo);
//hpinfodlg->move(700,400);
hpinfodlg->show();
}
break;
case HP_APP: {
}
break;
case HP_CAS:
if (hpvaredit==nullptr)
hpvaredit = new hp_mdiVariableEdit(mdiwin,this);
if (hpvaredit!=nullptr)
hpvaredit ->show();
case HP_COMPLEX:
if (hpvaredit==nullptr)
hpvaredit = new hp_mdiVariableEdit(mdiwin,this);
if (hpvaredit!=nullptr)
hpvaredit ->show();
break;
case HP_LIST:
if (hpvaredit==nullptr)
hpvaredit = new hp_mdiVariableEdit(mdiwin,this);
if (hpvaredit!=nullptr)
hpvaredit ->show();
break;
case HP_MATRIC:
if (hpvaredit==nullptr)
hpvaredit = new hp_mdiVariableEdit(mdiwin,this);
if (hpvaredit!=nullptr)
hpvaredit ->show();
break;
case HP_NOTE:
if (hptextedit==nullptr)
hptextedit = new hp_mdiTextEdit(mdiwin,this);
if (hptextedit!=nullptr)
hptextedit ->show();
break;
case HP_PROG:
break;
case HP_REAL:
if (hpvaredit==nullptr)
hpvaredit = new hp_mdiVariableEdit(mdiwin,this);
if (hpvaredit!=nullptr)
hpvaredit ->show();
break;
case HP_VAR:
break;
default: ;
}
// log(test+getDataStore()->getInfo().serialnum);
}
void hpTreeItem::contextAction(QMdiArea * mdiwin, contextActionType cta) {
hp_SettingsDlg * hpsettingsdlg;
hp_Information hpinfo;
hp_Settings hpset;
int ret=0;
switch (getType()) {
case HP_MAIN: {
switch (cta) {
case CT_PREFERENCE: {
hpCalcData * dataStore;
dataStore = getDataStore();
dataStore->readSettings();
hpset=dataStore->getSettings();
hpsettingsdlg = new hp_SettingsDlg(mdiwin, &hpset);
ret=hpsettingsdlg->exec();
if (ret)
dataStore->setSettings(hpset);
}
break;
default: ;
}
}
break;
default: ;
}
}
DataType hpTreeItem::getType() {
return type;
}
void hpTreeItem::setType(DataType dtype) {
type=dtype;
return;
}
//manage access to datastore
hpCalcData * hpTreeItem::getDataStore() {
if (hp_data) {
return hp_data;
}
else
return nullptr;
}
void hpTreeItem::setDataStore(hpCalcData * dtype) {
hp_data=dtype;
return;
}
int hpTreeItem::dt2int() {
switch (getType()) {
case HP_APP: return 0;
case HP_CAS: return 1;
case HP_COMPLEX: return 2;
case HP_LIST: return 3;
case HP_MATRIC: return 4;
case HP_NOTE: return 5;
case HP_PROG: return 6;
case HP_REAL: return 7;
case HP_VAR: return 8;
};
return 0;
}
QString hpTreeItem::getName() {
return func_list[dt2int()][0];
}
//Slot to respond to data changes
void hpTreeItem::dataChange(hp_Change hpchange) {
hpCalcData * ptr=nullptr;
QString name;
switch (hpchange.dataChange) {
case HP_MAIN:
ptr=getDataStore();
if (ptr) {
name=ptr->getName();
setData(name,Qt::DisplayRole);
}
break;
case HP_SCREEN: {
qDebug()<<"Screen Shot Changed";
emit dataChanged(hpchange);
}
break;
}
}