summaryrefslogtreecommitdiff
path: root/noncore/applets/keyhelper/keyhelperapplet/config/KeycfgReader.cpp
Side-by-side diff
Diffstat (limited to 'noncore/applets/keyhelper/keyhelperapplet/config/KeycfgReader.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/applets/keyhelper/keyhelperapplet/config/KeycfgReader.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/noncore/applets/keyhelper/keyhelperapplet/config/KeycfgReader.cpp b/noncore/applets/keyhelper/keyhelperapplet/config/KeycfgReader.cpp
new file mode 100644
index 0000000..44b4b2f
--- a/dev/null
+++ b/noncore/applets/keyhelper/keyhelperapplet/config/KeycfgReader.cpp
@@ -0,0 +1,70 @@
+#include "KeycfgReader.h"
+
+KeycfgReader::KeycfgReader()
+{
+ qDebug("KeycfgReader::KeycfgReader()");
+}
+
+KeycfgReader::~KeycfgReader()
+{
+ qDebug("KeycfgReader::~KeycfgReader()");
+}
+
+bool KeycfgReader::load()
+{
+ QString file;
+ ConfigEx& cfg = ConfigEx::getInstance("keyhelper");
+
+ cfg.setGroup("Global");
+
+ file = cfg.readEntry("XmlFile");
+ if(file.length() == 0 || !QFile::exists(file)){
+ /* default */
+ file = QDir::homeDirPath() + "/Settings/keyhelper.xml";
+ }
+ return(load(file));
+}
+
+bool KeycfgReader::load(const QString& path)
+{
+ bool success = false;
+
+ KeyNames::reset();
+
+ QXmlSimpleReader parser;
+ KeycfgHandler handler(&parser);
+ KeycfgErrorHandler errhandler;
+ QFile file(path);
+
+ qWarning("KeycfgReader::load()[%s]", path.latin1());
+
+ if(file.exists()){
+ QXmlInputSource source(file);
+
+ handler.setKeyModifiers(m_pModifiers);
+ handler.setKeyMappings(m_pMappings);
+ handler.setKeyExtensions(m_pExtensions);
+ handler.setKeyRepeater(m_pRepeater);
+
+ parser.setContentHandler(&handler);
+ parser.setErrorHandler(&errhandler);
+ success = parser.parse(source);
+
+ file.close();
+ }
+
+ if(success){
+ m_pModifiers->statistics();
+ m_pMappings->statistics();
+ m_pExtensions->statistics();
+ m_pRepeater->statistics();
+ } else {
+ m_pModifiers->reset();
+ m_pMappings->reset();
+ m_pExtensions->reset();
+ m_pRepeater->reset();
+ }
+ KeyNames::clearCode();
+
+ return(success);
+}