~ubuntu-branches/ubuntu/oneiric/kdeplasma-addons/oneiric

« back to all changes in this revision

Viewing changes to applets/lancelot/app/src/launcher/LancelotAppletConfig.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Thomas
  • Date: 2010-05-25 09:50:14 UTC
  • mfrom: (1.1.28 upstream)
  • Revision ID: james.westby@ubuntu.com-20100525095014-6mlrm9z9bkws0zkt
Tags: 4:4.4.80-0ubuntu1
* New upstream beta release:
  - Bump kde-sc-dev-latest build-dep version to 4.4.80
  - Refresh kubuntu_04_kimpanel_disable_scim.diff
  - Update various .install files
  - Drop liblancelot0a and liblancelot-dev packages; Upstream has broken ABI
    without an .so version bump, and after discussion with Debian it was
    decided it was not worth it to ship an unstable library.
  - Add liblancelot files to plasma-widget-lancelot, adding appropriate
    Replaces: entries
* Switch to source format 3.0 (quilt):
  - Bump debhelper build-depend version to 7.3.16 or greater

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 *   Copyright (C) 2007 Ivan Cukic <ivan.cukic(at)kde.org>
3
 
 *
4
 
 *   This program is free software; you can redistribute it and/or modify
5
 
 *   it under the terms of the GNU General Public License version 2,
6
 
 *   or (at your option) any later version, as published by the Free
7
 
 *   Software Foundation
8
 
 *
9
 
 *   This program is distributed in the hope that it will be useful,
10
 
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 
 *   GNU General Public License for more details
13
 
 *
14
 
 *   You should have received a copy of the GNU General Public
15
 
 *   License along with this program; if not, write to the
16
 
 *   Free Software Foundation, Inc.,
17
 
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18
 
 */
19
 
 
20
 
#include "LancelotAppletConfig.h"
21
 
#include "lancelot_interface.h"
22
 
 
23
 
#include <KIconDialog>
24
 
 
25
 
void LancelotAppletConfig::setupUi(QWidget * widget)
26
 
{
27
 
    Ui::LancelotAppletConfigBase::setupUi(widget);
28
 
 
29
 
    qbgIcons = new QButtonGroup(widget);
30
 
    qbgIcons->addButton(radioShowCategories);
31
 
    qbgIcons->addButton(radioShowMenuIconOnly);
32
 
 
33
 
    qbgMenuActivation = new QButtonGroup(widget);
34
 
    qbgMenuActivation->addButton(radioActivationHover);
35
 
    qbgMenuActivation->addButton(radioActivationClick);
36
 
 
37
 
    connect(radioShowCategories, SIGNAL(clicked()),
38
 
            this, SLOT(updateCard()));
39
 
    connect(radioShowMenuIconOnly, SIGNAL(clicked()),
40
 
            this, SLOT(updateCard()));
41
 
    connect(listIcons, SIGNAL(itemClicked(QListWidgetItem *)),
42
 
            this, SLOT(iconItemClicked()));
43
 
 
44
 
    org::kde::lancelot::App lancelot(
45
 
            "org.kde.lancelot", "/Lancelot",
46
 
            QDBusConnection::sessionBus()
47
 
    );
48
 
 
49
 
    QDBusReply<QStringList> replyIDs   = lancelot.sectionIDs();
50
 
    QDBusReply<QStringList> replyNames = lancelot.sectionNames();
51
 
    QDBusReply<QStringList> replyIcons = lancelot.sectionIcons();
52
 
 
53
 
    // showing icons
54
 
    QListWidgetItem * item;
55
 
    item = new QListWidgetItem(
56
 
            KIcon("lancelot"), i18n("Lancelot"), listIcons);
57
 
    icons["lancelot"] = item;
58
 
    item = new QListWidgetItem(
59
 
            KIcon("kde"), i18n("KDE Logo"), listIcons);
60
 
    icons["kde"] = item;
61
 
    item = new QListWidgetItem(
62
 
            KIcon("start-here"), i18n("Start here"), listIcons);
63
 
    icons["start-here"] = item;
64
 
    item = new QListWidgetItem(
65
 
            KIcon("unknown"), i18n("Custom"), listIcons);
66
 
    icons["custom"] = item;
67
 
 
68
 
    // showing categs
69
 
    if (!replyIDs.isValid() || !replyNames.isValid() || !replyIcons.isValid()) {
70
 
        // Error connecting to Lancelot via d-bus
71
 
        // setFailedToLaunch(true);
72
 
        return;
73
 
    }
74
 
 
75
 
    for (int i = 0; i < replyIDs.value().size(); i++) {
76
 
        QListWidgetItem * item = new QListWidgetItem(
77
 
                KIcon(replyIcons.value().at(i)), replyNames.value().at(i));
78
 
        item->setData(Qt::UserRole, replyIDs.value().at(i));
79
 
        categories[replyIDs.value().at(i)] = item;
80
 
        listSections->addItem(item);
81
 
        item->setSelected(true);
82
 
    }
83
 
}
84
 
 
85
 
void LancelotAppletConfig::iconItemClicked()
86
 
{
87
 
    if (!icons.contains("custom")) {
88
 
        return;
89
 
    }
90
 
 
91
 
    if (icons["custom"]->isSelected()) {
92
 
        QString newCustomIcon = KIconDialog::getIcon();
93
 
        if (!newCustomIcon.isEmpty()) {
94
 
            customIcon = newCustomIcon;
95
 
            icons["custom"]->setIcon(KIcon(customIcon));
96
 
        }
97
 
    }
98
 
}
99
 
 
100
 
bool LancelotAppletConfig::showCategory(const QString & id) const
101
 
{
102
 
    return categories.value(id)->isSelected();
103
 
}
104
 
 
105
 
bool LancelotAppletConfig::showCategories() const
106
 
{
107
 
    return radioShowCategories->isChecked();
108
 
}
109
 
 
110
 
bool LancelotAppletConfig::clickActivation() const
111
 
{
112
 
    return radioActivationClick->isChecked();
113
 
}
114
 
 
115
 
QStringList LancelotAppletConfig::showingCategories(bool value) const
116
 
{
117
 
    QStringList result;
118
 
    foreach (QListWidgetItem * item, categories) {
119
 
        if (item->isSelected() == value) {
120
 
            result << item->data(Qt::UserRole).toString();
121
 
        }
122
 
    }
123
 
    return result;
124
 
}
125
 
 
126
 
QString LancelotAppletConfig::icon() const
127
 
{
128
 
    foreach (const QString & id, icons.keys()) //krazy:exclude=foreach
129
 
    {
130
 
        QListWidgetItem * item = icons[id];
131
 
        if (item->isSelected()) {
132
 
            if (id == "custom") {
133
 
                return customIcon;
134
 
            }
135
 
            return id;
136
 
        }
137
 
    }
138
 
    return "lancelot";
139
 
}
140
 
 
141
 
void LancelotAppletConfig::setShowAllCategories(bool value)
142
 
{
143
 
    foreach (QListWidgetItem * item, categories) //krazy:exclude=foreach
144
 
    {
145
 
        item->setSelected(value);
146
 
    }
147
 
}
148
 
 
149
 
void LancelotAppletConfig::setShowingCategories(QStringList ids, bool value)
150
 
{
151
 
    foreach (const QString & id, categories.keys()) //krazy:exclude=foreach
152
 
    {
153
 
        QListWidgetItem * item = categories[id];
154
 
        item->setSelected((ids.contains(id)) ? value : (!value));
155
 
    }
156
 
}
157
 
 
158
 
void LancelotAppletConfig::setShowCategory(const QString & id, bool value)
159
 
{
160
 
    categories.value(id)->setSelected(value);
161
 
}
162
 
 
163
 
void LancelotAppletConfig::setShowCategories(bool value)
164
 
{
165
 
    if (value) {
166
 
        radioShowCategories->click();
167
 
    } else {
168
 
        radioShowMenuIconOnly->click();
169
 
    }
170
 
}
171
 
 
172
 
void LancelotAppletConfig::setClickActivation(bool value)
173
 
{
174
 
    if (value) {
175
 
        radioActivationClick->click();
176
 
    } else {
177
 
        radioActivationHover->click();
178
 
    }
179
 
}
180
 
 
181
 
void LancelotAppletConfig::setIcon(const QString & icon)
182
 
{
183
 
    bool found = false;
184
 
    foreach (const QString &id, icons.keys()) //krazy:exclude=foreach
185
 
    {
186
 
        QListWidgetItem * item = icons[id];
187
 
        item->setSelected(id == icon);
188
 
        if (id == icon) {
189
 
            found = true;
190
 
        }
191
 
    }
192
 
 
193
 
    if (found || !icons.contains("custom")) {
194
 
        return;
195
 
    }
196
 
 
197
 
    customIcon = icon;
198
 
    icons["custom"]->setSelected(true);
199
 
    icons["custom"]->setIcon(KIcon(customIcon));
200
 
}
201
 
 
202
 
void LancelotAppletConfig::updateCard()
203
 
{
204
 
    if (radioShowCategories->isChecked()) {
205
 
        stackedAppletButtons->setCurrentWidget(pageCategoriesChoose);
206
 
    } else {
207
 
        stackedAppletButtons->setCurrentWidget(pageAppletIconsChoose);
208
 
    }
209
 
}
210
 
 
211