mirror of
https://invent.kde.org/system/dolphin
synced 2024-07-04 17:30:55 +00:00
Show installation progress on install button
Also reopen the menu if it is currently open while the installation finishes.
This commit is contained in:
parent
7962e0c8d2
commit
6617d50dc2
|
@ -153,9 +153,9 @@ void StatusBarSpaceInfo::updateMenu()
|
|||
|
||||
vLayout->addSpacing(Dolphin::VERTICAL_SPACER_HEIGHT);
|
||||
|
||||
auto installFilelightButton =
|
||||
new QPushButton(QIcon::fromTheme(QStringLiteral("filelight")), i18nc("@action:button", "Install Filelight…"), containerWidget);
|
||||
installFilelightButton->setFixedWidth(std::max(installFilelightButton->sizeHint().width(), installFilelightTitle->sizeHint().width()));
|
||||
const QString installFilelightButtonDefaultText{i18nc("@action:button", "Install Filelight…")};
|
||||
auto installFilelightButton = new QPushButton(QIcon::fromTheme(QStringLiteral("filelight")), installFilelightButtonDefaultText, containerWidget);
|
||||
installFilelightButton->setMinimumWidth(std::max(installFilelightButton->sizeHint().width(), installFilelightTitle->sizeHint().width()));
|
||||
auto buttonLayout = new QHBoxLayout{containerWidget};
|
||||
buttonLayout->addWidget(installFilelightButton, 0, Qt::AlignHCenter);
|
||||
vLayout->addLayout(buttonLayout);
|
||||
|
@ -166,7 +166,7 @@ void StatusBarSpaceInfo::updateMenu()
|
|||
containerWidget->setFocusProxy(installFilelightButton);
|
||||
installFilelightButton->setAccessibleDescription(installFilelightBody->text());
|
||||
|
||||
connect(installFilelightButton, &QAbstractButton::clicked, this, [this] {
|
||||
connect(installFilelightButton, &QAbstractButton::clicked, this, [this, installFilelightButton, installFilelightButtonDefaultText] {
|
||||
#ifdef Q_OS_WIN
|
||||
QDesktopServices::openUrl(QUrl("https://apps.kde.org/filelight"));
|
||||
#else
|
||||
|
@ -177,12 +177,24 @@ void StatusBarSpaceInfo::updateMenu()
|
|||
return KService::serviceByDesktopName(QStringLiteral("org.kde.filelight"));
|
||||
},
|
||||
this);
|
||||
connect(packageInstaller, &KJob::result, this, [this](KJob *job) {
|
||||
connect(packageInstaller, &KJob::result, this, [this, installFilelightButton, installFilelightButtonDefaultText](KJob *job) {
|
||||
installFilelightButton->setText(installFilelightButtonDefaultText);
|
||||
if (job->error()) {
|
||||
Q_EMIT showMessage(job->errorString(), KMessageWidget::Error);
|
||||
} else {
|
||||
Q_EMIT showMessage(xi18nc("@info", "<application>Filelight</application> installed successfully."), KMessageWidget::Positive);
|
||||
if (m_textInfoButton->menu()->isVisible()) {
|
||||
m_textInfoButton->menu()->hide();
|
||||
updateMenu();
|
||||
m_textInfoButton->menu()->show();
|
||||
}
|
||||
}
|
||||
});
|
||||
connect(packageInstaller, &KJob::percentChanged, installFilelightButton, [installFilelightButton](KJob */* job */, long unsigned int percent) {
|
||||
if (percent > 100) {
|
||||
return; // For some reason it instantly reports 101% completion for me when it starts.
|
||||
}
|
||||
installFilelightButton->setText(i18nc("@action:button which also shows progress %1 in percent", "Install Filelight… (%1%)", percent));
|
||||
});
|
||||
packageInstaller->start();
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue
Block a user