Kraxy/EBN: missing Q_OBJECT
[kphotoalbum.git] / ThumbnailView / ThumbnailFacade.cpp
blob5e355c72d31ae491de575c5d767ce873208acd55
1 /* Copyright (C) 2003-2009 Jesper K. Pedersen <blackie@kde.org>
3 This program is free software; you can redistribute it and/or
4 modify it under the terms of the GNU General Public
5 License as published by the Free Software Foundation; either
6 version 2 of the License, or (at your option) any later version.
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 General Public License for more details.
13 You should have received a copy of the GNU General Public License
14 along with this program; see the file COPYING. If not, write to
15 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16 Boston, MA 02110-1301, USA.
18 #include "ThumbnailFacade.h"
19 #include "Cell.h"
20 #include "ThumbnailCache.h"
21 #include "Settings/SettingsData.h"
22 #include "ImageManager/Manager.h"
23 #include "ThumbnailToolTip.h"
24 #include "ThumbnailPainter.h"
25 #include "ThumbnailModel.h"
26 #include "CellGeometry.h"
27 #include "ThumbnailWidget.h"
29 ThumbnailView::ThumbnailFacade* ThumbnailView::ThumbnailFacade::_instance = 0;
30 ThumbnailView::ThumbnailFacade::ThumbnailFacade()
31 :_cellGeometry( new CellGeometry(this) ),
32 _model( 0 ), _thumbnailCache( 0 ),_widget( 0 ), _painter( 0 ), _toolTip( 0 )
34 // To avoid one of the components references one of the other before it has been initialized, we first construct them all with null.
35 _cellGeometry = new CellGeometry(this);
36 _thumbnailCache = new ThumbnailCache;
37 _model = new ThumbnailModel(this);
38 _widget = new ThumbnailWidget(this);
39 _painter = new ThumbnailPainter(this);
40 _toolTip = new ThumbnailToolTip( _widget );
42 connect( _widget, SIGNAL( showImage( const DB::ResultId& ) ),
43 this, SIGNAL( showImage( const DB::ResultId& ) ) );
44 connect( _widget, SIGNAL( showSelection() ),
45 this, SIGNAL( showSelection() ) );
46 connect( _widget, SIGNAL( fileIdUnderCursorChanged( const DB::ResultId& ) ),
47 this, SIGNAL( fileIdUnderCursorChanged( const DB::ResultId& ) ) );
48 connect( _widget, SIGNAL( currentDateChanged( const QDateTime& ) ),
49 this, SIGNAL( currentDateChanged( const QDateTime& ) ) );
50 connect( _model, SIGNAL( selectionChanged(int) ),
51 this, SIGNAL( selectionChanged(int) ) );
52 connect( _model, SIGNAL( collapseAllStacksEnabled(bool ) ),
53 this, SIGNAL( collapseAllStacksEnabled(bool ) ) );
54 connect( _model, SIGNAL( expandAllStacksEnabled(bool) ),
55 this, SIGNAL( expandAllStacksEnabled(bool ) ) );
57 _instance = this;
60 QWidget* ThumbnailView::ThumbnailFacade::gui()
62 return _widget;
65 void ThumbnailView::ThumbnailFacade::gotoDate( const DB::ImageDate& date, bool b)
67 _widget->gotoDate( date, b );
70 void ThumbnailView::ThumbnailFacade::setCurrentItem( const DB::ResultId& id )
72 model()->clearSelection();
73 model()->select( id );
74 model()->setCurrentItem(id);
76 Cell cell = model()->positionForMediaId( id );
77 widget()->ensureCellVisible( cell.row(), cell.col() );
80 void ThumbnailView::ThumbnailFacade::reload( bool flushCache, bool clearSelection)
82 _widget->reload( flushCache, clearSelection );
85 DB::Result ThumbnailView::ThumbnailFacade::selection(bool keepSortOrderOfDatabase) const
87 return _model->selection( keepSortOrderOfDatabase );
90 DB::Result ThumbnailView::ThumbnailFacade::imageList(Order order) const
92 return _model->imageList(order);
95 DB::ResultId ThumbnailView::ThumbnailFacade::mediaIdUnderCursor() const
97 return _widget->mediaIdUnderCursor();
100 DB::ResultId ThumbnailView::ThumbnailFacade::currentItem() const
102 return _model->currentItem();
105 void ThumbnailView::ThumbnailFacade::setImageList(const DB::Result& list)
107 _model->setImageList( list );
110 void ThumbnailView::ThumbnailFacade::setSortDirection( SortDirection direction )
112 _model->setSortDirection( direction );
115 void ThumbnailView::ThumbnailFacade::selectAll()
117 _model->selectAll();
120 void ThumbnailView::ThumbnailFacade::showToolTipsOnImages( bool on )
122 _toolTip->setActive( on );
125 void ThumbnailView::ThumbnailFacade::repaintScreen()
127 _widget->repaintScreen();
130 void ThumbnailView::ThumbnailFacade::toggleStackExpansion(const DB::ResultId& id)
132 _model->toggleStackExpansion(id);
135 void ThumbnailView::ThumbnailFacade::collapseAllStacks()
137 _model->collapseAllStacks();
140 void ThumbnailView::ThumbnailFacade::expandAllStacks()
142 _model->expandAllStacks();
145 void ThumbnailView::ThumbnailFacade::updateDisplayModel()
147 _model->updateDisplayModel();
150 void ThumbnailView::ThumbnailFacade::changeSingleSelection(const DB::ResultId& id)
152 _model->changeSingleSelection(id);
155 ThumbnailView::ThumbnailModel* ThumbnailView::ThumbnailFacade::model()
157 return _model;
160 ThumbnailView::CellGeometry* ThumbnailView::ThumbnailFacade::cellGeometry()
162 return _cellGeometry;
165 ThumbnailView::ThumbnailWidget* ThumbnailView::ThumbnailFacade::widget()
167 return _widget;
170 ThumbnailView::ThumbnailPainter* ThumbnailView::ThumbnailFacade::painter()
172 return _painter;
175 ThumbnailView::ThumbnailFacade* ThumbnailView::ThumbnailFacade::instance()
177 Q_ASSERT( _instance );
178 return _instance;
181 ThumbnailView::ThumbnailCache* ThumbnailView::ThumbnailFacade::cache()
183 return _thumbnailCache;
185 void ThumbnailView::ThumbnailFacade::slotRecreateThumbnail()
187 Q_FOREACH( const DB::ResultId& id, model()->selectionSet() ) {
188 const DB::ImageInfoPtr info = id.fetchInfo();
189 const QString fileName = info->fileName(DB::AbsolutePath);
190 ImageManager::Manager::instance()->removeThumbnail( fileName );
192 int size = Settings::SettingsData::instance()->thumbSize();
193 ImageManager::ImageRequest* request = new ImageManager::ImageRequest( fileName, QSize(size,size), info->angle(), painter() );
194 request->setPriority( ImageManager::BatchTask );
195 ImageManager::Manager::instance()->load( request );