Public feed
#892073
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)