diff --git a/src/PackageModel/PackageDelegate.cpp b/src/PackageModel/PackageDelegate.cpp --- a/src/PackageModel/PackageDelegate.cpp +++ b/src/PackageModel/PackageDelegate.cpp @@ -239,7 +239,7 @@ } break; case 3: - text = index.data(PackageModel::InstalledSizeRole).toString(); + text = index.data(PackageModel::InstalledSizeDisplayRole).toString(); pen.setBrush(foregroundColor); break; case 4: @@ -281,7 +281,7 @@ size.setWidth(metric.width(index.data(PackageModel::ActionRole).toString())); break; case 3: - size.setWidth(metric.width(index.data(PackageModel::InstalledSizeRole).toString())); + size.setWidth(metric.width(index.data(PackageModel::InstalledSizeDisplayRole).toString())); break; case 4: size.setWidth(metric.width(index.data(PackageModel::InstalledVersionRole).toString())); diff --git a/src/PackageModel/PackageModel.h b/src/PackageModel/PackageModel.h --- a/src/PackageModel/PackageModel.h +++ b/src/PackageModel/PackageModel.h @@ -37,8 +37,9 @@ StatusRole = Qt::UserRole + 4, SupportRole = Qt::UserRole + 5, InstalledSizeRole = Qt::UserRole + 6, - InstalledVersionRole = Qt::UserRole + 7, - AvailableVersionRole = Qt::UserRole + 8 + InstalledSizeDisplayRole = Qt::UserRole + 7, + InstalledVersionRole = Qt::UserRole + 8, + AvailableVersionRole = Qt::UserRole + 9 }; explicit PackageModel(QObject *parent = 0); diff --git a/src/PackageModel/PackageModel.cpp b/src/PackageModel/PackageModel.cpp --- a/src/PackageModel/PackageModel.cpp +++ b/src/PackageModel/PackageModel.cpp @@ -64,6 +64,8 @@ case SupportRole: return package->isSupported(); case InstalledSizeRole: + return package->currentInstalledSize(); + case InstalledSizeDisplayRole: if (package->isInstalled()) { return KFormat().formatByteSize(package->currentInstalledSize()); } diff --git a/src/PackageModel/PackageProxyModel.cpp b/src/PackageModel/PackageProxyModel.cpp --- a/src/PackageModel/PackageProxyModel.cpp +++ b/src/PackageModel/PackageProxyModel.cpp @@ -207,6 +207,16 @@ return packageStatusLessThan(leftPackage, rightPackage); case 2: return packageRequestedLessThan(leftPackage, rightPackage); + case 3: /* Installed size */ + { + qlonglong leftSize = left.data(PackageModel::InstalledSizeRole).toLongLong(); + qlonglong rightSize = right.data(PackageModel::InstalledSizeRole).toLongLong(); + return leftSize < rightSize; + } + case 4: /* Installed version */ + return QApt::Package::compareVersion(leftPackage->installedVersion(), rightPackage->installedVersion()) < 0; + case 5: /* Available version */ + return QApt::Package::compareVersion(leftPackage->availableVersion(), rightPackage->availableVersion()) < 0; } return false;