#ifndef QTMVVM_DATASYNCVIEWMODEL_H #define QTMVVM_DATASYNCVIEWMODEL_H #include #include #include #include #include #include #include #include "QtMvvmDataSyncCore/qtmvvmdatasynccore_global.h" #include "QtMvvmDataSyncCore/accountmodel.h" namespace QtMvvm { class DataSyncViewModelPrivate; //! A viewmodel to show a overview of the datasync status and account class Q_MVVMDATASYNCCORE_EXPORT DataSyncViewModel : public ViewModel { Q_OBJECT //! The sync manager the viewmodel operates on Q_PROPERTY(QtDataSync::SyncManager* syncManager READ syncManager NOTIFY syncManagerChanged) //! The account manager the viewmodel operates on Q_PROPERTY(QtDataSync::AccountManager* accountManager READ accountManager NOTIFY accountManagerChanged) //! A mapping of sync states to text colors Q_PROPERTY(ColorMap colorMap READ colorMap WRITE setColorMap RESET resetColorMap NOTIFY colorMapChanged) //! A styles string describing the current sync status Q_PROPERTY(QString statusString READ statusString NOTIFY statusStringChanged) //! The account model to be used to display account devices Q_PROPERTY(QtMvvm::AccountModel* accountModel READ accountModel CONSTANT) //! A sorted version of the account model Q_PROPERTY(QSortFilterProxyModel* sortedModel READ sortedModel CONSTANT) public: //! A mapping from sync states to a text color typedef QMap ColorMap; //! The parameter for a setup name for the onInit() method static const QString paramSetup; //! The parameter for a QRemoteObjectNode for the onInit() method static const QString paramReplicaNode; //! Generates show parameter to show a datasync viewmodel via ViewModel::show static QVariantHash showParams(const QString &setup); //! @copybrief showParams(const QString &) static QVariantHash showParams(QRemoteObjectNode *node); //! Invokable constructor Q_INVOKABLE explicit DataSyncViewModel(QObject *parent = nullptr); ~DataSyncViewModel(); //! @readAcFn{DataSyncViewModel::syncManager} QtDataSync::SyncManager* syncManager() const; //! @readAcFn{DataSyncViewModel::accountManager} QtDataSync::AccountManager* accountManager() const; //! @readAcFn{DataSyncViewModel::colorMap} ColorMap colorMap() const; //! @readAcFn{DataSyncViewModel::statusString} QString statusString() const; //! @readAcFn{DataSyncViewModel::accountModel} AccountModel *accountModel() const; //! @readAcFn{DataSyncViewModel::sortedModel} QSortFilterProxyModel* sortedModel() const; //! Converts a binary fingerprint to a human readable string Q_INVOKABLE static QString formatFingerPrint(const QByteArray &fingerPrint); public Q_SLOTS: //! Synchronizes or reconnects with the server void syncOrConnect(); //! Show and edit information about this current device void showDeviceInfo(); //! Start an export to a file void startExport(); //! Start an import from a file void startImport(); //! Show a confirmation dialog to reset the account (and then reset) void performReset(); //! Show a dialog to change the remote server connected to void changeRemote(); //! Start a network exchange by showing the NetworkExchangeViewModel void startNetworkExchange(); //! Remove the with the given index in the sorted model from the account void removeDevice(int sortedIndex); //! @writeAcFn{DataSyncViewModel::colorMap} void setColorMap(ColorMap colorMap); //! @resetAcFn{DataSyncViewModel::colorMap} void resetColorMap(); Q_SIGNALS: //! @notifyAcFn{DataSyncViewModel::syncManager} void syncManagerChanged(QtDataSync::SyncManager* syncManager); //! @notifyAcFn{DataSyncViewModel::accountManager} void accountManagerChanged(QtDataSync::AccountManager* accountManager); //! @notifyAcFn{DataSyncViewModel::colorMap} void colorMapChanged(ColorMap colorMap); //! @notifyAcFn{DataSyncViewModel::statusString} void statusStringChanged(); //! Is emitted as soon as all the datasync managers have been initialized void ready(); protected: void onInit(const QVariantHash ¶ms) override; void onResult(quint32 requestCode, const QVariant &result) override; private Q_SLOTS: void showImportDialog(QtDataSync::LoginRequest request); void showImportAccepted(); void showAccessGranted(const QUuid &id); void triggerGranted(const QList &devices); private: QScopedPointer d; }; } #endif // QTMVVM_DATASYNCVIEWMODEL_H