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

« back to all changes in this revision

Viewing changes to utilities/lighttable/lighttableview.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:
7
7
 * Description : a widget to display 2 preview image on
8
8
 *               lightable to compare pictures.
9
9
 *
10
 
 * Copyright (C) 2007-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
 
10
 * Copyright (C) 2007-2010 by Gilles Caulier <caulier dot gilles at gmail dot com>
11
11
 *
12
12
 * This program is free software; you can redistribute it
13
13
 * and/or modify it under the terms of the GNU General
30
30
 
31
31
// KDE includes
32
32
 
33
 
 
34
33
#include <kdialog.h>
 
34
#include <kdebug.h>
35
35
 
36
36
// Local includes
37
37
 
 
38
#include "dzoombar.h"
38
39
#include "thumbnailsize.h"
39
40
#include "lighttablepreview.h"
40
41
 
59
60
    bool               leftLoading;     // To not sync right panel during left loading.
60
61
    bool               rightLoading;    // To not sync left panel during right loading.
61
62
 
62
 
    QGridLayout       *grid;
 
63
    QGridLayout*       grid;
63
64
 
64
 
    LightTablePreview *leftPreview;
65
 
    LightTablePreview *rightPreview;
 
65
    LightTablePreview* leftPreview;
 
66
    LightTablePreview* rightPreview;
66
67
};
67
68
 
68
69
LightTableView::LightTableView(QWidget *parent)
95
96
    connect(d->leftPreview, SIGNAL(signalSlideShow()),
96
97
            this, SIGNAL(signalSlideShow()));
97
98
 
98
 
    connect(d->leftPreview, SIGNAL(signalDeleteItem(const ImageInfo &)),
99
 
            this, SIGNAL(signalDeleteItem(const ImageInfo &)));
 
99
    connect(d->leftPreview, SIGNAL(signalDeleteItem(const ImageInfo&)),
 
100
            this, SIGNAL(signalDeleteItem(const ImageInfo&)));
100
101
 
101
 
    connect(d->leftPreview, SIGNAL(signalEditItem(const ImageInfo &)),
102
 
            this, SIGNAL(signalEditItem(const ImageInfo &)));
 
102
    connect(d->leftPreview, SIGNAL(signalEditItem(const ImageInfo&)),
 
103
            this, SIGNAL(signalEditItem(const ImageInfo&)));
103
104
 
104
105
    connect(d->leftPreview, SIGNAL(signalDroppedItems(const ImageInfoList&)),
105
106
            this, SIGNAL(signalLeftDroppedItems(const ImageInfoList&)));
118
119
    connect(d->rightPreview, SIGNAL(contentsMoving(int, int)),
119
120
            this, SLOT(slotRightContentsMoved(int, int)));
120
121
 
121
 
    connect(d->rightPreview, SIGNAL(signalDeleteItem(const ImageInfo &)),
122
 
            this, SIGNAL(signalDeleteItem(const ImageInfo &)));
 
122
    connect(d->rightPreview, SIGNAL(signalDeleteItem(const ImageInfo&)),
 
123
            this, SIGNAL(signalDeleteItem(const ImageInfo&)));
123
124
 
124
 
    connect(d->rightPreview, SIGNAL(signalEditItem(const ImageInfo &)),
125
 
            this, SIGNAL(signalEditItem(const ImageInfo &)));
 
125
    connect(d->rightPreview, SIGNAL(signalEditItem(const ImageInfo&)),
 
126
            this, SIGNAL(signalEditItem(const ImageInfo&)));
126
127
 
127
128
    connect(d->rightPreview, SIGNAL(signalDroppedItems(const ImageInfoList&)),
128
129
            this, SIGNAL(signalRightDroppedItems(const ImageInfoList&)));
163
164
    d->rightPreview->setDragAndDropEnabled(!b);
164
165
}
165
166
 
166
 
void LightTableView::slotDecreaseZoom()
167
 
{
168
 
    if (d->syncPreview)
169
 
    {
170
 
        slotDecreaseLeftZoom();
171
 
        return;
172
 
    }
173
 
 
174
 
    if (d->leftPreview->isSelected())
175
 
        slotDecreaseLeftZoom();
176
 
    else if (d->rightPreview->isSelected())
177
 
        slotDecreaseRightZoom();
178
 
}
179
 
 
180
 
void LightTableView::slotIncreaseZoom()
181
 
{
182
 
    if (d->syncPreview)
183
 
    {
184
 
        slotIncreaseLeftZoom();
185
 
        return;
186
 
    }
187
 
 
188
 
    if (d->leftPreview->isSelected())
189
 
        slotIncreaseLeftZoom();
190
 
    else if (d->rightPreview->isSelected())
191
 
        slotIncreaseRightZoom();
192
 
}
193
 
 
194
167
void LightTableView::slotDecreaseLeftZoom()
195
168
{
196
169
    d->leftPreview->slotDecreaseZoom();
221
194
    d->rightPreview->setZoomFactor(z);
222
195
}
223
196
 
224
 
void LightTableView::fitToWindow()
 
197
void LightTableView::slotLeftZoomTo100()
 
198
{
 
199
    d->leftPreview->setZoomFactor(1.0, true);
 
200
}
 
201
 
 
202
void LightTableView::slotRightZoomTo100()
 
203
{
 
204
    d->rightPreview->setZoomFactor(1.0, true);
 
205
}
 
206
 
 
207
void LightTableView::slotLeftFitToWindow()
225
208
{
226
209
    d->leftPreview->fitToWindow();
 
210
}
 
211
 
 
212
void LightTableView::slotRightFitToWindow()
 
213
{
227
214
    d->rightPreview->fitToWindow();
228
215
}
229
216
 
230
 
void LightTableView::toggleFitToWindowOr100()
231
 
{
232
 
    //  If we are currently precisely at 100%, then fit to window,
233
 
    //  otherwise zoom to a centered 100% view.
234
 
    if ((d->leftPreview->zoomFactor()==1.0) &&
235
 
        (d->rightPreview->zoomFactor()==1.0))
236
 
    {
237
 
        fitToWindow();
238
 
    }
239
 
    else
240
 
    {
241
 
        d->leftPreview->setZoomFactor(1.0, true);
242
 
        d->rightPreview->setZoomFactor(1.0, true);
243
 
    }
244
 
}
245
 
 
246
217
double LightTableView::leftZoomMax()
247
218
{
248
219
    return d->leftPreview->zoomMax();
285
256
 
286
257
void LightTableView::slotLeftZoomSliderChanged(int size)
287
258
{
288
 
    double h    = (double)ThumbnailSize::Huge;
289
 
    double s    = (double)ThumbnailSize::Small;
290
259
    double zmin = d->leftPreview->zoomMin();
291
260
    double zmax = d->leftPreview->zoomMax();
292
 
    double b    = (zmin-(zmax*s/h))/(1-s/h);
293
 
    double a    = (zmax-b)/h;
294
 
    double z    = a*size+b;
295
 
 
 
261
    double z    = DZoomBar::zoomFromSize(size, zmin, zmax);
296
262
    d->leftPreview->setZoomFactorSnapped(z);
297
263
}
298
264
 
299
265
void LightTableView::slotRightZoomSliderChanged(int size)
300
266
{
301
 
    double h    = (double)ThumbnailSize::Huge;
302
 
    double s    = (double)ThumbnailSize::Small;
303
267
    double zmin = d->rightPreview->zoomMin();
304
268
    double zmax = d->rightPreview->zoomMax();
305
 
    double b    = (zmin-(zmax*s/h))/(1-s/h);
306
 
    double a    = (zmax-b)/h;
307
 
    double z    = a*size+b;
308
 
 
 
269
    double z    = DZoomBar::zoomFromSize(size, zmin, zmax);
309
270
    d->rightPreview->setZoomFactorSnapped(z);
310
271
}
311
272
 
390
351
{
391
352
    checkForSyncPreview();
392
353
    d->leftLoading = false;
393
 
    slotRightContentsMoved(d->rightPreview->contentsX(),
394
 
                           d->rightPreview->contentsY());
 
354
    slotRightContentsMoved(d->rightPreview->contentsX(), d->rightPreview->contentsY());
395
355
 
396
356
    emit signalLeftPreviewLoaded(success);
397
357
}
400
360
{
401
361
    checkForSyncPreview();
402
362
    d->rightLoading = false;
403
 
    slotLeftContentsMoved(d->leftPreview->contentsX(),
404
 
                          d->leftPreview->contentsY());
 
363
    slotLeftContentsMoved(d->leftPreview->contentsX(), d->leftPreview->contentsY());
405
364
 
406
365
    emit signalRightPreviewLoaded(success);
407
366
}
408
367
 
409
368
void LightTableView::checkForSyncPreview()
410
369
{
411
 
    if (!d->leftPreview->getImageInfo().isNull() &&
 
370
    if (!d->leftPreview->getImageInfo().isNull()  &&
412
371
        !d->rightPreview->getImageInfo().isNull() &&
413
372
        d->leftPreview->getImageSize() == d->rightPreview->getImageSize())
414
373
    {
433
392
 
434
393
    if (!d->leftPreview->getImageInfo().isNull())
435
394
    {
436
 
        d->leftPreview->setSelected(d->leftPreview->getImageInfo() == info);
 
395
        bool onLeft = (d->leftPreview->getImageInfo() == info);
 
396
        d->leftPreview->setSelected(onLeft);
437
397
    }
438
398
 
439
399
    if (!d->rightPreview->getImageInfo().isNull())
440
400
    {
441
 
        d->rightPreview->setSelected(d->rightPreview->getImageInfo() == info);
 
401
        bool onRight = (d->rightPreview->getImageInfo() == info);
 
402
        d->rightPreview->setSelected(onRight);
442
403
    }
443
404
}
444
405