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