File indexing completed on 2024-12-01 12:37:40

0001 /* This file is part of the KDE libraries
0002     Copyright (C) 2005, 2006 Ian Reinhart Geiser <geiseri@kde.org>
0003     Copyright (C) 2005, 2006 Matt Broadstone <mbroadst@gmail.com>
0004     Copyright (C) 2005, 2006 Richard J. Moore <rich@kde.org>
0005     Copyright (C) 2005, 2006 Erik L. Bunce <kde@bunce.us>
0006 
0007     This library is free software; you can redistribute it and/or
0008     modify it under the terms of the GNU Library General Public
0009     License as published by the Free Software Foundation; either
0010     version 2 of the License, or (at your option) any later version.
0011 
0012     This library is distributed in the hope that it will be useful,
0013     but WITHOUT ANY WARRANTY; without even the implied warranty of
0014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0015     Library General Public License for more details.
0016 
0017     You should have received a copy of the GNU Library General Public License
0018     along with this library; see the file COPYING.LIB.  If not, write to
0019     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0020     Boston, MA 02110-1301, USA.
0021 */
0022 #include "settings.h"
0023 #include <QSettings>
0024 #include "kjseglobal.h"
0025 
0026 using namespace KJSEmbed;
0027 
0028 START_QOBJECT_METHOD(callAllKeys, QSettings)
0029 QStringList keys = object->allKeys();
0030 result = KJSEmbed::convertToValue(exec, keys);
0031 END_QOBJECT_METHOD
0032 
0033 START_QOBJECT_METHOD(callSetValue, QSettings)
0034 QString key = KJSEmbed::extractQString(exec, args, 0);
0035 QVariant value = KJSEmbed::convertToVariant(exec, args[1]);
0036 object->setValue(key, value);
0037 END_QOBJECT_METHOD
0038 
0039 START_QOBJECT_METHOD(callValue, QSettings)
0040 QVariant value;
0041 QString key = KJSEmbed::extractQString(exec, args, 0);
0042 if (args.size() == 2)
0043 {
0044     value = KJSEmbed::convertToVariant(exec, args[1]);
0045 }
0046 value = object->value(key, value);
0047 result = KJSEmbed::convertToValue(exec, value);
0048 END_QOBJECT_METHOD
0049 
0050 START_QOBJECT_METHOD(callClear, QSettings)
0051 object->clear();
0052 END_QOBJECT_METHOD
0053 
0054 START_QOBJECT_METHOD(callSync, QSettings)
0055 object->sync();
0056 END_QOBJECT_METHOD
0057 
0058 START_QOBJECT_METHOD(callRemove, QSettings)
0059 QString key = KJSEmbed::extractQString(exec, args, 0);
0060 object->remove(key);
0061 END_QOBJECT_METHOD
0062 
0063 START_STATIC_OBJECT_METHOD(callSetPath)
0064 // QSettings::Format format = (QSettings::Format) KJSEmbed::extractVariant<uint>(exec, args, 0);
0065 // QSettings::Scope scope = (QSettings::Scope) KJSEmbed::extractVariant<uint>(exec, args, 1);
0066 QString path = KJSEmbed::extractQString(exec, args, 2);
0067 //QSettings::setSystemIniPath(format,scope,path);
0068 return KJS::jsNull();
0069 END_STATIC_OBJECT_METHOD
0070 
0071 START_METHOD_LUT(SettingsBinding)
0072 {"allKeys", 0, KJS::DontDelete | KJS::ReadOnly, &callAllKeys },
0073 {"setValue", 2, KJS::DontDelete | KJS::ReadOnly, &callSetValue },
0074 {"value", 1, KJS::DontDelete | KJS::ReadOnly, &callValue },
0075 {"clear", 0, KJS::DontDelete | KJS::ReadOnly, &callClear },
0076 {"sync", 0, KJS::DontDelete | KJS::ReadOnly, &callSync },
0077 {"remove", 1, KJS::DontDelete | KJS::ReadOnly, &callRemove }
0078 END_METHOD_LUT
0079 
0080 START_ENUM_LUT(SettingsBinding)
0081 {"NativeFormat", QSettings::NativeFormat},
0082 {"IniFormat", QSettings::IniFormat},
0083 //{"InvalidFormat", QSettings::InvalidFormat},
0084 {"UserScope", QSettings::UserScope},
0085 {"SystemScope", QSettings::SystemScope}
0086 END_ENUM_LUT
0087 
0088 START_STATIC_METHOD_LUT(SettingsBinding)
0089 {"setPath", 3, KJS::DontDelete | KJS::ReadOnly, &callSetPath
0090 }
0091 END_METHOD_LUT
0092 
0093 KJSO_SIMPLE_BINDING_CTOR(SettingsBinding, QSettings, QObjectBinding)
0094 KJSO_QOBJECT_BIND(SettingsBinding, QSettings)
0095 
0096 KJSO_START_CTOR(SettingsBinding, QSettings, 1)
0097 QSettings *settings = nullptr;
0098 if (args.size() == 1)
0099 {
0100     QObject *parent = KJSEmbed::extractObject<QObject>(exec, args, 0);
0101     settings = new QSettings(parent);
0102 } else if (args.size() == 3)
0103 {
0104     QString fileName = KJSEmbed::extractQString(exec, args, 0);
0105     QSettings::Format format = (QSettings::Format) KJSEmbed::extractVariant<uint>(exec, args, 1);
0106     QObject *parent = KJSEmbed::extractObject<QObject>(exec, args, 2);
0107     settings = new QSettings(fileName, format, parent);
0108 } else if (args.size() == 4)
0109 {
0110     QSettings::Scope scope = (QSettings::Scope) KJSEmbed::extractVariant<uint>(exec, args, 0);
0111     QString organization = KJSEmbed::extractQString(exec, args, 1);
0112     QString application = KJSEmbed::extractQString(exec, args, 2);
0113     QObject *parent = KJSEmbed::extractObject<QObject>(exec, args, 3);
0114     settings = new QSettings(scope, organization, application, parent);
0115 } else
0116 {
0117     settings = new QSettings();
0118 }
0119 
0120 return new SettingsBinding(exec, settings);
0121 KJSO_END_CTOR
0122