• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdegames API Reference
  • KDE Home
  • Contact Us
 

granatier

  • sources
  • kde-4.14
  • kdegames
  • granatier
  • src
  • config
playersettings.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2009 Mathias Kraus <k.hias@gmx.de>
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License as
6  * published by the Free Software Foundation; either version 2 of
7  * the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #include "playersettings.h"
19 #include "settings.h"
20 
21 #include <KStandardDirs>
22 #include <KConfig>
23 #include <KConfigGroup>
24 
25 PlayerSettings::PlayerSettings()
26 {
27  QStringList playersAvailable;
28  QStringList playerFilesAvailable;
29  QStringList playerNamesAvailable;
30  KGlobal::dirs()->addResourceType("players", "data", "granatier/players/");
31  KGlobal::dirs()->findAllResources("players", "*.desktop", KStandardDirs::Recursive, playersAvailable);
32 
33  playersAvailable.removeDuplicates();
34  playersAvailable.sort();
35  for(int i = 0; i < playersAvailable.count(); i++)
36  {
37  StructPlayerSettings settings;
38  settings.strPlayerID = playersAvailable[i];
39 
40  KConfig desktopFile(KStandardDirs::locate("appdata", "players/" + settings.strPlayerID), KConfig::SimpleConfig);
41 
42  settings.strPlayerDesktopFilePath = desktopFile.name();
43  settings.strPlayerName = desktopFile.group("KGameTheme").readEntry<QString>("Name", "");
44  settings.strPlayerGraphicsFile = desktopFile.group("KGameTheme").readEntry<QString>("FileName", "");
45  settings.enabled = false;
46 
47  m_playerSettings.insert(settings.strPlayerID, settings);
48  }
49 
50 
51  QStringList playersGroupList;
52  QString strPlayerID;
53  KConfig granatierConfig("granatierrc", KConfig::NoGlobals );
54  int nEnableCount = 0;
55  if(granatierConfig.hasGroup("Player"))
56  {
57  playersGroupList = granatierConfig.group("Player").groupList();
58  playersGroupList.sort();
59  for(int i = 0; i < playersGroupList.count(); i++)
60  {
61  strPlayerID = granatierConfig.group("Player").group(playersGroupList[i]).readEntry<QString>("PlayerID", "");
62  if(m_playerSettings.contains(strPlayerID))
63  {
64  m_playerSettings.find(strPlayerID).value().strPlayerName = granatierConfig.group("Player").group(playersGroupList[i]).readEntry<QString>("Name", "");
65  m_playerSettings.find(strPlayerID).value().enabled = granatierConfig.group("Player").group(playersGroupList[i]).readEntry<int>("Enabled", 0);
66  if(m_playerSettings.find(strPlayerID).value().enabled)
67  {
68  nEnableCount++;
69  }
70 
71  m_playerSettings.find(strPlayerID).value().keyUp = QKeySequence(granatierConfig.group("Player").group(playersGroupList[i]).readEntry<QString>("KeyUp", ""));
72  m_playerSettings.find(strPlayerID).value().keyRight = QKeySequence(granatierConfig.group("Player").group(playersGroupList[i]).readEntry<QString>("KeyRight", ""));
73  m_playerSettings.find(strPlayerID).value().keyDown = QKeySequence(granatierConfig.group("Player").group(playersGroupList[i]).readEntry<QString>("KeyDown", ""));
74  m_playerSettings.find(strPlayerID).value().keyLeft = QKeySequence(granatierConfig.group("Player").group(playersGroupList[i]).readEntry<QString>("KeyLeft", ""));
75  m_playerSettings.find(strPlayerID).value().keyPutBomb = QKeySequence(granatierConfig.group("Player").group(playersGroupList[i]).readEntry<QString>("KeyPutBomb", ""));
76  }
77  }
78  }
79 
80  QMap<QString, StructPlayerSettings>::iterator settingsIterator = m_playerSettings.begin();
81  while (nEnableCount < 2 && settingsIterator != m_playerSettings.end())
82  {
83  if(!(settingsIterator.value().enabled))
84  {
85  settingsIterator.value().enabled = true;
86  nEnableCount++;
87  }
88  ++settingsIterator;
89  }
90 
91  int nFirstRun = granatierConfig.group("General").readEntry<int>("FirstRun", 1);
92  if(nFirstRun)
93  {
94  settingsIterator = m_playerSettings.begin();
95  settingsIterator.value().keyUp = QKeySequence(Qt::Key_Up);
96  settingsIterator.value().keyRight = QKeySequence(Qt::Key_Right);
97  settingsIterator.value().keyDown = QKeySequence(Qt::Key_Down);
98  settingsIterator.value().keyLeft = QKeySequence(Qt::Key_Left);
99  settingsIterator.value().keyPutBomb = QKeySequence(Qt::Key_Return);
100  ++settingsIterator;
101  settingsIterator.value().keyUp = QKeySequence(Qt::Key_W);
102  settingsIterator.value().keyRight = QKeySequence(Qt::Key_D);
103  settingsIterator.value().keyDown = QKeySequence(Qt::Key_S);
104  settingsIterator.value().keyLeft = QKeySequence(Qt::Key_A);
105  settingsIterator.value().keyPutBomb = QKeySequence(Qt::Key_Q);
106  ++settingsIterator;
107  settingsIterator.value().keyUp = QKeySequence(Qt::Key_I);
108  settingsIterator.value().keyRight = QKeySequence(Qt::Key_L);
109  settingsIterator.value().keyDown = QKeySequence(Qt::Key_K);
110  settingsIterator.value().keyLeft = QKeySequence(Qt::Key_J);
111  settingsIterator.value().keyPutBomb = QKeySequence(Qt::Key_Space);
112  m_tempPlayerSettings = m_playerSettings;
113  savePlayerSettings();
114  granatierConfig.group("General").writeEntry("FirstRun", 0);
115  }
116 
117  m_tempPlayerSettings = m_playerSettings;
118 }
119 
120 PlayerSettings::~PlayerSettings()
121 {
122 }
123 
124 const QStringList PlayerSettings::playerIDs() const
125 {
126  return m_playerSettings.keys();
127 }
128 
129 const QString PlayerSettings::playerName(const QString& strPlayerID) const
130 {
131  return m_playerSettings.value(strPlayerID).strPlayerName;
132 }
133 
134 const QString PlayerSettings::playerDesktopFilePath(const QString& strPlayerID) const
135 {
136  return m_playerSettings.value(strPlayerID).strPlayerDesktopFilePath;
137 }
138 
139 const QString PlayerSettings::playerGraphicsFile(const QString& strPlayerID) const
140 {
141  return m_playerSettings.value(strPlayerID).strPlayerGraphicsFile;
142 }
143 
144 bool PlayerSettings::enabled(const QString& strPlayerID) const
145 {
146  return m_playerSettings.value(strPlayerID).enabled;
147 }
148 
149 const QKeySequence PlayerSettings::keyUp(const QString& strPlayerID) const
150 {
151  return m_playerSettings.value(strPlayerID).keyUp;
152 }
153 
154 const QKeySequence PlayerSettings::keyRight(const QString& strPlayerID) const
155 {
156  return m_playerSettings.value(strPlayerID).keyRight;
157 }
158 
159 const QKeySequence PlayerSettings::keyDown(const QString& strPlayerID) const
160 {
161  return m_playerSettings.value(strPlayerID).keyDown;
162 }
163 
164 const QKeySequence PlayerSettings::keyLeft(const QString& strPlayerID) const
165 {
166  return m_playerSettings.value(strPlayerID).keyLeft;
167 }
168 
169 const QKeySequence PlayerSettings::keyPutBomb(const QString& strPlayerID) const
170 {
171  return m_playerSettings.value(strPlayerID).keyPutBomb;
172 }
173 
174 void PlayerSettings::savePlayerSettings()
175 {
176  m_playerSettings = m_tempPlayerSettings;
177 
178  QStringList playersGroupList;
179  QStringList strPlayerIDList;
180  KConfig granatierConfig("granatierrc", KConfig::NoGlobals );
181  if(granatierConfig.hasGroup("Player"))
182  {
183  playersGroupList = granatierConfig.group("Player").groupList();
184  playersGroupList.sort();
185  for(int i = 0; i < playersGroupList.count(); i++)
186  {
187  strPlayerIDList.append(granatierConfig.group("Player").group(playersGroupList[i]).readEntry<QString>("PlayerID", ""));
188  }
189 
190  int nPlayersGroupIndex;
191  int nIndex;
192  QMap<QString, StructPlayerSettings>::const_iterator i = m_playerSettings.constBegin();
193  while (i != m_playerSettings.constEnd())
194  {
195  playersGroupList.sort();
196  nIndex = strPlayerIDList.indexOf(i.key());
197  if(nIndex < 0)
198  {
199  for(int j = 0; j < playersGroupList.count(); j++)
200  {
201  if(playersGroupList[j].toInt() > j+1)
202  {
203  playersGroupList.append(QString("%1").arg(j+1));
204  strPlayerIDList.append(i.key());
205  nPlayersGroupIndex = j+1;
206  nIndex = nPlayersGroupIndex;
207  break;
208  }
209  }
210  if(nIndex < 0)
211  {
212  playersGroupList.append(QString("%1").arg(playersGroupList.count() + 1));
213  strPlayerIDList.append(i.key());
214  nPlayersGroupIndex = playersGroupList.count();
215  }
216  }
217  else
218  {
219  nPlayersGroupIndex = playersGroupList[nIndex].toInt();
220  }
221 
222  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("PlayerID", i.value().strPlayerID);
223  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("Name", i.value().strPlayerName);
224  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("Enabled", (i.value().enabled ? 1 : 0));
225 
226  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("KeyUp", i.value().keyUp.toString());
227  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("KeyRight", i.value().keyRight.toString());
228  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("KeyDown", i.value().keyDown.toString());
229  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("KeyLeft", i.value().keyLeft.toString());
230  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("KeyPutBomb", i.value().keyPutBomb.toString());
231 
232  ++i;
233  }
234  }
235  else
236  {
237  int nPlayersGroupIndex = 1;
238  QMap<QString, StructPlayerSettings>::const_iterator i = m_playerSettings.constBegin();
239  while (i != m_playerSettings.constEnd())
240  {
241  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("PlayerID", i.value().strPlayerID);
242  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("Name", i.value().strPlayerName);
243  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("Enabled", (i.value().enabled ? 1 : 0));
244 
245  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("KeyUp", i.value().keyUp.toString());
246  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("KeyRight", i.value().keyRight.toString());
247  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("KeyDown", i.value().keyDown.toString());
248  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("KeyLeft", i.value().keyLeft.toString());
249  granatierConfig.group("Player").group(QString("%1").arg(nPlayersGroupIndex)).writeEntry("KeyPutBomb", i.value().keyPutBomb.toString());
250 
251  nPlayersGroupIndex++;
252  ++i;
253  }
254  }
255 }
256 
257 void PlayerSettings::discardUnsavedSettings()
258 {
259  m_tempPlayerSettings = m_playerSettings;
260 }
261 
262 void PlayerSettings::setPlayerName(const QString& strPlayerID, const QString& strName)
263 {
264  if(m_tempPlayerSettings.contains(strPlayerID))
265  {
266  m_tempPlayerSettings.find(strPlayerID).value().strPlayerName = strName;
267  Settings::self()->setDummy(Settings::self()->dummy() + 3);
268  }
269 }
270 
271 void PlayerSettings::setEnabled(const QString& strPlayerID, const bool enabled)
272 {
273  if(m_tempPlayerSettings.contains(strPlayerID))
274  {
275  m_tempPlayerSettings.find(strPlayerID).value().enabled = enabled;
276  Settings::self()->setDummy(Settings::self()->dummy() + 3);
277  }
278 }
279 
280 void PlayerSettings::setKeyUp(const QString& strPlayerID, const QKeySequence& key)
281 {
282  if(m_tempPlayerSettings.contains(strPlayerID))
283  {
284  m_tempPlayerSettings.find(strPlayerID).value().keyUp = key;
285  Settings::self()->setDummy(Settings::self()->dummy() + 3);
286  }
287 }
288 
289 void PlayerSettings::setKeyRight(const QString& strPlayerID, const QKeySequence& key)
290 {
291  if(m_tempPlayerSettings.contains(strPlayerID))
292  {
293  m_tempPlayerSettings.find(strPlayerID).value().keyRight = key;
294  Settings::self()->setDummy(Settings::self()->dummy() + 3);
295  }
296 }
297 
298 void PlayerSettings::setKeyDown(const QString& strPlayerID, const QKeySequence& key)
299 {
300  if(m_tempPlayerSettings.contains(strPlayerID))
301  {
302  m_tempPlayerSettings.find(strPlayerID).value().keyDown = key;
303  Settings::self()->setDummy(Settings::self()->dummy() + 3);
304  }
305 }
306 
307 void PlayerSettings::setKeyLeft(const QString& strPlayerID, const QKeySequence& key)
308 {
309  if(m_tempPlayerSettings.contains(strPlayerID))
310  {
311  m_tempPlayerSettings.find(strPlayerID).value().keyLeft = key;
312  Settings::self()->setDummy(Settings::self()->dummy() + 3);
313  }
314 }
315 
316 void PlayerSettings::setKeyPutBomb(const QString& strPlayerID, const QKeySequence& key)
317 {
318  if(m_tempPlayerSettings.contains(strPlayerID))
319  {
320  m_tempPlayerSettings.find(strPlayerID).value().keyPutBomb = key;
321  Settings::self()->setDummy(Settings::self()->dummy() + 3);
322  }
323 }
PlayerSettings::playerDesktopFilePath
const QString playerDesktopFilePath(const QString &strPlayerID) const
Definition: playersettings.cpp:134
PlayerSettings::savePlayerSettings
void savePlayerSettings()
Definition: playersettings.cpp:174
QMap::contains
bool contains(const Key &key) const
PlayerSettings::keyUp
const QKeySequence keyUp(const QString &strPlayerID) const
Definition: playersettings.cpp:149
QStringList::removeDuplicates
int removeDuplicates()
QMap::constBegin
const_iterator constBegin() const
QMap
PlayerSettings::playerName
const QString playerName(const QString &strPlayerID) const
Definition: playersettings.cpp:129
PlayerSettings::setKeyLeft
void setKeyLeft(const QString &strPlayerID, const QKeySequence &key)
Definition: playersettings.cpp:307
PlayerSettings::keyRight
const QKeySequence keyRight(const QString &strPlayerID) const
Definition: playersettings.cpp:154
PlayerSettings::discardUnsavedSettings
void discardUnsavedSettings()
Definition: playersettings.cpp:257
PlayerSettings::enabled
bool enabled(const QString &strPlayerID) const
Definition: playersettings.cpp:144
PlayerSettings::keyDown
const QKeySequence keyDown(const QString &strPlayerID) const
Definition: playersettings.cpp:159
PlayerSettings::setKeyDown
void setKeyDown(const QString &strPlayerID, const QKeySequence &key)
Definition: playersettings.cpp:298
Settings::self
static Settings * self()
Definition: settings.cpp:17
QMap::keys
QList< Key > keys() const
PlayerSettings::keyPutBomb
const QKeySequence keyPutBomb(const QString &strPlayerID) const
Definition: playersettings.cpp:169
QList::count
int count(const T &value) const
QList::append
void append(const T &value)
QMap::constEnd
const_iterator constEnd() const
PlayerSettings::setKeyPutBomb
void setKeyPutBomb(const QString &strPlayerID, const QKeySequence &key)
Definition: playersettings.cpp:316
QString
QMap::end
iterator end()
QMap::begin
iterator begin()
QStringList
PlayerSettings::playerGraphicsFile
const QString playerGraphicsFile(const QString &strPlayerID) const
Definition: playersettings.cpp:139
playersettings.h
PlayerSettings::PlayerSettings
PlayerSettings()
Definition: playersettings.cpp:25
PlayerSettings::setKeyUp
void setKeyUp(const QString &strPlayerID, const QKeySequence &key)
Definition: playersettings.cpp:280
QMap::key
const Key key(const T &value) const
PlayerSettings::setKeyRight
void setKeyRight(const QString &strPlayerID, const QKeySequence &key)
Definition: playersettings.cpp:289
settings.h
QKeySequence
PlayerSettings::~PlayerSettings
~PlayerSettings()
Definition: playersettings.cpp:120
QStringList::sort
void sort()
QStringList::indexOf
int indexOf(const QRegExp &rx, int from) const
QMap::insert
iterator insert(const Key &key, const T &value)
PlayerSettings::keyLeft
const QKeySequence keyLeft(const QString &strPlayerID) const
Definition: playersettings.cpp:164
PlayerSettings::playerIDs
const QStringList playerIDs() const
Definition: playersettings.cpp:124
Settings::setDummy
static void setDummy(int v)
Set This is a dummy setting for player setup.
Definition: settings.h:248
PlayerSettings::setEnabled
void setEnabled(const QString &strPlayerID, const bool enabled)
Definition: playersettings.cpp:271
QMap::find
iterator find(const Key &key)
PlayerSettings::setPlayerName
void setPlayerName(const QString &strPlayerID, const QString &strName)
Definition: playersettings.cpp:262
QMap::value
const T value(const Key &key) const
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:18:10 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

granatier

Skip menu "granatier"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdegames API Reference

Skip menu "kdegames API Reference"
  • granatier
  • kapman
  • kblackbox
  • kgoldrunner
  • kigo
  • kmahjongg
  • KShisen
  • ksquares
  • libkdegames
  •   highscore
  •   libkdegamesprivate
  •     kgame
  • libkmahjongg
  • palapeli
  •   libpala

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal