summaryrefslogtreecommitdiffstats
path: root/Rom.h
blob: 7ec194b099cc18bd029fbbcb57c5e3a74667ca44 (plain)
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
/*
 * Copyright 2008 Ben Boeckel <MathStuf@gmail.com>
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along
 * with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/**
 * \file Rom.h
 */

#ifndef ROM_H
#define ROM_H

// Qt includes
#include <QtCore/QObject>
#include <QtCore/QString>

// Forward declarations
class KConfigGroup;

/**
 * \class Rom
 * \brief Details a ROM.
 */
class Rom : public QObject
{
    Q_OBJECT
    /**
     * \var name
     * \brief The name of the ROM.
     * 
     * \sa name
     * \sa setName
     */
    Q_PROPERTY(QString name READ name WRITE setName)
    /**
     * \var path
     * \brief The location of the ROM.
     * 
     * \sa path
     * \sa setPath
     */
    Q_PROPERTY(QString path READ path WRITE setPath)
    /**
     * \var type
     * \brief The type of the ROM.
     * 
     * \sa type
     * \sa setType
     */
    Q_PROPERTY(QString type READ type WRITE setType)
    /**
     * \var rating
     * \brief The rating of the ROM on a scale of 1-10.
     * 
     * \sa rating
     * \sa setRating
     */
    Q_PROPERTY(int rating READ rating WRITE setRating)
    /**
     * \var notes
     * \brief Notes on the ROM.
     * 
     * \sa notes
     * \sa setNotes
     */
    Q_PROPERTY(QString notes READ notes WRITE setNotes)
    
    public:
        /**
         * \brief Default constructor.
         */
        Rom();
        
        /**
         * \brief Config constructor.
         */
        Rom(const KConfigGroup& config);
        
        /**
         * \brief Copy constructor.
         * 
         * \param rhs The ROM to copy.
         */
        Rom(const Rom& rhs);
        
        /**
         * \brief Create a KConfigGroup for saving.
         * 
         * \param parent The parent group.
         */
        void makeGroup(const KConfigGroup& parent) const;
        
        /**
         * \return The name of the ROM.
         */
        QString name() const;
        
        /**
         * \return The location of the ROM.
         */
        QString path() const;
        
        /**
         * \return The type of the ROM.
         */
        QString type() const;
        
        /**
         * \return The rating of the ROM.
         */
        int rating() const;
        
        /**
         * \return Notes anout the ROM.
         */
        QString notes() const;
        
        /**
         * \brief Assignment method.
         * 
         * \param rhs ROM to copy.
         */
        Rom& operator=(const Rom& rhs);
    public slots:
        /**
         * \brief Set the name of the ROM.
         * 
         * \param name 
         */
        void setName(const QString& name);
        
        /**
         * \brief Set the location of the ROM.
         * 
         * \param path 
         */
        void setPath(const QString& path);
        
        /**
         * \brief Set the type of the ROM.
         * 
         * \param type 
         */
        void setType(const QString& type);
        
        /**
         * \brief Set the rating.
         * 
         * \param rating
         */
        void setRating(const int rating);
        
        /**
         * \brief Set the notes about the ROM.
         * 
         * \param notes 
         */
        void setNotes(const QString& notes);
    private:
        QString m_name;
        QString m_path;
        QString m_type;
        int m_rating;
        QString m_notes;
};

#endif