~ubuntu-branches/ubuntu/wily/choqok/wily

« back to all changes in this revision

Viewing changes to choqok/config/behavior/behaviorconfig_shorten.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Harald Sitter, Christian Mangold, Harald Sitter
  • Date: 2010-03-07 21:49:43 UTC
  • Revision ID: james.westby@ubuntu.com-20100307214943-oysifel2afdng0x1
Tags: 0.9.55-0ubuntu1
[ Christian Mangold ]
* Readd pkg-kde-tool build-depend, was a mistake to remove it

[ Harald Sitter ]
* New upstream release (1.0 beta1)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
2
This file is part of Choqok, the KDE micro-blogging client
3
3
 
4
 
Copyright (C) 2008-2009 Mehrdad Momeny <mehrdad.momeny@gmail.com>
 
4
Copyright (C) 2008-2010 Mehrdad Momeny <mehrdad.momeny@gmail.com>
5
5
 
6
6
This program is free software; you can redistribute it and/or
7
7
modify it under the terms of the GNU General Public License as
26
26
#include <pluginmanager.h>
27
27
#include <kplugininfo.h>
28
28
#include <KDebug>
 
29
#include <KAboutApplicationDialog>
29
30
#include <qlayout.h>
30
31
#include <shortenmanager.h>
31
32
#include "choqokbehaviorsettings.h"
 
33
#include <KTabWidget>
 
34
#include <kcmoduleinfo.h>
 
35
#include <KCModuleProxy>
32
36
 
33
37
BehaviorConfig_Shorten::BehaviorConfig_Shorten( QWidget *parent )
34
38
    :QWidget(parent),currentShortener(0)
37
41
    setupUi(this);
38
42
    Choqok::ShortenManager::self();
39
43
    connect(shortenPlugins, SIGNAL(currentIndexChanged(int)), SLOT(currentPluginChanged(int)));
 
44
    aboutPlugin->setIcon(KIcon("help-about"));
 
45
    configPlugin->setIcon(KIcon("configure"));
 
46
    connect( aboutPlugin, SIGNAL(clicked(bool)), SLOT(slotAboutClicked()) );
 
47
    connect( configPlugin, SIGNAL(clicked(bool)), SLOT(slotConfigureClicked()) );
40
48
}
41
49
 
42
50
BehaviorConfig_Shorten::~BehaviorConfig_Shorten()
50
58
        emit changed(false);
51
59
    else
52
60
        emit changed(true);
 
61
    QString key = shortenPlugins->itemData(index).toString();
 
62
//     kDebug()<<key;
 
63
    if( !key.isEmpty() && key != "none" && availablePlugins.value(key).kcmServices().count() > 0 )
 
64
        configPlugin->setEnabled(true);
 
65
    else
 
66
        configPlugin->setEnabled(false);
53
67
//     if(currentShortener){
54
68
//         layout()->removeWidget(currentShortener->configWidget());
55
69
// //         currentShortener->deleteLater();
63
77
 
64
78
void BehaviorConfig_Shorten::load()
65
79
{
66
 
    availablePlugins = Choqok::PluginManager::self()->availablePlugins("Shorteners");
 
80
    QList<KPluginInfo> plugins = Choqok::PluginManager::self()->availablePlugins("Shorteners");
67
81
    shortenPlugins->clear();
68
 
    shortenPlugins->addItem( i18n("None") );
69
 
    foreach(const KPluginInfo& plugin, availablePlugins){
 
82
    shortenPlugins->addItem( i18n("None"), QLatin1String("none") );
 
83
    foreach(const KPluginInfo& plugin, plugins){
70
84
        shortenPlugins->addItem( KIcon(plugin.icon()), plugin.name(), plugin.pluginName());
 
85
        availablePlugins.insert(plugin.pluginName(), plugin);
71
86
    }
72
87
    prevShortener = Choqok::BehaviorSettings::shortenerPlugin();
73
88
    if(!prevShortener.isEmpty()) {
87
102
    }
88
103
}
89
104
 
 
105
void BehaviorConfig_Shorten::slotAboutClicked()
 
106
{
 
107
    const QString shorten = shortenPlugins->itemData(shortenPlugins->currentIndex()).toString();
 
108
    if(shorten == "none")
 
109
        return;
 
110
    KPluginInfo info = availablePlugins.value(shorten);
 
111
 
 
112
    KAboutData aboutData(info.name().toUtf8(), info.name().toUtf8(), ki18n(info.name().toUtf8()), info.version().toUtf8(), ki18n(info.comment().toUtf8()), KAboutLicense::byKeyword(info.license()).key(), ki18n(QByteArray()), ki18n(QByteArray()), info.website().toLatin1());
 
113
    aboutData.setProgramIconName(info.icon());
 
114
    aboutData.addAuthor(ki18n(info.author().toUtf8()), ki18n(QByteArray()), info.email().toUtf8(), 0);
 
115
 
 
116
    KAboutApplicationDialog aboutPlugin(&aboutData, this);
 
117
    aboutPlugin.exec();
 
118
}
 
119
 
 
120
void BehaviorConfig_Shorten::slotConfigureClicked()
 
121
{
 
122
    kDebug();
 
123
    KPluginInfo pluginInfo = availablePlugins.value( shortenPlugins->itemData(shortenPlugins->currentIndex() ).toString() );
 
124
    kDebug()<<pluginInfo.name()<<pluginInfo.kcmServices().count();
 
125
 
 
126
    KDialog configDialog(this);
 
127
    configDialog.setWindowTitle(pluginInfo.name());
 
128
    // The number of KCModuleProxies in use determines whether to use a tabwidget
 
129
    KTabWidget *newTabWidget = 0;
 
130
    // Widget to use for the setting dialog's main widget,
 
131
    // either a KTabWidget or a KCModuleProxy
 
132
    QWidget * mainWidget = 0;
 
133
    // Widget to use as the KCModuleProxy's parent.
 
134
    // The first proxy is owned by the dialog itself
 
135
    QWidget *moduleProxyParentWidget = &configDialog;
 
136
 
 
137
    foreach (const KService::Ptr &servicePtr, pluginInfo.kcmServices()) {
 
138
        if(!servicePtr->noDisplay()) {
 
139
            KCModuleInfo moduleInfo(servicePtr);
 
140
            KCModuleProxy *currentModuleProxy = new KCModuleProxy(moduleInfo, moduleProxyParentWidget);
 
141
            if (currentModuleProxy->realModule()) {
 
142
                moduleProxyList << currentModuleProxy;
 
143
                if (mainWidget && !newTabWidget) {
 
144
                    // we already created one KCModuleProxy, so we need a tab widget.
 
145
                    // Move the first proxy into the tab widget and ensure this and subsequent
 
146
                    // proxies are in the tab widget
 
147
                    newTabWidget = new KTabWidget(&configDialog);
 
148
                    moduleProxyParentWidget = newTabWidget;
 
149
                    mainWidget->setParent( newTabWidget );
 
150
                    KCModuleProxy *moduleProxy = qobject_cast<KCModuleProxy*>(mainWidget);
 
151
                    if (moduleProxy) {
 
152
                        newTabWidget->addTab(mainWidget, moduleProxy->moduleInfo().moduleName());
 
153
                        mainWidget = newTabWidget;
 
154
                    } else {
 
155
                        delete newTabWidget;
 
156
                        newTabWidget = 0;
 
157
                        moduleProxyParentWidget = &configDialog;
 
158
                        mainWidget->setParent(0);
 
159
                    }
 
160
                }
 
161
 
 
162
                if (newTabWidget) {
 
163
                    newTabWidget->addTab(currentModuleProxy, servicePtr->name());
 
164
                } else {
 
165
                    mainWidget = currentModuleProxy;
 
166
                }
 
167
            } else {
 
168
                delete currentModuleProxy;
 
169
            }
 
170
        }
 
171
    }
 
172
 
 
173
    // it could happen that we had services to show, but none of them were real modules.
 
174
    if (moduleProxyList.count()) {
 
175
        configDialog.setButtons(KDialog::Ok | KDialog::Cancel);
 
176
 
 
177
        QWidget *showWidget = new QWidget(&configDialog);
 
178
        QVBoxLayout *layout = new QVBoxLayout;
 
179
        showWidget->setLayout(layout);
 
180
        layout->addWidget(mainWidget);
 
181
        layout->insertSpacing(-1, KDialog::marginHint());
 
182
        configDialog.setMainWidget(showWidget);
 
183
 
 
184
//         connect(&configDialog, SIGNAL(defaultClicked()), this, SLOT(slotDefaultClicked()));
 
185
 
 
186
        if (configDialog.exec() == QDialog::Accepted) {
 
187
            foreach (KCModuleProxy *moduleProxy, moduleProxyList) {
 
188
                QStringList parentComponents = moduleProxy->moduleInfo().service()->property("X-KDE-ParentComponents").toStringList();
 
189
                moduleProxy->save();
 
190
//                 foreach (const QString &parentComponent, parentComponents) {
 
191
//                     emit configCommitted(parentComponent.toLatin1());
 
192
//                 }
 
193
            }
 
194
        } else {
 
195
            foreach (KCModuleProxy *moduleProxy, moduleProxyList) {
 
196
                moduleProxy->load();
 
197
            }
 
198
        }
 
199
 
 
200
        qDeleteAll(moduleProxyList);
 
201
        moduleProxyList.clear();
 
202
    }
 
203
}
 
204
 
 
205
#include "behaviorconfig_shorten.moc"