source: ntrip/trunk/GnssCenter/inpedit/uniline.cpp@ 5107

Last change on this file since 5107 was 5107, checked in by mervart, 11 years ago
File size: 3.4 KB
Line 
1
2/* -------------------------------------------------------------------------
3 * RTNet GUI
4 * -------------------------------------------------------------------------
5 *
6 * Class: t_uniLine
7 *
8 * Purpose: Universal-Line Widget (subclasses QTableWidget)
9 *
10 * Author: L. Mervart
11 *
12 * Created: 08-Jan-2013
13 *
14 * Changes:
15 *
16 * -----------------------------------------------------------------------*/
17
18#include "uniline.h"
19#include "keyword.h"
20
21using namespace std;
22using namespace GnssCenter;
23
24static const char* plus_xpm[] = {
25"16 16 2 1",
26" c #FFFFFFFFFFFF",
27". c #00000000FFFF",
28" ",
29" ... ",
30" ... ",
31" ... ",
32" ... ",
33" ... ",
34" .............. ",
35" .............. ",
36" .............. ",
37" ... ",
38" ... ",
39" ... ",
40" ... ",
41" ... ",
42" ",
43" "};
44
45static const char* minus_xpm[] = {
46"16 16 2 1",
47" c #FFFFFFFFFFFF",
48". c #00000000FFFF",
49" ",
50" ",
51" ",
52" ",
53" ",
54" ",
55" .............. ",
56" .............. ",
57" .............. ",
58" ",
59" ",
60" ",
61" ",
62" ",
63" ",
64" "};
65
66// Constructor
67////////////////////////////////////////////////////////////////////////////////
68t_uniLine::t_uniLine(const QString& fldMask, const QStringList& values,
69 QWidget* parent) : QTableWidget(parent) {
70
71 static const QPixmap plusXPM(plus_xpm);
72 static const QPixmap minusXPM(minus_xpm);
73 static const QIcon plusIcon(plusXPM);
74 static const QIcon minusIcon(minusXPM);
75
76 setRowCount(values.size());
77
78 QStringList labels = fldMask.split(QRegExp("\\s+"), QString::SkipEmptyParts);
79 if (labels.size() > 0) {
80 setColumnCount(labels.size() + 2);
81 labels << "" << "";
82 setHorizontalHeaderLabels(labels);
83 }
84
85 for (int iRow = 0; iRow < values.size(); iRow++) {
86 QStringList txt = values.at(iRow).split(QRegExp("\"\\s*\""));
87 if (labels.size() == 0 && iRow == 0) {
88 setColumnCount(txt.size() + 2);
89 }
90 for (int iCol = 0; iCol < txt.size(); iCol++) {
91 setItem(iRow, iCol, new QTableWidgetItem(txt.at(iCol).trimmed()));
92 }
93 setItem(iRow, columnCount()-2, new QTableWidgetItem(plusIcon, QString()));
94 setItem(iRow, columnCount()-1, new QTableWidgetItem(minusIcon, QString()));
95 }
96 connect(this, SIGNAL(itemClicked(QTableWidgetItem*)),
97 this, SLOT(slotItemClicked(QTableWidgetItem*)));
98}
99
100// Destructor
101////////////////////////////////////////////////////////////////////////////////
102t_uniLine::~t_uniLine() {
103}
104
105// Add/Remove Line
106////////////////////////////////////////////////////////////////////////////////
107void t_uniLine::slotItemClicked(QTableWidgetItem* item) {
108
109 static const QPixmap plusXPM(plus_xpm);
110 static const QPixmap minusXPM(minus_xpm);
111 static const QIcon plusIcon(plusXPM);
112 static const QIcon minusIcon(minusXPM);
113
114 int iCol = item->column();
115 if (iCol == columnCount()-2) {
116 int iRow = item->row() + 1;
117 insertRow(iRow);
118 setItem(iRow, columnCount()-2, new QTableWidgetItem(plusIcon, QString()));
119 setItem(iRow, columnCount()-1, new QTableWidgetItem(minusIcon, QString()));
120 }
121 else if (iCol == columnCount()-1) {
122 removeRow(item->row());
123 }
124}
125
Note: See TracBrowser for help on using the repository browser.