| 129 | } |
| 130 | |
| 131 | QString DanmuScript::callGetSources(const char *fname, const QVariant ¶m, bool passOption, QList<DanmuSource> &results) |
| 132 | { |
| 133 | QString errInfo; |
| 134 | QVariantList params{param}; |
| 135 | if(passOption) addSearchOptions(params); |
| 136 | QVariantList rets = call(fname, params, 1, errInfo); |
| 137 | if(!errInfo.isEmpty()) return errInfo; |
| 138 | QVariant ret = rets.first(); // array, [{title='', <desc>='', data='', <delay>=xx, <duration>=''},{}...] |
| 139 | if(ret.type() != QVariant::List) return "Wrong Return Value Type"; |
| 140 | QVariantList sourceList = ret.toList(); |
| 141 | results.clear(); |
| 142 | for(auto &item : sourceList) |
| 143 | { |
| 144 | if(item.type() == QVariant::Map) |
| 145 | { |
| 146 | auto itemObj = item.toMap(); |
| 147 | QString title(itemObj.value("title").toString()); |
| 148 | QString data(itemObj.value("data").toString()); |
| 149 | if(title.isEmpty() || data.isEmpty()) continue; |
| 150 | DanmuSource src; |
| 151 | src.title = title; |
| 152 | src.desc = itemObj.value("desc").toString(); |
| 153 | src.scriptData = data; |
| 154 | src.scriptId = id(); |
| 155 | src.delay = itemObj.value("delay", 0).toInt(); |
| 156 | src.duration = itemObj.value("duration", 0).toInt(); |
| 157 | results.append(src); |
| 158 | } |
| 159 | } |
| 160 | return errInfo; |
| 161 | } |