1 #include "lg_dimzerosbox.h"
2 #include <QTableView>
3 #include <QListWidgetItem>
4
LG_DimzerosBox(QWidget * parent)5 LG_DimzerosBox::LG_DimzerosBox(QWidget *parent) : QComboBox(parent) {
6 dimLine = false;
7 view = new QListView();
8 model = new QStandardItemModel(3, 1);
9 QStandardItem* item = new QStandardItem(tr("select:"));
10 item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
11 model->setItem(0,0,item);
12 item = new QStandardItem(tr("remove left"));
13 item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
14 item->setData(Qt::Unchecked, Qt::CheckStateRole);
15 model->setItem(1,0,item);
16 item = new QStandardItem(tr("remove right"));
17 item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
18 item->setData(Qt::Unchecked, Qt::CheckStateRole);
19 model->setItem(2,0,item);
20
21 setModel(model);
22 setView(view);
23 setEditable(false);
24 setEditText("selectar:");
25 }
26
~LG_DimzerosBox()27 LG_DimzerosBox::~LG_DimzerosBox() {
28 delete model;
29 delete view;
30 }
31
setLinear()32 void LG_DimzerosBox::setLinear(){
33 dimLine = true;
34 QStandardItem* item = new QStandardItem(tr("remove 0'"));
35 item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
36 item->setData(Qt::Unchecked, Qt::CheckStateRole);
37 model->appendRow(item);
38 item = new QStandardItem(tr("remove 0\""));
39 item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
40 item->setData(Qt::Unchecked, Qt::CheckStateRole);
41 model->appendRow(item);
42 }
43
setData(int i)44 void LG_DimzerosBox::setData(int i){
45 if (dimLine) {
46 if (i & 1) {
47 if (i&2)
48 model->item(3)->setCheckState(Qt::Checked);
49 } else {
50 model->item(4)->setCheckState(Qt::Checked);
51 if (!(i&2))
52 model->item(3)->setCheckState(Qt::Checked);
53 }
54 if (i&4)
55 model->item(1)->setCheckState(Qt::Checked);
56 if (i&8)
57 model->item(2)->setCheckState(Qt::Checked);
58 } else {
59 if (i & 1)
60 model->item(1)->setCheckState(Qt::Checked);
61 if (i & 2)
62 model->item(2)->setCheckState(Qt::Checked);
63 }
64 }
65
getData()66 int LG_DimzerosBox::getData(){
67 int ret = 0;
68 if (dimLine){
69 if (model->item(1)->checkState() == Qt::Checked)
70 ret |= 4;
71 if (model->item(2)->checkState() == Qt::Checked)
72 ret |= 8;
73 //imperial:
74 if (model->item(3)->checkState() == Qt::Checked){
75 if (model->item(4)->checkState() == Qt::Unchecked)
76 ret |= 3;
77 } else {
78 if (model->item(4)->checkState() == Qt::Checked)
79 ret |= 2;
80 else
81 ret |= 1;
82 }
83 } else {
84 if (model->item(1)->checkState() == Qt::Checked)
85 ret |= 1;
86 if (model->item(2)->checkState() == Qt::Checked)
87 ret |= 2;
88 }
89 return ret;
90 }
91
92 /**
93 * helper function for DIMZIN var.
94 */
convertDimZin(int v,bool toIdx)95 int LG_DimzerosBox::convertDimZin(int v, bool toIdx){
96 if (toIdx){
97 if (v < 5)
98 return 0;
99 int res = 0;
100 if (v & 4)
101 res = 3;
102 if (v & 8)
103 return (res==3) ? 5 :4;
104 }
105 //toIdx false
106 switch (v) {
107 case 3:
108 return 4;
109 break;
110 case 4:
111 return 8;
112 break;
113 case 5:
114 return 12;
115 break;
116 default:
117 break;
118 }
119 return 1;
120 }
121
122
123 /*MyModel::MyModel(QObject *parent)
124 :QAbstractTableModel(parent)
125 {
126 }
127
128 int MyModel::rowCount(const QModelIndex & parent) const
129 {
130 return 2;
131 }
132
133 int MyModel::columnCount(const QModelIndex & parent) const
134 {
135 return 3;
136 }
137
138 QVariant MyModel::data(const QModelIndex &index, int role) const
139 {
140 if (role == Qt::DisplayRole)
141 {
142 return QString("Row%1, Column%2")
143 .arg(index.row() + 1)
144 .arg(index.column() +1);
145 }
146 return QVariant();
147 }*/
148