Convert debugger settings controls to combo boxes.

This reduces the height of the settings panel significantly compared to
radio buttons.

With some luck, the debugger may now fit on non-4K monitors :)

R=bungeman@google.com, robertphillips@google.com

Author: fmalita@chromium.org

Review URL: https://codereview.chromium.org/78843005

git-svn-id: http://skia.googlecode.com/svn/trunk@12342 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/debugger/QT/SkDebuggerGUI.cpp b/debugger/QT/SkDebuggerGUI.cpp
index f500dcf..e5bdf9f 100644
--- a/debugger/QT/SkDebuggerGUI.cpp
+++ b/debugger/QT/SkDebuggerGUI.cpp
@@ -90,7 +90,7 @@
     connect(&fActionClearBreakpoints, SIGNAL(triggered()), this, SLOT(actionClearBreakpoints()));
     connect(&fActionClearDeletes, SIGNAL(triggered()), this, SLOT(actionClearDeletes()));
     connect(&fActionClose, SIGNAL(triggered()), this, SLOT(actionClose()));
-    connect(fSettingsWidget.getVisibilityButton(), SIGNAL(toggled(bool)), this, SLOT(actionCommandFilter()));
+    connect(&fSettingsWidget, SIGNAL(visibilityFilterChanged()), this, SLOT(actionCommandFilter()));
 #if SK_SUPPORT_GPU
     connect(&fSettingsWidget, SIGNAL(glSettingsChanged()), this, SLOT(actionGLWidget()));
 #endif
@@ -440,8 +440,7 @@
 }
 
 void SkDebuggerGUI::actionCommandFilter() {
-    fDebugger.highlightCurrentCommand(
-            fSettingsWidget.getVisibilityButton()->isChecked());
+    fDebugger.highlightCurrentCommand(fSettingsWidget.getVisibilityFilter());
     fCanvasWidget.drawTo(fListWidget.currentRow());
     fImageWidget.draw();
 }
@@ -968,7 +967,7 @@
      * TODO(chudy): This should be deprecated since fDebugger is not
      * recreated.
      * */
-    fDebugger.highlightCurrentCommand(fSettingsWidget.getVisibilityButton()->isChecked());
+    fDebugger.highlightCurrentCommand(fSettingsWidget.getVisibilityFilter());
 
     setupListWidget(commands);
     setupComboBox(commands);
diff --git a/debugger/QT/SkSettingsWidget.cpp b/debugger/QT/SkSettingsWidget.cpp
index ca0436e..dc40b40 100644
--- a/debugger/QT/SkSettingsWidget.cpp
+++ b/debugger/QT/SkSettingsWidget.cpp
@@ -16,8 +16,6 @@
     , mainFrameLayout(this)
     , fVerticalLayout(&mainFrame)
     , fVisibleFrameLayout(&fVisibleFrame)
-    , fVisibleOn(&fVisibleFrame)
-    , fVisibleOff(&fVisibleFrame)
     , fCommandLayout(&fCommandFrame)
     , fCurrentCommandBox(&fCommandFrame)
     , fCommandHitBox(&fCommandFrame)
@@ -37,16 +35,17 @@
     fVerticalLayout.setAlignment(Qt::AlignTop);
 
     // Visible Toggle
-    fVisibileText.setText("Visibility Filter");
+    fVisibleText.setText("Visibility Filter");
     fVisibleFrame.setFrameShape(QFrame::StyledPanel);
     fVisibleFrame.setFrameShadow(QFrame::Raised);
-    fVisibleOn.setText("On");
-    fVisibleOff.setText("Off");
-    fVisibleOff.setChecked(true);
-    fVisibleFrameLayout.setSpacing(6);
-    fVisibleFrameLayout.setContentsMargins(11,11,11,11);
-    fVisibleFrameLayout.addWidget(&fVisibleOn);
-    fVisibleFrameLayout.addWidget(&fVisibleOff);
+
+    fVisibilityCombo.addItem("Off", QVariant(false));
+    fVisibilityCombo.addItem("On", QVariant(true));
+
+    fVisibleFrameLayout.setContentsMargins(11, 5, 11, 5);
+    fVisibleFrameLayout.addWidget(&fVisibilityCombo);
+    connect(&fVisibilityCombo, SIGNAL(activated(int)), this,
+            SIGNAL(visibilityFilterChanged()));
 
     // Canvas
     fCanvasToggle.setText("Render Targets");
@@ -73,22 +72,19 @@
     fGLMSAAButtonGroup.setMaximumWidth(178);
     fGLMSAAButtonGroup.setEnabled(fGLCheckBox.isChecked());
 
-    fGLMSAAOff.setText("Off");
-    fGLMSAA4On.setText("4");
-    fGLMSAA4On.setChecked(true);
-    fGLMSAA16On.setText("16");
+    fGLMSAACombo.addItem("Off", QVariant(0));
+    fGLMSAACombo.addItem("4", QVariant(4));
+    fGLMSAACombo.addItem("16", QVariant(16));
 
-    fGLMSAALayout.addWidget(&fGLMSAAOff);
-    fGLMSAALayout.addWidget(&fGLMSAA4On);
-    fGLMSAALayout.addWidget(&fGLMSAA16On);
-
+    fGLMSAALayout.addWidget(&fGLMSAACombo);
     fGLMSAAButtonGroup.setLayout(&fGLMSAALayout);
 
-    connect(&fGLCheckBox, SIGNAL(toggled(bool)), &fGLMSAAButtonGroup, SLOT(setEnabled(bool)));
-    connect(&fGLCheckBox, SIGNAL(toggled(bool)), this, SIGNAL(glSettingsChanged()));
-    connect(&fGLMSAAOff, SIGNAL(toggled(bool)), this, SIGNAL(glSettingsChanged()));
-    connect(&fGLMSAA4On, SIGNAL(toggled(bool)), this, SIGNAL(glSettingsChanged()));
-    connect(&fGLMSAA16On, SIGNAL(toggled(bool)), this, SIGNAL(glSettingsChanged()));
+    connect(&fGLCheckBox, SIGNAL(toggled(bool)), &fGLMSAAButtonGroup,
+            SLOT(setEnabled(bool)));
+    connect(&fGLCheckBox, SIGNAL(toggled(bool)), this,
+            SIGNAL(glSettingsChanged()));
+    connect(&fGLMSAACombo, SIGNAL(activated(int)), this,
+            SIGNAL(glSettingsChanged()));
 #endif
 
     {
@@ -97,26 +93,17 @@
         fFilterButtonGroup.setMinimumWidth(178);
         fFilterButtonGroup.setMaximumWidth(178);
 
-        fFilterDefault.setText("As encoded");
-        fFilterDefault.setChecked(true);
-        fFilterNone.setText("None");
-        fFilterLow.setText("Low");
-        fFilterMed.setText("Med");
-        fFilterHigh.setText("High");
+        fFilterCombo.addItem("As encoded", QVariant(SkPaint::kNone_FilterLevel));
+        fFilterCombo.addItem("None", QVariant(SkPaint::kNone_FilterLevel));
+        fFilterCombo.addItem("Low", QVariant(SkPaint::kLow_FilterLevel));
+        fFilterCombo.addItem("Medium", QVariant(SkPaint::kMedium_FilterLevel));
+        fFilterCombo.addItem("High", QVariant(SkPaint::kHigh_FilterLevel));
 
-        fFilterLayout.addWidget(&fFilterDefault);
-        fFilterLayout.addWidget(&fFilterNone);
-        fFilterLayout.addWidget(&fFilterLow);
-        fFilterLayout.addWidget(&fFilterMed);
-        fFilterLayout.addWidget(&fFilterHigh);
-
+        fFilterLayout.addWidget(&fFilterCombo);
         fFilterButtonGroup.setLayout(&fFilterLayout);
 
-        connect(&fFilterDefault, SIGNAL(toggled(bool)), this, SIGNAL(texFilterSettingsChanged()));
-        connect(&fFilterNone,    SIGNAL(toggled(bool)), this, SIGNAL(texFilterSettingsChanged()));
-        connect(&fFilterLow,     SIGNAL(toggled(bool)), this, SIGNAL(texFilterSettingsChanged()));
-        connect(&fFilterMed,     SIGNAL(toggled(bool)), this, SIGNAL(texFilterSettingsChanged()));
-        connect(&fFilterHigh,    SIGNAL(toggled(bool)), this, SIGNAL(texFilterSettingsChanged()));
+        connect(&fFilterCombo, SIGNAL(activated(int)), this,
+                SIGNAL(texFilterSettingsChanged()));
     }
 
     fRasterLayout.addWidget(&fRasterLabel);
@@ -193,7 +180,7 @@
     fZoomLayout.addWidget(&fZoomBox);
 
     // Adds all widgets to settings container
-    fVerticalLayout.addWidget(&fVisibileText);
+    fVerticalLayout.addWidget(&fVisibleText);
     fVerticalLayout.addWidget(&fVisibleFrame);
     fVerticalLayout.addWidget(&fCommandToggle);
     fVerticalLayout.addWidget(&fCommandFrame);
@@ -213,10 +200,6 @@
     fCommandHitBox.setText(QString::number(newHit));
 }
 
-QRadioButton* SkSettingsWidget::getVisibilityButton() {
-    return &fVisibleOn;
-}
-
 void SkSettingsWidget::setZoomText(float scale) {
     fZoomBox.setText(QString::number(scale*100, 'f', 0).append("%"));
 }
diff --git a/debugger/QT/SkSettingsWidget.h b/debugger/QT/SkSettingsWidget.h
index fc8fda7..2310011 100644
--- a/debugger/QT/SkSettingsWidget.h
+++ b/debugger/QT/SkSettingsWidget.h
@@ -16,9 +16,9 @@
 #include <QFrame>
 #include <QGroupBox>
 #include <QLabel>
-#include <QRadioButton>
 #include <QCheckBox>
 #include <QLineEdit>
+#include <QComboBox>
 
 #include "SkPaint.h"
 
@@ -40,41 +40,26 @@
     /** Sets the displayed user zoom level. A scale of 1.0 represents no zoom. */
     void setZoomText(float scale);
 
-    QRadioButton* getVisibilityButton();
+    bool getVisibilityFilter() const {
+        return fVisibilityCombo.itemData(fVisibilityCombo.currentIndex()).toBool();
+    }
 
 #if SK_SUPPORT_GPU
-    bool isGLActive() {
+    bool isGLActive() const {
         return fGLCheckBox.isChecked();
     }
 
-    int getGLSampleCount() {
-        if (fGLMSAA4On.isChecked()) {
-            return 4;
-        } else if (fGLMSAA16On.isChecked()) {
-            return 16;
-        }
-        return 0;
+    int getGLSampleCount() const {
+        return fGLMSAACombo.itemData(fGLMSAACombo.currentIndex()).toInt();
     }
 
 #endif
 
-    bool getFilterOverride(SkPaint::FilterLevel* filterLevel) {
-        if (fFilterDefault.isChecked()) {
-            *filterLevel = SkPaint::kNone_FilterLevel;
-            return false;
-        }
+    bool getFilterOverride(SkPaint::FilterLevel* filterLevel) const {
+        int index = fFilterCombo.currentIndex();
+        *filterLevel = (SkPaint::FilterLevel)fFilterCombo.itemData(index).toUInt();
 
-        if (fFilterNone.isChecked()) {
-            *filterLevel = SkPaint::kNone_FilterLevel;
-        } else if (fFilterLow.isChecked()) {
-            *filterLevel = SkPaint::kLow_FilterLevel;
-        } else if (fFilterMed.isChecked()) {
-            *filterLevel = SkPaint::kMedium_FilterLevel;
-        } else {
-            *filterLevel = SkPaint::kHigh_FilterLevel;
-        }
-
-        return true;
+        return index > 0;
     }
 
     QCheckBox* getRasterCheckBox() {
@@ -92,7 +77,7 @@
 signals:
     void scrollingPreferences(bool isStickyActivate);
     void showStyle(bool isSingleCommand);
-    void visibilityFilter(bool isEnabled);
+    void visibilityFilterChanged();
     void texFilterSettingsChanged();
 #if SK_SUPPORT_GPU
     void glSettingsChanged();
@@ -103,11 +88,10 @@
     QFrame mainFrame;
     QVBoxLayout fVerticalLayout;
 
-    QLabel fVisibileText;
+    QLabel fVisibleText;
     QFrame fVisibleFrame;
     QVBoxLayout fVisibleFrameLayout;
-    QRadioButton fVisibleOn;
-    QRadioButton fVisibleOff;
+    QComboBox fVisibilityCombo;
 
     QLabel fCommandToggle;
     QFrame fCommandFrame;
@@ -139,19 +123,13 @@
     QCheckBox fGLCheckBox;
     QGroupBox fGLMSAAButtonGroup;
     QVBoxLayout fGLMSAALayout;
-    QRadioButton fGLMSAAOff;
-    QRadioButton fGLMSAA4On;
-    QRadioButton fGLMSAA16On;
+    QComboBox fGLMSAACombo;
 #endif
 
     // for filtering group
     QGroupBox fFilterButtonGroup;
+    QComboBox fFilterCombo;
     QVBoxLayout fFilterLayout;
-    QRadioButton fFilterDefault;
-    QRadioButton fFilterNone;
-    QRadioButton fFilterLow;
-    QRadioButton fFilterMed;
-    QRadioButton fFilterHigh;
 
     QFrame fZoomFrame;
     QHBoxLayout fZoomLayout;