source: SMSSender/common/domain/sversion.h @ 424:21b6e6fc22ab

Last change on this file since 424:21b6e6fc22ab was 424:21b6e6fc22ab, checked in by Sämy Zehnder <saemy.zehnder@…>, 6 years ago
  • Changes the way we handle version strings (no more numeric representations of alpha, beta, ...).
  • Updates the ubuntu deployment script to follow the version changes.
  • Changes the version to 3.2.1
File size: 3.1 KB
Line 
1/*
2 smssender - A frontend for fast and easy SMS sending over different gateways.
3 Copyright (C) 2007-2014, gorrión. See http://smssender.gorrion.ch
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18#ifndef COMMON_DOMAIN_SVERSION_H
19#define COMMON_DOMAIN_SVERSION_H
20
21#include <QString>
22
23#include "common/global.h"
24
25class COMMON_EXPORT SVersion {
26public:
27    enum DevelopmentStatus {
28        Alpha = 0,
29        Beta = 1,
30        RC = 2,
31        Release = 3
32    };
33    struct Development {
34        DevelopmentStatus status;
35        short version;
36
37        Development() : status(Release), version(0) {}
38        Development(DevelopmentStatus status, short version)
39            : status(status)
40            , version(version)
41        {
42            // The version has to be 0 when the status is a release.
43            Q_ASSERT(status != Release || version == 0);
44        }
45
46        QString toString() const {
47            if (status == Release) {
48                return "";
49            } else {
50                const QString statusStr[] = { "alpha", "beta", "rc" };
51                return QString("%1%2").arg(statusStr[status]).arg(version);
52            }
53        }
54    };
55    static Development alpha(short developmentVersion);
56    static Development beta(short developmentVersion);
57    static Development releaseCandidate(short developmentVersion);
58    static Development release();
59    static QString developmentStatusStr(DevelopmentStatus developmentStatus);
60
61public:
62    SVersion();
63    SVersion(short major, short minor, short patch);
64    SVersion(short major, short minor, short patch, Development development);
65    explicit SVersion(const QString &versionStr);
66    ~SVersion() {}
67
68    QString toString(bool withDevelopment = false) const;
69    QString toString(const QString &pattern) const;
70    QString toMinimumString(const QString &pattern = QString("%1~%2")) const;
71    bool isValid() const;
72
73    short major() const;
74    short minor() const;
75    short patch() const;
76    Development development() const;
77
78    bool operator==(const SVersion &other) const;
79    bool operator<(const SVersion &other) const;
80    inline bool operator!=(const SVersion &other) const { return !(*this == other); }
81    inline bool operator<=(const SVersion &other) const { return (*this == other) || (*this < other); }
82    inline bool operator>(const SVersion &other) const { return !(*this == other) && !(*this < other); }
83    inline bool operator>=(const SVersion &other) const { return !(*this < other); }
84
85private:
86    short m_major;
87    short m_minor;
88    short m_patch;
89    Development m_development;
90};
91
92#endif /* COMMON_DOMAIN_SVERSION_H */
Note: See TracBrowser for help on using the repository browser.