LCOV - code coverage report
Current view: top level - manager-lib - package.h (source / functions) Coverage Total Hit
Test: QtApplicationManager Lines: 66.7 % 3 2
Test Date: 2024-03-11 10:33:33 Functions: - 0 0
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 57.1 % 14 8

             Branch data     Line data    Source code
       1                 :             : // Copyright (C) 2021 The Qt Company Ltd.
       2                 :             : // Copyright (C) 2019 Luxoft Sweden AB
       3                 :             : // Copyright (C) 2018 Pelagicore AG
       4                 :             : // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
       5                 :             : 
       6                 :             : #ifndef PACKAGE_H
       7                 :             : #define PACKAGE_H
       8                 :             : 
       9                 :             : #include <QtAppManCommon/global.h>
      10                 :             : #include <QtAppManApplication/packageinfo.h>
      11                 :             : #include <QtAppManManager/application.h>
      12                 :             : #include <QtCore/QUrl>
      13                 :             : #include <QtCore/QString>
      14                 :             : #include <QtCore/QAtomicInt>
      15                 :             : #include <QtCore/QObject>
      16                 :             : 
      17                 :             : QT_BEGIN_NAMESPACE_AM
      18                 :             : 
      19                 :             : class Application;
      20                 :             : 
      21                 :             : class Package : public QObject
      22                 :             : {
      23                 :             :     Q_OBJECT
      24                 :             :     Q_PROPERTY(QString id READ id CONSTANT FINAL)
      25                 :             :     Q_PROPERTY(bool builtIn READ isBuiltIn NOTIFY bulkChange FINAL)
      26                 :             :     Q_PROPERTY(bool builtInHasRemovableUpdate READ builtInHasRemovableUpdate NOTIFY bulkChange FINAL)
      27                 :             :     Q_PROPERTY(QUrl icon READ icon NOTIFY bulkChange FINAL)
      28                 :             :     Q_PROPERTY(QString version READ version NOTIFY bulkChange FINAL)
      29                 :             :     Q_PROPERTY(QString name READ name NOTIFY bulkChange FINAL)
      30                 :             :     Q_PROPERTY(QVariantMap names READ names NOTIFY bulkChange FINAL)
      31                 :             :     Q_PROPERTY(QString description READ description NOTIFY bulkChange FINAL)
      32                 :             :     Q_PROPERTY(QVariantMap descriptions READ descriptions NOTIFY bulkChange FINAL)
      33                 :             :     Q_PROPERTY(QStringList categories READ categories NOTIFY bulkChange FINAL)
      34                 :             :     Q_PROPERTY(QtAM::Package::State state READ state NOTIFY stateChanged FINAL)
      35                 :             :     Q_PROPERTY(bool blocked READ isBlocked NOTIFY blockedChanged FINAL)
      36                 :             :     Q_PROPERTY(QList<QtAM::Application *> applications READ applications NOTIFY applicationsChanged FINAL)
      37                 :             : 
      38                 :             : public:
      39                 :             :     enum State {
      40                 :             :         Installed,
      41                 :             :         BeingInstalled,
      42                 :             :         BeingUpdated,
      43                 :             :         BeingDowngraded,
      44                 :             :         BeingRemoved
      45                 :             :     };
      46         [ #  # ]:           0 :     Q_ENUM(State)
      47                 :             : 
      48                 :             :     Package(PackageInfo *packageInfo, State initialState = Installed);
      49                 :             : 
      50                 :             :     QString id() const;
      51                 :             :     bool isBuiltIn() const;
      52                 :             :     bool builtInHasRemovableUpdate() const;
      53                 :             :     QUrl icon() const;
      54                 :             :     QString version() const;
      55                 :             :     QString name() const;
      56                 :             :     QVariantMap names() const;
      57                 :             :     QString description() const;
      58                 :             :     QVariantMap descriptions() const;
      59                 :             :     QStringList categories() const;
      60                 :             :     QList<Application *> applications() const;
      61                 :             : 
      62   [ +  +  +  -  :         369 :     State state() const { return m_state; }
          -  +  +  -  +  
                -  +  + ]
      63                 :          36 :     qreal progress() const { return m_progress; }
      64                 :             : 
      65                 :             :     void setState(State state);
      66                 :             :     void setProgress(qreal progress);
      67                 :             : 
      68                 :             :     /*
      69                 :             :         All packages have a base info.
      70                 :             : 
      71                 :             :         Built-in packages, when updated, also get an updated info.
      72                 :             :         The updated info then overlays the base one. Subsequent updates
      73                 :             :         just replace the updated info. When requested to be removed, a
      74                 :             :         built-in packages only loses its updated info, returning to
      75                 :             :         expose the base one.
      76                 :             : 
      77                 :             :         Regular packages (ie, non-built-in) only have a base info. When
      78                 :             :         updated, their base info gets replaced and thus there's no way to go
      79                 :             :         back to a previous version. Regular packages get completely
      80                 :             :         removed when requested.
      81                 :             :      */
      82                 :             : 
      83                 :             :     // Returns the updated info, if there's one. Otherwise returns the base info.
      84                 :             :     PackageInfo *info() const;
      85                 :             :     PackageInfo *baseInfo() const;
      86                 :             :     PackageInfo *updatedInfo() const;
      87                 :             :     PackageInfo *setUpdatedInfo(PackageInfo *info);
      88                 :             :     PackageInfo *setBaseInfo(PackageInfo *info);
      89                 :             : 
      90                 :             :     bool isBlocked() const;
      91                 :             :     bool block();
      92                 :             :     bool unblock();
      93                 :             : 
      94                 :             :     // function for Application to report it has stopped after getting a block request
      95                 :             :     void applicationStoppedDueToBlock(const QString &appId);
      96                 :             :     // query function for the installer to verify that it is safe to manipulate binaries
      97                 :             :     bool areAllApplicationsStoppedDueToBlock() const;
      98                 :             : 
      99                 :             :     // for the ApplicationManager to update the package -> application mapping
     100                 :             :     void addApplication(Application *application);
     101                 :             :     void removeApplication(Application *application);
     102                 :             : 
     103                 :             : signals:
     104                 :             :     void bulkChange();
     105                 :             :     void stateChanged(QtAM::Package::State state);
     106                 :             :     void blockedChanged(bool blocked);
     107                 :             :     void applicationsChanged();
     108                 :             : 
     109                 :             : private:
     110                 :             :     PackageInfo *m_info = nullptr;
     111                 :             :     PackageInfo *m_updatedInfo = nullptr;
     112                 :             : 
     113                 :             :     State m_state = Installed;
     114                 :             :     qreal m_progress = 0;
     115                 :             :     QAtomicInt m_blocked;
     116                 :             :     QAtomicInt m_blockedAppsCount;
     117                 :             :     QVector<ApplicationInfo *> m_blockedApps;
     118                 :             :     QList<Application *> m_applications;
     119                 :             : };
     120                 :             : 
     121                 :             : QT_END_NAMESPACE_AM
     122                 :             : 
     123                 :             : #endif // PACKAGE_H
        

Generated by: LCOV version 2.0-1