Optimize reading Sonnet settings by minimizing the cals to save()
Review Request #123341 - Created April 12, 2015 and submitted
The curent implementation can causes ~25 cals to Settings::save() for every created Speller instance.
The Settings::restore() function ends with setQuietIgnoreList(...) which would call save() for evey ignore-word.
This patch removes the save() cals in the setFoo() functions of Settings and replace it by a boolean that indicates if the settign is changed or not. Then in the Speller class save() is called when needed.
The reason for this patch is that it took Kate ~2 minutes to open a kate session with ~340 files. The implementation in Kate called reload() for every file. There is a RR for Kate to remove that unneeded reload.
This patch also prepares Sonnet::Settings for being used in the public API to set aplication specific Sonnet settings without saving them in the global settings.
The Settings class is exported but the header is private. This change is BIC, but since the class is private, my interpretation is that it should not mater.
If accepted I will also add a Review Request to make the Settings class public to enable application specific settings.
Tested with Kate and with the patch the startup time was back to "normal".
Two unit tests added.
Added unit tests:
-Check that there are no unneeded writes to the settings. (Does not work on Windows, but does not fail)
-Check that the settings changes are written to QSettings imediately from Speller functions.
Revision 3 (+84 -44)