~ubuntu-branches/ubuntu/precise/gwenview/precise-proposed

« back to all changes in this revision

Viewing changes to lib/zoomslider.cpp

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2011-12-15 14:17:54 UTC
  • mto: This revision was merged to the branch mainline in revision 12.
  • Revision ID: package-import@ubuntu.com-20111215141754-z043hyx69dulbggf
Tags: upstream-4.7.90
Import upstream version 4.7.90

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// vim: set tabstop=4 shiftwidth=4 noexpandtab:
 
1
// vim: set tabstop=4 shiftwidth=4 expandtab:
2
2
/*
3
3
Gwenview: an image viewer
4
4
Copyright 2009 Aurélien Gâteau <agateau@kde.org>
33
33
 
34
34
// Local
35
35
 
36
 
namespace Gwenview {
37
 
 
 
36
namespace Gwenview
 
37
{
38
38
 
39
39
struct ZoomSliderPrivate {
40
 
        QToolButton* mZoomOutButton;
41
 
        QToolButton* mZoomInButton;
42
 
        QSlider* mSlider;
43
 
        QAction* mZoomInAction;
44
 
        QAction* mZoomOutAction;
 
40
    QToolButton* mZoomOutButton;
 
41
    QToolButton* mZoomInButton;
 
42
    QSlider* mSlider;
 
43
    QAction* mZoomInAction;
 
44
    QAction* mZoomOutAction;
45
45
 
46
 
        void updateButtons() {
47
 
                mZoomOutButton->setEnabled(mSlider->value() > mSlider->minimum());
48
 
                mZoomInButton->setEnabled(mSlider->value() < mSlider->maximum());
49
 
        }
 
46
    void updateButtons()
 
47
    {
 
48
        mZoomOutButton->setEnabled(mSlider->value() > mSlider->minimum());
 
49
        mZoomInButton->setEnabled(mSlider->value() < mSlider->maximum());
 
50
    }
50
51
};
51
52
 
52
 
static QToolButton* createZoomButton(const char* iconName) {
53
 
        QToolButton* button = new QToolButton;
54
 
        button->setIcon(KIcon(iconName));
55
 
        button->setAutoRaise(true);
56
 
        button->setAutoRepeat(true);
57
 
        return button;
 
53
static QToolButton* createZoomButton(const char* iconName)
 
54
{
 
55
    QToolButton* button = new QToolButton;
 
56
    button->setIcon(KIcon(iconName));
 
57
    button->setAutoRaise(true);
 
58
    button->setAutoRepeat(true);
 
59
    return button;
58
60
}
59
61
 
60
62
ZoomSlider::ZoomSlider(QWidget* parent)
61
63
: QWidget(parent)
62
 
, d(new ZoomSliderPrivate) {
63
 
        d->mZoomInButton = createZoomButton("zoom-in");
64
 
        d->mZoomOutButton = createZoomButton("zoom-out");
65
 
        d->mZoomInAction = 0;
66
 
        d->mZoomOutAction = 0;
67
 
 
68
 
        d->mSlider = new QSlider;
69
 
        d->mSlider->setOrientation(Qt::Horizontal);
70
 
 
71
 
        QHBoxLayout* layout = new QHBoxLayout(this);
72
 
        layout->setMargin(0);
73
 
        layout->setSpacing(0);
74
 
        layout->addWidget(d->mZoomOutButton);
75
 
        layout->addWidget(d->mSlider);
76
 
        layout->addWidget(d->mZoomInButton);
77
 
 
78
 
        connect(d->mSlider, SIGNAL(actionTriggered(int)),
79
 
                SLOT(slotActionTriggered(int)) );
80
 
        connect(d->mSlider, SIGNAL(valueChanged(int)),
81
 
                SIGNAL(valueChanged(int)));
82
 
 
83
 
        connect(d->mZoomOutButton, SIGNAL(clicked()),
84
 
                SLOT(zoomOut()));
85
 
        connect(d->mZoomInButton, SIGNAL(clicked()),
86
 
                SLOT(zoomIn()));
87
 
}
88
 
 
89
 
 
90
 
ZoomSlider::~ZoomSlider() {
91
 
        delete d;
92
 
}
93
 
 
94
 
 
95
 
int ZoomSlider::value() const {
96
 
        return d->mSlider->value();
97
 
}
98
 
 
99
 
 
100
 
void ZoomSlider::setValue(int value) {
101
 
        d->mSlider->setValue(value);
102
 
        d->updateButtons();
103
 
}
104
 
 
105
 
 
106
 
void ZoomSlider::setMinimum(int value) {
107
 
        d->mSlider->setMinimum(value);
108
 
        d->updateButtons();
109
 
}
110
 
 
111
 
 
112
 
void ZoomSlider::setMaximum(int value) {
113
 
        d->mSlider->setMaximum(value);
114
 
        d->updateButtons();
115
 
}
116
 
 
117
 
 
118
 
void ZoomSlider::setZoomInAction(QAction* action) {
119
 
        d->mZoomInAction = action;
120
 
}
121
 
 
122
 
 
123
 
void ZoomSlider::setZoomOutAction(QAction* action) {
124
 
        d->mZoomOutAction = action;
125
 
}
126
 
 
127
 
 
128
 
void ZoomSlider::slotActionTriggered(int) {
129
 
        d->updateButtons();
130
 
}
131
 
 
132
 
 
133
 
void ZoomSlider::zoomOut() {
134
 
        if (d->mZoomOutAction) {
135
 
                d->mZoomOutAction->trigger();
136
 
        } else {
137
 
                d->mSlider->triggerAction(QAbstractSlider::SliderPageStepSub);
138
 
        }
139
 
}
140
 
 
141
 
 
142
 
void ZoomSlider::zoomIn() {
143
 
        if (d->mZoomInAction) {
144
 
                d->mZoomInAction->trigger();
145
 
        } else {
146
 
                d->mSlider->triggerAction(QAbstractSlider::SliderPageStepAdd);
147
 
        }
148
 
}
149
 
 
150
 
 
151
 
QSlider* ZoomSlider::slider() const {
152
 
        return d->mSlider;
153
 
}
154
 
 
 
64
, d(new ZoomSliderPrivate)
 
65
{
 
66
    d->mZoomInButton = createZoomButton("zoom-in");
 
67
    d->mZoomOutButton = createZoomButton("zoom-out");
 
68
    d->mZoomInAction = 0;
 
69
    d->mZoomOutAction = 0;
 
70
 
 
71
    d->mSlider = new QSlider;
 
72
    d->mSlider->setOrientation(Qt::Horizontal);
 
73
 
 
74
    QHBoxLayout* layout = new QHBoxLayout(this);
 
75
    layout->setMargin(0);
 
76
    layout->setSpacing(0);
 
77
    layout->addWidget(d->mZoomOutButton);
 
78
    layout->addWidget(d->mSlider);
 
79
    layout->addWidget(d->mZoomInButton);
 
80
 
 
81
    connect(d->mSlider, SIGNAL(actionTriggered(int)),
 
82
            SLOT(slotActionTriggered(int)));
 
83
    connect(d->mSlider, SIGNAL(valueChanged(int)),
 
84
            SIGNAL(valueChanged(int)));
 
85
 
 
86
    connect(d->mZoomOutButton, SIGNAL(clicked()),
 
87
            SLOT(zoomOut()));
 
88
    connect(d->mZoomInButton, SIGNAL(clicked()),
 
89
            SLOT(zoomIn()));
 
90
}
 
91
 
 
92
ZoomSlider::~ZoomSlider()
 
93
{
 
94
    delete d;
 
95
}
 
96
 
 
97
int ZoomSlider::value() const
 
98
{
 
99
    return d->mSlider->value();
 
100
}
 
101
 
 
102
void ZoomSlider::setValue(int value)
 
103
{
 
104
    d->mSlider->setValue(value);
 
105
    d->updateButtons();
 
106
}
 
107
 
 
108
void ZoomSlider::setMinimum(int value)
 
109
{
 
110
    d->mSlider->setMinimum(value);
 
111
    d->updateButtons();
 
112
}
 
113
 
 
114
void ZoomSlider::setMaximum(int value)
 
115
{
 
116
    d->mSlider->setMaximum(value);
 
117
    d->updateButtons();
 
118
}
 
119
 
 
120
void ZoomSlider::setZoomInAction(QAction* action)
 
121
{
 
122
    d->mZoomInAction = action;
 
123
}
 
124
 
 
125
void ZoomSlider::setZoomOutAction(QAction* action)
 
126
{
 
127
    d->mZoomOutAction = action;
 
128
}
 
129
 
 
130
void ZoomSlider::slotActionTriggered(int)
 
131
{
 
132
    d->updateButtons();
 
133
}
 
134
 
 
135
void ZoomSlider::zoomOut()
 
136
{
 
137
    if (d->mZoomOutAction) {
 
138
        d->mZoomOutAction->trigger();
 
139
    } else {
 
140
        d->mSlider->triggerAction(QAbstractSlider::SliderPageStepSub);
 
141
    }
 
142
}
 
143
 
 
144
void ZoomSlider::zoomIn()
 
145
{
 
146
    if (d->mZoomInAction) {
 
147
        d->mZoomInAction->trigger();
 
148
    } else {
 
149
        d->mSlider->triggerAction(QAbstractSlider::SliderPageStepAdd);
 
150
    }
 
151
}
 
152
 
 
153
QSlider* ZoomSlider::slider() const
 
154
{
 
155
    return d->mSlider;
 
156
}
155
157
 
156
158
} // namespace