swift
Loading...
Searching...
No Matches
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"
17#include "misc/timestampbased.h"
18#include "misc/valueobject.h"
19
20SWIFT_DECLARE_VALUEOBJECT_MIXINS(swift::misc::network, CRemoteFile)
21
22namespace 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
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
141Q_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.
ITimestampBased()=default
Constructor.
const QString & getName() const
Name.
Definition remotefile.h:52
void setDescription(const QString &description)
Description.
Definition remotefile.h:73
const QString & getDescription() const
Description.
Definition remotefile.h:70
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
bool hasName() const
Has name?
Definition remotefile.h:58
CRemoteFile()=default
Constructor.
ColumnIndex
Properties by index.
Definition remotefile.h:32
bool hasUrl() const
Has an URL.
Definition remotefile.h:79
const CUrl & getUrl() const
Get URL.
Definition remotefile.h:76
void setUrl(const CUrl &url)
Set URL.
Definition remotefile.h:94
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:72
#define SWIFT_METACLASS(CLASS,...)
Macro to define a nested metaclass that describes the attributes of its enclosing class.
Definition metaclass.h:52
QString section(QChar sep, qsizetype start, qsizetype end, QString::SectionFlags flags) const const
QString trimmed() const const
#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