1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 | /* ============================================================
*
* This file is a part of digiKam project
* https://www.digikam.org
*
* Date : 2023-05-15
* Description : geolocation engine based on Marble.
* (c) 2007-2022 Marble Team
* https://invent.kde.org/education/marble/-/raw/master/data/credits_authors.html
*
* SPDX-FileCopyrightText: 2023-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
*
* SPDX-License-Identifier: LGPL-2.1-or-later
*
* ============================================================ */
#pragma once
// Qt includes
#include <QDateTime>
// Local includes
#include "GeoDataContainer_p.h"
#include "GeoDataTypes.h"
#include "GeoDataUpdate.h"
namespace Marble
{
class Q_DECL_HIDDEN GeoDataNetworkLinkControlPrivate : public GeoDataContainerPrivate
{
public:
GeoDataNetworkLinkControlPrivate();
GeoDataNetworkLinkControlPrivate(const GeoDataNetworkLinkControlPrivate& other);
~GeoDataNetworkLinkControlPrivate() override;
GeoDataNetworkLinkControlPrivate& operator=(const GeoDataNetworkLinkControlPrivate& other);
public:
qreal m_minRefreshPeriod;
qreal m_maxSessionLength;
QString m_cookie;
QString m_message;
QString m_linkName;
QString m_linkDescription;
QString m_linkSnippet;
int m_maxLines;
QDateTime m_expires;
GeoDataUpdate m_update;
GeoDataAbstractView* m_abstractView = nullptr;
};
GeoDataNetworkLinkControlPrivate::GeoDataNetworkLinkControlPrivate()
: m_minRefreshPeriod(0.0),
m_maxSessionLength(0.0),
m_maxLines(2),
m_expires(),
m_update(),
m_abstractView(nullptr)
{
}
GeoDataNetworkLinkControlPrivate::GeoDataNetworkLinkControlPrivate(const GeoDataNetworkLinkControlPrivate& other)
: GeoDataContainerPrivate(other),
m_minRefreshPeriod(other.m_minRefreshPeriod),
m_maxSessionLength(other.m_maxSessionLength),
m_cookie(other.m_cookie),
m_message(other.m_message),
m_linkName(other.m_linkName),
m_linkDescription(other.m_linkDescription),
m_linkSnippet(other.m_linkSnippet),
m_maxLines(other.m_maxLines),
m_expires(other.m_expires),
m_update(other.m_update),
m_abstractView(other.m_abstractView ? other.m_abstractView->copy() : nullptr)
{
}
GeoDataNetworkLinkControlPrivate::~GeoDataNetworkLinkControlPrivate()
{
delete m_abstractView;
}
GeoDataNetworkLinkControlPrivate& GeoDataNetworkLinkControlPrivate::operator=(const GeoDataNetworkLinkControlPrivate& other)<--- 'operator=' should check for assignment to self to avoid problems with dynamic memory. [+]'operator=' should check for assignment to self to ensure that each block of dynamically allocated memory is owned and managed by only one instance of the class.
{
GeoDataContainerPrivate::operator=(other);
m_minRefreshPeriod = other.m_minRefreshPeriod;
m_maxSessionLength = other.m_maxSessionLength;
m_cookie = other.m_cookie;
m_message = other.m_message;
m_linkName = other.m_linkName;
m_linkDescription = other.m_linkDescription;
m_linkSnippet = other.m_linkSnippet;
m_maxLines = other.m_maxLines;
m_expires = other.m_expires;
m_update = other.m_update;
delete m_abstractView;
m_abstractView = other.m_abstractView ? other.m_abstractView->copy() : nullptr;
return *this;
}
} // namespace Marble
|