Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:11.4
kpackagekit
smolt.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File smolt.diff of Package kpackagekit
iff -rupN kpackagekit-0.6.2/Updater/CMakeLists.txt kpackagekit-0.6.2/Updater/CMakeLists.txt --- kpackagekit-0.6.2/Updater/CMakeLists.txt 2010-10-06 01:39:37.000000000 +0200 +++ kpackagekit-0.6.2/Updater/CMakeLists.txt 2010-12-07 14:08:32.392749646 +0100 @@ -1,6 +1,7 @@ set(kpk_update_SRCS KpkUpdateDetails.cpp KpkDistroUpgrade.cpp + KpkSmolt.cpp KpkCheckableHeader.cpp UpdateKCM.cpp ) diff -rupN kpackagekit-0.6.2/Updater/KpkSmolt.cpp kpackagekit-0.6.2/Updater/KpkSmolt.cpp --- kpackagekit-0.6.2/Updater/KpkSmolt.cpp 1970-01-01 01:00:00.000000000 +0100 +++ kpackagekit-0.6.2/Updater/KpkSmolt.cpp 2010-12-07 17:17:58.220827849 +0100 @@ -0,0 +1,91 @@ +#include "KpkSmolt.h" + +#include <KpkStrings.h> +#include <KpkIcons.h> + +#include <KLocale> +#include <KMessageBox> +#include <KColorScheme> + +#include <KDebug> + +KpkSmolt::KpkSmolt(QWidget *parent) + : KTitleWidget(parent) +{ + setText(i18n("Send your hardware profile")); +// setPixmap(KpkIcons::getIcon("distro-upgrade")); + setWidget(m_smoltUL = new KUrlLabel(this)); + + m_smoltUL->setText(i18n("Collect data")); + m_smoltUL->setUrl(i18n("Collect data")); + m_smoltUL->setToolTip(i18n("Click to collect data")); + + setComment("Driver development is prioritized based on hardware popularity. Please send your system profile to influence this work."); + + connect(m_smoltUL, SIGNAL(leftClickedUrl()), + SLOT(startSmolt())); +} + +void KpkSmolt::startSmolt() +{ + m_smoltProcess = new QProcess; + connect(m_smoltProcess, SIGNAL(error (QProcess::ProcessError)), + this, SLOT(smoltError(QProcess::ProcessError))); + connect(m_smoltProcess, SIGNAL(finished(int, QProcess::ExitStatus)), + this, SLOT(smoltFinished(int, QProcess::ExitStatus))); + + m_smoltDialog = new KProgressDialog(this); + m_smoltDialog->setLabelText("Waiting for smolt to complete"); + m_smoltDialog->showCancelButton(false); + m_smoltDialog->setModal(true); + m_smoltDialog->progressBar()->setMaximum(0); //Makes it a busy indicator + m_smoltDialog->progressBar()->setMinimum(0); + m_smoltDialog->show(); + QStringList env = QProcess::systemEnvironment(); + env << "DESKTOP=kde"; + m_smoltProcess->setEnvironment(env); + m_smoltProcess->start("/usr/bin/smoltGui"); + + KConfig config("KPackageKit"); + KConfigGroup viewGroup(&config, "smolt"); + viewGroup.writeEntry("ShowSmoltNotification", false); + + +} + +void KpkSmolt::smoltFinished(int exitCode, QProcess::ExitStatus exitStatus) +{ + Q_UNUSED(exitCode); + Q_UNUSED(exitStatus); + m_smoltProcess->deleteLater(); + m_smoltProcess = 0; + m_smoltDialog->close(); + m_smoltDialog->deleteLater(); + m_smoltDialog = 0; +} + +void KpkSmolt::smoltError(QProcess::ProcessError error) +{ + QString text; + switch(error) { + case QProcess::FailedToStart: + KMessageBox::sorry(this, + i18n("The smolt process failed to start.")); + break; + case QProcess::Crashed: + KMessageBox::sorry(this, + i18n("The smolt process crashed some time after starting successfully.")); + break; + default: + KMessageBox::sorry(this, + i18n("The smolt process failed with an unknown error.")); + break; + } +} + +KpkSmolt::~KpkSmolt() +{ + kDebug() << "~KpkSmolt()"; +} + +#include "KpkSmolt.moc" diff -rupN kpackagekit-0.6.2/Updater/KpkSmolt.h kpackagekit-0.6.2/Updater/KpkSmolt.h --- kpackagekit-0.6.2/Updater/KpkSmolt.h 1970-01-01 01:00:00.000000000 +0100 +++ kpackagekit-0.6.2/Updater/KpkSmolt.h 2010-12-07 17:32:58.951283331 +0100 @@ -0,0 +1,30 @@ +#ifndef KPK_SMOLT_H +#define KPK_SMOLT_H + +#include <QPackageKit> + +#include <KTitleWidget> +#include <KUrlLabel> +#include <KProgressDialog> + +using namespace PackageKit; + +class KpkSmolt : public KTitleWidget +{ +Q_OBJECT +public: + KpkSmolt(QWidget *parent = 0); + ~KpkSmolt(); + +private slots: + void startSmolt(); + void smoltError(QProcess::ProcessError); + void smoltFinished(int exitCode, QProcess::ExitStatus exitStatus); + +private: + KUrlLabel *m_smoltUL; + QProcess *m_smoltProcess; + KProgressDialog *m_smoltDialog; +}; + +#endif diff -rupN kpackagekit-0.6.2/Updater/UpdateKCM.cpp kpackagekit-0.6.2/Updater/UpdateKCM.cpp --- kpackagekit-0.6.2/Updater/UpdateKCM.cpp 2010-10-06 01:39:37.000000000 +0200 +++ kpackagekit-0.6.2/Updater/UpdateKCM.cpp 2010-12-07 17:28:15.190025226 +0100 @@ -22,6 +22,7 @@ #include "KpkUpdateDetails.h" #include "KpkDistroUpgrade.h" +#include "KpkSmolt.h" #include "KpkMacros.h" #include "KpkCheckableHeader.h" @@ -130,6 +131,7 @@ UpdateKCM::UpdateKCM(QWidget *&parent, c checkUpdatesPB->setIcon(KIcon("view-refresh")); connect(checkUpdatesPB, SIGNAL(clicked(bool)), this, SLOT(refreshCache())); + } UpdateKCM::~UpdateKCM() @@ -169,6 +171,50 @@ void UpdateKCM::distroUpgrade(PackageKit line->show(); } + +// check if smolt notification should be shown +void UpdateKCM::checkSmolt() +{ + + KConfig config("KPackageKit"); + KConfigGroup smoltGroup(&config, "smolt"); + + if (! smoltGroup.readEntry("ShowSmoltNotification", true) ) + return; + + // run on opensuse only (not on sled) + QFile file( "/usr/share/applications/YaST2/suse_register.desktop" ); + if (! file.exists() ) + return; + + // check if smolt is installed + QFile execfile( "/usr/bin/smoltGui" ); + if (! execfile.exists() ) + return; + + // run only if needed dummy file exists + QFile smoltdummyfile( "/var/run/smolt_do_opensuse_run" ); + if (! smoltdummyfile.exists() ) + return; + + smolt(); + +} + +// show smolt notification +void UpdateKCM::smolt() +{ + if (verticalLayout->count()) { + QFrame *frame = new QFrame(this); + frame->setFrameShape(QFrame::HLine); + verticalLayout->insertWidget(0, frame); + } + KpkSmolt *smolt = new KpkSmolt(this); + verticalLayout->insertWidget(0, smolt); + distroUpgradesSA->show(); + line->show(); +} + void UpdateKCM::checkEnableUpdateButton() { emit changed(m_updatesModel->hasChanges()); @@ -206,6 +252,8 @@ void UpdateKCM::getUpdatesFinished(Enum: m_updatesT = 0; m_updatesModel->clearSelectedNotPresent(); checkEnableUpdateButton(); + + QTimer::singleShot(1000, this, SLOT(checkSmolt())); } void UpdateKCM::save() diff -rupN kpackagekit-0.6.2/Updater/UpdateKCM.h kpackagekit-0.6.2/Updater/UpdateKCM.h --- kpackagekit-0.6.2/Updater/UpdateKCM.h 2010-10-06 01:39:37.000000000 +0200 +++ kpackagekit-0.6.2/Updater/UpdateKCM.h 2010-12-07 16:49:46.854025164 +0100 @@ -52,6 +52,9 @@ private slots: void on_packageView_customContextMenuRequested(const QPoint &pos); void distroUpgrade(PackageKit::Enum::DistroUpgrade type, const QString &name, const QString &description); + void checkSmolt(); + void smolt(); + void getUpdates(); void getUpdatesFinished(PackageKit::Enum::Exit status);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor