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)
{
    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