Public feed #892073

Stuff

public text v1 · immutable
Raw Edit
·published 2008-02-05 03:00 UTC
rendered paste body
Index: ciavc.cpp
===================================================================
--- ciavc.cpp   (revision 771044)
+++ ciavc.cpp   (working copy)
@@ -27,6 +27,12 @@
 #include <QStyleOptionGraphicsItem>
 #include <QCheckBox>
 #include <QPushButton>
+#include <QLabel>
+#include <QString>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <KDialog>
+#include <KLineEdit>
 #include <KDebug>
 #include <KLocale>
 #include <KIcon>
@@ -46,6 +52,7 @@

 void CiaVc::init()
 {
+    setHasConfigurationInterface(true);
     m_layout = new Plasma::VBoxLayout(this);
     m_text = new Plasma::LineEdit(this);
     m_text->setStyled(false);
@@ -58,15 +65,25 @@
     m_text->update();
     updateGeometry();

+    KConfigGroup cg = globalConfig();
+
+    if (cg.hasKey("project")) {
+        m_project = cg.readEntry("project");
+    } else {
+        m_project = QString( "KDE" );
+        cg.writeEntry("project", "KDE");
+    }
+
     //TODO: make configurable
     m_engine = dataEngine("ciavc");
-    sourceAdded("KDE");
+    sourceAdded(m_project);
     connect(m_engine, SIGNAL(newSource(QString)), this, SLOT(sourceAdded(QString)));
     connect(m_engine, SIGNAL(sourceRemoved(QString)), this, SLOT(sourceRemoved(QString)));
 }

 CiaVc::~CiaVc()
 {
+    delete m_dialog;
     delete m_layout;
 }

@@ -152,12 +169,48 @@
 void CiaVc::showConfigurationInterface()
 {
     //TODO: implement configuration of projects
+    KConfigGroup cg = globalConfig();
+    if ( m_dialog == 0 ) {
+        m_dialog = new KDialog;
+        m_dialog->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Apply );
+        m_dialog->setPlainCaption(i18n("Configure Cia.vc Applet"));
+
+        connect( m_dialog, SIGNAL(okClicked()), this, SLOT(acceptedConfigDialog()));
+        connect( m_dialog, SIGNAL(applyClicked()), this, SLOT(acceptedConfigDialog()));
+
+        QWidget *dialogWidget = new QWidget(m_dialog);
+
+        m_projectEdit = new KLineEdit(dialogWidget);
+
+        QLabel *urlLabel = new QLabel(i18n("URL of the CIA.vc project"), dialogWidget);
+        QLabel *prefixLabel = new QLabel("http://cia.vc/stats/project/", dialogWidget);
+
+        QVBoxLayout *mainLayout = new QVBoxLayout( dialogWidget );
+        QHBoxLayout *urlLayout = new QHBoxLayout( dialogWidget );
+
+        urlLayout->addWidget(prefixLabel);
+        urlLayout->addWidget(m_projectEdit);
+
+        mainLayout->addWidget( urlLabel );
+        mainLayout->addLayout( urlLayout );
+
+        m_dialog->setMainWidget( dialogWidget );
+    }
+    m_project = cg.readEntry("project", "KDE");
+    m_projectEdit->setText( m_project );
+    m_dialog->show();
 }

 void CiaVc::acceptedConfigDialog()
 {
-    //KConfigGroup cg = globalConfig();
+    KConfigGroup cg = globalConfig();
     //TODO: implement configuration of projects
+    if ( m_project != m_projectEdit->text() ) {
+        cg.writeEntry("project", m_projectEdit->text() );
+        sourceRemoved(m_project);
+        m_project = m_projectEdit->text();
+        sourceAdded(m_project);
+    }
 }

 void CiaVc::paintInterface(QPainter *p, const QStyleOptionGraphicsItem *option, const QRect &contentsRect)
Index: ciavc.h
===================================================================
--- ciavc.h     (revision 771044)
+++ ciavc.h     (working copy)
@@ -30,6 +30,9 @@
 #include <plasma/dataengine.h>

 class QTimer;
+class QString;
+class KDialog;
+class KLineEdit;

 namespace Plasma
 {
@@ -63,6 +66,9 @@
         Plasma::VBoxLayout* m_layout;
         Plasma::LineEdit* m_text;
         Plasma::DataEngine* m_engine;
+        QString m_project;
+        KLineEdit* m_projectEdit;
+        KDialog* m_dialog;
 };

 K_EXPORT_PLASMA_APPLET(ciavc, CiaVc)