diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-09-13 02:40:21 +0300 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-10-13 14:56:49 +0000 |
commit | 3619223cbe889e005d5251a6e1606a73c2e28c31 (patch) | |
tree | 803607a20f242820c565d6d07573480df9442039 /src/plugins/android | |
parent | 78da7e2922274c429bb677abf63157b8ae679d03 (diff) |
Move SDK Manager instal/uninstall checkbox to left of package name
This will makes it much easier selecting packages for install/uninstall
operations, and makes more space for the package name by removing the
operation column, as well as making changes more apparent by marking
pending changes in bold font.
Change-Id: Iec86c384195dd8c51fd8f00c1de56cdbb2bab62a
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/plugins/android')
-rw-r--r-- | src/plugins/android/androidsdkmanagerwidget.cpp | 8 | ||||
-rw-r--r-- | src/plugins/android/androidsdkmodel.cpp | 47 | ||||
-rw-r--r-- | src/plugins/android/androidsdkmodel.h | 3 |
3 files changed, 29 insertions, 29 deletions
diff --git a/src/plugins/android/androidsdkmanagerwidget.cpp b/src/plugins/android/androidsdkmanagerwidget.cpp index 53a887e23d9..0fe8b83d31d 100644 --- a/src/plugins/android/androidsdkmanagerwidget.cpp +++ b/src/plugins/android/androidsdkmanagerwidget.cpp @@ -98,12 +98,10 @@ AndroidSdkManagerWidget::AndroidSdkManagerWidget(AndroidConfig &config, auto proxyModel = new PackageFilterModel(m_sdkModel); m_ui->packagesView->setModel(proxyModel); + m_ui->packagesView->header()->setSectionResizeMode(QHeaderView::ResizeToContents); m_ui->packagesView->header()->setSectionResizeMode(AndroidSdkModel::packageNameColumn, - QHeaderView::ResizeToContents); - m_ui->packagesView->header()->setSectionResizeMode(AndroidSdkModel::apiLevelColumn, - QHeaderView::ResizeToContents); - m_ui->packagesView->header()->setSectionResizeMode(AndroidSdkModel::packageRevisionColumn, - QHeaderView::ResizeToContents); + QHeaderView::Stretch); + m_ui->packagesView->header()->setStretchLastSection(false); connect(m_ui->expandCheck, &QCheckBox::stateChanged, [this](int state) { if (state == Qt::Checked) m_ui->packagesView->expandAll(); diff --git a/src/plugins/android/androidsdkmodel.cpp b/src/plugins/android/androidsdkmodel.cpp index 2f83e86156c..0fd6321fd00 100644 --- a/src/plugins/android/androidsdkmodel.cpp +++ b/src/plugins/android/androidsdkmodel.cpp @@ -40,7 +40,7 @@ static Q_LOGGING_CATEGORY(androidSdkModelLog, "qtc.android.sdkmodel", QtWarningM namespace Android { namespace Internal { -const int packageColCount = 4; +const int packageColCount = 3; AndroidSdkModel::AndroidSdkModel(const AndroidConfig &config, AndroidSdkManager *sdkManager, QObject *parent) @@ -74,9 +74,6 @@ QVariant AndroidSdkModel::headerData(int section, Qt::Orientation orientation, i case apiLevelColumn: data = tr("API"); break; - case operationColumn: - data = tr("Operation"); - break; default: break; } @@ -162,7 +159,6 @@ QVariant AndroidSdkModel::data(const QModelIndex &index, int role) const if (!index.isValid()) return QVariant(); - if (!index.parent().isValid()) { // Top level tools if (index.row() == 0) { @@ -202,25 +198,29 @@ QVariant AndroidSdkModel::data(const QModelIndex &index, int role) const return p->revision().toString(); case apiLevelColumn: return apiLevelStr; - case operationColumn: - if (p->type() == AndroidSdkPackage::SdkToolsPackage && - p->state() == AndroidSdkPackage::Installed) { - return tr("Update Only"); - } else { - return p->state() == AndroidSdkPackage::Installed ? tr("Uninstall") : tr("Install"); - } default: break; } } - if (role == Qt::DecorationRole && index.column() == packageNameColumn) { - return p->state() == AndroidSdkPackage::Installed ? Utils::Icons::OK.icon() : - Utils::Icons::EMPTY16.icon(); + if (index.column() == packageNameColumn) { + if (role == Qt::CheckStateRole) { + if (p->state() == AndroidSdkPackage::Installed) + return m_changeState.contains(p) ? Qt::Unchecked : Qt::Checked; + else + return m_changeState.contains(p) ? Qt::Checked : Qt::Unchecked; + } + + if (role == Qt::FontRole) { + QFont font; + if (m_changeState.contains(p)) + font.setBold(true); + return font; + } } - if (role == Qt::CheckStateRole && index.column() == operationColumn ) - return m_changeState.contains(p) ? Qt::Checked : Qt::Unchecked; + if (role == Qt::TextAlignmentRole && index.column() == packageRevisionColumn) + return Qt::AlignHCenter; if (role == Qt::ToolTipRole) return QString("%1 - (%2)").arg(p->descriptionText()).arg(p->sdkStylePath()); @@ -245,14 +245,14 @@ QHash<int, QByteArray> AndroidSdkModel::roleNames() const Qt::ItemFlags AndroidSdkModel::flags(const QModelIndex &index) const { Qt::ItemFlags f = QAbstractItemModel::flags(index); - if (index.column() == operationColumn) + if (index.column() == packageNameColumn) f |= Qt::ItemIsUserCheckable; void *ip = index.internalPointer(); - if (ip && index.column() == operationColumn) { + if (ip && index.column() == packageNameColumn) { auto package = static_cast<const AndroidSdkPackage *>(ip); - if (package->state() == AndroidSdkPackage::Installed && - package->type() == AndroidSdkPackage::SdkToolsPackage) { + if (package->state() == AndroidSdkPackage::Installed + && package->type() == AndroidSdkPackage::SdkToolsPackage) { f &= ~Qt::ItemIsEnabled; } } @@ -264,11 +264,14 @@ bool AndroidSdkModel::setData(const QModelIndex &index, const QVariant &value, i void *ip = index.internalPointer(); if (ip && role == Qt::CheckStateRole) { auto package = static_cast<const AndroidSdkPackage *>(ip); - if (value.toInt() == Qt::Checked) { + if (value.toInt() == Qt::Checked && package->state() != AndroidSdkPackage::Installed) { m_changeState << package; emit dataChanged(index, index, {Qt::CheckStateRole}); } else if (m_changeState.remove(package)) { emit dataChanged(index, index, {Qt::CheckStateRole}); + } else if (value.toInt() == Qt::Unchecked) { + m_changeState.insert(package); + emit dataChanged(index, index, {Qt::CheckStateRole}); } return true; } diff --git a/src/plugins/android/androidsdkmodel.h b/src/plugins/android/androidsdkmodel.h index af25edfbb8f..4a8d363a13f 100644 --- a/src/plugins/android/androidsdkmodel.h +++ b/src/plugins/android/androidsdkmodel.h @@ -42,8 +42,7 @@ public: enum PackageColumn { packageNameColumn = 0, apiLevelColumn, - packageRevisionColumn, - operationColumn + packageRevisionColumn }; enum ExtraRoles { |