aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/android
diff options
context:
space:
mode:
authorAssam Boudjelthia <assam.boudjelthia@qt.io>2021-09-13 02:40:21 +0300
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2021-10-13 14:56:49 +0000
commit3619223cbe889e005d5251a6e1606a73c2e28c31 (patch)
tree803607a20f242820c565d6d07573480df9442039 /src/plugins/android
parent78da7e2922274c429bb677abf63157b8ae679d03 (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.cpp8
-rw-r--r--src/plugins/android/androidsdkmodel.cpp47
-rw-r--r--src/plugins/android/androidsdkmodel.h3
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 {