[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/graphics/digikam
From: Gilles Caulier <caulier.gilles () gmail ! com>
Date: 2007-04-11 11:47:46
Message-ID: 1176292066.341727.30623.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 652531 by cgilles:
digiKam from trunk : to prepare the future Light Table tool, the thumbbar is now \
resizable. The thumbs content size will be adapted in live to the bar size. Showfoto \
now support this feature.
M +42 -20 libs/thumbbar/thumbbar.cpp
M +1 -0 libs/thumbbar/thumbbar.h
M +25 -11 showfoto/showfoto.cpp
--- trunk/extragear/graphics/digikam/libs/thumbbar/thumbbar.cpp #652530:652531
@@ -5,7 +5,6 @@
* Description : a bar widget to display image thumbnails
*
* Copyright 2004-2005 by Renchi Raju and Gilles Caulier
- * Copyrigth 2005-2006 by Tom Albers <tomalbers@kde.nl>
* Copyright 2006-2007 by Gilles Caulier
*
* This program is free software; you can redistribute it
@@ -36,6 +35,7 @@
#include <qdir.h>
#include <qpixmap.h>
+#include <qimage.h>
#include <qtimer.h>
#include <qpainter.h>
#include <qdict.h>
@@ -58,6 +58,7 @@
// Local includes.
#include "thumbnailjob.h"
+#include "thumbnailsize.h"
#include "thumbbar.h"
#include "thumbbar.moc"
@@ -145,15 +146,11 @@
if (d->orientation == Vertical)
{
- setHScrollBarMode(QScrollView::AlwaysOff);
- setFixedWidth(d->tileSize + 2*d->margin
- + verticalScrollBar()->sizeHint().width());
+ setHScrollBarMode(QScrollView::AlwaysOff);
}
else
{
- setVScrollBarMode(QScrollView::AlwaysOff);
- setFixedHeight(d->tileSize + 2*d->margin
- + horizontalScrollBar()->sizeHint().height());
+ setVScrollBarMode(QScrollView::AlwaysOff);
}
}
@@ -172,6 +169,27 @@
delete d;
}
+void ThumbBarView::resizeEvent(QResizeEvent* e)
+{
+ if (!e)
+ return;
+
+ QScrollView::resizeEvent(e);
+
+ if (d->orientation == Vertical)
+ {
+ d->tileSize = width() - 2*d->margin
+ - verticalScrollBar()->sizeHint().width();
+ }
+ else
+ {
+ d->tileSize = height() - 2*d->margin
+ - horizontalScrollBar()->sizeHint().height();
+ }
+
+ rearrangeItems();
+}
+
void ThumbBarView::setExifRotate(bool exifRotate)
{
d->exifRotate = exifRotate;
@@ -340,7 +358,7 @@
d->thumbJob = 0;
}
- d->thumbJob = new ThumbnailJob(item->url(), d->tileSize, true, d->exifRotate);
+ d->thumbJob = new ThumbnailJob(item->url(), ThumbnailSize::Huge, true, \
d->exifRotate);
connect(d->thumbJob, SIGNAL(signalThumbnail(const KURL&, const QPixmap&)),
this, SLOT(slotGotThumbnail(const KURL&, const QPixmap&)));
@@ -400,9 +418,12 @@
if (item->d->pixmap)
{
- int x = (tile.width() -item->d->pixmap->width())/2;
- int y = (tile.height()-item->d->pixmap->height())/2;
- bitBlt(&tile, x, y, item->d->pixmap);
+ QPixmap pix;
+ pix.convertFromImage(QImage(item->d->pixmap->convertToImage()).
+ smoothScale(d->tileSize, d->tileSize, \
QImage::ScaleMin)); + int x = (tile.width() - pix.width())/2;
+ int y = (tile.height() - pix.height())/2;
+ bitBlt(&tile, x, y, &pix);
}
bitBlt(&bgPix, 0, item->d->pos - cy, &tile);
@@ -424,9 +445,12 @@
if (item->d->pixmap)
{
- int x = (tile.width() -item->d->pixmap->width())/2;
- int y = (tile.height()-item->d->pixmap->height())/2;
- bitBlt(&tile, x, y, item->d->pixmap);
+ QPixmap pix;
+ pix.convertFromImage(QImage(item->d->pixmap->convertToImage()).
+ smoothScale(d->tileSize, d->tileSize, \
QImage::ScaleMin)); + int x = (tile.width() - pix.width())/2;
+ int y = (tile.height()- pix.height())/2;
+ bitBlt(&tile, x, y, &pix);
}
bitBlt(&bgPix, item->d->pos - cx, 0, &tile);
@@ -597,7 +621,7 @@
d->thumbJob = 0;
}
- d->thumbJob = new ThumbnailJob(urlList, d->tileSize, true, d->exifRotate);
+ d->thumbJob = new ThumbnailJob(urlList, ThumbnailSize::Huge, true, \
d->exifRotate);
connect(d->thumbJob, SIGNAL(signalThumbnail(const KURL&, const QPixmap&)),
this, SLOT(slotGotThumbnail(const KURL&, const QPixmap&)));
@@ -645,7 +669,7 @@
void ThumbBarView::slotFailedThumbnail(const KURL& url)
{
- KIO::PreviewJob* job = KIO::filePreview(url, d->tileSize, 0, 0, 70, true, \
false); + KIO::PreviewJob* job = KIO::filePreview(url, ThumbnailSize::Huge, 0, 0, \
70, true, false);
connect(job, SIGNAL(gotPreview(const KFileItem *, const QPixmap &)),
this, SLOT(slotGotPreview(const KFileItem *, const QPixmap &)));
@@ -654,8 +678,7 @@
this, SLOT(slotFailedPreview(const KFileItem *)));
}
-void ThumbBarView::slotGotPreview(const KFileItem *fileItem,
- const QPixmap& pix)
+void ThumbBarView::slotGotPreview(const KFileItem *fileItem, const QPixmap& pix)
{
ThumbBarItem* item = d->itemDict.find(fileItem->url().url());
if (!item)
@@ -678,8 +701,7 @@
return;
KIconLoader* iconLoader = KApplication::kApplication()->iconLoader();
- QPixmap pix = iconLoader->loadIcon("image", KIcon::NoGroup,
- d->tileSize);
+ QPixmap pix = iconLoader->loadIcon("image", KIcon::NoGroup, \
ThumbnailSize::Huge);
if (item->d->pixmap)
{
--- trunk/extragear/graphics/digikam/libs/thumbbar/thumbbar.h #652530:652531
@@ -84,6 +84,7 @@
protected:
+ void resizeEvent(QResizeEvent* e);
void viewportPaintEvent(QPaintEvent* e);
void contentsMousePressEvent(QMouseEvent* e);
--- trunk/extragear/graphics/digikam/showfoto/showfoto.cpp #652530:652531
@@ -118,6 +118,7 @@
rightSidebar = 0;
splash = 0;
itemsNb = 0;
+ vSplitter = 0;
deleteItem2Trash = true;
fullScreenHideThumbBar = true;
validIccPath = true;
@@ -129,6 +130,8 @@
int itemsNb;
+ QSplitter *vSplitter;
+
KURL lastOpenedDirectory;
KToggleAction *showBarAction;
@@ -365,6 +368,7 @@
{
QHBoxLayout *hlay = new QHBoxLayout(widget);
m_splitter = new QSplitter(widget);
+ d->thumbBar = new Digikam::ThumbBarView(m_splitter, \
Digikam::ThumbBarView::Vertical); m_canvas = new \
Digikam::Canvas(m_splitter); m_canvas->setSizePolicy(rightSzPolicy);
@@ -372,7 +376,6 @@
d->rightSidebar = new Digikam::ImagePropertiesSideBar(widget, "ShowFoto \
Sidebar Right", m_splitter,
\
Digikam::Sidebar::Right);
- d->thumbBar = new Digikam::ThumbBarView(widget, \
Digikam::ThumbBarView::Vertical);
hlay->addWidget(d->thumbBar);
hlay->addWidget(m_splitter);
@@ -380,21 +383,24 @@
}
else // Horizontal thumbbar \
layout {
- m_splitter = new QSplitter(widget);
- QWidget* widget2 = new QWidget(m_splitter);
- QVBoxLayout *vlay = new QVBoxLayout(widget2);
- m_canvas = new Digikam::Canvas(widget2);
+ m_splitter = new QSplitter(Qt::Horizontal, widget);
+ QWidget* widget2 = new QWidget(m_splitter);
+ QVBoxLayout *vlay = new QVBoxLayout(widget2);
+ d->vSplitter = new QSplitter(Qt::Vertical, widget2);
+ m_canvas = new Digikam::Canvas(d->vSplitter);
+ d->thumbBar = new Digikam::ThumbBarView(d->vSplitter, \
Digikam::ThumbBarView::Horizontal); +
m_canvas->setSizePolicy(rightSzPolicy);
+ d->vSplitter->setFrameStyle( QFrame::NoFrame );
+ d->vSplitter->setFrameShadow( QFrame::Plain );
+ d->vSplitter->setFrameShape( QFrame::NoFrame );
+ d->vSplitter->setOpaqueResize(false);
- d->thumbBar = new Digikam::ThumbBarView(widget2, \
Digikam::ThumbBarView::Horizontal); + vlay->addWidget(d->vSplitter);
- vlay->addWidget(m_canvas);
- vlay->addWidget(d->thumbBar);
-
QHBoxLayout *hlay = new QHBoxLayout(widget);
d->rightSidebar = new Digikam::ImagePropertiesSideBar(widget, "ShowFoto \
Sidebar Right", m_splitter,
\
Digikam::Sidebar::Right);
-
hlay->addWidget(m_splitter);
hlay->addWidget(d->rightSidebar);
}
@@ -458,7 +464,13 @@
d->showBarAction->activate();
d->lastOpenedDirectory.setPath( config->readEntry("Last Opened Directory",
- KGlobalSettings::documentPath()) );
+ KGlobalSettings::documentPath()) );
+
+ QSizePolicy szPolicy(QSizePolicy::Preferred, QSizePolicy::Expanding, 2, 1);
+ if(config->hasKey("Vertical Splitter Sizes") && d->vSplitter)
+ d->vSplitter->setSizes(config->readIntListEntry("Vertical Splitter Sizes"));
+ else
+ m_canvas->setSizePolicy(szPolicy);
}
void ShowFoto::saveSettings()
@@ -470,6 +482,8 @@
config->writeEntry("Last Opened Directory", d->lastOpenedDirectory.path() );
config->writeEntry("Show Thumbnails", !d->showBarAction->isChecked());
+ if (d->vSplitter)
+ config->writeEntry("Vertical Splitter Sizes", d->vSplitter->sizes());
config->sync();
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic