<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://reviewboard.kde.org/r/4919/">http://reviewboard.kde.org/r/4919/</a>
     </td>
    </tr>
   </table>
   <br />


<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://reviewboard.kde.orgrb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for KDE Games.</div>
<div>By Stefan Majewsky.</div>


<p style="color: grey;"><i>Updated 2010-08-07 22:42:24.218241</i></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Changes</h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Nearly complete implementation of the Model class, and many simplifications and extensions in the other classes.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description  (updated)</h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">KScore2 is a new framework which ought to replace the commonly used KHighscore/KScoreDialog and perhaps also KExtHighscore. The most central class (and the point where you should start reading the APIDOX) is KScore2::Model.

KScore2 makes use of the Model/View concept to create a simple, extensible, yet future-proof API. Contrary to KScoreManager (the other new highscore library which is in playground/games ATM), KScore2 is designed such that no assumptions about the internal data structures are included in the public interfaces. Its API makes simple tasks easy and complex tasks achievable.

Many KDE games have, over the years, grown their own highscore systems. KScore2 allows to accomodate these special needs: The score model can be made to retrieve its data from arbitrary locations by writing a custom KScore2::Engine subclass. Similarly, a KScore2::CategoryModel can be implemented to support custom highscore grouping (e.g. by difficulty, by level, or by levelpack and level).

What I&#39;m presenting here is my current working state. Several things are missing:
* two functions in the KScore2::Model class, and the complete KScore2::Dialog class (which will only be available internally; its whole public interface is KScore2::Model::showDialog)
* unit tests
* integration into the rest of libkdegames (at the very least, this means a KGameDifficulty::CategoryModel which provides grouping of scores by difficulty as we have it already in most KDE games)
* API for gathering game statistics (like KPat and KReversi do; I want input on this one!)
* testing in the form of ported games (KDiamond will likely be my guinea pig again)

The code is also available from my Git-SVN repository at git://git.bethselamin.de/kdegames-work.git (branch &quot;kscore2&quot;).</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">At least it compiles. ;-)</pre>
  </td>
 </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> (updated)</h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>/trunk/KDE/kdegames/libkdegames/CMakeLists.txt <span style="color: grey">(1160372)</span></li>

 <li>/trunk/KDE/kdegames/libkdegames/kscore2/categorymodel.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/trunk/KDE/kdegames/libkdegames/kscore2/categorymodel.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/trunk/KDE/kdegames/libkdegames/kscore2/dataset.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/trunk/KDE/kdegames/libkdegames/kscore2/dataset.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/trunk/KDE/kdegames/libkdegames/kscore2/datasetdefinition.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/trunk/KDE/kdegames/libkdegames/kscore2/datasetdefinition.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/trunk/KDE/kdegames/libkdegames/kscore2/engine.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/trunk/KDE/kdegames/libkdegames/kscore2/engine.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/trunk/KDE/kdegames/libkdegames/kscore2/flags.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/trunk/KDE/kdegames/libkdegames/kscore2/flags.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/trunk/KDE/kdegames/libkdegames/kscore2/model.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/trunk/KDE/kdegames/libkdegames/kscore2/model.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/trunk/KDE/kdegames/libkdegames/kscore2/model_p.h <span style="color: grey">(PRE-CREATION)</span></li>

</ul>

<p><a href="http://reviewboard.kde.org/r/4919/diff/" style="margin-left: 3em;">View Diff</a></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Screenshots </h1>

<div>

 <a href="http://reviewboard.kde.org/r/4919/s/473/"><img src="http://reviewboard.kde.org/media/uploaded/images/2010/08/06/kscoremodel-concept_400x100.png" style="border: 1px black solid;" alt="Relation of the different data sources in KScore2" /></a>

</div>


  </td>
 </tr>
</table>




  </div>
 </body>
</html>