<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://git.reviewboard.kde.org/r/107791/">http://git.reviewboard.kde.org/r/107791/</a>
</td>
</tr>
</table>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On December 27th, 2012, 10:33 a.m., <b>Kevin Krammer</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I am a bit puzzled by the usage of QSettings for file I/O.
My, rather limited, understanding of QSettings in Qt5 context is that is mostly the same as in Qt4 and Qt4's version is AFAIK neither capable of doing hierachical files nor immutable settings nor environment/tool-output dependent values.
All of which KConfig can do and which could have been deployed (especially hierachy and immutability).
Or maybe I am misunderstanding the purpose of this endeavour, i.e. is this just exploring options and not idended to be ever merged into KF5?</pre>
</blockquote>
<p>On December 27th, 2012, 11:28 a.m., <b>David Faure</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Right, QSettings doesn't do these things (well, it does hierarchical, but only two levels -- this is the most common use case, though).
But this is about simple spell-checking... why would an administrator need immutable settings, or environment variables / tool output in config keys? This is typically user preferences.
Any Qt-only library would do exactly this (use QSettings internally, waiting for a better solution in Qt).
Yes, someone should really work on getting a better configuration framework into Qt (e.g. splitting out windows registry stuff out of QSettings, to make QSettings INI-only, add a KConfigGroup equivalent to QSettings, and make it support multiple levels of hierarchy via QStandardPaths).</pre>
</blockquote>
</blockquote>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Two levels are most likley the most common case because most systems do not have any system administrator. Once you have admin customization you have at least three (package, admin, user). I don't have any evidence for nor against usage of Kiosk features in regard to spell checking, I am just pointing out that the solution proposed here does have none of those.
I also don't think it matters that a Qt-only library would do exactly this, a Qt-only library would not have been part of a solution that offered those option in the first place.
The reuse of the filename "sonnetrc" suggest to me that the intention is to use the same file. A KConfig based application and a QSettings based application will behave inconsitently if using the same file. Or is this a per-application stored file?
Do we assume that KDE application developers who's programs are being used in an "Enterprise" setup will fork the library and reimplement the config with KConfig or do we want them to use the KF5 version? The later will either require that the library does not handle config itself or at least allows applications to intercept config access or provide config that takes precendence over stored config.
IMHO the most sensible case is to let the application handle config I/O, allowing it to store the config in a way that is most approriate for its usage. If that is a KConfig INI file, a simple QSetting INI file or a JSON file shouldn't really matter to an engine which only is interested in the values.</pre>
<br />
<p>- Kevin</p>
<br />
<p>On December 27th, 2012, 12:52 a.m., Martin Tobias Holmedahl Sandsmark wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/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 Frameworks, kdelibs and David Faure.</div>
<div>By Martin Tobias Holmedahl Sandsmark.</div>
<p style="color: grey;"><i>Updated Dec. 27, 2012, 12:52 a.m.</i></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </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;">Ported everything away from KConfig to QSettings.
I couldn't really find any users of the ::save function, so I think the source incompatible change would be worth it. Alternatively we could add a deprecated dummy function that takes in a KConfig object and just ignores it, and uses QSettings.</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;">it builds.</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>kdeui/sonnet/configdialog.h <span style="color: grey">(7c4993b)</span></li>
<li>kdeui/sonnet/configdialog.cpp <span style="color: grey">(625441b)</span></li>
<li>kdeui/sonnet/configwidget.h <span style="color: grey">(023b659)</span></li>
<li>kdeui/sonnet/configwidget.cpp <span style="color: grey">(549d5af)</span></li>
<li>kdeui/sonnet/highlighter.cpp <span style="color: grey">(6cbb14c)</span></li>
<li>kdeui/sonnet/tests/test_configdialog.cpp <span style="color: grey">(4c4fd21)</span></li>
<li>kdeui/widgets/ktextedit.h <span style="color: grey">(d0c1c4d)</span></li>
<li>kdeui/widgets/ktextedit.cpp <span style="color: grey">(71d2a9f)</span></li>
<li>staging/sonnet/src/core/backgroundchecker.h <span style="color: grey">(f0da3a3)</span></li>
<li>staging/sonnet/src/core/backgroundchecker.cpp <span style="color: grey">(dc05b94)</span></li>
<li>staging/sonnet/src/core/globals.cpp <span style="color: grey">(bf4f504)</span></li>
<li>staging/sonnet/src/core/loader.cpp <span style="color: grey">(887aee5)</span></li>
<li>staging/sonnet/src/core/settings.cpp <span style="color: grey">(59cb593)</span></li>
<li>staging/sonnet/src/core/settings_p.h <span style="color: grey">(e14bad7)</span></li>
<li>staging/sonnet/src/core/speller.h <span style="color: grey">(37dd82f)</span></li>
<li>staging/sonnet/src/core/speller.cpp <span style="color: grey">(f831f55)</span></li>
</ul>
<p><a href="http://git.reviewboard.kde.org/r/107791/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>