Index: ciavc.cpp =================================================================== --- ciavc.cpp (revision 771044) +++ ciavc.cpp (working copy) @@ -27,6 +27,12 @@ #include #include #include +#include +#include +#include +#include +#include +#include #include #include #include @@ -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 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)