[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/graphics/kphotoalbum
From: Jesper Pedersen <blackie () blackie ! dk>
Date: 2010-08-16 6:40:09
Message-ID: 20100816064009.ADF7CAC854 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1164158 by blackie:
Thumbnails are now correctly updated when:
* It has been rotated in the annotation dialog
* It has been rotated in the viewer
* The thumbnails size is changed in the settings dialog.
M +7 -7 AnnotationDialog/Dialog.cpp
M +3 -2 AnnotationDialog/Dialog.h
M +0 -1 ImageManager/ThumbnailCache.cpp
M +27 -36 MainWindow/Window.cpp
M +3 -5 MainWindow/Window.h
M +6 -0 Settings/SettingsDialog.cpp
M +1 -0 Settings/SettingsDialog.h
M +7 -0 Settings/ThumbnailsPage.cpp
M +1 -0 Settings/ThumbnailsPage.h
M +2 -2 ThumbnailView/ThumbnailFacade.cpp
M +1 -1 ThumbnailView/ThumbnailFacade.h
M +1 -2 ThumbnailView/ThumbnailWidget.cpp
M +1 -1 ThumbnailView/ThumbnailWidget.h
M +10 -4 Viewer/ViewerWidget.cpp
M +1 -1 Viewer/ViewerWidget.h
--- trunk/extragear/graphics/kphotoalbum/AnnotationDialog/Dialog.cpp #1164157:1164158
@@ -437,7 +437,6 @@
}
_thumbnailShouldReload = false;
- _thumbnailTextShouldReload = false;
showHelpDialog( oneAtATime ? InputSingleImageConfigMode : \
InputMultiImageConfigMode );
@@ -668,6 +667,7 @@
else {
DB::ImageInfo& info = _editList[ _current ];
info.rotate(angle);
+ _rotatedFiles.insert( info.fileName( DB::AbsolutePath ) );
}
}
@@ -676,11 +676,6 @@
return _thumbnailShouldReload;
}
-bool AnnotationDialog::Dialog::thumbnailTextShouldReload() const
-{
- return _thumbnailTextShouldReload;
-}
-
void AnnotationDialog::Dialog::slotAddTimeInfo()
{
_addTime->hide();
@@ -984,7 +979,7 @@
// I shouldn't emit changed before I've actually commited the changes, otherwise \
the listeners will act on the old data. if ( anyChanges ) {
MainWindow::DirtyIndicator::markDirty();
- _thumbnailTextShouldReload = true;
+ _thumbnailShouldReload = true;
}
QDialog::accept();
@@ -1008,4 +1003,9 @@
}
}
+Utilities::StringSet AnnotationDialog::Dialog::rotatedFiles() const
+{
+ return _rotatedFiles;
+}
+
#include "Dialog.moc"
--- trunk/extragear/graphics/kphotoalbum/AnnotationDialog/Dialog.h #1164157:1164158
@@ -18,6 +18,7 @@
#ifndef IMAGECONFIG_H
#define IMAGECONFIG_H
+#include "Utilities/Set.h"
#include "ListSelect.h"
#include "DB/ImageSearchInfo.h"
#include <qdialog.h>
@@ -73,7 +74,7 @@
int configure( DB::ImageInfoList list, bool oneAtATime );
DB::ImageSearchInfo search( DB::ImageSearchInfo* search = 0 );
bool thumbnailShouldReload() const;
- bool thumbnailTextShouldReload() const;
+ Utilities::StringSet rotatedFiles() const;
KActionCollection* actions();
protected slots:
@@ -135,7 +136,7 @@
int _accept;
QList<QDockWidget*> _dockWidgets;
bool _thumbnailShouldReload;
- bool _thumbnailTextShouldReload;
+ Utilities::StringSet _rotatedFiles;
// Widgets
QMainWindow* _dockWindow;
--- trunk/extragear/graphics/kphotoalbum/ImageManager/ThumbnailCache.cpp \
#1164157:1164158 @@ -168,7 +168,6 @@
void ImageManager::ThumbnailCache::removeThumbnail( const QString& fileName )
{
- qDebug("Removing");
m_map.remove( fileName );
save();
}
--- trunk/extragear/graphics/kphotoalbum/MainWindow/Window.cpp #1164157:1164158
@@ -168,7 +168,7 @@
_stack->addWidget( _thumbnailView->gui() );
_stack->raiseWidget( _browser );
- _optionsDialog = 0;
+ _settingsDialog = 0;
setupMenuBar();
createSarchBar();
@@ -201,10 +201,10 @@
connect( DB::ImageDB::instance(), SIGNAL( dirty() ), _dirtyIndicator, SLOT( \
markDirtySlot() ) );
connect( DB::ImageDB::instance()->categoryCollection(), SIGNAL( \
categoryCollectionChanged() ), this, SLOT( slotOptionGroupChanged() ) \
);
connect( _browser, SIGNAL( imageCount(uint)), _partial, SLOT( \
showBrowserMatches(uint) ) );
- connect( _thumbnailView, SIGNAL( selectionChanged(int) ), this, SLOT( \
slotThumbNailSelectionChanged(int) ) ); + connect( _thumbnailView, SIGNAL( \
selectionChanged(int) ), this, SLOT( updateContextMenuFromSelectionSize(int) ) );
QTimer::singleShot( 0, this, SLOT( delayedInit() ) );
- slotThumbNailSelectionChanged(0);
+ updateContextMenuFromSelectionSize(0);
// Automatically save toolbar settings
setAutoSaveSettings();
@@ -302,12 +302,13 @@
void MainWindow::Window::slotOptions()
{
- if ( ! _optionsDialog ) {
- _optionsDialog = new Settings::SettingsDialog( this );
- connect( _optionsDialog, SIGNAL( changed() ), this, SLOT( \
reloadThumbnailsAndFlushCache() ) );
- connect( _optionsDialog, SIGNAL( changed() ), this, SLOT( \
startAutoSaveTimer() ) ); + if ( ! _settingsDialog ) {
+ _settingsDialog = new Settings::SettingsDialog( this );
+ connect( _settingsDialog, SIGNAL( changed() ), this, SLOT( \
reloadThumbnails() ) ); + connect( _settingsDialog, SIGNAL( changed() ), this, \
SLOT( startAutoSaveTimer() ) ); + connect( _settingsDialog, SIGNAL( \
thumbnailSizeChanged() ), ImageManager::ThumbnailCache::instance(), SLOT( flush() ) \
); }
- _optionsDialog->show();
+ _settingsDialog->show();
}
void MainWindow::Window::slotCreateImageStack()
@@ -427,11 +428,13 @@
void MainWindow::Window::configImages( const DB::ImageInfoList& list, bool \
oneAtATime ) {
createAnnotationDialog();
- _annotationDialog->configure( list, oneAtATime );
+ if ( _annotationDialog->configure( list, oneAtATime ) == QDialog::Rejected )
+ return;
+
if ( _annotationDialog->thumbnailShouldReload() )
- reloadThumbnails(true);
- else if ( _annotationDialog->thumbnailTextShouldReload() )
- _thumbnailView->reload(false, false);
+ reloadThumbnails();
+ Q_FOREACH( const QString& fileName, _annotationDialog->rotatedFiles() )
+ ImageManager::ThumbnailCache::instance()->removeThumbnail( fileName );
}
@@ -610,7 +613,6 @@
else
viewer = new Viewer::ViewerWidget(Viewer::ViewerWidget::ViewerWindow,
&_viewerInputMacros);
- connect( viewer, SIGNAL( rotated() ), this, SLOT( \
reloadThumbnailsAndFlushCache() ) );
connect( viewer, SIGNAL( soughtTo(const DB::ResultId&) ), _thumbnailView, SLOT( \
changeSingleSelection(const DB::ResultId&) ) );
viewer->show( slideShow );
@@ -940,7 +942,7 @@
void MainWindow::Window::showThumbNails()
{
- reloadThumbnails(false);
+ reloadThumbnails();
_stack->raiseWidget( _thumbnailView->gui() );
_thumbnailView->gui()->setFocus();
updateStates( true );
@@ -1225,7 +1227,7 @@
statusBar()->showMessage( id.fetchInfo()->fileName(DB::AbsolutePath), 4000 \
); }
-void MainWindow::Window::slotThumbNailSelectionChanged(int selectionSize)
+void MainWindow::Window::updateContextMenuFromSelectionSize(int selectionSize)
{
_configAllSimultaniously->setEnabled(selectionSize > 1);
_configOneAtATime->setEnabled(selectionSize >= 1);
@@ -1250,7 +1252,6 @@
ImageManager::ThumbnailCache::instance()->removeThumbnail( \
info->fileName( DB::AbsolutePath) ); }
_dirtyIndicator->markDirty();
- reloadThumbnailsAfterRotation();
}
}
@@ -1264,22 +1265,12 @@
rotateSelected( 90 );
}
-void MainWindow::Window::reloadThumbnails(bool flushCache)
+void MainWindow::Window::reloadThumbnails()
{
- _thumbnailView->reload( flushCache );
- slotThumbNailSelectionChanged( _thumbnailView->selection().size() );
+ _thumbnailView->reload();
+ updateContextMenuFromSelectionSize( _thumbnailView->selection().size() );
}
-void MainWindow::Window::reloadThumbnailsAndFlushCache()
-{
- reloadThumbnails(true);
-}
-
-void MainWindow::Window::reloadThumbnailsAfterRotation()
-{
- _thumbnailView->reload( true, false );
-}
-
void MainWindow::Window::slotUpdateViewMenu( DB::Category::ViewType type )
{
if ( type == DB::Category::TreeView )
@@ -1506,7 +1497,7 @@
ImageManager::ThumbnailCache::instance()->removeThumbnail( (*it).path() );
}
_dirtyIndicator->markDirty();
- reloadThumbnails(true);
+ reloadThumbnails();
}
DB::ImageSearchInfo MainWindow::Window::currentContext()
@@ -1610,14 +1601,14 @@
{
DB::ImageDB::instance()->setDateRange( range, _dateBar->includeFuzzyCounts() );
_browser->reload();
- reloadThumbnails(false);
+ reloadThumbnails();
}
void MainWindow::Window::clearDateRange()
{
DB::ImageDB::instance()->clearDateRange();
_browser->reload();
- reloadThumbnails(false);
+ reloadThumbnails();
}
void MainWindow::Window::showThumbNails(const DB::Result& items)
@@ -1645,10 +1636,10 @@
"Do you want to do this now?"));
if (ret != KMessageBox::Yes)
return;
- if (!_optionsDialog)
- _optionsDialog = new Settings::SettingsDialog(this);
- _optionsDialog->showBackendPage();
- ret = _optionsDialog->exec();
+ if (!_settingsDialog)
+ _settingsDialog = new Settings::SettingsDialog(this);
+ _settingsDialog->showBackendPage();
+ ret = _settingsDialog->exec();
if (ret != Settings::SettingsDialog::Accepted)
return;
}
--- trunk/extragear/graphics/kphotoalbum/MainWindow/Window.h #1164157:1164158
@@ -112,10 +112,8 @@
void changePassword();
void slotConfigureKeyBindings();
void slotSetFileName( const DB::ResultId& );
- void slotThumbNailSelectionChanged(int selectionSize);
- void reloadThumbnails(bool flushCache);
- void reloadThumbnailsAndFlushCache();
- void reloadThumbnailsAfterRotation();
+ void updateContextMenuFromSelectionSize(int selectionSize);
+ void reloadThumbnails();
void slotUpdateViewMenu( DB::Category::ViewType );
void slotShowNotOnDisk();
void slotBuildThumbnails();
@@ -179,7 +177,7 @@
static Window* _instance;
ThumbnailView::ThumbnailFacade* _thumbnailView;
- Settings::SettingsDialog* _optionsDialog;
+ Settings::SettingsDialog* _settingsDialog;
QPointer<AnnotationDialog::Dialog> _annotationDialog;
Q3WidgetStack* _stack;
QWidget* _welcome;
--- trunk/extragear/graphics/kphotoalbum/Settings/SettingsDialog.cpp #1164157:1164158
@@ -132,6 +132,12 @@
{
Utilities::ShowBusyCursor dummy;
Settings::SettingsData* opt = Settings::SettingsData::instance();
+
+ // Must be before I save to the backend.
+ if ( _thumbnailsPage->thumbnailSizeChanged(opt) )
+ emit thumbnailSizeChanged();
+
+
_generalPage->saveSettings( opt );
_fileVersionDetectionPage->saveSettings( opt );
_thumbnailsPage->saveSettings(opt);
--- trunk/extragear/graphics/kphotoalbum/Settings/SettingsDialog.h #1164157:1164158
@@ -50,6 +50,7 @@
signals:
void changed();
+ void thumbnailSizeChanged();
protected slots:
void slotMyOK();
--- trunk/extragear/graphics/kphotoalbum/Settings/ThumbnailsPage.cpp #1164157:1164158
@@ -43,6 +43,7 @@
lay->addWidget( _thumbnailAspectRatio, row, 1 );
// Thumbnail Format
+ // PENDING(blackie) This is not used anymore and should go away.
++row;
QLabel* thumbnailFormatLabel = new QLabel( i18n("Thumbnail format") );
_thumbnailFormat = new KComboBox( this );
@@ -92,6 +93,7 @@
lay->addWidget( _autoShowThumbnailView, row, 1 );
// Thumbnail Cache
+ // PENDING(blackie) This is not used anymore and should go away
++row;
QLabel* cacheLabel = new QLabel( i18n( "Thumbnail screen cache:" ), this );
_thumbnailCacheScreens = new QSpinBox;
@@ -194,4 +196,9 @@
_thumbnailCacheScreens->setSuffix( ki18ncp("Thumbnail Cache Screens", " Screen", \
" Screens").subs(value).toString()); }
+bool Settings::ThumbnailsPage::thumbnailSizeChanged( Settings::SettingsData* opt ) \
const +{
+ return _thumbnailSize->value() != opt->thumbSize();
+}
+
--- trunk/extragear/graphics/kphotoalbum/Settings/ThumbnailsPage.h #1164157:1164158
@@ -18,6 +18,7 @@
ThumbnailsPage( QWidget* parent );
void loadSettings( Settings::SettingsData* );
void saveSettings( Settings::SettingsData* );
+ bool thumbnailSizeChanged( Settings::SettingsData* opt ) const;
private slots:
void thumbnailCacheScreenChanged(int);
--- trunk/extragear/graphics/kphotoalbum/ThumbnailView/ThumbnailFacade.cpp \
#1164157:1164158 @@ -68,9 +68,9 @@
widget()->setCurrentItem( id );
}
-void ThumbnailView::ThumbnailFacade::reload( bool flushCache, bool clearSelection)
+void ThumbnailView::ThumbnailFacade::reload( bool clearSelection)
{
- _widget->reload( flushCache, clearSelection );
+ _widget->reload( clearSelection );
}
DB::Result ThumbnailView::ThumbnailFacade::selection() const
--- trunk/extragear/graphics/kphotoalbum/ThumbnailView/ThumbnailFacade.h \
#1164157:1164158 @@ -35,7 +35,7 @@
ThumbnailFacade();
QWidget* gui();
void setCurrentItem( const DB::ResultId& id );
- void reload( bool flushCache, bool clearSelection=true );
+ void reload( bool clearSelection=true );
DB::Result selection() const;
DB::Result imageList(Order) const;
DB::ResultId mediaIdUnderCursor() const;
--- trunk/extragear/graphics/kphotoalbum/ThumbnailView/ThumbnailWidget.cpp \
#1164157:1164158 @@ -265,9 +265,8 @@
}
-void ThumbnailView::ThumbnailWidget::reload(bool flushCache, bool clearSelection)
+void ThumbnailView::ThumbnailWidget::reload(bool clearSelection)
{
- // PENDING(blackie) no more need for flushcache option?
if ( clearSelection )
this->clearSelection();
--- trunk/extragear/graphics/kphotoalbum/ThumbnailView/ThumbnailWidget.h \
#1164157:1164158 @@ -46,7 +46,7 @@
public:
ThumbnailWidget( ThumbnailFactory* factory );
- void reload( bool flushCache, bool clearSelection=true );
+ void reload( bool clearSelection=true );
DB::ResultId mediaIdUnderCursor() const;
QModelIndex indexUnderCursor() const;
--- trunk/extragear/graphics/kphotoalbum/Viewer/ViewerWidget.cpp #1164157:1164158
@@ -16,6 +16,7 @@
Boston, MA 02110-1301, USA.
*/
+#include "ViewerWidget.h"
#include <config-kpa-exiv2.h>
#include <kdeversion.h>
@@ -42,7 +43,7 @@
#include "InfoBox.h"
#include "VideoDisplay.h"
#include "MainWindow/DirtyIndicator.h"
-#include "ViewerWidget.h"
+#include "ImageManager/ThumbnailCache.h"
#include <KMessageBox>
#include "VisibleOptionsMenu.h"
#include <qglobal.h>
@@ -608,21 +609,21 @@
{
currentInfo()->rotate( 90 );
load();
- emit rotated();
+ invalidateThumbnail();
}
void Viewer::ViewerWidget::rotate180()
{
currentInfo()->rotate( 180 );
load();
- emit rotated();
+ invalidateThumbnail();
}
void Viewer::ViewerWidget::rotate270()
{
currentInfo()->rotate( 270 );
load();
- emit rotated();
+ invalidateThumbnail();
}
void Viewer::ViewerWidget::showFirst()
@@ -1390,4 +1391,9 @@
_videoDisplay->stop();
}
+void Viewer::ViewerWidget::invalidateThumbnail() const
+{
+ ImageManager::ThumbnailCache::instance()->removeThumbnail( \
currentInfo()->fileName( DB::AbsolutePath ) ); +}
+
#include "ViewerWidget.moc"
--- trunk/extragear/graphics/kphotoalbum/Viewer/ViewerWidget.h #1164157:1164158
@@ -73,7 +73,6 @@
void stopPlayback();
signals:
- void rotated();
void soughtTo( const DB::ResultId& id );
protected:
@@ -107,6 +106,7 @@
void showNextN(int);
void showPrevN(int);
int find_tag_in_list(const QStringList &list, QString &namefound);
+ void invalidateThumbnail() const;
protected slots:
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic