From c5c2407297d943f8caa75fb8156e93a0915e9f5b Mon Sep 17 00:00:00 2001 From: Daniel Teske <daniel.teske@digia.com> Date: Wed, 8 May 2013 16:35:05 +0200 Subject: [PATCH] Android: Keep the permissions sorted The order does not matter but this makes it easier for the user to find his permission. Change-Id: Iecb1082c3a67e002df6b0d384a3e02d45673d717 Reviewed-by: Daniel Teske <daniel.teske@digia.com> --- .../android/androidpackagecreationwidget.cpp | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/plugins/android/androidpackagecreationwidget.cpp b/src/plugins/android/androidpackagecreationwidget.cpp index c85164d0b88..ad47b561070 100644 --- a/src/plugins/android/androidpackagecreationwidget.cpp +++ b/src/plugins/android/androidpackagecreationwidget.cpp @@ -152,6 +152,7 @@ void PermissionsModel::setPermissions(const QStringList &permissions) { beginResetModel(); m_permissions = permissions; + qSort(m_permissions); endResetModel(); } @@ -162,9 +163,9 @@ const QStringList &PermissionsModel::permissions() QModelIndex PermissionsModel::addPermission(const QString &permission) { - const int idx = m_permissions.count(); + const int idx = qLowerBound(m_permissions, permission) - m_permissions.constBegin(); beginInsertRows(QModelIndex(), idx, idx); - m_permissions.push_back(permission); + m_permissions.insert(idx, permission); endInsertRows(); return index(idx); } @@ -175,8 +176,25 @@ bool PermissionsModel::updatePermission(QModelIndex index, const QString &permis return false; if (m_permissions[index.row()] == permission) return false; - m_permissions[index.row()] = permission; - emit dataChanged(index, index); + + int newIndex = qLowerBound(m_permissions.constBegin(), m_permissions.constEnd(), permission) - m_permissions.constBegin(); + if (newIndex == index.row() || newIndex == index.row() + 1) { + m_permissions[index.row()] = permission; + emit dataChanged(index, index); + return true; + } + + beginMoveRows(QModelIndex(), index.row(), index.row(), QModelIndex(), newIndex); + + if (newIndex > index.row()) { + m_permissions.insert(newIndex, permission); + m_permissions.removeAt(index.row()); + } else { + m_permissions.removeAt(index.row()); + m_permissions.insert(newIndex, permission); + } + endMoveRows(); + return true; } -- GitLab