ControlPanel.qml Example File

qmloscilloscope/qml/qmloscilloscope/ControlPanel.qml
 /****************************************************************************
 **
 ** Copyright (C) 2016 The Qt Company Ltd.
 ** Contact: https://www.qt.io/licensing/
 **
 ** This file is part of the Qt Charts module of the Qt Toolkit.
 **
 ** $QT_BEGIN_LICENSE:GPL$
 ** Commercial License Usage
 ** Licensees holding valid commercial Qt licenses may use this file in
 ** accordance with the commercial license agreement provided with the
 ** Software or, alternatively, in accordance with the terms contained in
 ** a written agreement between you and The Qt Company. For licensing terms
 ** and conditions see https://www.qt.io/terms-conditions. For further
 ** information use the contact form at https://www.qt.io/contact-us.
 **
 ** GNU General Public License Usage
 ** Alternatively, this file may be used under the terms of the GNU
 ** General Public License version 3 or (at your option) any later version
 ** approved by the KDE Free Qt Foundation. The licenses are as published by
 ** the Free Software Foundation and appearing in the file LICENSE.GPL3
 ** included in the packaging of this file. Please review the following
 ** information to ensure the GNU General Public License requirements will
 ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
 **
 ** $QT_END_LICENSE$
 **
 ****************************************************************************/

 import QtQuick 2.1
 import QtQuick.Layouts 1.0

 ColumnLayout {
     property alias openGLButton: openGLButton
     property alias antialiasButton: antialiasButton
     spacing: 8
     Layout.fillHeight: true
     signal animationsEnabled(bool enabled)
     signal seriesTypeChanged(string type)
     signal refreshRateChanged(variant rate);
     signal signalSourceChanged(string source, int signalCount, int sampleCount);
     signal antialiasingEnabled(bool enabled)
     signal openGlChanged(bool enabled)

     Text {
         text: "Scope"
         font.pointSize: 18
         color: "white"
     }

     MultiButton {
         id: openGLButton
         text: "OpenGL: "
         items: ["false", "true"]
         currentSelection: 1
         onSelectionChanged: openGlChanged(currentSelection == 1);
     }

     MultiButton {
         text: "Graph: "
         items: ["line", "scatter"]
         currentSelection: 0
         onSelectionChanged: seriesTypeChanged(items[currentSelection]);
     }

     MultiButton {
         id: signalSourceButton
         text: "Source: "
         items: ["sin", "linear"]
         currentSelection: 0
         onSelectionChanged: signalSourceChanged(
                                 selection,
                                 5,
                                 sampleCountButton.items[sampleCountButton.currentSelection]);
     }

     MultiButton {
         id: sampleCountButton
         text: "Samples: "
         items: ["6", "128", "1024", "10000"]
         currentSelection: 2
         onSelectionChanged: signalSourceChanged(
                                 signalSourceButton.items[signalSourceButton.currentSelection],
                                 5,
                                 selection);
     }

     MultiButton {
         text: "Refresh rate: "
         items: ["1", "24", "60"]
         currentSelection: 2
         onSelectionChanged: refreshRateChanged(items[currentSelection]);
     }

     MultiButton {
         id: antialiasButton
         text: "Antialias: "
         items: ["OFF", "ON"]
         enabled: true
         currentSelection: 0
         onSelectionChanged: antialiasingEnabled(currentSelection == 1);
     }
 }