~ubuntu-branches/ubuntu/saucy/digikam/saucy

« back to all changes in this revision

Viewing changes to libs/dimg/filters/cb/cbsettings.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Christian Mangold
  • Date: 2010-04-09 21:30:01 UTC
  • mfrom: (1.2.28 upstream)
  • Revision ID: james.westby@ubuntu.com-20100409213001-4bfyibrd359rn7o3
Tags: 2:1.2.0-0ubuntu1
* New upstream release (LP: #560576)
* Remove all patches, fixed upstream
  - Remove quilt build-depend

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* ============================================================
 
2
 *
 
3
 * This file is a part of digiKam project
 
4
 * http://www.digikam.org
 
5
 *
 
6
 * Date        : 2010-02-11
 
7
 * Description : Color Balance settings view.
 
8
 *
 
9
 * Copyright (C) 2010 by Gilles Caulier <caulier dot gilles at gmail dot com>
 
10
 *
 
11
 * This program is free software; you can redistribute it
 
12
 * and/or modify it under the terms of the GNU General
 
13
 * Public License as published by the Free Software Foundation;
 
14
 * either version 2, or (at your option)
 
15
 * any later version.
 
16
 *
 
17
 * This program is distributed in the hope that it will be useful,
 
18
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
19
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
20
 * GNU General Public License for more details.
 
21
 *
 
22
 * ============================================================ */
 
23
 
 
24
#include "cbsettings.moc"
 
25
 
 
26
// Qt includes
 
27
 
 
28
#include <QGridLayout>
 
29
#include <QSlider>
 
30
#include <QLabel>
 
31
#include <QString>
 
32
#include <QFile>
 
33
#include <QTextStream>
 
34
 
 
35
// KDE includes
 
36
 
 
37
#include <kdebug.h>
 
38
#include <kurl.h>
 
39
#include <kdialog.h>
 
40
#include <klocale.h>
 
41
#include <kapplication.h>
 
42
#include <kfiledialog.h>
 
43
#include <kglobal.h>
 
44
#include <kglobalsettings.h>
 
45
#include <kmessagebox.h>
 
46
#include <kstandarddirs.h>
 
47
 
 
48
// LibKDcraw includes
 
49
 
 
50
#include <libkdcraw/rnuminput.h>
 
51
 
 
52
// Local includes
 
53
 
 
54
#include "rexpanderbox.h"
 
55
 
 
56
using namespace KDcrawIface;
 
57
 
 
58
namespace Digikam
 
59
{
 
60
 
 
61
class CBSettingsPriv
 
62
{
 
63
public:
 
64
 
 
65
    CBSettingsPriv() :
 
66
        configRedAdjustmentEntry("RedAdjustment"),
 
67
        configGreenAdjustmentEntry("GreenAdjustment"),
 
68
        configBlueAdjustmentEntry("BlueAdjustment"),
 
69
        rInput(0),
 
70
        gInput(0),
 
71
        bInput(0)
 
72
        {}
 
73
 
 
74
    const QString configRedAdjustmentEntry;
 
75
    const QString configGreenAdjustmentEntry;
 
76
    const QString configBlueAdjustmentEntry;
 
77
 
 
78
    RIntNumInput* rInput;
 
79
    RIntNumInput* gInput;
 
80
    RIntNumInput* bInput;
 
81
};
 
82
 
 
83
CBSettings::CBSettings(QWidget* parent)
 
84
          : QWidget(parent),
 
85
            d(new CBSettingsPriv)
 
86
{
 
87
    QGridLayout* grid = new QGridLayout(parent);
 
88
 
 
89
    QLabel* labelCyan = new QLabel(i18n("Cyan"));
 
90
    labelCyan->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
 
91
 
 
92
    d->rInput = new RIntNumInput();
 
93
    d->rInput->setRange(-100, 100, 1);
 
94
    d->rInput->setSliderEnabled(true);
 
95
    d->rInput->setDefaultValue(0);
 
96
    d->rInput->setWhatsThis(i18n("Set here the cyan/red color adjustment of the image."));
 
97
 
 
98
    QLabel *labelRed = new QLabel(i18n("Red"));
 
99
    labelRed->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
 
100
 
 
101
    // -------------------------------------------------------------
 
102
 
 
103
    QLabel *labelMagenta = new QLabel(i18n("Magenta"));
 
104
    labelMagenta->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
 
105
 
 
106
    d->gInput = new RIntNumInput();
 
107
    d->gInput->setRange(-100, 100, 1);
 
108
    d->gInput->setSliderEnabled(true);
 
109
    d->gInput->setDefaultValue(0);
 
110
    d->gInput->setWhatsThis(i18n("Set here the magenta/green color adjustment of the image."));
 
111
 
 
112
    QLabel *labelGreen = new QLabel(i18n("Green"));
 
113
    labelGreen->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
 
114
 
 
115
    // -------------------------------------------------------------
 
116
 
 
117
    QLabel *labelYellow = new QLabel(i18n("Yellow"));
 
118
    labelYellow->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
 
119
 
 
120
    QLabel *labelBlue = new QLabel(i18n("Blue"));
 
121
    labelBlue->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
 
122
 
 
123
    d->bInput = new RIntNumInput();
 
124
    d->bInput->setRange(-100, 100, 1);
 
125
    d->bInput->setSliderEnabled(true);
 
126
    d->bInput->setDefaultValue(0);
 
127
    d->bInput->setWhatsThis(i18n("Set here the yellow/blue color adjustment of the image."));
 
128
 
 
129
    // -------------------------------------------------------------
 
130
 
 
131
    grid->addWidget(labelCyan,    0, 0, 1, 1);
 
132
    grid->addWidget(d->rInput,    0, 1, 1, 1);
 
133
    grid->addWidget(labelRed,     0, 2, 1, 1);
 
134
    grid->addWidget(labelMagenta, 1, 0, 1, 1);
 
135
    grid->addWidget(d->gInput,    1, 1, 1, 1);
 
136
    grid->addWidget(labelGreen,   1, 2, 1, 1);
 
137
    grid->addWidget(labelYellow,  2, 0, 1, 1);
 
138
    grid->addWidget(d->bInput,    2, 1, 1, 1);
 
139
    grid->addWidget(labelBlue,    2, 2, 1, 1);
 
140
    grid->setMargin(KDialog::spacingHint());
 
141
    grid->setSpacing(KDialog::spacingHint());
 
142
    grid->setRowStretch(3, 10);
 
143
 
 
144
    // -------------------------------------------------------------
 
145
 
 
146
    connect(d->rInput, SIGNAL(valueChanged (int)),
 
147
            this, SIGNAL(signalSettingsChanged()));
 
148
 
 
149
    connect(d->gInput, SIGNAL(valueChanged (int)),
 
150
            this, SIGNAL(signalSettingsChanged()));
 
151
 
 
152
    connect(d->bInput, SIGNAL(valueChanged (int)),
 
153
            this, SIGNAL(signalSettingsChanged()));
 
154
}
 
155
 
 
156
CBSettings::~CBSettings()
 
157
{
 
158
    delete d;
 
159
}
 
160
 
 
161
CBContainer CBSettings::settings() const
 
162
{
 
163
    CBContainer prm;
 
164
 
 
165
    prm.red   = ((double)d->rInput->value() + 100.0)/100.0;
 
166
    prm.green = ((double)d->gInput->value() + 100.0)/100.0;
 
167
    prm.blue  = ((double)d->bInput->value() + 100.0)/100.0;
 
168
 
 
169
    return prm;
 
170
}
 
171
 
 
172
void CBSettings::setSettings(const CBContainer& settings)
 
173
{
 
174
    blockSignals(true);
 
175
    d->rInput->setValue((int)(settings.red   * 100.0) - 100.0);
 
176
    d->gInput->setValue((int)(settings.green * 100.0) - 100.0);
 
177
    d->bInput->setValue((int)(settings.blue  * 100.0) - 100.0);
 
178
    blockSignals(false);
 
179
}
 
180
 
 
181
void CBSettings::resetToDefault()
 
182
{
 
183
    blockSignals(true);
 
184
    d->rInput->slotReset();
 
185
    d->gInput->slotReset();
 
186
    d->bInput->slotReset();
 
187
    blockSignals(false);
 
188
}
 
189
 
 
190
CBContainer CBSettings::defaultSettings() const
 
191
{
 
192
    CBContainer prm;
 
193
 
 
194
    prm.red   = ((double)d->rInput->defaultValue() + 100.0)/100.0;
 
195
    prm.green = ((double)d->gInput->defaultValue() + 100.0)/100.0;
 
196
    prm.blue  = ((double)d->bInput->defaultValue() + 100.0)/100.0;
 
197
 
 
198
    return prm;
 
199
}
 
200
 
 
201
void CBSettings::readSettings(KConfigGroup& group)
 
202
{
 
203
    CBContainer prm;
 
204
    CBContainer defaultPrm = defaultSettings();
 
205
 
 
206
    prm.red   = group.readEntry(d->configRedAdjustmentEntry,   defaultPrm.red);
 
207
    prm.green = group.readEntry(d->configGreenAdjustmentEntry, defaultPrm.green);
 
208
    prm.blue  = group.readEntry(d->configBlueAdjustmentEntry,  defaultPrm.blue);
 
209
 
 
210
    setSettings(prm);
 
211
}
 
212
 
 
213
void CBSettings::writeSettings(KConfigGroup& group)
 
214
{
 
215
    CBContainer prm = settings();
 
216
 
 
217
    group.writeEntry(d->configRedAdjustmentEntry,   prm.red);
 
218
    group.writeEntry(d->configGreenAdjustmentEntry, prm.green);
 
219
    group.writeEntry(d->configBlueAdjustmentEntry,  prm.blue);
 
220
}
 
221
 
 
222
}  // namespace Digikam