|
|
@ -350,19 +350,104 @@ void popupPublic::refreshkeys()
|
|
|
|
|
|
|
|
|
|
|
|
void popupPublic::slotpreselect()
|
|
|
|
void popupPublic::slotpreselect()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
TQListViewItem *it=NULL;
|
|
|
|
|
|
|
|
if (!keysList->firstChild()) return;
|
|
|
|
TQString defaultKey = KGpgSettings::defaultKey().right(8);
|
|
|
|
if (fmode) it=keysList->findItem(KGpgSettings::defaultKey(),2);
|
|
|
|
|
|
|
|
if (!trusted)
|
|
|
|
// process the output to update dialog infos
|
|
|
|
sort();
|
|
|
|
TQMap<TQString,TQStringList>::Iterator ite;
|
|
|
|
if (fmode)
|
|
|
|
for (ite = hashMap.begin(); ite != hashMap.end(); ite++) {
|
|
|
|
{
|
|
|
|
TQStringList::Iterator it;
|
|
|
|
keysList->clearSelection();
|
|
|
|
TQString fullname,keyname,keymail,val,id;
|
|
|
|
keysList->setSelected(it,true);
|
|
|
|
bool dead;
|
|
|
|
keysList->setCurrentItem(it);
|
|
|
|
for (it = ite.data().begin(); it != ite.data().end(); it++) {
|
|
|
|
keysList->ensureItemVisible(it);
|
|
|
|
TQString line = (*it);
|
|
|
|
}
|
|
|
|
kdDebug(2100) << k_funcinfo << line << endl;
|
|
|
|
emit keyListFilled();
|
|
|
|
|
|
|
|
|
|
|
|
if (line.startsWith("pub")) {
|
|
|
|
|
|
|
|
TQStringList keyString=TQStringList::split(":",line,true);
|
|
|
|
|
|
|
|
dead=false;
|
|
|
|
|
|
|
|
const TQString trust=keyString[1];
|
|
|
|
|
|
|
|
val=keyString[6];
|
|
|
|
|
|
|
|
id=TQString("0x"+keyString[4].right(8));
|
|
|
|
|
|
|
|
if (val.isEmpty()) {
|
|
|
|
|
|
|
|
val=i18n("Unlimited");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// unused TQString tr;
|
|
|
|
|
|
|
|
switch( trust[0] ) {
|
|
|
|
|
|
|
|
case 'o': // unknown
|
|
|
|
|
|
|
|
untrustedList<<id; // untrustedList used in sort
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'i': // invalid
|
|
|
|
|
|
|
|
case 'd': // disabled
|
|
|
|
|
|
|
|
case 'r': // revoked
|
|
|
|
|
|
|
|
case 'e': // expired
|
|
|
|
|
|
|
|
dead=true;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'q': // undefined
|
|
|
|
|
|
|
|
case 'n': // none
|
|
|
|
|
|
|
|
case 'm': // marginal
|
|
|
|
|
|
|
|
untrustedList<<id;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'f': // full
|
|
|
|
|
|
|
|
case 'u': // ultimate
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
untrustedList<<id;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (keyString[11].find('D')!=-1) { // disabled
|
|
|
|
|
|
|
|
dead=true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
fullname=keyString[9];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( line.startsWith("uid") && fullname.isEmpty() ) {
|
|
|
|
|
|
|
|
fullname = line.section(':',9,9);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (fullname.find("<")!=-1) {
|
|
|
|
|
|
|
|
keymail=fullname.section('<',-1,-1);
|
|
|
|
|
|
|
|
keymail.truncate(keymail.length()-1);
|
|
|
|
|
|
|
|
keyname=fullname.section('<',0,0);
|
|
|
|
|
|
|
|
//if (keyname.find("(")!=-1) {
|
|
|
|
|
|
|
|
// keyname=keyname.section('(',0,0);
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
keymail=TQString();
|
|
|
|
|
|
|
|
keyname=fullname;//.section('(',0,0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((!dead) && (!fullname.isEmpty())) {
|
|
|
|
|
|
|
|
bool isDefaultKey=false;
|
|
|
|
|
|
|
|
if (id.right(8)==defaultKey) {
|
|
|
|
|
|
|
|
isDefaultKey=true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
UpdateViewItem2 *item=new UpdateViewItem2(keysList,keyname,keymail,id,isDefaultKey);
|
|
|
|
|
|
|
|
//TDEListViewItem *sub= new TDEListViewItem(item,i18n("ID: %1, trust: %2, validity: %3").arg(id).arg(tr).arg(val));
|
|
|
|
|
|
|
|
//sub->setSelectable(false);
|
|
|
|
|
|
|
|
if (seclist.find(fullname,0,FALSE)!=-1) {
|
|
|
|
|
|
|
|
item->setPixmap(0,keyPair);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
item->setPixmap(0,keySingle);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
TQListViewItem *it=NULL;
|
|
|
|
|
|
|
|
if (!keysList->firstChild()) return;
|
|
|
|
|
|
|
|
if (fmode) it=keysList->findItem(KGpgSettings::defaultKey(),2);
|
|
|
|
|
|
|
|
if (!trusted)
|
|
|
|
|
|
|
|
sort();
|
|
|
|
|
|
|
|
if (fmode)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
keysList->clearSelection();
|
|
|
|
|
|
|
|
keysList->setSelected(it,true);
|
|
|
|
|
|
|
|
keysList->setCurrentItem(it);
|
|
|
|
|
|
|
|
keysList->ensureItemVisible(it);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
emit keyListFilled();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void popupPublic::slotSetVisible()
|
|
|
|
void popupPublic::slotSetVisible()
|
|
|
@ -372,14 +457,11 @@ void popupPublic::slotSetVisible()
|
|
|
|
|
|
|
|
|
|
|
|
void popupPublic::slotprocread(KProcIO *p)
|
|
|
|
void popupPublic::slotprocread(KProcIO *p)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
// collect all data (output starts with pub line followed by related)
|
|
|
|
// kdDebug(2100) << k_funcinfo << endl;
|
|
|
|
// kdDebug(2100) << k_funcinfo << endl;
|
|
|
|
///////////////////////////////////////////////////////////////// extract encryption keys
|
|
|
|
|
|
|
|
TQString tst;
|
|
|
|
TQString tst;
|
|
|
|
|
|
|
|
|
|
|
|
TQString defaultKey = KGpgSettings::defaultKey().right(8);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while (p->readln(tst)!=-1) {
|
|
|
|
while (p->readln(tst)!=-1) {
|
|
|
|
// kdDebug(2100) << k_funcinfo << "Read one public key line: " << tst << endl;
|
|
|
|
|
|
|
|
if ( tst.startsWith("pub") ) {
|
|
|
|
if ( tst.startsWith("pub") ) {
|
|
|
|
currentKey = tst.section(':',4,4);
|
|
|
|
currentKey = tst.section(':',4,4);
|
|
|
|
TQStringList lst; lst << tst;
|
|
|
|
TQStringList lst; lst << tst;
|
|
|
@ -389,98 +471,6 @@ void popupPublic::slotprocread(KProcIO *p)
|
|
|
|
hashMap.find(currentKey).data().append(tst);
|
|
|
|
hashMap.find(currentKey).data().append(tst);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
TQMap<TQString,TQStringList>::Iterator ite;
|
|
|
|
|
|
|
|
for (ite = hashMap.begin(); ite != hashMap.end(); ite++) {
|
|
|
|
|
|
|
|
TQStringList::Iterator it;
|
|
|
|
|
|
|
|
TQString fullname,keyname,keymail,val,id;
|
|
|
|
|
|
|
|
bool dead;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (it = ite.data().begin(); it != ite.data().end(); it++) {
|
|
|
|
|
|
|
|
TQString line = (*it);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (line.startsWith("pub")) {
|
|
|
|
|
|
|
|
TQStringList keyString=TQStringList::split(":",line,true);
|
|
|
|
|
|
|
|
dead=false;
|
|
|
|
|
|
|
|
const TQString trust=keyString[1];
|
|
|
|
|
|
|
|
val=keyString[6];
|
|
|
|
|
|
|
|
id=TQString("0x"+keyString[4].right(8));
|
|
|
|
|
|
|
|
if (val.isEmpty()) {
|
|
|
|
|
|
|
|
val=i18n("Unlimited");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
TQString tr;
|
|
|
|
|
|
|
|
switch( trust[0] ) {
|
|
|
|
|
|
|
|
case 'o':
|
|
|
|
|
|
|
|
untrustedList<<id;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'i':
|
|
|
|
|
|
|
|
dead=true;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'd':
|
|
|
|
|
|
|
|
dead=true;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'r':
|
|
|
|
|
|
|
|
dead=true;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'e':
|
|
|
|
|
|
|
|
dead=true;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'q':
|
|
|
|
|
|
|
|
untrustedList<<id;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'n':
|
|
|
|
|
|
|
|
untrustedList<<id;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'm':
|
|
|
|
|
|
|
|
untrustedList<<id;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'f':
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'u':
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
untrustedList<<id;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (keyString[11].find('D')!=-1) {
|
|
|
|
|
|
|
|
dead=true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
fullname=keyString[9];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( line.startsWith("uid") && fullname.isEmpty() ) {
|
|
|
|
|
|
|
|
fullname = line.section(':',9,9);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (fullname.find("<")!=-1) {
|
|
|
|
|
|
|
|
keymail=fullname.section('<',-1,-1);
|
|
|
|
|
|
|
|
keymail.truncate(keymail.length()-1);
|
|
|
|
|
|
|
|
keyname=fullname.section('<',0,0);
|
|
|
|
|
|
|
|
//if (keyname.find("(")!=-1) {
|
|
|
|
|
|
|
|
// keyname=keyname.section('(',0,0);
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
keymail=TQString();
|
|
|
|
|
|
|
|
keyname=fullname;//.section('(',0,0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((!dead) && (!fullname.isEmpty())) {
|
|
|
|
|
|
|
|
bool isDefaultKey=false;
|
|
|
|
|
|
|
|
if (id.right(8)==defaultKey) {
|
|
|
|
|
|
|
|
isDefaultKey=true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
UpdateViewItem2 *item=new UpdateViewItem2(keysList,keyname,keymail,id,isDefaultKey);
|
|
|
|
|
|
|
|
//TDEListViewItem *sub= new TDEListViewItem(item,i18n("ID: %1, trust: %2, validity: %3").arg(id).arg(tr).arg(val));
|
|
|
|
|
|
|
|
//sub->setSelectable(false);
|
|
|
|
|
|
|
|
if (seclist.find(fullname,0,FALSE)!=-1) {
|
|
|
|
|
|
|
|
item->setPixmap(0,keyPair);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
item->setPixmap(0,keySingle);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|