Sync with PackageKit 0.5.1 API.
[opensuse:kupdateapplet.git] / src / packagekit / qpackagekitconnector.cpp
1 #include <kdebug.h>
2 #include <KLocale>
3
4 #include "QPackageKitInterface.h"
5 #include "QPackageKitTransactionInterface.h"
6 #include "qpackagekitconnector.h"
7 #include "polkitclient.h"
8 #include "pkconstants.h"
9 #include "pkconstants.h"
10
11 QPackageKitConnector::QPackageKitConnector( QObject *parent ) 
12         : QObject( parent )
13         , _lastAction("none")
14         , _lastActionArg(false)
15         , _lastActionArg2(false)
16 {
17 }
18
19
20 void QPackageKitConnector::disconnectFromInterface(QPackageKitTransactionInterface* transactioninterface)
21 {
22         disconnect(transactioninterface, 
23                 SIGNAL( Package(const QString, const QString, const QString) ), 
24                 this,
25                 SLOT( proxy_Package(const QString, const QString, const QString) )
26         );
27
28         disconnect(transactioninterface,
29                 SIGNAL( Finished(const QString, uint) ),
30                 this,
31                 SLOT( proxy_Finished(const QString, uint) )
32         );
33
34         disconnect(transactioninterface,
35                 SIGNAL( ProgressChanged(uint, uint, uint, uint) ),
36                 this,
37                 SLOT( proxy_ProgressChanged(uint,uint, uint, uint) )
38         );
39
40         disconnect(transactioninterface,
41                 SIGNAL( StatusChanged(const QString &) ),
42                 this,
43                 SLOT( proxy_StatusChanged(const QString &) )
44         );
45
46         disconnect(transactioninterface,
47                    SIGNAL( Transaction(const QString &, const QString &, bool, const QString &, uint, const QString &, uint, const QString &) ),
48              this,
49                    SLOT(proxy_Transaction(const QString &, const QString &, bool, const QString &, uint, const QString &, uint, const QString &) )
50         );
51
52         disconnect(transactioninterface, 
53                 SIGNAL( Details(const QString&, const QString&, const QString&,
54                                  const QString&, const QString&, qulonglong)),
55                 this,
56                 SLOT( proxy_Details(const QString&, const QString&, const QString&,
57                                 const QString&, const QString&, qulonglong))
58         );
59
60         disconnect (transactioninterface,
61                 SIGNAL( UpdateDetail(const QString&, const QString&, const QString&, const QString&, 
62                         const QString&, const QString&, const QString&, const QString&,
63                         const QString&, const QString&, const QString&, const QString&)),
64
65                 this,
66                 SLOT( proxy_UpdateDetail(const QString&, const QString&, const QString&, const QString&, 
67                         const QString&, const QString&, const QString&, const QString&,
68                         const QString&, const QString&, const QString&, const QString&))
69         );
70
71
72         disconnect(transactioninterface, 
73                 SIGNAL( ErrorCode(const QString&, const QString& )),
74                 this,
75                 SLOT( slotError( const QString&, const QString&))
76         );
77
78         
79         disconnect(transactioninterface,
80                 SIGNAL ( RepoSignatureRequired(const QString&,  const QString&,
81                         const QString&, const QString&, const QString&,
82                         const QString&, const QString&, const QString&)),
83                 this,
84                 SLOT (proxy_RepoSignatureRequired(const QString&, const QString&,
85                         const QString&, const QString&, const QString &,
86                         const QString&, const QString&, const QString &))
87         );
88
89
90         disconnect(transactioninterface,
91                 SIGNAL( EulaRequired(const QString&, const QString&, const QString&,
92                                 const QString&)),
93                 this,
94                 SLOT( proxy_EulaRequired(const QString&, const QString&, const QString&,
95                                 const QString&))
96         );
97
98         disconnect(transactioninterface,
99                 SIGNAL (RepoDetail(const QString&, const QString&, bool)),
100                 this,
101                 SLOT(proxy_RepoDetail(const QString&, const QString &, bool))
102         );
103
104         disconnect(transactioninterface,
105                 SIGNAL (RequireRestart(const QString&, const QString&)),
106                 this,
107                 SLOT(proxy_RequireRestart(const QString&, const QString &))
108         );
109
110
111         disconnect(transactioninterface,
112                 SIGNAL (Message(const QString&, const QString&)),
113                 this,
114                 SLOT(proxy_Message(const QString&, const QString &))
115         );
116
117         disconnect(transactioninterface,
118                    SIGNAL (DistroUpgrade(const QString&, const QString&, const QString &)),
119                    this,
120                    SLOT(proxy_DistroUpgrade(const QString&, const QString &, const QString &))
121             );
122
123         transactioninterface->deleteLater();
124
125 }
126
127 void QPackageKitConnector::slotError(const QString& code, const QString& message)
128 {
129         // ignore errors which can be handled by showing a 
130         // popup and restart transaction afterwards
131         
132         if (code == "no-license-agreement" ||
133             code == "bad-gpg-signature" ||
134             code == "gpg-failure" ||
135             code == "missing-gpg-signature" ) 
136         { 
137                 emit ErrorMessage(QString());
138         }
139         else
140         {
141                 emit ErrorMessage("PackageKit Error " + code + ": " + message);  
142         }
143 }
144
145 QPackageKitTransactionInterface* QPackageKitConnector::connectToInterface()
146 {
147
148         QString tid = getTid();
149         if (tid == QString())   // tid is not valid
150         {
151                 emit ErrorMessage( 
152                         "DBus error : Unable to get transaction id from packagekit."
153                                  );
154                 return NULL;
155         }
156
157         QPackageKitTransactionInterface *transactioninterface = new QPackageKitTransactionInterface(QString::fromAscii(PK_DBUS_SERVICE),
158                                                                                               tid,
159                                                                                               QDBusConnection::systemBus() );
160
161         connect(transactioninterface, 
162                 SIGNAL( Package(const QString, const QString, const QString) ), 
163                 this,
164                 SLOT( proxy_Package(const QString, const QString, const QString) )
165         );
166
167         connect(transactioninterface,
168                 SIGNAL( Finished(const QString, uint ) ),
169                 this,
170                 SLOT( proxy_Finished(const QString, uint ) )
171         );
172
173         connect(transactioninterface,
174                 SIGNAL( Transaction(const QString &, const QString &, bool, const QString &, uint, const QString &, uint, const QString &) ),
175                 SLOT(proxy_Transaction(const QString &, const QString &, bool, const QString &, uint, const QString &, uint, const QString &) )
176         );
177   
178         connect(transactioninterface,
179                 SIGNAL( ProgressChanged(uint, uint, uint, uint) ),
180                 this,
181                 SLOT( proxy_ProgressChanged(uint,uint, uint, uint) )
182         );
183
184         connect(transactioninterface,
185                 SIGNAL( StatusChanged(const QString &) ),
186                 this,
187                 SLOT( proxy_StatusChanged(const QString &) )
188         );
189
190
191
192
193         connect(transactioninterface, 
194                 SIGNAL( Details(const QString&, const QString&, const QString&,
195                                  const QString&, const QString&, qulonglong)),
196                 this,
197                 SLOT( proxy_Details(const QString&, const QString&, const QString&,
198                                 const QString&, const QString&, qulonglong))
199         );
200
201         connect (transactioninterface,
202                 SIGNAL( UpdateDetail(const QString&, const QString&, const QString&, const QString&, 
203                         const QString&, const QString&, const QString&, const QString&,
204                         const QString&, const QString&, const QString&, const QString&)),
205
206                 this,
207                 SLOT( proxy_UpdateDetail(const QString&, const QString&, const QString&, const QString&, 
208                         const QString&, const QString&, const QString&, const QString&,
209                         const QString&, const QString&, const QString&, const QString&))
210         );
211
212         connect(transactioninterface, 
213                 SIGNAL( ErrorCode(const QString&, const QString& )),
214                 this,
215                 SLOT( slotError( const QString&, const QString&))
216         );
217
218         connect(transactioninterface,
219                 SIGNAL ( RepoSignatureRequired(const QString&,  const QString&,
220                         const QString&, const QString&, const QString&,
221                         const QString&, const QString&, const QString&)),
222                 this,
223                 SLOT (proxy_RepoSignatureRequired(const QString&, const QString&,
224                         const QString&, const QString&, const QString &,
225                         const QString&, const QString&, const QString &))
226         );
227
228
229         connect(transactioninterface,
230                 SIGNAL( EulaRequired(const QString&, const QString&, const QString&,
231                                 const QString&)),
232                 this,
233                 SLOT( proxy_EulaRequired(const QString&, const QString&, const QString&,
234                                 const QString&))
235         );
236
237         connect(transactioninterface,
238                 SIGNAL (RepoDetail(const QString&, const QString&, bool)),
239                 this,
240                 SLOT(proxy_RepoDetail(const QString&, const QString &, bool))
241         );
242
243         connect(transactioninterface,
244                 SIGNAL (RequireRestart(const QString&, const QString&)),
245                 this,
246                 SLOT(proxy_RequireRestart(const QString&, const QString &))
247         );
248
249         connect(transactioninterface,
250                 SIGNAL (Message(const QString&, const QString&)),
251                 this,
252                 SLOT(proxy_Message(const QString&, const QString &))
253         );
254
255         connect(transactioninterface,
256                 SIGNAL (DistroUpgrade(const QString&, const QString&, const QString &)),
257                 this,
258                 SLOT(proxy_DistroUpgrade(const QString&, const QString &, const QString &))
259         );
260
261         return transactioninterface;
262
263 }
264
265
266
267 void QPackageKitConnector::sendErrorMessage(QDBusAbstractInterface* interface)
268 {
269     emit ErrorMessage( "DBus error : " 
270                 + interface->lastError().name() +  " : " 
271                 + interface->lastError().message() );
272
273
274 }
275
276
277 bool QPackageKitConnector::getDetails(QStringList packageId)
278 {
279         QPackageKitTransactionInterface* transactioninterface = connectToInterface();
280
281         if (!transactioninterface)
282                 return false;
283
284         QDBusReply<void> reply = transactioninterface->GetDetails(packageId);
285         if(reply.isValid())
286         {
287                 return true;
288         }
289         else
290         {
291                 sendErrorMessage(transactioninterface);
292                 return false;
293         }
294 }
295
296
297
298 bool QPackageKitConnector::getUpdateDetail(QStringList packageId)
299 {
300         QPackageKitTransactionInterface* transactioninterface = connectToInterface();
301
302         if (!transactioninterface)
303                 return false;
304
305         QDBusReply<void> reply = transactioninterface->GetUpdateDetail(packageId);
306         if(reply.isValid())
307         {
308                 return true;
309         }
310         else
311         {
312                 sendErrorMessage(transactioninterface);
313                 return false;
314         }
315 }
316
317
318 bool QPackageKitConnector::acceptEula(QString eulaId)
319 {
320         if(!PackageKit::PolkitClient::instance()->getAuth(AUTH_PACKAGE_EULA_ACCEPT))
321         {
322             emit ErrorMessage( i18n( "User is not permitted: ") + AUTH_PACKAGE_EULA_ACCEPT );
323             return false;
324         }
325
326         QPackageKitTransactionInterface* transactioninterface = connectToInterface();
327
328         if (!transactioninterface)
329                 return false;
330
331         QDBusReply<void> reply = transactioninterface->AcceptEula(eulaId);
332         if(reply.isValid())
333         {
334                 kDebug() << "accept eula valid";
335                 return true;
336         }
337         else
338         {
339                 kDebug() << "accept eula invalid";
340                 sendErrorMessage(transactioninterface);
341                 return false;
342         }
343         return false;
344 }
345
346 bool QPackageKitConnector::getUpdates()
347 {
348         _lastAction    = QString("getUpdates");
349         _lastActionArg = false;
350
351         QPackageKitTransactionInterface* transactioninterface = connectToInterface();
352
353         kDebug() << "try to get updates1";
354         if (!transactioninterface)
355                 return false;
356         kDebug() << "try to get updates2";
357         QDBusReply<void> reply = transactioninterface->GetUpdates("none");
358         if(reply.isValid())
359         {
360                 kDebug() << "updates replay valid";
361                 return true;
362         }
363         else
364         {
365                 kDebug() << "updates replay not valid";
366                 sendErrorMessage(transactioninterface);
367                 return false;
368         }
369 }
370
371 bool QPackageKitConnector::getDistroUpgrades()
372 {
373         _lastAction    = QString("getDistroUpgrades");
374         _lastActionArg = false;
375
376         QPackageKitTransactionInterface* transactioninterface = connectToInterface();
377
378         if (!transactioninterface)
379                 return false;
380         QDBusReply<void> reply = transactioninterface->GetDistroUpgrades();
381         if(reply.isValid())
382         {
383                 kDebug() << "get distro upgrades replay valid";
384                 return true;
385         }
386         else
387         {
388                 kDebug() << "get distro upgrades updates replay not valid";
389                 sendErrorMessage(transactioninterface);
390                 return false;
391         }
392 }
393
394 bool QPackageKitConnector::getDrivers()
395 {
396         _lastAction    = QString("getDrivers");
397         _lastActionArg = false;
398
399         QPackageKitTransactionInterface* transactioninterface = connectToInterface();
400
401         if (!transactioninterface)
402                 return false;
403
404         QDBusReply<void> reply = transactioninterface->WhatProvides("none", "driver", "drivers_for_attached_hardware");
405
406         if(reply.isValid())
407         {
408                 kDebug() << "drivers replay valid";
409                 return true;
410         }
411         else
412         {
413                 kDebug() << "drivers replay not valid";
414                 sendErrorMessage(transactioninterface);
415                 return false;
416         }
417 }
418
419
420 bool QPackageKitConnector::getRepoList()
421 {
422         QPackageKitTransactionInterface* transactioninterface = connectToInterface();
423
424         if (!transactioninterface)
425                 return false;
426         QDBusReply<void> reply = transactioninterface->GetRepoList("none");
427         if(reply.isValid())
428         {
429                 kDebug() << "get repolist valid";
430                 return true;
431         }
432         else
433         {
434                 kDebug() << "get repolist not valid";
435                 sendErrorMessage(transactioninterface);
436                 return false;
437         }
438 }
439
440
441 bool QPackageKitConnector::refreshCache(bool force)
442 {
443         if(!PackageKit::PolkitClient::instance()->getAuth(AUTH_SYSTEM_SOURCES_REFRESH))
444         {
445             emit ErrorMessage( i18n( "User is not permitted: ") + AUTH_SYSTEM_SOURCES_REFRESH );
446             return false;
447         }
448
449         _lastAction    = QString("refreshCache");
450         _lastActionArg = force;
451
452         QPackageKitTransactionInterface* transactioninterface = connectToInterface();
453
454         kDebug() << "try to refresh1";
455         if (!transactioninterface)
456                 return false;
457         kDebug() << "try to refresh2";
458         QDBusReply<void> reply = transactioninterface->RefreshCache(force);
459         if(reply.isValid())
460         {
461                 kDebug() << "refresh replay valid";
462                 return true;
463         }
464         else
465         {
466                 kDebug() << "refresh replay not valid";
467                 sendErrorMessage(transactioninterface);
468                 return false;
469         }
470         return false;
471 }
472
473
474 bool QPackageKitConnector::suggestDaemonQuit()
475 {
476         QPackageKitInterface *interface = new QPackageKitInterface( QString::fromAscii(PK_DBUS_SERVICE),
477                                                                 QString::fromAscii(PK_DBUS_PATH),
478                                                                 QDBusConnection::systemBus() );
479
480         QDBusReply<void> reply = interface->SuggestDaemonQuit();
481         // we can't expect a valig reply, as packagekitd
482         // isn't able to answer when it doesn't run anymore :-)
483
484         return true;
485         delete interface;
486 }
487
488
489
490
491
492
493 QString QPackageKitConnector::getTid()
494 {
495         QPackageKitInterface *interface = new QPackageKitInterface( QString::fromAscii(PK_DBUS_SERVICE),
496                                                                 QString::fromAscii(PK_DBUS_PATH),
497                                                                 QDBusConnection::systemBus() );
498
499         kDebug() << "try get a tid.";
500         QDBusReply<QString> tid = interface->GetTid();
501         if(tid.isValid())
502         {
503                 kDebug() << "tid: " << tid;
504                 return tid;
505         }
506         else
507         {
508                 sendErrorMessage(interface);
509                 return QString();
510         }
511         
512         delete interface;
513
514 }
515
516 bool QPackageKitConnector::triggerLastActionAgain()
517 {
518         kDebug() << "Starting last action again..."; 
519
520         if (_lastAction == QString("getUpdates"))
521                 return getUpdates();
522         else if (_lastAction == QString("getDrivers"))
523                 return getDrivers();
524         else if (_lastAction    == QString("refreshCache"))
525                 return refreshCache(_lastActionArg.toBool());
526         else if (_lastAction    == QString("installPackages"))
527                 return installPackages(_lastActionArg.toBool(), _lastActionArg2.toStringList());
528         else if (_lastAction    == QString("updatePackages"))
529             return updatePackages(_lastActionArg.toBool(), _lastActionArg2.toStringList());
530         else if (_lastAction    == QString("searchFile"))
531                 return searchFile(_lastActionArg.toString());
532         else 
533                 return false;
534 }
535
536 bool QPackageKitConnector::installSignature(QString type, QString key_id, QString package_id)
537 {
538         if(!PackageKit::PolkitClient::instance()->getAuth(AUTH_SYSTEM_TRUST_SIGNING_KEY))
539         {
540             emit ErrorMessage( i18n( "User is not permitted: ") + AUTH_SYSTEM_TRUST_SIGNING_KEY );
541             return false;
542         }
543
544
545         QPackageKitTransactionInterface* transactioninterface = connectToInterface();
546
547         if (!transactioninterface)
548                 return false;
549
550         QDBusReply<void> reply = transactioninterface->InstallSignature(type, key_id, package_id);
551         if(reply.isValid())
552         {
553
554                 kDebug() << "install sig valid";
555                 return true;
556         }
557         else
558         {
559                 kDebug() << "install sig not valid";
560                 sendErrorMessage(transactioninterface);
561                 return false;
562         }
563         sendErrorMessage(transactioninterface);
564         return false;
565 }
566
567 bool QPackageKitConnector::installPackages(bool only_trusted, QStringList packageIds)
568 {
569         if(!PackageKit::PolkitClient::instance()->getAuth(AUTH_PACKAGE_INSTALL))
570         {
571             emit ErrorMessage( i18n( "User is not permitted: ") + AUTH_PACKAGE_INSTALL );
572             return false;
573         }
574
575
576     _lastAction    = QString("installPackages");
577     _lastActionArg = only_trusted;
578     _lastActionArg2 = packageIds;
579
580     QPackageKitTransactionInterface* transactioninterface = connectToInterface();
581
582     if (!transactioninterface)
583         return false;
584
585     QDBusReply<void> reply = transactioninterface->InstallPackages(only_trusted, packageIds);
586     if(reply.isValid())
587     {
588         kDebug() << "install valid";
589         return true;
590     }
591     else
592     {
593         kDebug() << "install not valid";
594         sendErrorMessage(transactioninterface);
595         return false;
596     }
597     return false;
598 }
599
600 bool QPackageKitConnector::updatePackages(bool only_trusted, QStringList packageIds)
601 {
602         if(!PackageKit::PolkitClient::instance()->getAuth(AUTH_SYSTEM_UPDATE))
603         {
604             emit ErrorMessage( i18n( "User is not permitted: ") + AUTH_SYSTEM_UPDATE );
605             return false;
606         }
607
608
609         _lastAction    = QString("updatePackages");
610         _lastActionArg = only_trusted;
611         _lastActionArg2 = packageIds;
612
613
614         QPackageKitTransactionInterface* transactioninterface = connectToInterface();
615
616         if (!transactioninterface)
617                 return false;
618
619         QDBusReply<void> reply = transactioninterface->UpdatePackages(only_trusted, packageIds);
620         if(reply.isValid())
621         {
622
623                 kDebug() << "updatepackages valid";
624                 return true;
625         }
626         else
627         {
628                 kDebug() << "updatepackages not valid";
629                 sendErrorMessage(transactioninterface);
630                 return false;
631         }
632         return false;
633 }
634
635
636 bool QPackageKitConnector::searchFile(const QString& search)
637 {
638         _lastAction    = QString("searchFile");
639         _lastActionArg = search;
640
641
642         QPackageKitTransactionInterface* transactioninterface = connectToInterface();
643
644         if (!transactioninterface)
645                 return false;
646
647         QDBusReply<void> reply = transactioninterface->SearchFile("none", search);
648         if(reply.isValid())
649         {
650
651                 kDebug() << "searchFile valid";
652                 return true;
653         }
654         else
655         {
656                 kDebug() << "searchFile not valid";
657                 sendErrorMessage(transactioninterface);
658                 return false;
659         }
660 }
661
662
663
664 void QPackageKitConnector::proxy_Package( const QString &info, const QString &package_id, const QString &summary)
665 {
666         emit Package(info, package_id, summary);
667 }
668
669 void QPackageKitConnector::proxy_DistroUpgrade( const QString &type, const QString &name, const QString &detail)
670 {
671         emit DistroUpgrade(type, name, detail);
672 }
673
674 void QPackageKitConnector::proxy_Finished(const QString &status, uint runtime)
675 {
676         kDebug() << "Finished [status: " << status << "] [runtime: " << runtime << "]";
677
678         QPackageKitTransactionInterface *transactioninterface = qobject_cast<QPackageKitTransactionInterface *>(QObject::sender());
679   
680         if ( transactioninterface )
681         {
682                 QString param;
683                 QDBusReply<QString> reply = transactioninterface->GetRole(param);
684                 if(!reply.isValid())
685                 {
686                         kDebug() << "role replay not valid";
687 //                      sendErrorMessage(transactioninterface);
688 //                      return;
689                 }
690                 else
691                 {
692                         kDebug() << "role replay valid: " << param << " " << reply.value();
693
694                         if (    reply.value() == "get-updates" ||  
695                                 reply.value() == "what-provides" ||
696                                 reply.value() == "search-file" )
697                                 emit GetUpdatesFinished();
698
699                         if ( reply.value() == "get-repo-list" )
700                                 emit RepoListFinished();
701
702                         if (    reply.value() == "update-system" ||
703                                 reply.value() == "install-package" ||
704                                 reply.value() == "install-packages" ||
705                                 reply.value() == "install-file" ||
706                                 reply.value() == "install-files" ||
707                                 reply.value() == "update-package" ||
708                                 reply.value() == "update-packages" )
709                                 emit InstallFinished();
710
711                         kDebug() <<  reply.value() ;
712                 
713
714                         disconnectFromInterface(transactioninterface);
715                         emit Finished(Exit::fromString(status), runtime);
716                 }
717         } 
718         else
719         {
720                 kDebug() << "Can't figure out which transaction is finishing";
721         }
722 }
723
724 void QPackageKitConnector::proxy_Transaction(const QString &old_tid, const QString &timespec, bool succeeded, const QString &role, uint duration, const QString &data, uint uid, const QString &cmdline)
725 {
726         Q_UNUSED(timespec);
727         Q_UNUSED(succeeded);
728         Q_UNUSED(duration);
729         Q_UNUSED(data);
730
731         kDebug() << "Transaction: " << old_tid << " " << role << "uid: " << uid << "cmdline: " << cmdline;
732 }
733
734
735 void QPackageKitConnector::proxy_ProgressChanged(uint percentage, uint subpercentage, uint elapsed, uint remaining)
736 {
737         if(percentage == 101)
738         {
739                 emit NoProgressUpdates();
740         }
741         else
742         {
743                 emit ProgressChanged(percentage, subpercentage, elapsed, remaining);
744         }
745 }
746
747 void QPackageKitConnector::proxy_StatusChanged(const QString &status)
748 {
749     kDebug() << "status changed to: " << status;
750     emit StatusChanged(status);
751 }
752
753
754 void QPackageKitConnector::proxy_RepoSignatureRequired(const QString &package_id, const QString &repository_name,
755          const QString  &key_url, const QString &key_userid, const QString &key_id,
756          const QString &key_fingerprint, const QString &key_timestamp, const QString &type)
757 {
758         kDebug() << "proxy_RepoSignatureRequired";
759
760         emit RepoSignatureRequired(package_id,  repository_name, key_url, key_userid, 
761                 key_id, key_fingerprint, key_timestamp, type); 
762 }
763
764
765 void QPackageKitConnector::proxy_Details(const QString &package_id, const QString &licence, const QString &group, const QString &detail,
766         const QString &url, qulonglong size) 
767 {
768         emit Details(package_id, licence, group, detail, url, size); 
769 }
770
771 void QPackageKitConnector::proxy_EulaRequired(const QString &eula_id, const QString &package_id, const QString &vendor_name, const QString &license_agreement)
772 {
773         emit EulaRequired(eula_id, package_id, vendor_name, license_agreement);
774 }       
775
776
777 void QPackageKitConnector::proxy_RepoDetail(const QString &repo_id, const QString &desc, bool enabled)
778 {
779         emit RepoDetail(repo_id, desc, enabled);
780 }
781
782 void QPackageKitConnector::proxy_UpdateDetail(const QString &package_id, const QString &updates, const QString &obsoletes, const QString &vendor_url,
783         const QString &bugzilla_url, const QString &cve_url, const QString &restart, const QString &update_text,
784         const QString &changelog, const QString &state, const QString &issued, const QString &updated)
785 {
786         emit UpdateDetail(package_id, updates, obsoletes, vendor_url, bugzilla_url, cve_url, restart, update_text,
787                 changelog, state, issued, updated);
788 }
789
790 void QPackageKitConnector::proxy_RequireRestart(const QString &type, const QString &details)
791 {
792         emit RequireRestart(type, details);
793 }
794
795 void QPackageKitConnector::proxy_Message(const QString &type, const QString &details)
796 {
797         emit Message(type, details);
798 }
799