GCC Code Coverage Report
Directory: src/ Exec Total Coverage
File: src/gui/models/itemsmodel.h Lines: 0 22 0.0 %
Date: 2021-03-17 Branches: 0 26 0.0 %

Line Branch Exec Source
1
/*
2
 *  The ManaPlus Client
3
 *  Copyright (C) 2004-2009  The Mana World Development Team
4
 *  Copyright (C) 2009-2010  The Mana Developers
5
 *  Copyright (C) 2011-2019  The ManaPlus Developers
6
 *  Copyright (C) 2019-2021  Andrei Karas
7
 *
8
 *  This file is part of The ManaPlus Client.
9
 *
10
 *  This program is free software; you can redistribute it and/or modify
11
 *  it under the terms of the GNU General Public License as published by
12
 *  the Free Software Foundation; either version 2 of the License, or
13
 *  any later version.
14
 *
15
 *  This program is distributed in the hope that it will be useful,
16
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 *  GNU General Public License for more details.
19
 *
20
 *  You should have received a copy of the GNU General Public License
21
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
22
 */
23
24
#ifndef GUI_MODELS_ITEMSMODEL_H
25
#define GUI_MODELS_ITEMSMODEL_H
26
27
#include "gui/models/listmodel.h"
28
29
#include "resources/iteminfo.h"
30
31
#include "resources/db/itemdb.h"
32
33
#include "utils/foreach.h"
34
35
#include <list>
36
37
#include "localconsts.h"
38
39
class ItemsModal final : public ListModel
40
{
41
    public:
42
        ItemsModal() :
43
            mStrings()
44
        {
45
            const std::map<int, ItemInfo*> &items = ItemDB::getItemInfos();
46
            std::list<std::string> tempStrings;
47
48
            for (std::map<int, ItemInfo*>::const_iterator
49
                 i = items.begin(), i_end = items.end();
50
                 i != i_end; ++i)
51
            {
52
                if (i->first < 0)
53
                    continue;
54
55
                const ItemInfo &info = *i->second;
56
                const std::string &name = info.getName();
57
                if (name != "unnamed" && !info.getName().empty()
58
                    && info.getName() != "unnamed")
59
                {
60
                    tempStrings.push_back(name);
61
                }
62
            }
63
            tempStrings.sort();
64
            FOR_EACH (std::list<std::string>::const_iterator, i, tempStrings)
65
                mStrings.push_back(*i);
66
        }
67
68
        A_DELETE_COPY(ItemsModal)
69
70
        int getNumberOfElements() override final
71
        {
72
            return CAST_S32(mStrings.size());
73
        }
74
75
        std::string getElementAt(int i) override final
76
        {
77
            if (i < 0 || i >= getNumberOfElements())
78
                return "???";
79
            return mStrings.at(i);
80
        }
81
82
    private:
83
        StringVect mStrings;
84
};
85
86
#endif  // GUI_MODELS_ITEMSMODEL_H