HighlightedInfo.cpp
Go to the documentation of this file.
1 #include "HighlightedInfo.h"
2 
3 //! TerraLib include files
4 #include <terralib/qt/widgets/dataview/TabularViewer.h>
5 #include <terralib/qt/widgets/dataview/HLDelegateDecorator.h>
6 
7 //! Qt include files
8 #include <QGridLayout>
9 #include <QVBoxLayout>
10 #include <QHBoxLayout>
11 #include <QToolButton>
12 #include <QLabel>
13 #include <QGroupBox>
14 #include <QLineEdit>
15 #include <QAction>
16 
17 std::set<std::string> getIdsList(const QString& ids)
18 {
19  std::set<std::string> idList;
20  QStringList iL = ids.split(";");
21  QStringList::iterator it;
22 
23  for(it=iL.begin(); it!=iL.end(); ++it)
24  idList.insert((*it).toUtf8().data());
25 
26  return idList;
27 }
28 
29 QGroupBox* getGroupBox(HighlightedInfo* dlg, te::qt::widgets::TabularViewer* v, QLineEdit* ids, te::qt::widgets::HLDelegateDecorator* dec, int grp)
30 {
31  if(dec == 0)
32  return 0;
33 
34  te::qt::widgets::HighlightDelegate* d = dec->getDecorated(grp);
35 
36  QGroupBox* grpBox = new QGroupBox(dlg);
37  QLabel* lbl = new QLabel(grpBox);
38  ids->setParent(grpBox);
39  QToolButton* btn = new QToolButton(grpBox);
40  QAction* act = new QAction(btn);
41  btn->setDefaultAction(act);
42 
43  QHBoxLayout* h_lay = new QHBoxLayout(grpBox);
44  h_lay->addWidget(lbl);
45  h_lay->addWidget(ids);
46  h_lay->addWidget(btn);
47 
48  QString gName = d->getGroupName();
49 
50  grpBox->setTitle(gName + QObject::tr(" data configuration"));
51  lbl->setText(gName + QObject::tr(" ids: "));
52  act->setText(QObject::tr("Update ")+gName);
53  act->setData(QVariant(grp));
54 
55  dlg->connect(btn, SIGNAL(triggered(QAction*)), SLOT(addHighlight(QAction*)));
56  v->connect(dlg, SIGNAL(updateHighlight(const int&, const std::set<std::string>&)), SLOT(setHighlightObjects(const int&, const std::set<std::string>&)));
57 
58  return grpBox;
59 }
60 
61 void makeDialog(HighlightedInfo* dlg, te::qt::widgets::TabularViewer* v, QLineEdit* qids, QLineEdit* sids)
62 {
63 // QGroupBox* pBox = getGroupBox(dlg, v, hl_ids, HighlightedInfo::pointed);
64  QGroupBox* qBox = getGroupBox(dlg, v, qids, dynamic_cast<te::qt::widgets::HLDelegateDecorator*>(v->itemDelegate()), te::qt::widgets::TabularViewer::Query_Items);
65  QGroupBox* sBox = getGroupBox(dlg, v, sids, dynamic_cast<te::qt::widgets::HLDelegateDecorator*>(v->itemDelegate()), 3);
66 // QGroupBox* pqBox = getGroupBox(dlg, v, hl_ids, HighlightedInfo::pointed_and_queried);
67  QSpacerItem* spacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
68 
69  QVBoxLayout* v_lay = new QVBoxLayout;
70 // v_lay->addWidget(pBox);
71  v_lay->addWidget(qBox);
72  v_lay->addWidget(sBox);
73  v_lay->addItem(spacer);
74 
75  QGridLayout* grd = new QGridLayout(dlg);
76  grd->addLayout(v_lay, 0, 0, 1, 1);
77 }
78 
79 HighlightedInfo::HighlightedInfo(te::qt::widgets::TabularViewer* v, QWidget* parent) :
80 QWidget(parent)
81 {
82  m_queried = new QLineEdit(this);
83  m_starred = new QLineEdit(this);
84 
85  makeDialog(this, v, m_queried, m_starred);
86 }
87 
89 {
90  QString txt = m_queried->text();
91 
92  if(!txt.isEmpty())
93  emit queryItems(getIdsList(txt));
94 }
95 
96 void HighlightedInfo::addHighlight(QAction* action)
97 {
98  int act = action->data().toInt();
99 
100  QString txt = (act == te::qt::widgets::TabularViewer::Query_Items) ? m_queried->text() : m_starred->text();
101 
102  if(!txt.isEmpty())
103  emit updateHighlight(act, getIdsList(txt));
104 }
An specialization of QItemDelegate to be used with te::map::AbstractTable objects.
HighlightedInfo(te::qt::widgets::TabularViewer *v, QWidget *parent=0)
QGroupBox * getGroupBox(HighlightedInfo *dlg, te::qt::widgets::TabularViewer *v, QLineEdit *ids, te::qt::widgets::HLDelegateDecorator *dec, int grp)
void updateHighlight(const int &, const std::set< std::string > &)
void addHighlight(QAction *action)
static te::dt::DateTime d(2010, 8, 9, 15, 58, 39)
QLineEdit * m_queried
std::set< std::string > getIdsList(const QString &ids)
TerraLib include files.
void makeDialog(HighlightedInfo *dlg, te::qt::widgets::TabularViewer *v, QLineEdit *qids, QLineEdit *sids)
void queryItems(const std::set< std::string > &)
QLineEdit * m_starred