| 88 | } |
| 89 | |
| 90 | void ApiObject::load_nogroup(ApiObject *obj, QSettings &settings) |
| 91 | { |
| 92 | auto meta = obj->metaObject(); |
| 93 | for(int i = meta->propertyOffset(); i < meta->propertyCount(); i++) { |
| 94 | auto prop = meta->property(i); |
| 95 | if(!prop.isStored() || !prop.isReadable()) |
| 96 | continue; |
| 97 | |
| 98 | auto data = prop.read(obj); |
| 99 | |
| 100 | if(prop.isWritable()) { |
| 101 | if(data.canConvert<QList<bool>>()) { |
| 102 | auto list = load<bool>(settings, prop.name()); |
| 103 | if(!list.empty()) |
| 104 | prop.write(obj, QVariant::fromValue(list)); |
| 105 | } else if(data.canConvert<QList<int>>()) { |
| 106 | auto list = load<int>(settings, prop.name()); |
| 107 | if(!list.empty()) |
| 108 | prop.write(obj, QVariant::fromValue(list)); |
| 109 | } else if(data.canConvert<QList<double>>()) { |
| 110 | auto list = load<double>(settings, prop.name()); |
| 111 | if(!list.empty()) |
| 112 | prop.write(obj, QVariant::fromValue(list)); |
| 113 | } else if(data.canConvert<QList<QString>>()) { |
| 114 | auto list = load<QString>(settings, prop.name()); |
| 115 | if(!list.empty()) |
| 116 | prop.write(obj, QVariant::fromValue(list)); |
| 117 | } else { |
| 118 | auto value = settings.value(prop.name()); |
| 119 | |
| 120 | qDebug(CAT_APIOBJECT) << "Loading property" << prop.name() << "value" << value; |
| 121 | |
| 122 | if(!value.isNull()) |
| 123 | prop.write(obj, value); |
| 124 | } |
| 125 | } else { |
| 126 | if(data.canConvert<ApiObject *>()) { |
| 127 | settings.beginGroup(prop.name()); |
| 128 | load_nogroup(data.value<ApiObject *>(), settings); |
| 129 | settings.endGroup(); |
| 130 | } else if(data.canConvert<QVariantList>()) { |
| 131 | load(settings, prop.name(), data.value<QVariantList>()); |
| 132 | } |
| 133 | } |
| 134 | } |
| 135 | } |
| 136 | |
| 137 | void ApiObject::save_nogroup(ApiObject *obj, QSettings &settings) |
| 138 | { |