AlbumShaper
1.0a3
|
Displays subalbum layout. More...
#include <subalbumWidget.h>
Signals | |
void | selectedPhotoStateChanged () |
Public Member Functions | |
SubalbumWidget (Subalbum *salbum, QWidget *parent=0, const char *name=0) | |
Creates layout based on backend object. | |
void | setSubalbum (Subalbum *salbum) |
Resets the subalbum this subalbum widget is displaying. | |
void | refreshPhotos () |
clears and reinserts all photos for the current collection the current selection is cleared | |
void | refreshAllPhotos () |
refreshes all photos, selections are preserved | |
void | refreshSelectedPhotos () |
refreshes selected photos, selections are preserved | |
Subalbum * | getSubalbum () |
returns a pointer to the backend subalbum | |
Photo * | getSelectedPhoto () |
Returns currently selected photo. If no or multiple photos selected returns NULL. | |
void | setSelectedPhoto (Photo *selection) |
Sets the selected photo to selection and ensures it is visible. | |
Photo * | getFirstSelectedPhoto () |
Returns first selected photo. | |
bool | anyPhotosSelected () |
Returns true if any phtos are selected. | |
bool | anySelectedPhotosRevertable () |
Returns true if any selected photos are revertable. | |
QIconView * | getPhotos () |
Returns pointer to icon view. | |
void | updateButtons (bool enable) |
Activates/Deactives remove/rotate buttons. | |
void | stripDescriptionsFromSelectedPhotos () |
Strip descriptions from selected photos. | |
void | revertSelectedPhotos () |
Revert selected photos to their original form. | |
Protected Member Functions | |
void | resizeEvent (QResizeEvent *) |
Private Slots | |
void | setWallpaperAction () |
set desktop wallpaper | |
void | selectionChangedEvent () |
handles changing selections | |
void | updateButtons () |
Activates/Deactives remove/rotate buttons depending on if an image is selected. | |
void | addImageAction () |
Adds an image to the subalbum. | |
void | addImageAction (QStringList fileNames, bool setDescriptions=false) |
void | removeImageAction () |
Remove an image from the subalbum. | |
void | rotate90ImageAction () |
Rotate clockwise selected images. | |
void | rotate270ImageAction () |
Rotate counter-clockwise selected images. | |
void | reorder () |
void | deselectAll () |
Private Attributes | |
QGridLayout * | mainGrid |
Grids widgets are placed in. | |
QGridLayout * | buttonsGrid |
QFrame * | thumbnailFrame |
Grid lower buttons are placed in. | |
QFrame * | buttonsFrame |
PhotosIconView * | photos |
Photos layout. | |
Subalbum * | subalbum |
Pointer to backend subalbum. | |
QToolButton * | addImage |
"Add" button | |
QToolButton * | removeImage |
"Remove" button | |
QToolButton * | rotate90Image |
"Rotate 90" button | |
QToolButton * | rotate270Image |
"Rotate 270" button | |
QToolButton * | setDesktopBtn |
Set desktop wallpaper button. | |
LayoutWidget * | layout |
Pointer to the parent layout widget. | |
bool | buttonsState |
cached enabled/disabled state of buttons | |
bool | wallpaperButtonState |
cached enabled/distable state of set wallpaper button |
Displays subalbum layout.
Definition at line 35 of file subalbumWidget.h.
Creates layout based on backend object.
Definition at line 49 of file subalbumWidget.cpp.
References addImage, addImageAction(), buttonsFrame, buttonsGrid, deselectAll(), IMAGE_PATH, layout, mainGrid, photos, removeImage, removeImageAction(), reorder(), rotate270Image, rotate270ImageAction(), rotate90Image, rotate90ImageAction(), selectionChangedEvent(), setDesktopBtn, setWallpaperAction(), setWallpaperSupported(), and subalbum.
: QWidget(parent,name) { setWFlags(WNoAutoErase); //store subalbum pointer subalbum = salbum; //store layout pointer layout = (LayoutWidget*)parent; //create photo collection photos = new PhotosIconView( this ); //establish a top-down view such that the scrollbar is always placed on the right photos->setArrangement( QIconView::LeftToRight ); photos->setVScrollBarMode( QScrollView::Auto ); //allow multiple photos to be selected with control and shift keys photos->setSelectionMode( QIconView::Extended ) ; //set auto-scroll on for drag-n-drop photos->setDragAutoScroll(true); photos->setAcceptDrops(true); //connect selectionChanged signal to update buttons method connect( photos, SIGNAL(selectionChanged()), this, SLOT( selectionChangedEvent()) ); //connect rightButtonClicked signal to update buttons method connect( photos, SIGNAL(rightButtonClicked(QIconViewItem*, const QPoint&)), this, SLOT(selectionChangedEvent()) ); //connect itemhasMoved signal on iconview to reorder slot (phots have been rearranged) connect( photos, SIGNAL(itemHasMoved()), SLOT(reorder()) ); //connect addPhtos signal from iconview to actually add photos from disk (Drop from outside target, ie konqueror) connect( photos, SIGNAL(addPhotos(QStringList)), SLOT(addImageAction(QStringList)) ); //connect keyevent signals from iconview connect( photos, SIGNAL(removeSelectedPhotos()), SLOT(removeImageAction()) ); connect( photos, SIGNAL(rotate90SelectedPhotos()), SLOT(rotate90ImageAction()) ); connect( photos, SIGNAL(rotate270SelectedPhotos()), SLOT(rotate270ImageAction()) ); //connect key e press signal to edit slot connect( photos, SIGNAL(editSelectedPhoto()), layout, SLOT(editSelectedPhoto()) ); //connect double click signal to edit slot connect( photos, SIGNAL( doubleClicked(QIconViewItem*) ), layout, SLOT(editSelectedPhoto()) ); //create all buttons buttonsFrame = new QFrame(this); if(subalbum == NULL) buttonsFrame->hide(); QFont buttonFont( qApp->font() ); buttonFont.setBold(true); buttonFont.setPointSize( 11 ); addImage = new QToolButton( buttonsFrame ); addImage->setTextLabel(tr("Add Photo")); addImage->setIconSet( QPixmap(QString(IMAGE_PATH)+"buttonIcons/add.png") ); addImage->setTextPosition(QToolButton::Right); addImage->setFont( buttonFont ); addImage->setUsesTextLabel( true ); addImage->setEnabled( true ); QToolTip::add( addImage, tr("Add photos to selected collection") ); connect( addImage, SIGNAL(clicked()), SLOT(addImageAction()) ); removeImage = new QToolButton( buttonsFrame ); removeImage->setTextLabel(tr("Remove Photo")); removeImage->setIconSet( QPixmap(QString(IMAGE_PATH)+"buttonIcons/remove.png") ); removeImage->setTextPosition(QToolButton::Right); removeImage->setFont( buttonFont ); removeImage->setUsesTextLabel( true ); removeImage->setEnabled( true ); QToolTip::add( removeImage, tr("Remove selected photos from collection") ); connect( removeImage, SIGNAL(clicked()), SLOT(removeImageAction()) ); rotate90Image = new QToolButton( buttonsFrame ); rotate90Image->setTextLabel(tr("Rotate Right") ); QIconSet rotate90Icon; rotate90Icon.setPixmap( QString(IMAGE_PATH)+"buttonIcons/rotate90.png", QIconSet::Automatic, QIconSet::Normal ); rotate90Icon.setPixmap( QString(IMAGE_PATH)+"buttonIcons/rotate90_disabled.png", QIconSet::Automatic, QIconSet::Disabled ); rotate90Image->setIconSet( rotate90Icon ); rotate90Image->setTextPosition(QToolButton::Right); rotate90Image->setFont( buttonFont ); rotate90Image->setUsesTextLabel( true ); QToolTip::add( rotate90Image, tr("Rotate selected photos clockwise") ); connect( rotate90Image, SIGNAL(clicked()), SLOT(rotate90ImageAction()) ); rotate270Image = new QToolButton( buttonsFrame ); rotate270Image->setTextLabel(tr("Rotate Left") ); QIconSet rotate270Icon; rotate270Icon.setPixmap( QString(IMAGE_PATH)+"buttonIcons/rotate270.png", QIconSet::Automatic, QIconSet::Normal ); rotate270Icon.setPixmap( QString(IMAGE_PATH)+"buttonIcons/rotate270_disabled.png", QIconSet::Automatic, QIconSet::Disabled ); rotate270Image->setIconSet( rotate270Icon ); rotate270Image->setTextPosition(QToolButton::Right); rotate270Image->setFont( buttonFont ); rotate270Image->setUsesTextLabel( true ); QToolTip::add( rotate270Image, tr("Rotate selected photos counterclockwise") ); connect( rotate270Image, SIGNAL(clicked()), SLOT(rotate270ImageAction()) ); //place all items in grid layout buttonsGrid = new QGridLayout( buttonsFrame, 1, 7, 0 ); buttonsGrid->addWidget( addImage, 0, 1, Qt::AlignLeft ); buttonsGrid->addWidget( removeImage, 0, 2, Qt::AlignLeft ); buttonsGrid->addWidget( rotate90Image, 0, 3, Qt::AlignLeft ); buttonsGrid->addWidget( rotate270Image, 0, 4, Qt::AlignLeft ); buttonsGrid->setColStretch( 0, 1 ); buttonsGrid->setColStretch( 6, 1 ); //If setting the desktop wallpaper is supported on this system then add this button as well if( setWallpaperSupported() ) { setDesktopBtn = new QToolButton( buttonsFrame ); setDesktopBtn->setUsesTextLabel( true ); setDesktopBtn->setTextLabel(tr("Wallpaper") ); QIconSet setDesktopIcon; setDesktopIcon.setPixmap( QString(IMAGE_PATH)+"buttonIcons/setDesktopWallpaper.png", QIconSet::Automatic, QIconSet::Normal ); setDesktopIcon.setPixmap( QString(IMAGE_PATH)+"buttonIcons/setDesktopWallpaper_disabled.png", QIconSet::Automatic, QIconSet::Disabled ); setDesktopBtn->setIconSet( setDesktopIcon ); setDesktopBtn->setTextPosition(QToolButton::Right); setDesktopBtn->setFont( buttonFont ); setDesktopBtn->setUsesTextLabel( true ); QToolTip::add( setDesktopBtn, tr("Set desktop wallpaper to selected photo") ); connect( setDesktopBtn, SIGNAL( clicked() ), this, SLOT( setWallpaperAction() ) ); buttonsGrid->addWidget( setDesktopBtn, 0, 5, Qt::AlignLeft ); } else { setDesktopBtn = NULL; } mainGrid = new QGridLayout( this, 2, 1, 0 ); mainGrid->addMultiCellWidget( photos, 0, 0, 0, 1 ); mainGrid->addMultiCellWidget( buttonsFrame, 1, 1, 0, 1 ); mainGrid->setRowStretch( 0, 1 ); //set the background of the widget to be light blue setPaletteBackgroundColor( QColor(193, 210, 238) ); //by default no selected images so disable all buttons besides add removeImage->setEnabled(false); rotate90Image->setEnabled(false); rotate270Image->setEnabled(false); //hook-up keyboard shortcut for deselecting all photos //iconview provides select all shortcut for us QAccel *keyAccel = new QAccel( this ); keyAccel->connectItem( keyAccel->insertItem( CTRL + SHIFT + Key_A ), this, SLOT(deselectAll()) ); }
void SubalbumWidget::addImageAction | ( | ) | [private, slot] |
Adds an image to the subalbum.
Definition at line 236 of file subalbumWidget.cpp.
References AddPhotosDialog::getFilenames(), Configuration::getString(), Configuration::resetSetting(), and Configuration::setString().
Referenced by SubalbumWidget().
{ //--------------- //get file list Configuration* config = ((Window*)qApp->mainWidget())->getConfig(); QString path = config->getString( "loadSave", "addPhotoDir" ); QDir testPath(path); if(!testPath.exists()) { config->resetSetting( "loadSave", "addPhotoDir" ); path = config->getString( "loadSave", "addPhotoDir" ); } AddPhotosDialog* fileDialog = new AddPhotosDialog( path ); bool setDescriptions; QStringList fileNames = fileDialog->getFilenames( setDescriptions ); if(!fileNames.empty()) { //store this addPhoto location QDir lastDir = QDir( QFileInfo(*fileNames.begin()).dirPath() ); config->setString( "loadSave", "addPhotoDir", lastDir.path() ); addImageAction( fileNames, setDescriptions ); } }
void SubalbumWidget::addImageAction | ( | QStringList | fileNames, |
bool | setDescriptions = false |
||
) | [private, slot] |
Definition at line 263 of file subalbumWidget.cpp.
References Subalbum::addPhoto(), Subalbum::getLast(), Window::getStatus(), LayoutWidget::getSubalbums(), Window::getTitle(), LayoutWidget::getWindow(), layout, photos, TitleWidget::setBusy(), StatusWidget::setStatus(), StatusWidget::showProgressBar(), subalbum, SubalbumsWidget::updateButtons(), updateButtons(), TitleWidget::updateMenus(), and StatusWidget::updateProgress().
{ if(fileNames.empty()) return; //--------------- //set busy flag and deactivate menu's/buttons, and selecting photos layout->getWindow()->getTitle()->setBusy(true); layout->getSubalbums()->updateButtons(false); updateButtons(false); photos->setSelectionMode( QIconView::NoSelection ) ; qApp->setOverrideCursor( QCursor(Qt::WaitCursor)); //setup progress bar QString statusMessage = tr("Adding %1 photos:"); layout->getWindow()->getStatus()->showProgressBar( statusMessage.arg(fileNames.count()), fileNames.count() ); qApp->processEvents(); //iterate through each file and add to album QStringList::iterator it; int num=0; for(it = fileNames.begin(); it != fileNames.end(); it++ ) { //update status message layout->getWindow()->getStatus()->updateProgress( num, statusMessage.arg(fileNames.count() - num) ); //if item is a file, add photo if(QFileInfo(*it).isFile() && subalbum->addPhoto(*it, setDescriptions)) { PhotoPreviewWidget* p = new PhotoPreviewWidget( photos, subalbum->getLast() ); photos->ensureItemVisible(p); } num++; qApp->processEvents(); } photos->arrangeItemsInGrid(); //remove progress bar layout->getWindow()->getStatus()->setStatus( tr("Adding photos complete.") ); //notifty title widget that the album's photo count has possible changed layout->getWindow()->getTitle()->updateMenus(); //unset busy flag and activate menu's/buttons layout->getWindow()->getTitle()->setBusy(false); layout->getSubalbums()->updateButtons(true); updateButtons(true); photos->setSelectionMode( QIconView::Extended ) ; qApp->restoreOverrideCursor(); }
bool SubalbumWidget::anyPhotosSelected | ( | ) |
Returns true if any phtos are selected.
Definition at line 653 of file subalbumWidget.cpp.
References photos.
Referenced by LayoutWidget::photoStateChangedEvent(), and TitleWidget::removeSelectedPhotoDesc().
{ QIconViewItem* current = photos->firstItem(); while(current != NULL) { if(current->isSelected()) return true; current = current->nextItem(); } return false; }
bool SubalbumWidget::anySelectedPhotosRevertable | ( | ) |
Returns true if any selected photos are revertable.
Definition at line 665 of file subalbumWidget.cpp.
References photos.
Referenced by LayoutWidget::photoStateChangedEvent().
{ QIconViewItem* current = photos->firstItem(); while(current != NULL) { if(current->isSelected()) { if( ((PhotoPreviewWidget*)current)->getPhoto()->revertPossible() ) return true; } current = current->nextItem(); } return false; }
void SubalbumWidget::deselectAll | ( | ) | [private, slot] |
Definition at line 779 of file subalbumWidget.cpp.
References photos.
Referenced by SubalbumWidget().
{ photos->selectAll(false); }
Photo * SubalbumWidget::getFirstSelectedPhoto | ( | ) |
Returns first selected photo.
Definition at line 612 of file subalbumWidget.cpp.
References photos.
Referenced by LayoutWidget::tabChanged().
{ //determine if one photo is selected QIconViewItem* current = photos->firstItem(); while(current != NULL) { //found a selected item! if(current->isSelected()) { return ((PhotoPreviewWidget*)current)->getPhoto(); } //move to next item current = current->nextItem(); } //no selected items found return NULL; }
QIconView * SubalbumWidget::getPhotos | ( | ) |
Returns pointer to icon view.
Definition at line 685 of file subalbumWidget.cpp.
References photos.
Referenced by TitleWidget::dropEvent(), and SubalbumPreviewWidget::dropped().
{ return photos; }
Photo * SubalbumWidget::getSelectedPhoto | ( | ) |
Returns currently selected photo. If no or multiple photos selected returns NULL.
Definition at line 585 of file subalbumWidget.cpp.
References photos.
Referenced by TitleWidget::setAlbumImage(), TitleWidget::setSubalbumImage(), and setWallpaperAction().
{ //determine if one photo is selected int numSelected = 0; QIconViewItem* current = photos->firstItem(); QIconViewItem* selected = NULL; while(current != NULL) { //found a selected item! if(current->isSelected()) { numSelected++; selected = current; } //if more than one found then bail! if(numSelected > 1) return NULL; //move to next item current = current->nextItem(); } //if one item is selected then return photo pointer if(numSelected == 1) { return ((PhotoPreviewWidget*)selected)->getPhoto(); } else { return NULL; } }
Subalbum * SubalbumWidget::getSubalbum | ( | ) |
returns a pointer to the backend subalbum
Definition at line 580 of file subalbumWidget.cpp.
References subalbum.
Referenced by SubalbumPreviewWidget::dropped(), TitleWidget::setSubalbumImage(), and LayoutWidget::tabChanged().
{ return subalbum; }
void SubalbumWidget::refreshAllPhotos | ( | ) |
refreshes all photos, selections are preserved
Definition at line 535 of file subalbumWidget.cpp.
References photos.
Referenced by LayoutWidget::tabChanged().
{ QIconViewItem* current = photos->firstItem(); while(current != NULL) { ((PhotoPreviewWidget*)current)->updateImage(); ((PhotoPreviewWidget*)current)->updateDescription(); current = current->nextItem(); } }
void SubalbumWidget::refreshPhotos | ( | ) |
clears and reinserts all photos for the current collection the current selection is cleared
Definition at line 516 of file subalbumWidget.cpp.
References Subalbum::getFirst(), Photo::getNext(), photos, and subalbum.
Referenced by setSubalbum().
void SubalbumWidget::refreshSelectedPhotos | ( | ) |
refreshes selected photos, selections are preserved
Definition at line 546 of file subalbumWidget.cpp.
References photos.
{ QIconViewItem* current = photos->firstItem(); while(current != NULL) { //found a selected item! if(current->isSelected()) { ((PhotoPreviewWidget*)current)->updateImage(); ((PhotoPreviewWidget*)current)->updateDescription(); } //move to next item current = current->nextItem(); } }
void SubalbumWidget::removeImageAction | ( | ) | [private, slot] |
Remove an image from the subalbum.
Definition at line 317 of file subalbumWidget.cpp.
References LayoutWidget::getSubalbums(), Window::getTitle(), LayoutWidget::getWindow(), layout, photos, Subalbum::removePhoto(), selectionChangedEvent(), TitleWidget::setBusy(), subalbum, SubalbumsWidget::updateButtons(), and updateButtons().
Referenced by SubalbumWidget().
{ //set busy flag and deactivate menu's/buttons layout->getWindow()->getTitle()->setBusy(true); layout->getSubalbums()->updateButtons(false); updateButtons(false); photos->setSelectionMode( QIconView::NoSelection ) ; //if user has chosen to not receive destructive action warnings, or agrees to the action, then //delete photo and refresh view bool proceed = !((Window*)qApp->mainWidget())->getConfig()->getBool( "alerts", "showDestructiveAlerts" ); if(!proceed) { QuestionDialog sure( tr("Remove selected photos?"), tr("Once removed photos cannot be restored. Furthermore upon resaving they are physically removed from your album."), "alertIcons/warning.png", this ); proceed = sure.exec(); } if(proceed) { qApp->setOverrideCursor( QCursor(Qt::WaitCursor)); //iterate through all photos and remove those that are selected QIconViewItem* current = photos->firstItem(); QIconViewItem* temp; while(current != NULL) { //if not selected move on if(!current->isSelected()) { current = current->nextItem(); continue; } //get next pointer temp = current->nextItem(); //grab point to backend photo Photo* phto = ((PhotoPreviewWidget*)current)->getPhoto(); //delete photo widget delete current; current = temp; //delete backend photo subalbum->removePhoto(phto); } //cleanup arrangement in case items were deleted in the middle or front photos->arrangeItemsInGrid(); //unset busy flag and activate menu's/buttons qApp->restoreOverrideCursor(); } layout->getWindow()->getTitle()->setBusy(false); layout->getSubalbums()->updateButtons(true); updateButtons(true); photos->setSelectionMode( QIconView::Extended ) ; //update buttons and emit selection changed signal selectionChangedEvent(); }
void SubalbumWidget::reorder | ( | ) | [private, slot] |
Definition at line 690 of file subalbumWidget.cpp.
References photos, subalbum, and Subalbum::syncPhotoList().
Referenced by SubalbumWidget().
{ //so item has been moved, reorder linked list of items as necessary photos->sort( true ); photos->arrangeItemsInGrid(); //sync lists subalbum->syncPhotoList((PhotoPreviewWidget*)photos->firstItem()); }
void SubalbumWidget::resizeEvent | ( | QResizeEvent * | ) | [protected] |
Definition at line 680 of file subalbumWidget.cpp.
References photos.
{ photos->arrangeItemsInGrid(); }
void SubalbumWidget::revertSelectedPhotos | ( | ) |
Revert selected photos to their original form.
Definition at line 382 of file subalbumWidget.cpp.
References photos, and selectedPhotoStateChanged().
Referenced by LayoutWidget::revertPhotos().
{ //iterate over photos in current collection QIconViewItem* current = photos->firstItem(); while(current != NULL) { //found a selected item! if(current->isSelected()) { ((PhotoPreviewWidget*)current)->getPhoto()->revertPhoto(); photos->ensureItemVisible(((PhotoPreviewWidget*)current)); ((PhotoPreviewWidget*)current)->updateImage(); qApp->processEvents(); } //move to next item current = current->nextItem(); } //state of selected photos has changed emit selectedPhotoStateChanged(); }
void SubalbumWidget::rotate270ImageAction | ( | ) | [private, slot] |
Rotate counter-clockwise selected images.
Definition at line 466 of file subalbumWidget.cpp.
References Window::getStatus(), LayoutWidget::getSubalbums(), Window::getTitle(), LayoutWidget::getWindow(), layout, PhotosIconView::numSelected(), photos, selectedPhotoStateChanged(), TitleWidget::setBusy(), StatusWidget::setStatus(), StatusWidget::showProgressBar(), SubalbumsWidget::updateButtons(), updateButtons(), and StatusWidget::updateProgress().
Referenced by SubalbumWidget().
{ //set busy flag and deactivate menu's/buttons qApp->setOverrideCursor( QCursor(Qt::WaitCursor)); layout->getWindow()->getTitle()->setBusy(true); layout->getSubalbums()->updateButtons(false); photos->setSelectionMode( QIconView::NoSelection ) ; updateButtons(false); //setup progress bar QString statusMessage = tr("Rotating %1 photos:"); layout->getWindow()->getStatus()->showProgressBar( statusMessage.arg(photos->numSelected()), photos->numSelected() ); qApp->processEvents(); //rotate the selected photos int num = 0; QIconViewItem* current = photos->firstItem(); while(current != NULL) { if(current->isSelected()) { //update status message layout->getWindow()->getStatus()->updateProgress( num, statusMessage.arg(photos->numSelected() - num) ); ((PhotoPreviewWidget*)current)->getPhoto()->rotate270(); photos->ensureItemVisible(((PhotoPreviewWidget*)current)); ((PhotoPreviewWidget*)current)->updateImage(); num++; layout->getWindow()->getStatus()->updateProgress( num ); qApp->processEvents(); } //move to next item current = current->nextItem(); } //state of selected photos has changed emit selectedPhotoStateChanged(); //hide progress bar layout->getWindow()->getStatus()->setStatus( tr("Rotating complete.") ); //not busy any more layout->getWindow()->getTitle()->setBusy(false); layout->getSubalbums()->updateButtons(true); updateButtons(true); photos->setSelectionMode( QIconView::Extended ) ; qApp->restoreOverrideCursor(); }
void SubalbumWidget::rotate90ImageAction | ( | ) | [private, slot] |
Rotate clockwise selected images.
Definition at line 415 of file subalbumWidget.cpp.
References Window::getStatus(), LayoutWidget::getSubalbums(), Window::getTitle(), LayoutWidget::getWindow(), layout, PhotosIconView::numSelected(), photos, selectedPhotoStateChanged(), TitleWidget::setBusy(), StatusWidget::setStatus(), StatusWidget::showProgressBar(), SubalbumsWidget::updateButtons(), updateButtons(), and StatusWidget::updateProgress().
Referenced by SubalbumWidget().
{ //set busy flag and deactivate menu's/buttons qApp->setOverrideCursor( QCursor(Qt::WaitCursor)); layout->getWindow()->getTitle()->setBusy(true); layout->getSubalbums()->updateButtons(false); photos->setSelectionMode( QIconView::NoSelection ) ; updateButtons(false); //setup progress bar QString statusMessage = tr("Rotating %1 photos:"); layout->getWindow()->getStatus()->showProgressBar( statusMessage.arg(photos->numSelected()), photos->numSelected() ); qApp->processEvents(); //rotate the selected photos int num = 0; QIconViewItem* current = photos->firstItem(); while(current != NULL) { if(current->isSelected()) { //update status message layout->getWindow()->getStatus()->updateProgress( num, statusMessage.arg(photos->numSelected() - num) ); ((PhotoPreviewWidget*)current)->getPhoto()->rotate90(); photos->ensureItemVisible(((PhotoPreviewWidget*)current)); ((PhotoPreviewWidget*)current)->updateImage(); num++; layout->getWindow()->getStatus()->updateProgress( num ); qApp->processEvents(); } //move to next item current = current->nextItem(); } //state of selected photos has changed emit selectedPhotoStateChanged(); //hide progress bar layout->getWindow()->getStatus()->setStatus( tr("Rotating complete.") ); //not busy any more layout->getWindow()->getTitle()->setBusy(false); layout->getSubalbums()->updateButtons(true); updateButtons(true); photos->setSelectionMode( QIconView::Extended ) ; qApp->restoreOverrideCursor(); }
void SubalbumWidget::selectedPhotoStateChanged | ( | ) | [signal] |
Referenced by revertSelectedPhotos(), rotate270ImageAction(), rotate90ImageAction(), and selectionChangedEvent().
void SubalbumWidget::selectionChangedEvent | ( | ) | [private, slot] |
handles changing selections
Definition at line 700 of file subalbumWidget.cpp.
References selectedPhotoStateChanged(), and updateButtons().
Referenced by removeImageAction(), setSubalbum(), and SubalbumWidget().
{ //update rotate/add/remove buttons depending on whether or not any items are selected updateButtons(); //emit selection changed signal so other menu's etc an be updated as well emit selectedPhotoStateChanged(); }
void SubalbumWidget::setSelectedPhoto | ( | Photo * | selection | ) |
Sets the selected photo to selection and ensures it is visible.
Definition at line 630 of file subalbumWidget.cpp.
References photos.
Referenced by LayoutWidget::tabChanged().
{ //select specified photo QIconViewItem* current = photos->firstItem(); while(current != NULL) { if( ((PhotoPreviewWidget*)current)->getPhoto() == selection ) { //deselect all photos->selectAll(false); //select photo and make sure it is visible current->setSelected(true); photos->ensureItemVisible( current ); return; } //move on to next photo current = current->nextItem(); } }
void SubalbumWidget::setSubalbum | ( | Subalbum * | salbum | ) |
Resets the subalbum this subalbum widget is displaying.
Definition at line 219 of file subalbumWidget.cpp.
References buttonsFrame, refreshPhotos(), selectionChangedEvent(), and subalbum.
Referenced by TitleWidget::loadAlbum(), TitleWidget::newAlbum(), and LayoutWidget::showCollection().
{ //set new subalbum pointer subalbum = salbum; //update photo listing refreshPhotos(); if(subalbum == NULL) { buttonsFrame->hide(); } else { //disable/enable buttons as necessary buttonsFrame->show(); selectionChangedEvent(); } }
void SubalbumWidget::setWallpaperAction | ( | ) | [private, slot] |
set desktop wallpaper
Definition at line 405 of file subalbumWidget.cpp.
References getSelectedPhoto(), and setWallpaper().
Referenced by SubalbumWidget().
{ //get first selected photo, if no photo is selected then bail Photo* phto = getSelectedPhoto(); if(phto == NULL) return; //set the wallpaper setWallpaper( phto ); }
void SubalbumWidget::stripDescriptionsFromSelectedPhotos | ( | ) |
Strip descriptions from selected photos.
Definition at line 563 of file subalbumWidget.cpp.
References photos.
Referenced by TitleWidget::removeSelectedPhotoDesc().
{ QIconViewItem* current = photos->firstItem(); while(current != NULL) { //found a selected item! if(current->isSelected()) { ((PhotoPreviewWidget*)current)->getPhoto()->setDescription(""); ((PhotoPreviewWidget*)current)->setText( "" ); } //move to next item current = current->nextItem(); } }
void SubalbumWidget::updateButtons | ( | bool | enable | ) |
Activates/Deactives remove/rotate buttons.
Definition at line 752 of file subalbumWidget.cpp.
References addImage, buttonsState, layout, removeImage, rotate270Image, rotate90Image, setDesktopBtn, LayoutWidget::setEditTabEnabled(), and wallpaperButtonState.
Referenced by TitleWidget::exportLargeImages(), TitleWidget::exportSmallWebGallery(), TitleWidget::loadAlbum(), TitleWidget::saveAlbum(), and TitleWidget::saveAsAlbum().
{ if(!enable) { buttonsState = rotate90Image->isEnabled(); addImage->setEnabled(enable && true); removeImage->setEnabled(enable && true); rotate90Image->setEnabled(enable); rotate270Image->setEnabled(enable); if(setDesktopBtn) { wallpaperButtonState = setDesktopBtn->isEnabled(); setDesktopBtn->setEnabled(enable); } layout->setEditTabEnabled(enable); } else { addImage->setEnabled(enable && true); removeImage->setEnabled(buttonsState && true); rotate90Image->setEnabled(buttonsState); rotate270Image->setEnabled(buttonsState); if(setDesktopBtn) { setDesktopBtn->setEnabled(wallpaperButtonState); } layout->setEditTabEnabled(buttonsState); } }
void SubalbumWidget::updateButtons | ( | ) | [private, slot] |
Activates/Deactives remove/rotate buttons depending on if an image is selected.
Definition at line 709 of file subalbumWidget.cpp.
References layout, photos, removeImage, rotate270Image, rotate90Image, setDesktopBtn, and LayoutWidget::setEditTabEnabled().
Referenced by addImageAction(), removeImageAction(), rotate270ImageAction(), rotate90ImageAction(), and selectionChangedEvent().
{ int numSelected = 0; QIconViewItem* current = photos->firstItem(); while(current != NULL) { if(current->isSelected()) { numSelected++; //there are effectively 3 states: //1) no items selected -> disable all buttons besides addPhoto //2) one itme selected -> enable all button, including set desktop wallpaper button //3) more than one item selected -> enable all but edit button (since we don't know which photo to edit) //thus once 2 selected photos are found we know we are in the multi select mode and can terminate the search if(numSelected > 1) break; } //move to next item current = current->nextItem(); } if(numSelected == 0) { removeImage->setEnabled(false); rotate90Image->setEnabled(false); rotate270Image->setEnabled(false); if(setDesktopBtn) { setDesktopBtn->setEnabled(false); } layout->setEditTabEnabled(false); } else { removeImage->setEnabled(true); rotate90Image->setEnabled(true); rotate270Image->setEnabled(true); if(setDesktopBtn) { setDesktopBtn->setEnabled(true); } layout->setEditTabEnabled(true); } if(setDesktopBtn) { setDesktopBtn->setEnabled( numSelected == 1 ); } }
QToolButton* SubalbumWidget::addImage [private] |
"Add" button
Definition at line 140 of file subalbumWidget.h.
Referenced by SubalbumWidget(), and updateButtons().
QFrame* SubalbumWidget::buttonsFrame [private] |
Definition at line 131 of file subalbumWidget.h.
Referenced by setSubalbum(), and SubalbumWidget().
QGridLayout* SubalbumWidget::buttonsGrid [private] |
Definition at line 127 of file subalbumWidget.h.
Referenced by SubalbumWidget().
bool SubalbumWidget::buttonsState [private] |
cached enabled/disabled state of buttons
Definition at line 158 of file subalbumWidget.h.
Referenced by updateButtons().
LayoutWidget* SubalbumWidget::layout [private] |
Pointer to the parent layout widget.
Definition at line 155 of file subalbumWidget.h.
Referenced by addImageAction(), removeImageAction(), rotate270ImageAction(), rotate90ImageAction(), SubalbumWidget(), and updateButtons().
QGridLayout* SubalbumWidget::mainGrid [private] |
Grids widgets are placed in.
Definition at line 126 of file subalbumWidget.h.
Referenced by SubalbumWidget().
PhotosIconView* SubalbumWidget::photos [private] |
Photos layout.
Definition at line 134 of file subalbumWidget.h.
Referenced by addImageAction(), anyPhotosSelected(), anySelectedPhotosRevertable(), deselectAll(), getFirstSelectedPhoto(), getPhotos(), getSelectedPhoto(), refreshAllPhotos(), refreshPhotos(), refreshSelectedPhotos(), removeImageAction(), reorder(), resizeEvent(), revertSelectedPhotos(), rotate270ImageAction(), rotate90ImageAction(), setSelectedPhoto(), stripDescriptionsFromSelectedPhotos(), SubalbumWidget(), and updateButtons().
QToolButton* SubalbumWidget::removeImage [private] |
"Remove" button
Definition at line 143 of file subalbumWidget.h.
Referenced by SubalbumWidget(), and updateButtons().
QToolButton* SubalbumWidget::rotate270Image [private] |
"Rotate 270" button
Definition at line 149 of file subalbumWidget.h.
Referenced by SubalbumWidget(), and updateButtons().
QToolButton* SubalbumWidget::rotate90Image [private] |
"Rotate 90" button
Definition at line 146 of file subalbumWidget.h.
Referenced by SubalbumWidget(), and updateButtons().
QToolButton* SubalbumWidget::setDesktopBtn [private] |
Set desktop wallpaper button.
Definition at line 152 of file subalbumWidget.h.
Referenced by SubalbumWidget(), and updateButtons().
Subalbum* SubalbumWidget::subalbum [private] |
Pointer to backend subalbum.
Definition at line 137 of file subalbumWidget.h.
Referenced by addImageAction(), getSubalbum(), refreshPhotos(), removeImageAction(), reorder(), setSubalbum(), and SubalbumWidget().
QFrame* SubalbumWidget::thumbnailFrame [private] |
Grid lower buttons are placed in.
Definition at line 130 of file subalbumWidget.h.
bool SubalbumWidget::wallpaperButtonState [private] |
cached enabled/distable state of set wallpaper button
Definition at line 161 of file subalbumWidget.h.
Referenced by updateButtons().