- //qDebug() << "found free id" << i;
- Identity *newId = new Identity(id, this);
- newId->setId(i);
- _identities[i] = newId;
- signalProxy()->synchronize(newId);
- CoreUserSettings s(user());
- s.storeIdentity(*newId);
- connect(newId, SIGNAL(updated(const QVariantMap &)), this, SLOT(identityUpdated(const QVariantMap &)));
- emit identityCreated(*newId);
+
+ int id = identity.id().toInt();
+ bool newId = !identity.isValid();
+ CoreIdentity *coreIdentity = new CoreIdentity(identity, signalProxy(), this);
+ if(additional.contains("KeyPem"))
+ coreIdentity->setSslKey(additional["KeyPem"].toByteArray());
+ if(additional.contains("CertPem"))
+ coreIdentity->setSslCert(additional["CertPem"].toByteArray());
+ if(newId) {
+ // find free ID
+ for(id = 1; id <= _identities.count(); id++) {
+ if(!_identities.keys().contains(id))
+ break;
+ }
+ coreIdentity->setId(id);
+ coreIdentity->save();
+ }
+
+ _identities[id] = coreIdentity;
+ qDebug() << id << coreIdentity->id();
+ signalProxy()->synchronize(coreIdentity);
+
+ if(newId)
+ emit identityCreated(*coreIdentity);