GCC Code Coverage Report
Directory: src/ Exec Total Coverage
File: src/listeners/renamelistener.cpp Lines: 9 27 33.3 %
Date: 2021-03-17 Branches: 1 20 5.0 %

Line Branch Exec Source
1
/*
2
 *  The ManaPlus Client
3
 *  Copyright (C) 2011-2019  The ManaPlus Developers
4
 *  Copyright (C) 2019-2021  Andrei Karas
5
 *
6
 *  This file is part of The ManaPlus Client.
7
 *
8
 *  This program is free software; you can redistribute it and/or modify
9
 *  it under the terms of the GNU General Public License as published by
10
 *  the Free Software Foundation; either version 2 of the License, or
11
 *  any later version.
12
 *
13
 *  This program is distributed in the hope that it will be useful,
14
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 *  GNU General Public License for more details.
17
 *
18
 *  You should have received a copy of the GNU General Public License
19
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
 */
21
22
#include "listeners/renamelistener.h"
23
24
#include "gui/viewport.h"
25
26
#include "gui/windows/socialwindow.h"
27
#include "gui/windows/textdialog.h"
28
29
#include "resources/map/map.h"
30
#include "resources/map/mapitem.h"
31
#include "resources/map/speciallayer.h"
32
33
#include "debug.h"
34
35
2
RenameListener::RenameListener() :
36
    ActionListener(),
37
    mMapItemX(0),
38
    mMapItemY(0),
39
4
    mDialog(nullptr)
40
{
41
2
}
42
43
2
void RenameListener::setMapItem(const MapItem *const mapItem)
44
{
45
2
    if (mapItem != nullptr)
46
    {
47
        mMapItemX = mapItem->getX();
48
        mMapItemY = mapItem->getY();
49
    }
50
    else
51
    {
52
2
        mMapItemX = 0;
53
2
        mMapItemY = 0;
54
    }
55
2
}
56
57
void RenameListener::action(const ActionEvent &event)
58
{
59
    if (event.getId() == "ok" && (viewport != nullptr) && (mDialog != nullptr))
60
    {
61
        const Map *const map = viewport->getMap();
62
        if (map == nullptr)
63
            return;
64
65
        const SpecialLayer *const sl = map->getSpecialLayer();
66
        MapItem *item = nullptr;
67
        if (sl != nullptr)
68
        {
69
            item = sl->getTile(mMapItemX, mMapItemY);
70
            if (item != nullptr)
71
                item->setComment(mDialog->getText());
72
        }
73
        item = map->findPortalXY(mMapItemX, mMapItemY);
74
        if (item != nullptr)
75
            item->setComment(mDialog->getText());
76
77
        if (socialWindow != nullptr)
78
            socialWindow->updatePortalNames();
79
    }
80
    mDialog = nullptr;
81
2
}