245
270
bool PsiIconset::loadSystem()
248
Iconset sys = d->systemIconset(&ok);
249
d->loadIconset( &d->system, &sys );
251
//d->system = d->systemIconset();
252
d->system.addToFactory();
273
QString cur_system = PsiOptions::instance()->getOption("options.iconsets.system").toString();
274
if (d->cur_system != cur_system) {
275
Iconset sys = d->systemIconset(&ok);
276
d->loadIconset(&d->system, &sys);
278
//d->system = d->systemIconset();
279
d->system.addToFactory();
281
d->cur_system = cur_system;
257
bool PsiIconset::loadAll()
287
bool PsiIconset::loadRoster()
267
292
// default roster iconset
268
294
Iconset *def = d->defaultRosterIconset(&ok);
269
295
def->addToFactory();
270
roster.insert (option.defaultRosterIconset, def);
296
roster.insert(PsiOptions::instance()->getOption("options.iconsets.status").toString(), def);
298
d->cur_status = PsiOptions::instance()->getOption("options.iconsets.status").toString();
272
300
// load only necessary roster iconsets
273
QStringList rosterIconsets;
275
QMap<QString, QString>::Iterator it = option.serviceRosterIconset.begin();
276
for ( ; it != option.serviceRosterIconset.end(); ++it)
277
if ( rosterIconsets.findIndex( it.data() ) == -1 )
278
rosterIconsets << it.data();
280
it = option.customRosterIconset.begin();
281
for ( ; it != option.customRosterIconset.end(); ++it)
282
if ( rosterIconsets.findIndex( it.data() ) == -1 )
283
rosterIconsets << it.data();
285
QStringList::Iterator it2 = rosterIconsets.begin();
286
for ( ; it2 != rosterIconsets.end(); ++it2) {
287
if ( *it2 == option.defaultRosterIconset )
301
QSet<QString> rosterIconsets;
302
d->cur_service_status.clear();
304
foreach(QVariant service, PsiOptions::instance()->mapKeyList("options.iconsets.service-status")) {
305
QString val = PsiOptions::instance()->getOption(
306
PsiOptions::instance()->mapLookup("options.iconsets.service-status", service) + ".iconset").toString();
307
rosterIconsets << val;
308
d->cur_service_status.insert(service.toString(), val);
311
QStringList customicons = PsiOptions::instance()->getChildOptionNames("options.iconsets.custom-status", true, true);
312
d->cur_custom_status.clear();
313
foreach(QString base, customicons) {
314
QString regexp = PsiOptions::instance()->getOption(base + ".regexp").toString();
315
QString iconset = PsiOptions::instance()->getOption(base + ".iconset").toString();
316
rosterIconsets << iconset;
317
d->cur_custom_status.insert(regexp, iconset);
320
foreach(QString it2, rosterIconsets) {
321
if (it2 == PsiOptions::instance()->getOption("options.iconsets.status").toString()) {
290
325
Iconset *is = new Iconset;
291
if ( is->load (d->iconsetPath("roster/" + *it2)) ) {
293
d->stripFirstAnimFrame( *is );
294
roster.insert (*it2, is);
326
if (is->load(d->iconsetPath("roster/" + it2))) {
328
d->stripFirstAnimFrame(*is);
329
roster.insert(it2, is);
302
emoticons = d->emoticons();
307
bool PsiIconset::optionsChanged(const Options *old)
309
bool ok = loadSystem();
339
void PsiIconset::loadEmoticons()
341
QStringList cur_emoticons = PsiOptions::instance()->getOption("options.iconsets.emoticons").toStringList();
342
if (d->cur_emoticons != cur_emoticons) {
344
emoticons = d->emoticons();
346
d->cur_emoticons = cur_emoticons;
347
emit emoticonsChanged();
351
bool PsiIconset::loadAll()
353
if (!loadSystem() || !loadRoster())
360
void PsiIconset::optionChanged(const QString& option)
362
if (option == "options.iconsets.system") {
365
else if (option == "options.iconsets.emoticons") {
369
// currently we rely on PsiCon calling reloadRoster() when
370
// all options are already applied. otherwise we risk the chance
371
// being called too many times
373
// else if (option == "options.iconsets.status" ||
374
// option.startsWith("options.iconsets.service-status.") ||
375
// option.startsWith("options.iconsets.custom-status."))
381
void PsiIconset::reloadRoster()
384
QString cur_status = PsiOptions::instance()->getOption("options.iconsets.status").toString();
311
385
// default roster iconset
312
if ( old->defaultRosterIconset != option.defaultRosterIconset ) {
386
if (d->cur_status != cur_status) {
313
387
Iconset *newDef = d->defaultRosterIconset(&ok);
314
Iconset *oldDef = roster[old->defaultRosterIconset];
315
d->loadIconset( oldDef, newDef );
388
Iconset *oldDef = roster[d->cur_status];
389
d->loadIconset(oldDef, newDef);
317
391
roster.setAutoDelete(false);
318
roster.remove(old->defaultRosterIconset);
392
roster.remove(d->cur_status);
319
393
roster.setAutoDelete(true);
321
roster.insert (option.defaultRosterIconset, oldDef);
395
roster.insert(cur_status, oldDef);
397
d->cur_status = cur_status;
400
QMap<QString, QString> cur_service_status;
401
QMap<QString, QString> cur_custom_status;
403
foreach(QVariant service, PsiOptions::instance()->mapKeyList("options.iconsets.service-status")) {
404
QString val = PsiOptions::instance()->getOption(
405
PsiOptions::instance()->mapLookup("options.iconsets.service-status", service) + ".iconset").toString();
406
cur_service_status.insert(service.toString(), val);
409
QStringList customicons = PsiOptions::instance()->getChildOptionNames("options.iconsets.custom-status", true, true);
410
foreach(QString base, customicons) {
411
QString regexp = PsiOptions::instance()->getOption(base + ".regexp").toString();
412
QString iconset = PsiOptions::instance()->getOption(base + ".iconset").toString();
413
cur_custom_status.insert(regexp, iconset);
325
416
// service&custom roster iconsets
326
if ( operator!=(old->serviceRosterIconset,option.serviceRosterIconset) || operator!=(old->customRosterIconset,option.customRosterIconset)) {
417
if (operator!=(d->cur_service_status, cur_service_status) || operator!=(d->cur_custom_status, cur_custom_status)) {
327
418
QStringList rosterIconsets;
329
QMap<QString, QString>::Iterator it = option.serviceRosterIconset.begin();
330
for ( ; it != option.serviceRosterIconset.end(); ++it)
331
if ( rosterIconsets.findIndex( it.data() ) == -1 )
332
rosterIconsets << it.data();
334
it = option.customRosterIconset.begin();
335
for ( ; it != option.customRosterIconset.end(); ++it)
336
if ( rosterIconsets.findIndex( it.data() ) == -1 )
337
rosterIconsets << it.data();
420
QMap<QString, QString>::Iterator it = cur_service_status.begin();
421
for (; it != cur_service_status.end(); ++it)
422
if (rosterIconsets.findIndex(it.data()) == -1)
423
rosterIconsets << it.data();
425
it = cur_custom_status.begin();
426
for (; it != cur_custom_status.end(); ++it)
427
if (rosterIconsets.findIndex(it.data()) == -1)
428
rosterIconsets << it.data();
339
430
QStringList::Iterator it2 = rosterIconsets.begin();
340
for ( ; it2 != rosterIconsets.end(); ++it2) {
341
if ( *it2 == option.defaultRosterIconset )
431
for (; it2 != rosterIconsets.end(); ++it2) {
432
if (*it2 == PsiOptions::instance()->getOption("options.iconsets.status").toString())
344
435
Iconset *is = new Iconset;
345
if ( is->load (d->iconsetPath("roster/" + *it2)) ) {
346
d->stripFirstAnimFrame( *is );
436
if (is->load(d->iconsetPath("roster/" + *it2))) {
437
d->stripFirstAnimFrame(*is);
347
438
Iconset *oldis = roster[*it2];
350
d->loadIconset( oldis, is );
441
d->loadIconset(oldis, is);
353
roster.insert (*it2, is);
444
roster.insert(*it2, is);