~ubuntu-branches/debian/jessie/apper/jessie

« back to all changes in this revision

Viewing changes to libapper/PackageModel.cpp

  • Committer: Package Import Robot
  • Author(s): Matthias Klumpp
  • Date: 2014-09-08 20:46:32 UTC
  • mfrom: (1.1.6)
  • Revision ID: package-import@ubuntu.com-20140908204632-ufmsw8zl9w1fqb49
Tags: 0.9.1-1
* Upload to unstable
* New upstream release: 0.9.1
* Drop all patches: Applied upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
#include "PackageModel.h"
26
26
#include <PkStrings.h>
27
27
 
 
28
#include <Daemon>
 
29
 
28
30
#include <QPainter>
29
31
#include <QStringBuilder>
30
32
 
85
87
 
86
88
void PackageModel::addPackage(Transaction::Info info, const QString &packageID, const QString &summary, bool selected)
87
89
{
 
90
    if (m_finished) {
 
91
        qDebug() << Q_FUNC_INFO << "we are finished calling clear";
 
92
        clear();
 
93
    }
 
94
 
88
95
    switch(info) {
89
96
    case Transaction::InfoBlocked:
90
97
    case Transaction::InfoFinished:
436
443
 
437
444
void PackageModel::clear()
438
445
{
 
446
    qDebug() << Q_FUNC_INFO;
439
447
    beginRemoveRows(QModelIndex(), 0, m_packages.size());
440
448
    m_finished = false;
441
449
    m_packages.clear();
442
450
    m_fetchSizesTransaction = 0;
443
451
    m_fetchInstalledVersionsTransaction = 0;
 
452
 
 
453
    if (m_getUpdatesTransaction) {
 
454
        m_getUpdatesTransaction->disconnect(this);
 
455
        m_getUpdatesTransaction->cancel();
 
456
    }
444
457
    endRemoveRows();
445
458
}
446
459
 
490
503
void PackageModel::finished()
491
504
{
492
505
    Transaction *trans = qobject_cast<Transaction*>(sender());
493
 
    if (trans) {
 
506
    qDebug() << Q_FUNC_INFO << trans << sender();
 
507
    if (trans /*== m_getUpdatesTransaction*/) {
 
508
//        m_getUpdatesTransaction = 0;
494
509
        // When pkd dies this method is called twice
495
510
        // pk-qt2 bug..
496
511
        trans->disconnect(this, SLOT(finished()));
516
531
        pkgs << p.packageID;
517
532
    }
518
533
    if (!pkgs.isEmpty()) {
519
 
        m_fetchSizesTransaction = new Transaction(this);
520
 
        connect(m_fetchSizesTransaction, SIGNAL(details(QString,QString,PackageKit::Transaction::Group,QString,QString,qulonglong)),
521
 
                this, SLOT(updateSize(QString,QString,PackageKit::Transaction::Group,QString,QString,qulonglong)));
 
534
        m_fetchSizesTransaction = Daemon::getDetails(pkgs);
 
535
        connect(m_fetchSizesTransaction, SIGNAL(details(PackageKit::Details)),
 
536
                SLOT(updateSize(PackageKit::Details)));
522
537
        connect(m_fetchSizesTransaction, SIGNAL(finished(PackageKit::Transaction::Exit,uint)),
523
538
                this, SLOT(fetchSizesFinished()));
524
 
        m_fetchSizesTransaction->getDetails(pkgs);
525
539
    }
526
540
}
527
541
 
539
553
    emit changed(!m_checkedPackages.isEmpty());
540
554
}
541
555
 
542
 
void PackageModel::updateSize(const QString &packageID,
543
 
                              const QString &license,
544
 
                              PackageKit::Transaction::Group group,
545
 
                              const QString &detail,
546
 
                              const QString &url,
547
 
                              qulonglong size)
 
556
void PackageModel::updateSize(const PackageKit::Details &details)
548
557
{
549
 
    Q_UNUSED(license)
550
 
    Q_UNUSED(group)
551
 
    Q_UNUSED(detail)
552
 
    Q_UNUSED(url)
553
 
 
554
558
    // if size is 0 don't waste time looking for the package
 
559
    qulonglong size  = details.size();
555
560
    if (size == 0) {
556
561
        return;
557
562
    }
558
563
 
559
564
    for (int i = 0; i < m_packages.size(); ++i) {
560
 
        if (packageID == m_packages[i].packageID) {
 
565
        const QString &packageId = details.packageId();
 
566
        if (packageId == m_packages[i].packageID) {
561
567
            m_packages[i].size = size;
562
568
            if (m_checkable) {
563
569
                // updates the checked packages as well
564
 
                if (m_checkedPackages.contains(packageID)) {
 
570
                if (m_checkedPackages.contains(packageId)) {
565
571
                    // Avoid checking packages that aren't checked
566
 
                    m_checkedPackages[packageID].size = size;
 
572
                    m_checkedPackages[packageId].size = size;
567
573
                }
568
574
                break;
569
575
            }
595
601
    }
596
602
 
597
603
    if (!pkgs.isEmpty()) {
598
 
        m_fetchInstalledVersionsTransaction = new Transaction(this);
 
604
        m_fetchInstalledVersionsTransaction = Daemon::resolve(pkgs, Transaction::FilterInstalled);;
599
605
        connect(m_fetchInstalledVersionsTransaction, SIGNAL(package(PackageKit::Transaction::Info,QString,QString)),
600
606
                this, SLOT(updateCurrentVersion(PackageKit::Transaction::Info,QString,QString)));
601
607
        connect(m_fetchInstalledVersionsTransaction, SIGNAL(finished(PackageKit::Transaction::Exit,uint)),
602
608
                this, SLOT(fetchCurrentVersionsFinished()));
603
 
        m_fetchInstalledVersionsTransaction->resolve(pkgs, Transaction::FilterInstalled);
604
609
    }
605
610
}
606
611
 
644
649
void PackageModel::getUpdates(bool fetchCurrentVersions, bool selected)
645
650
{
646
651
    clear();
647
 
    Transaction *transaction = new Transaction(this);
 
652
    m_getUpdatesTransaction = Daemon::getUpdates();
648
653
    if (selected) {
649
 
        connect(transaction, SIGNAL(package(PackageKit::Transaction::Info,QString,QString)),
 
654
        connect(m_getUpdatesTransaction, SIGNAL(package(PackageKit::Transaction::Info,QString,QString)),
650
655
                this, SLOT(addSelectedPackage(PackageKit::Transaction::Info,QString,QString)));
651
656
    } else {
652
 
        connect(transaction, SIGNAL(package(PackageKit::Transaction::Info,QString,QString)),
 
657
        connect(m_getUpdatesTransaction, SIGNAL(package(PackageKit::Transaction::Info,QString,QString)),
653
658
                this, SLOT(addPackage(PackageKit::Transaction::Info,QString,QString)));
654
659
    }
655
 
    connect(transaction, SIGNAL(errorCode(PackageKit::Transaction::Error,QString)),
 
660
    connect(m_getUpdatesTransaction, SIGNAL(errorCode(PackageKit::Transaction::Error,QString)),
656
661
            this, SLOT(errorCode(PackageKit::Transaction::Error,QString)));
657
 
//    connect(transaction, SIGNAL(finished(PackageKit::Transaction::Exit,uint)),
 
662
//    connect(m_getUpdatesTransaction, SIGNAL(finished(PackageKit::Transaction::Exit,uint)),
658
663
//            m_busySeq, SLOT(stop()));
659
 
    connect(transaction, SIGNAL(finished(PackageKit::Transaction::Exit,uint)),
660
 
            this, SLOT(finished()));
 
664
//    connect(m_getUpdatesTransaction, SIGNAL(finished(PackageKit::Transaction::Exit,uint)),
 
665
//            this, SLOT(finished()));
661
666
    // This is required to estimate download size
662
 
    connect(transaction, SIGNAL(finished(PackageKit::Transaction::Exit,uint)),
 
667
    connect(m_getUpdatesTransaction, SIGNAL(finished(PackageKit::Transaction::Exit,uint)),
663
668
            this, SLOT(fetchSizes()));
664
669
    if (fetchCurrentVersions) {
665
 
        connect(transaction, SIGNAL(finished(PackageKit::Transaction::Exit,uint)),
 
670
        connect(m_getUpdatesTransaction, SIGNAL(finished(PackageKit::Transaction::Exit,uint)),
666
671
                this, SLOT(fetchCurrentVersions()));
667
672
    }
668
 
//    connect(transaction, SIGNAL(finished(PackageKit::Transaction::Exit,uint)),
669
 
//            this, SLOT(getUpdatesFinished()));
 
673
    connect(m_getUpdatesTransaction, SIGNAL(finished(PackageKit::Transaction::Exit,uint)),
 
674
            this, SLOT(getUpdatesFinished()));
670
675
    // get all updates
671
 
    transaction->getUpdates();
672
 
 
673
 
    Transaction::InternalError error = transaction->internalError();
674
 
    if (error) {
675
 
        transaction->deleteLater();
676
 
//        KMessageBox::sorry(this, PkStrings::daemonError(error));
677
 
    } else {
678
 
//        m_busySeq->start();
679
 
    }
680
676
}
681
677
 
682
678
void PackageModel::toggleSelection(const QString &packageID)