| 1164 | } |
| 1165 | |
| 1166 | void saveRecentLanguages(const std::vector<Lang::Language> &list) { |
| 1167 | if (list.empty()) { |
| 1168 | if (_languagesKey) { |
| 1169 | ClearKey(_languagesKey, _basePath); |
| 1170 | _languagesKey = 0; |
| 1171 | writeSettings(); |
| 1172 | } |
| 1173 | return; |
| 1174 | } |
| 1175 | |
| 1176 | auto size = sizeof(qint32); |
| 1177 | for (const auto &language : list) { |
| 1178 | size += Serialize::stringSize(language.id) |
| 1179 | + Serialize::stringSize(language.pluralId) |
| 1180 | + Serialize::stringSize(language.baseId) |
| 1181 | + Serialize::stringSize(language.name) |
| 1182 | + Serialize::stringSize(language.nativeName); |
| 1183 | } |
| 1184 | if (!_languagesKey) { |
| 1185 | _languagesKey = GenerateKey(_basePath); |
| 1186 | writeSettings(); |
| 1187 | } |
| 1188 | |
| 1189 | EncryptedDescriptor data(size); |
| 1190 | data.stream << qint32(list.size()); |
| 1191 | for (const auto &language : list) { |
| 1192 | data.stream |
| 1193 | << language.id |
| 1194 | << language.pluralId |
| 1195 | << language.baseId |
| 1196 | << language.name |
| 1197 | << language.nativeName; |
| 1198 | } |
| 1199 | |
| 1200 | FileWriteDescriptor file(_languagesKey, _basePath); |
| 1201 | file.writeEncrypted(data, SettingsKey); |
| 1202 | } |
| 1203 | |
| 1204 | void pushRecentLanguage(const Lang::Language &language) { |
| 1205 | if (language.id.startsWith('#')) { |
no test coverage detected