From 051d56a9609ac1ba28f4a268f0f4edffabd29592 Mon Sep 17 00:00:00 2001
From: Michael Carpenter <malcom2073@gmail.com>
Date: Tue, 28 May 2013 13:59:33 -0400
Subject: [PATCH] Abstraction of UASQuickViewItem, and addition of new Text
 item to use the abstraction

---
 qgroundcontrol.pro                    |  6 +++--
 src/ui/uas/UASQuickView.cc            |  5 ++--
 src/ui/uas/UASQuickViewItem.cc        | 19 ---------------
 src/ui/uas/UASQuickViewItem.h         | 11 ++-------
 src/ui/uas/UASQuickViewItemSelect.cc  | 46 +++++++++++++++++++++++++++++++++++
 src/ui/uas/UASQuickViewItemSelect.cpp | 46 -----------------------------------
 src/ui/uas/UASQuickViewTextItem.cc    | 24 ++++++++++++++++++
 src/ui/uas/UASQuickViewTextItem.h     | 17 +++++++++++++
 8 files changed, 96 insertions(+), 78 deletions(-)
 create mode 100644 src/ui/uas/UASQuickViewItemSelect.cc
 delete mode 100644 src/ui/uas/UASQuickViewItemSelect.cpp
 create mode 100644 src/ui/uas/UASQuickViewTextItem.cc
 create mode 100644 src/ui/uas/UASQuickViewTextItem.h

diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro
index d45b69c..583264d 100644
--- a/qgroundcontrol.pro
+++ b/qgroundcontrol.pro
@@ -378,7 +378,8 @@ HEADERS += src/MG.h \
     src/ui/dockwidgettitlebareventfilter.h \
     src/ui/uas/UASQuickView.h \
     src/ui/uas/UASQuickViewItem.h \
-    src/ui/uas/UASQuickViewItemSelect.h
+    src/ui/uas/UASQuickViewItemSelect.h \
+    src/ui/uas/UASQuickViewTextItem.h
 
 # Google Earth is only supported on Mac OS and Windows with Visual Studio Compiler
 macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010|win32-msvc2012::HEADERS += src/ui/map3D/QGCGoogleEarthView.h
@@ -547,7 +548,8 @@ SOURCES += src/main.cc \
     src/ui/dockwidgettitlebareventfilter.cpp \
     src/ui/uas/UASQuickViewItem.cc \
     src/ui/uas/UASQuickView.cc \
-    src/ui/uas/UASQuickViewItemSelect.cpp
+    src/ui/uas/UASQuickViewTextItem.cc \
+    src/ui/uas/UASQuickViewItemSelect.cc
 
 # Enable Google Earth only on Mac OS and Windows with Visual Studio compiler
 macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010|win32-msvc2012::SOURCES += src/ui/map3D/QGCGoogleEarthView.cc
diff --git a/src/ui/uas/UASQuickView.cc b/src/ui/uas/UASQuickView.cc
index 63bd952..aea0a83 100644
--- a/src/ui/uas/UASQuickView.cc
+++ b/src/ui/uas/UASQuickView.cc
@@ -2,6 +2,7 @@
 #include <QMetaMethod>
 #include <QDebug>
 #include "UASQuickViewItemSelect.h"
+#include "UASQuickViewTextItem.h"
 #include <QSettings>
 UASQuickView::UASQuickView(QWidget *parent) : QWidget(parent)
 {
@@ -146,7 +147,7 @@ void UASQuickView::loadSettings()
 
 void UASQuickView::valueEnabled(QString value)
 {
-    UASQuickViewItem *item = new UASQuickViewItem(this);
+    UASQuickViewItem *item = new UASQuickViewTextItem(this);
     item->setTitle(value);
     ui.verticalLayout->addWidget(item);
     uasPropertyToLabelMap[value] = item;
@@ -359,7 +360,7 @@ void UASQuickView::actionTriggered(bool checked)
     }
     if (checked)
     {
-        UASQuickViewItem *item = new UASQuickViewItem(this);
+        UASQuickViewItem *item = new UASQuickViewTextItem(this);
         item->setTitle(senderlabel->text());
         ui.verticalLayout->addWidget(item);
         uasPropertyToLabelMap[senderlabel->text()] = item;
diff --git a/src/ui/uas/UASQuickViewItem.cc b/src/ui/uas/UASQuickViewItem.cc
index 6c075c6..421a14e 100644
--- a/src/ui/uas/UASQuickViewItem.cc
+++ b/src/ui/uas/UASQuickViewItem.cc
@@ -3,24 +3,5 @@
 
 UASQuickViewItem::UASQuickViewItem(QWidget *parent) : QWidget(parent)
 {
-    QVBoxLayout *layout = new QVBoxLayout();
-    this->setLayout(layout);
-    titleLabel = new QLabel(this);
-    titleLabel->setAlignment(Qt::AlignHCenter);
-    this->layout()->addWidget(titleLabel);
-    valueLabel = new QLabel(this);
-    valueLabel->setAlignment(Qt::AlignHCenter);
-    valueLabel->setText("<h1>0.00</h1>");
-    this->layout()->addWidget(valueLabel);
-    layout->addSpacerItem(new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding));
-}
 
-void UASQuickViewItem::setValue(double value)
-{
-    valueLabel->setText("<h1>" + QString::number(value,'f',4) + "</h1>");
-}
-
-void UASQuickViewItem::setTitle(QString title)
-{
-    titleLabel->setText(title);
 }
diff --git a/src/ui/uas/UASQuickViewItem.h b/src/ui/uas/UASQuickViewItem.h
index d6b1b12..a406c4a 100644
--- a/src/ui/uas/UASQuickViewItem.h
+++ b/src/ui/uas/UASQuickViewItem.h
@@ -8,15 +8,8 @@ class UASQuickViewItem : public QWidget
     Q_OBJECT
 public:
     explicit UASQuickViewItem(QWidget *parent = 0);
-    void setValue(double value);
-    void setTitle(QString title);
-private:
-    QLabel *titleLabel;
-    QLabel *valueLabel;
-signals:
-    
-public slots:
-    
+    virtual void setValue(double value)=0;
+    virtual void setTitle(QString title)=0;
 };
 
 #endif // UASQUICKVIEWITEM_H
diff --git a/src/ui/uas/UASQuickViewItemSelect.cc b/src/ui/uas/UASQuickViewItemSelect.cc
new file mode 100644
index 0000000..537d1aa
--- /dev/null
+++ b/src/ui/uas/UASQuickViewItemSelect.cc
@@ -0,0 +1,46 @@
+#include "UASQuickViewItemSelect.h"
+#include <QLabel>
+#include <QCheckBox>
+UASQuickViewItemSelect::UASQuickViewItemSelect(QWidget *parent) : QWidget(parent)
+{
+    ui.setupUi(this);
+    currcol = 0;
+    currrow = 0;
+}
+void UASQuickViewItemSelect::addItem(QString item,bool enabled)
+{
+    QCheckBox *label = new QCheckBox(this);
+    if (enabled)
+    {
+        label->setChecked(true);
+    }
+    connect(label,SIGNAL(clicked(bool)),this,SLOT(checkBoxClicked(bool)));
+    label->setText(item);
+    label->show();
+    ui.gridLayout->addWidget(label,currrow,currcol++);
+    if (currcol > 10)
+    {
+        currcol = 0;
+        currrow++;
+    }
+}
+void UASQuickViewItemSelect::checkBoxClicked(bool checked)
+{
+    QCheckBox *check = qobject_cast<QCheckBox*>(sender());
+    if (!check)
+    {
+        return;
+    }
+    if (checked)
+    {
+        emit valueEnabled(check->text());
+    }
+    else
+    {
+        emit valueDisabled(check->text());
+    }
+}
+
+UASQuickViewItemSelect::~UASQuickViewItemSelect()
+{
+}
diff --git a/src/ui/uas/UASQuickViewItemSelect.cpp b/src/ui/uas/UASQuickViewItemSelect.cpp
deleted file mode 100644
index 537d1aa..0000000
--- a/src/ui/uas/UASQuickViewItemSelect.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "UASQuickViewItemSelect.h"
-#include <QLabel>
-#include <QCheckBox>
-UASQuickViewItemSelect::UASQuickViewItemSelect(QWidget *parent) : QWidget(parent)
-{
-    ui.setupUi(this);
-    currcol = 0;
-    currrow = 0;
-}
-void UASQuickViewItemSelect::addItem(QString item,bool enabled)
-{
-    QCheckBox *label = new QCheckBox(this);
-    if (enabled)
-    {
-        label->setChecked(true);
-    }
-    connect(label,SIGNAL(clicked(bool)),this,SLOT(checkBoxClicked(bool)));
-    label->setText(item);
-    label->show();
-    ui.gridLayout->addWidget(label,currrow,currcol++);
-    if (currcol > 10)
-    {
-        currcol = 0;
-        currrow++;
-    }
-}
-void UASQuickViewItemSelect::checkBoxClicked(bool checked)
-{
-    QCheckBox *check = qobject_cast<QCheckBox*>(sender());
-    if (!check)
-    {
-        return;
-    }
-    if (checked)
-    {
-        emit valueEnabled(check->text());
-    }
-    else
-    {
-        emit valueDisabled(check->text());
-    }
-}
-
-UASQuickViewItemSelect::~UASQuickViewItemSelect()
-{
-}
diff --git a/src/ui/uas/UASQuickViewTextItem.cc b/src/ui/uas/UASQuickViewTextItem.cc
new file mode 100644
index 0000000..a3ec42a
--- /dev/null
+++ b/src/ui/uas/UASQuickViewTextItem.cc
@@ -0,0 +1,24 @@
+#include "UASQuickViewTextItem.h"
+#include <QVBoxLayout>
+UASQuickViewTextItem::UASQuickViewTextItem(QWidget *parent) : UASQuickViewItem(parent)
+{
+    QVBoxLayout *layout = new QVBoxLayout();
+    this->setLayout(layout);
+    titleLabel = new QLabel(this);
+    titleLabel->setAlignment(Qt::AlignHCenter);
+    this->layout()->addWidget(titleLabel);
+    valueLabel = new QLabel(this);
+    valueLabel->setAlignment(Qt::AlignHCenter);
+    valueLabel->setText("<h1>0.00</h1>");
+    this->layout()->addWidget(valueLabel);
+    layout->addSpacerItem(new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding));
+}
+void UASQuickViewTextItem::setValue(double value)
+{
+    valueLabel->setText("<h1>" + QString::number(value,'f',4) + "</h1>");
+}
+
+void UASQuickViewTextItem::setTitle(QString title)
+{
+    titleLabel->setText(title);
+}
diff --git a/src/ui/uas/UASQuickViewTextItem.h b/src/ui/uas/UASQuickViewTextItem.h
new file mode 100644
index 0000000..6204205
--- /dev/null
+++ b/src/ui/uas/UASQuickViewTextItem.h
@@ -0,0 +1,17 @@
+#ifndef UASQUICKVIEWTEXTITEM_H
+#define UASQUICKVIEWTEXTITEM_H
+
+#include "UASQuickViewItem.h"
+#include <QLabel>
+class UASQuickViewTextItem : public UASQuickViewItem
+{
+public:
+    UASQuickViewTextItem(QWidget *parent=0);
+    void setValue(double value);
+    void setTitle(QString title);
+private:
+    QLabel *titleLabel;
+    QLabel *valueLabel;
+};
+
+#endif // UASQUICKVIEWTEXTITEM_H