Index: ciavc.cpp =================================================================== --- ciavc.cpp (revision 771292) +++ ciavc.cpp (working copy) @@ -27,6 +27,12 @@ #include #include #include +#include +#include +#include +#include +#include +#include #include #include #include @@ -39,13 +45,17 @@ CiaVc::CiaVc(QObject *parent, const QVariantList &args) : Plasma::Applet(parent, args), //"plasma-clock-default", appletId) - m_layout(0) + m_layout(0), + m_dialog(0), + m_project("KDE"), + m_text(0) { - //setHasConfigurationInterface(true); + setHasConfigurationInterface(true); } void CiaVc::init() { + setHasConfigurationInterface(true); m_layout = new Plasma::VBoxLayout(this); m_text = new Plasma::LineEdit(this); m_text->setStyled(false); @@ -58,15 +68,25 @@ m_text->update(); updateGeometry(); + KConfigGroup cg = globalConfig(); + + if (cg.hasKey("project")) { + m_project = cg.readEntry("project"); + } else { + m_project = "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; } @@ -91,6 +111,17 @@ void CiaVc::sourceAdded(const QString& source) { + if ( !m_text ) { + kDebug() << "m_text does not exist, creating"; + m_text = new Plasma::LineEdit(this); + m_text->setStyled(false); + m_layout->addItem(m_text); + m_text->setHtml(i18n("Please wait, getting CIA commit information...")); + m_text->setTextWidth(-1); + m_text->update(); + } + + m_text->setHtml(i18n("Please wait, getting CIA commit information...")); m_engine->connectSource(source, this); m_text->setDefaultTextColor(Plasma::Theme::self()->textColor()); m_text->setTextInteractionFlags(Qt::TextSelectableByMouse|Qt::TextSelectableByKeyboard); @@ -152,12 +183,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 771292) +++ 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)