swift
remotefile.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2017 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_NETWORK_REMOTEFILE_H
7 #define SWIFT_MISC_NETWORK_REMOTEFILE_H
8 
9 #include <QJsonObject>
10 #include <QMetaType>
11 #include <QString>
12 
13 #include "misc/metaclass.h"
14 #include "misc/network/url.h"
15 #include "misc/propertyindexref.h"
16 #include "misc/swiftmiscexport.h"
17 #include "misc/timestampbased.h"
18 #include "misc/valueobject.h"
19 
20 SWIFT_DECLARE_VALUEOBJECT_MIXINS(swift::misc::network, CRemoteFile)
21 
22 namespace swift::misc::network
23 {
27  class SWIFT_MISC_EXPORT CRemoteFile : public CValueObject<CRemoteFile>, public ITimestampBased
28  {
29  public:
32  {
33  IndexName = CPropertyIndexRef::GlobalIndexCRemoteFile,
34  IndexDescription,
35  IndexUrl,
36  IndexSize
37  };
38 
40  CRemoteFile() = default;
41 
43  CRemoteFile(const QString &name, const QString &description);
44 
46  CRemoteFile(const QString &name, qint64 size);
47 
49  CRemoteFile(const QString &name, qint64 size, const QString &url);
50 
52  const QString &getName() const { return m_name; }
53 
55  QString getBaseName() const { return m_name.section('/', -1); }
56 
58  bool hasName() const { return !m_name.isEmpty(); }
59 
61  QString getBaseNameAndSize() const;
62 
64  void setName(const QString &name) { m_name = name.trimmed(); }
65 
67  bool matchesBaseName(const QString &baseName) const;
68 
70  const QString &getDescription() const { return m_description; }
71 
73  void setDescription(const QString &description) { m_description = description.trimmed(); }
74 
76  const CUrl &getUrl() const { return m_url; }
77 
79  bool hasUrl() const { return !m_url.isEmpty(); }
80 
82  CUrl getSmartUrl() const;
83 
85  bool isFileWithSuffix() const { return this->getUrl().isFileWithSuffix(); }
86 
88  bool isExecutableFile() const;
89 
91  bool isSwiftInstaller() const;
92 
94  void setUrl(const CUrl &url) { m_url = url; }
95 
97  void setUrl(const QString &url);
98 
100  qint64 getSize() const { return m_size; }
101 
103  QString getSizeHumanReadable() const;
104 
106  void setSize(qint64 size) { m_size = size; }
107 
109  QString getFormattedCreatedYmdhms() const;
110 
112  QString convertToQString(bool i18n = false) const;
113 
115  QVariant propertyByIndex(swift::misc::CPropertyIndexRef index) const;
116 
118  void setPropertyByIndex(swift::misc::CPropertyIndexRef index, const QVariant &variant);
119 
121  static CRemoteFile fromDatabaseJson(const QJsonObject &json);
122 
123  private:
124  QString m_name;
125  QString m_description;
126  CUrl m_url;
127  qint64 m_size = 0;
128  qint64 m_created = 0;
129 
131  CRemoteFile,
132  SWIFT_METAMEMBER(timestampMSecsSinceEpoch),
133  SWIFT_METAMEMBER(name),
134  SWIFT_METAMEMBER(description),
135  SWIFT_METAMEMBER(url),
136  SWIFT_METAMEMBER(size),
137  SWIFT_METAMEMBER(created));
138  };
139 } // namespace swift::misc::network
140 
141 Q_DECLARE_METATYPE(swift::misc::network::CRemoteFile)
142 
143 #endif // SWIFT_MISC_NETWORK_REMOTEFILE_H
Non-owning reference to a CPropertyIndex with a subset of its features.
Mix of the most commonly used mixin classes.
Definition: valueobject.h:114
Entity with timestamp.
ColumnIndex
Base class enums.
Definition: mixinindex.h:44
void setDescription(const QString &description)
Description.
Definition: remotefile.h:73
QString getBaseName() const
Name with directory stripped.
Definition: remotefile.h:55
void setSize(qint64 size)
Set size.
Definition: remotefile.h:106
bool isFileWithSuffix() const
File with appendix.
Definition: remotefile.h:85
void setName(const QString &name)
Name.
Definition: remotefile.h:64
qint64 getSize() const
Get size.
Definition: remotefile.h:100
const CUrl & getUrl() const
Get URL.
Definition: remotefile.h:76
const QString & getDescription() const
Description.
Definition: remotefile.h:70
bool hasName() const
Has name?
Definition: remotefile.h:58
CRemoteFile()=default
Constructor.
bool hasUrl() const
Has an URL.
Definition: remotefile.h:79
void setUrl(const CUrl &url)
Set URL.
Definition: remotefile.h:94
const QString & getName() const
Name.
Definition: remotefile.h:52
Value object encapsulating information of a location, kind of simplified CValueObject compliant versi...
Definition: url.h:27
#define SWIFT_METAMEMBER(MEMBER,...)
Macro to define an element within a metaclass.
Definition: metaclass.h:73
#define SWIFT_METACLASS(CLASS,...)
Macro to define a nested metaclass that describes the attributes of its enclosing class.
Definition: metaclass.h:53
#define SWIFT_MISC_EXPORT
Export a class or function from the library.
#define SWIFT_DECLARE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template declaration of mixins for a CValueObject subclass to be placed near the top of the ...
Definition: valueobject.h:65