/* * Copyright (c) 2016 - 2019 Jolla Ltd. * Copyright (c) 2019 Open Mobile Platform LLC. * * You may use this file under the terms of the BSD license as follows: * * "Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * Neither the name of Nemo Mobile nor the names of its contributors * may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." */ #ifndef VPNMODEL_H #define VPNMODEL_H #include #if (QT_VERSION >= QT_VERSION_CHECK(6,0,0)) Q_MOC_INCLUDE("vpnmanager.h") #endif class VpnModelPrivate; class VpnManager; class VpnConnection; /* * VpnModel is a basic list model for connman VPN services. */ class VpnModel : public QAbstractListModel { Q_OBJECT Q_DECLARE_PRIVATE(VpnModel) Q_DISABLE_COPY(VpnModel) Q_PROPERTY(bool connected READ isConnected NOTIFY connectedChanged) Q_PROPERTY(int count READ count NOTIFY countChanged) Q_PROPERTY(VpnManager *vpnManager READ vpnManager NOTIFY vpnManagerChanged) Q_PROPERTY(bool populated READ populated NOTIFY populatedChanged) public: enum ItemRoles { VpnRole = Qt::UserRole + 1 }; explicit VpnModel(QObject *parent = nullptr); explicit VpnModel(VpnModelPrivate &dd, QObject *parent); ~VpnModel() Q_DECL_OVERRIDE; QVariant data(const QModelIndex &index, int role) const Q_DECL_OVERRIDE; int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; QModelIndex index(int row, int column, const QModelIndex &parent) const Q_DECL_OVERRIDE; int count() const; bool isConnected() const; VpnManager *vpnManager() const; bool populated() const; Q_INVOKABLE QVariantMap connectionSettings(const QString &path) const; Q_SIGNALS: void connectedChanged(const bool &connected); void countChanged(); void vpnManagerChanged(); void populatedChanged(); protected Q_SLOTS: void connectionsChanged(); void connectionDestroyed(QObject *); protected: virtual void orderConnections(QVector &connections); QHash roleNames() const Q_DECL_OVERRIDE; void moveItem(int oldIndex, int newIndex); QVector connections() const; private: QScopedPointer d_ptr; }; #endif // VPNMODEL_H