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);