diff --git a/src/ui/uas/UASQuickView.cc b/src/ui/uas/UASQuickView.cc index b6d06645b0b34fbad05a0e3a59a017d26cc23146..9bb52255d44e773dd3f3e915380d2731a7f68b1e 100644 --- a/src/ui/uas/UASQuickView.cc +++ b/src/ui/uas/UASQuickView.cc @@ -16,69 +16,8 @@ UASQuickView::UASQuickView(QWidget *parent) : QWidget(parent) } this->setContextMenuPolicy(Qt::ActionsContextMenu); - - /*{ - QAction *action = new QAction("latitude",this); - action->setCheckable(true); - action->setChecked(true); - connect(action,SIGNAL(toggled(bool)),this,SLOT(actionTriggered(bool))); - this->addAction(action); - UASQuickViewItem *item = new UASQuickViewItem(this); - item->setTitle("latitude"); - ui.verticalLayout->addWidget(item); - uasPropertyToLabelMap["latitude"] = item; - } - - { - QAction *action = new QAction("longitude",this); - action->setCheckable(true); - action->setChecked(true); - connect(action,SIGNAL(toggled(bool)),this,SLOT(actionTriggered(bool))); - this->addAction(action); - UASQuickViewItem *item = new UASQuickViewItem(this); - item->setTitle("longitude"); - ui.verticalLayout->addWidget(item); - uasPropertyToLabelMap["longitude"] = item; - } - - { - QAction *action = new QAction("altitude",this); - action->setCheckable(true); - action->setChecked(true); - connect(action,SIGNAL(toggled(bool)),this,SLOT(actionTriggered(bool))); - this->addAction(action); - UASQuickViewItem *item = new UASQuickViewItem(this); - item->setTitle("altitude"); - ui.verticalLayout->addWidget(item); - uasPropertyToLabelMap["altitude"] = item; - } - - { - QAction *action = new QAction("satelliteCount",this); - action->setCheckable(true); - action->setChecked(true); - connect(action,SIGNAL(toggled(bool)),this,SLOT(actionTriggered(bool))); - this->addAction(action); - UASQuickViewItem *item = new UASQuickViewItem(this); - item->setTitle("satelliteCount"); - ui.verticalLayout->addWidget(item); - uasPropertyToLabelMap["satelliteCount"] = item; - } - - { - QAction *action = new QAction("distToWaypoint",this); - action->setCheckable(true); - action->setChecked(true); - connect(action,SIGNAL(toggled(bool)),this,SLOT(actionTriggered(bool))); - this->addAction(action); - UASQuickViewItem *item = new UASQuickViewItem(this); - item->setTitle("distToWaypoint"); - ui.verticalLayout->addWidget(item); - uasPropertyToLabelMap["distToWaypoint"] = item; - }*/ - - //this->setSizePolicy(); loadSettings(); + //If we don't have any predefined settings, set some defaults. if (uasPropertyValueMap.size() == 0) { @@ -98,6 +37,14 @@ UASQuickView::UASQuickView(QWidget *parent) : QWidget(parent) connect(updateTimer,SIGNAL(timeout()),this,SLOT(updateTimerTick())); updateTimer->start(1000); } +UASQuickView::~UASQuickView() +{ + if (quickViewSelectDialog) + { + delete quickViewSelectDialog; + } +} + void UASQuickView::actionTriggered() { if (quickViewSelectDialog) diff --git a/src/ui/uas/UASQuickView.h b/src/ui/uas/UASQuickView.h index 7a709f20d00b4531f2a6154c53957e10b4b7d98e..4a0dc9b7b240bfa3670b07ff4e1ac30acd343bd1 100644 --- a/src/ui/uas/UASQuickView.h +++ b/src/ui/uas/UASQuickView.h @@ -15,6 +15,7 @@ class UASQuickView : public QWidget Q_OBJECT public: UASQuickView(QWidget *parent = 0); + ~UASQuickView(); void addSource(MAVLinkDecoder *decoder); private: UASInterface *uas; diff --git a/src/ui/uas/UASQuickViewItemSelect.cc b/src/ui/uas/UASQuickViewItemSelect.cc index 537d1aafb2b7d8ad14be0858f0f475820807ad98..6536529cae513debfa7dc251e0e1489eff3c9fe1 100644 --- a/src/ui/uas/UASQuickViewItemSelect.cc +++ b/src/ui/uas/UASQuickViewItemSelect.cc @@ -6,24 +6,76 @@ UASQuickViewItemSelect::UASQuickViewItemSelect(QWidget *parent) : QWidget(parent ui.setupUi(this); currcol = 0; currrow = 0; + ui.gridLayout->setSpacing(5); + ui.gridLayout->setMargin(0); } void UASQuickViewItemSelect::addItem(QString item,bool enabled) { + QString category = "."; + QString name = item; + if (item.indexOf(":") != -1 && item.indexOf(".") != -1) + { + //Item has a subcateogry + category = item.mid(item.indexOf(":")+1,item.indexOf(".") - item.indexOf(":")-1); + name = item.mid(item.indexOf(".")+1); + } + int col = -1; + if (m_categoryToIndexMap.contains(category)) + { + col = m_categoryToIndexMap[category]; + } + else + { + m_categoryToIndexMap[category] = currcol++; + col = m_categoryToIndexMap[category]; + //New column. + QLabel *titlelabel = new QLabel(this); + titlelabel->setText(category); + titlelabel->show(); + ui.gridLayout->addWidget(titlelabel,0,col); + } QCheckBox *label = new QCheckBox(this); + m_checkboxToValueMap[label] = item; + m_checkBoxList.append(label); if (enabled) { label->setChecked(true); } connect(label,SIGNAL(clicked(bool)),this,SLOT(checkBoxClicked(bool))); - label->setText(item); + label->setText(name); label->show(); - ui.gridLayout->addWidget(label,currrow,currcol++); - if (currcol > 10) + //ui.gridLayout->addWidget(label,currrow,currcol++); + bool breakout = false; + int row = -1; + while (!breakout) + { + if (!ui.gridLayout->itemAtPosition(++row,col) || row > 100) + { + breakout = true; + } + } + //Row is the next invalid object, and col is the proper column. + ui.gridLayout->addWidget(label,row,col); +} +void UASQuickViewItemSelect::resizeEvent(QResizeEvent *event) +{ + /*for (int i=0;iremoveWidget(m_checkBoxList[i]); } + int row = 0; + int col = 0; + for (int i=0;iaddWidget(m_checkBoxList[i],row,col); + col++; + ui.gridLayout->widget()->width() > this->width(); + //need to reduce column number. + + }*/ + } + void UASQuickViewItemSelect::checkBoxClicked(bool checked) { QCheckBox *check = qobject_cast(sender()); @@ -31,13 +83,19 @@ void UASQuickViewItemSelect::checkBoxClicked(bool checked) { return; } + QString checkval = check->text(); + if (m_checkboxToValueMap.contains(check)) + { + checkval = m_checkboxToValueMap[check]; + } if (checked) { - emit valueEnabled(check->text()); + + emit valueEnabled(checkval); } else { - emit valueDisabled(check->text()); + emit valueDisabled(checkval); } } diff --git a/src/ui/uas/UASQuickViewItemSelect.h b/src/ui/uas/UASQuickViewItemSelect.h index 4be402c5e1530f342594a0671cfd6393a234d93f..efd769cb3ae5930674bf4937110bcfbe44fdd3eb 100644 --- a/src/ui/uas/UASQuickViewItemSelect.h +++ b/src/ui/uas/UASQuickViewItemSelect.h @@ -2,6 +2,7 @@ #define UASQUICKVIEWITEMSELECT_H #include +#include #include "ui_UASQuickViewItemSelect.h" class UASQuickViewItemSelect : public QWidget @@ -14,7 +15,12 @@ public: void addItem(QString item,bool enabled = false); int currrow; int currcol; +protected: + void resizeEvent(QResizeEvent *event); private: + QMap m_categoryToIndexMap; + QMap m_checkboxToValueMap; + QList m_checkBoxList; Ui::UASQuickViewItemSelect ui; private slots: void checkBoxClicked(bool checked); diff --git a/src/ui/uas/UASQuickViewItemSelect.ui b/src/ui/uas/UASQuickViewItemSelect.ui index 9a35660c0e1beab619198e580ca1ff78dc059e7b..5371e2248ddf8881a6a03948a8d2808e34279025 100644 --- a/src/ui/uas/UASQuickViewItemSelect.ui +++ b/src/ui/uas/UASQuickViewItemSelect.ui @@ -6,12 +6,12 @@ 0 0 - 571 - 474 + 947 + 248 - Form + Select Item @@ -24,14 +24,27 @@ 0 0 - 551 - 454 + 927 + 228 - + + + + + Qt::Vertical + + + + 20 + 40 + + + + diff --git a/src/ui/uas/UASQuickViewTextItem.cc b/src/ui/uas/UASQuickViewTextItem.cc index 11920e4966f0b79f89d3f71c34c35f76eaefb8a1..3fbdd932d2e3bd89bc160a1e8496fc4c388845cd 100644 --- a/src/ui/uas/UASQuickViewTextItem.cc +++ b/src/ui/uas/UASQuickViewTextItem.cc @@ -9,14 +9,15 @@ UASQuickViewTextItem::UASQuickViewTextItem(QWidget *parent) : UASQuickViewItem(p layout->setMargin(0); titleLabel = new QLabel(this); titleLabel->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored); - titleLabel->setAlignment(Qt::AlignHCenter); + titleLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); this->layout()->addWidget(titleLabel); valueLabel = new QLabel(this); valueLabel->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored); - valueLabel->setAlignment(Qt::AlignHCenter); + valueLabel->setAlignment(Qt::AlignHCenter | Qt::AlignTop); valueLabel->setText("0.00"); this->layout()->addWidget(valueLabel); - layout->addSpacerItem(new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Ignored)); + //spacerItem = new QSpacerItem(20,40,QSizePolicy::Minimum,QSizePolicy::Ignored); + //layout->addSpacerItem(spacerItem); QFont valuefont = valueLabel->font(); QFont titlefont = titleLabel->font(); valuefont.setPixelSize(this->height() / 2.0); @@ -31,7 +32,14 @@ void UASQuickViewTextItem::setValue(double value) void UASQuickViewTextItem::setTitle(QString title) { - titleLabel->setText(title); + if (title.indexOf(".") != -1 && title.indexOf(":") != -1) + { + titleLabel->setText(title.mid(title.indexOf(".")+1)); + } + else + { + titleLabel->setText(title); + } } void UASQuickViewTextItem::resizeEvent(QResizeEvent *event) { @@ -39,6 +47,7 @@ void UASQuickViewTextItem::resizeEvent(QResizeEvent *event) QFont titlefont = titleLabel->font(); valuefont.setPixelSize(this->height()); titlefont.setPixelSize(valuefont.pixelSize() / 2.0); + //spacerItem->setGeometry(QRect(0,0,20,this->height()/10.0)); QFontMetrics metrics(valuefont); //valuefont.setPixelSize(this->height() / 2.0); diff --git a/src/ui/uas/UASQuickViewTextItem.h b/src/ui/uas/UASQuickViewTextItem.h index ba3eb8193c3363c2f382168f2f7f781c3ee3ce20..dea8cc3b16fb0f2773376038e95c0d6baf615d55 100644 --- a/src/ui/uas/UASQuickViewTextItem.h +++ b/src/ui/uas/UASQuickViewTextItem.h @@ -3,6 +3,7 @@ #include "UASQuickViewItem.h" #include +#include class UASQuickViewTextItem : public UASQuickViewItem { public: @@ -14,6 +15,7 @@ protected: private: QLabel *titleLabel; QLabel *valueLabel; + QSpacerItem *spacerItem; }; #endif // UASQUICKVIEWTEXTITEM_H