00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#include <qlayout.h>
00013
#include <qfont.h>
00014
#include <qframe.h>
00015
#include <qpushbutton.h>
00016
#include <qtoolbutton.h>
00017
#include <qpixmap.h>
00018
#include <qfiledialog.h>
00019
#include <qcursor.h>
00020
#include <qapplication.h>
00021
#include <qtooltip.h>
00022
#include <qfileinfo.h>
00023
#include <qaccel.h>
00024
00025
00026
#include "window.h"
00027
#include "titleWidget.h"
00028
#include "layoutWidget.h"
00029
#include "subalbumWidget.h"
00030
#include "subalbumsWidget.h"
00031
#include "photoPreviewWidget.h"
00032
#include "photosIconView.h"
00033
#include "statusWidget.h"
00034
00035
#include "dialogs/addPhotosDialog.h"
00036
#include "dialogs/questionDialog.h"
00037
#include "dialogs/alertDialog.h"
00038
00039
#include "../config.h"
00040
#include "../backend/subalbum.h"
00041
#include "../backend/photo.h"
00042
#include "../backend/tools/guiTools.h"
00043
#include "../backend/tools/wallpaperTools.h"
00044
#include "../configuration/configuration.h"
00045
00046
#include "../backend/album.h"
00047
00048
00049 SubalbumWidget::SubalbumWidget(
Subalbum* salbum,
00050
QWidget *parent,
00051
const char* name ) :
00052
QWidget(parent,name)
00053 {
00054 setWFlags(WNoAutoErase);
00055
00056
00057
subalbum = salbum;
00058
00059
00060
layout = (
LayoutWidget*)parent;
00061
00062
00063
photos =
new PhotosIconView(
this );
00064
00065
00066
photos->setArrangement( QIconView::LeftToRight );
00067
photos->setVScrollBarMode( QScrollView::Auto );
00068
00069
00070
photos->setSelectionMode( QIconView::Extended ) ;
00071
00072
00073
photos->setDragAutoScroll(
true);
00074
photos->setAcceptDrops(
true);
00075
00076
00077 connect(
photos, SIGNAL(selectionChanged()),
00078
this, SLOT(
selectionChangedEvent()) );
00079
00080
00081 connect(
photos, SIGNAL(rightButtonClicked(
QIconViewItem*,
const QPoint&)),
00082
this, SLOT(
selectionChangedEvent()) );
00083
00084
00085 connect(
photos, SIGNAL(itemHasMoved()), SLOT(
reorder()) );
00086
00087
00088 connect(
photos, SIGNAL(addPhotos(QStringList)), SLOT(
addImageAction(QStringList)) );
00089
00090
00091 connect(
photos, SIGNAL(removeSelectedPhotos()), SLOT(
removeImageAction()) );
00092 connect(
photos, SIGNAL(rotate90SelectedPhotos()), SLOT(
rotate90ImageAction()) );
00093 connect(
photos, SIGNAL(rotate270SelectedPhotos()), SLOT(
rotate270ImageAction()) );
00094
00095
00096 connect(
photos, SIGNAL(editSelectedPhoto()),
00097
layout, SLOT(editSelectedPhoto()) );
00098
00099 connect(
photos, SIGNAL( doubleClicked(
QIconViewItem*) ),
00100
layout, SLOT(editSelectedPhoto()) );
00101
00102
00103
buttonsFrame =
new QFrame(
this);
00104
if(
subalbum == NULL)
buttonsFrame->hide();
00105
00106 QFont buttonFont( qApp->font() );
00107 buttonFont.setBold(
true);
00108 buttonFont.setPointSize( 11 );
00109
00110
addImage =
new QToolButton(
buttonsFrame );
00111
addImage->setTextLabel(tr(
"Add Photo"));
00112
addImage->setIconSet( QPixmap(QString(
IMAGE_PATH)+
"buttonIcons/add.png") );
00113
addImage->setTextPosition(QToolButton::Right);
00114
addImage->setFont( buttonFont );
00115
addImage->setUsesTextLabel(
true );
00116
addImage->setEnabled(
true );
00117 QToolTip::add(
addImage, tr(
"Add photos to selected collection") );
00118 connect(
addImage, SIGNAL(clicked()), SLOT(
addImageAction()) );
00119
00120
removeImage =
new QToolButton(
buttonsFrame );
00121
removeImage->setTextLabel(tr(
"Remove Photo"));
00122
removeImage->setIconSet( QPixmap(QString(
IMAGE_PATH)+
"buttonIcons/remove.png") );
00123
removeImage->setTextPosition(QToolButton::Right);
00124
removeImage->setFont( buttonFont );
00125
removeImage->setUsesTextLabel(
true );
00126
removeImage->setEnabled(
true );
00127 QToolTip::add(
removeImage, tr(
"Remove selected photos from collection") );
00128 connect(
removeImage, SIGNAL(clicked()), SLOT(
removeImageAction()) );
00129
00130
rotate90Image =
new QToolButton(
buttonsFrame );
00131
rotate90Image->setTextLabel(tr(
"Rotate Right") );
00132 QIconSet rotate90Icon;
00133 rotate90Icon.setPixmap( QString(
IMAGE_PATH)+
"buttonIcons/rotate90.png",
00134 QIconSet::Automatic,
00135 QIconSet::Normal );
00136 rotate90Icon.setPixmap( QString(
IMAGE_PATH)+
"buttonIcons/rotate90_disabled.png",
00137 QIconSet::Automatic,
00138 QIconSet::Disabled );
00139
rotate90Image->setIconSet( rotate90Icon );
00140
00141
rotate90Image->setTextPosition(QToolButton::Right);
00142
rotate90Image->setFont( buttonFont );
00143
rotate90Image->setUsesTextLabel(
true );
00144 QToolTip::add(
rotate90Image, tr(
"Rotate selected photos clockwise") );
00145 connect(
rotate90Image, SIGNAL(clicked()), SLOT(
rotate90ImageAction()) );
00146
00147
rotate270Image =
new QToolButton(
buttonsFrame );
00148
rotate270Image->setTextLabel(tr(
"Rotate Left") );
00149 QIconSet rotate270Icon;
00150 rotate270Icon.setPixmap( QString(
IMAGE_PATH)+
"buttonIcons/rotate270.png",
00151 QIconSet::Automatic,
00152 QIconSet::Normal );
00153 rotate270Icon.setPixmap( QString(
IMAGE_PATH)+
"buttonIcons/rotate270_disabled.png",
00154 QIconSet::Automatic,
00155 QIconSet::Disabled );
00156
rotate270Image->setIconSet( rotate270Icon );
00157
00158
rotate270Image->setTextPosition(QToolButton::Right);
00159
rotate270Image->setFont( buttonFont );
00160
rotate270Image->setUsesTextLabel(
true );
00161 QToolTip::add(
rotate270Image, tr(
"Rotate selected photos counterclockwise") );
00162 connect(
rotate270Image, SIGNAL(clicked()), SLOT(
rotate270ImageAction()) );
00163
00164
00165
buttonsGrid =
new QGridLayout(
buttonsFrame, 1, 7, 0 );
00166
buttonsGrid->addWidget(
addImage, 0, 1, Qt::AlignLeft );
00167
buttonsGrid->addWidget(
removeImage, 0, 2, Qt::AlignLeft );
00168
buttonsGrid->addWidget(
rotate90Image, 0, 3, Qt::AlignLeft );
00169
buttonsGrid->addWidget(
rotate270Image, 0, 4, Qt::AlignLeft );
00170
buttonsGrid->setColStretch( 0, 1 );
00171
buttonsGrid->setColStretch( 6, 1 );
00172
00173
00174
if(
setWallpaperSupported() )
00175 {
00176
setDesktopBtn =
new QToolButton(
buttonsFrame );
00177
setDesktopBtn->setUsesTextLabel(
true );
00178
setDesktopBtn->setTextLabel(tr(
"Wallpaper") );
00179 QIconSet setDesktopIcon;
00180 setDesktopIcon.setPixmap( QString(
IMAGE_PATH)+
"buttonIcons/setDesktopWallpaper.png",
00181 QIconSet::Automatic,
00182 QIconSet::Normal );
00183 setDesktopIcon.setPixmap( QString(
IMAGE_PATH)+
"buttonIcons/setDesktopWallpaper_disabled.png",
00184 QIconSet::Automatic,
00185 QIconSet::Disabled );
00186
setDesktopBtn->setIconSet( setDesktopIcon );
00187
00188
setDesktopBtn->setTextPosition(QToolButton::Right);
00189
setDesktopBtn->setFont( buttonFont );
00190
setDesktopBtn->setUsesTextLabel(
true );
00191
00192 QToolTip::add(
setDesktopBtn, tr(
"Set desktop wallpaper to selected photo") );
00193 connect(
setDesktopBtn, SIGNAL( clicked() ),
this, SLOT(
setWallpaperAction() ) );
00194
buttonsGrid->addWidget(
setDesktopBtn, 0, 5, Qt::AlignLeft );
00195 }
00196
else
00197 {
setDesktopBtn = NULL; }
00198
00199
mainGrid =
new QGridLayout(
this, 2, 1, 0 );
00200
mainGrid->addMultiCellWidget(
photos, 0, 0, 0, 1 );
00201
mainGrid->addMultiCellWidget(
buttonsFrame, 1, 1, 0, 1 );
00202
mainGrid->setRowStretch( 0, 1 );
00203
00204
00205 setPaletteBackgroundColor( QColor(193, 210, 238) );
00206
00207
00208
removeImage->setEnabled(
false);
00209
rotate90Image->setEnabled(
false);
00210
rotate270Image->setEnabled(
false);
00211
00212
00213
00214 QAccel *keyAccel =
new QAccel(
this );
00215 keyAccel->connectItem( keyAccel->insertItem( CTRL + SHIFT + Key_A ),
00216
this, SLOT(
deselectAll()) );
00217 }
00218
00219 void SubalbumWidget::setSubalbum(
Subalbum* salbum)
00220 {
00221
00222
subalbum = salbum;
00223
00224
00225
refreshPhotos();
00226
00227
if(
subalbum == NULL) {
buttonsFrame->hide(); }
00228
else
00229 {
00230
00231
buttonsFrame->show();
00232
selectionChangedEvent();
00233 }
00234 }
00235
00236 void SubalbumWidget::addImageAction()
00237 {
00238
00239
00240
00241
Configuration* config = ((
Window*)qApp->mainWidget())->getConfig();
00242 QString path = config->
getString(
"loadSave",
"addPhotoDir" );
00243 QDir testPath(path);
00244
if(!testPath.exists())
00245 {
00246 config->
resetSetting(
"loadSave",
"addPhotoDir" );
00247 path = config->
getString(
"loadSave",
"addPhotoDir" );
00248 }
00249
00250
AddPhotosDialog* fileDialog =
new AddPhotosDialog( path );
00251
bool setDescriptions;
00252 QStringList fileNames = fileDialog->
getFilenames( setDescriptions );
00253
00254
if(!fileNames.empty())
00255 {
00256
00257 QDir lastDir = QDir( QFileInfo(*fileNames.begin()).dirPath() );
00258 config->
setString(
"loadSave",
"addPhotoDir", lastDir.path() );
00259
addImageAction( fileNames, setDescriptions );
00260 }
00261 }
00262
00263 void SubalbumWidget::addImageAction(QStringList fileNames,
bool setDescriptions)
00264 {
00265
if(fileNames.empty())
00266
return;
00267
00268
00269
00270
layout->
getWindow()->
getTitle()->
setBusy(
true);
00271
layout->
getSubalbums()->
updateButtons(
false);
00272
updateButtons(
false);
00273
photos->setSelectionMode( QIconView::NoSelection ) ;
00274
00275 qApp->setOverrideCursor( QCursor(Qt::WaitCursor));
00276
00277
00278 QString statusMessage = tr(
"Adding %1 photos:");
00279
00280
layout->
getWindow()->
getStatus()->
showProgressBar( statusMessage.arg(fileNames.count()), fileNames.count() );
00281 qApp->processEvents();
00282
00283
00284 QStringList::iterator it;
00285
int num=0;
00286
for(it = fileNames.begin(); it != fileNames.end(); it++ )
00287 {
00288
00289
layout->
getWindow()->
getStatus()->
updateProgress( num, statusMessage.arg(fileNames.count() - num) );
00290
00291
00292
if(QFileInfo(*it).isFile() &&
subalbum->
addPhoto(*it, setDescriptions))
00293 {
00294
PhotoPreviewWidget* p =
new PhotoPreviewWidget(
photos,
subalbum->
getLast() );
00295
photos->ensureItemVisible(p);
00296 }
00297 num++;
00298 qApp->processEvents();
00299 }
00300
photos->arrangeItemsInGrid();
00301
00302
00303
layout->
getWindow()->
getStatus()->
setStatus( tr(
"Adding photos complete.") );
00304
00305
00306
layout->
getWindow()->
getTitle()->
updateMenus();
00307
00308
00309
layout->
getWindow()->
getTitle()->
setBusy(
false);
00310
layout->
getSubalbums()->
updateButtons(
true);
00311
updateButtons(
true);
00312
photos->setSelectionMode( QIconView::Extended ) ;
00313
00314 qApp->restoreOverrideCursor();
00315 }
00316
00317 void SubalbumWidget::removeImageAction()
00318 {
00319
00320
layout->
getWindow()->
getTitle()->
setBusy(
true);
00321
layout->
getSubalbums()->
updateButtons(
false);
00322
updateButtons(
false);
00323
photos->setSelectionMode( QIconView::NoSelection ) ;
00324
00325
00326
00327
bool proceed = !((
Window*)qApp->mainWidget())->getConfig()->getBool(
"alerts",
"showDestructiveAlerts" );
00328
if(!proceed)
00329 {
00330
QuestionDialog sure( tr(
"Remove selected photos?"),
00331 tr(
"Once removed photos cannot be restored. Furthermore upon resaving they are physically removed from your album."),
00332
"alertIcons/warning.png",
00333
this );
00334 proceed = sure.exec();
00335 }
00336
if(proceed)
00337 {
00338 qApp->setOverrideCursor( QCursor(Qt::WaitCursor));
00339
00340
QIconViewItem* current =
photos->firstItem();
00341
QIconViewItem* temp;
00342
00343
while(current != NULL)
00344 {
00345
00346
if(!current->isSelected())
00347 {
00348 current = current->nextItem();
00349
continue;
00350 }
00351
00352
00353 temp = current->nextItem();
00354
00355
00356
Photo* phto = ((
PhotoPreviewWidget*)current)->getPhoto();
00357
00358
00359
delete current;
00360 current = temp;
00361
00362
00363
subalbum->
removePhoto(phto);
00364 }
00365
00366
00367
photos->arrangeItemsInGrid();
00368
00369
00370 qApp->restoreOverrideCursor();
00371 }
00372
00373
layout->
getWindow()->
getTitle()->
setBusy(
false);
00374
layout->
getSubalbums()->
updateButtons(
true);
00375
updateButtons(
true);
00376
photos->setSelectionMode( QIconView::Extended ) ;
00377
00378
00379
selectionChangedEvent();
00380 }
00381
00382 void SubalbumWidget::revertSelectedPhotos()
00383 {
00384
00385
QIconViewItem* current =
photos->firstItem();
00386
while(current != NULL)
00387 {
00388
00389
if(current->isSelected())
00390 {
00391 ((
PhotoPreviewWidget*)current)->getPhoto()->revertPhoto();
00392
photos->ensureItemVisible(((
PhotoPreviewWidget*)current));
00393 ((
PhotoPreviewWidget*)current)->updateImage();
00394 qApp->processEvents();
00395 }
00396
00397
00398 current = current->nextItem();
00399 }
00400
00401
00402 emit
selectedPhotoStateChanged();
00403 }
00404
00405 void SubalbumWidget::setWallpaperAction()
00406 {
00407
00408
Photo* phto =
getSelectedPhoto();
00409
if(phto == NULL)
return;
00410
00411
00412
setWallpaper( phto );
00413 }
00414
00415 void SubalbumWidget::rotate90ImageAction()
00416 {
00417
00418 qApp->setOverrideCursor( QCursor(Qt::WaitCursor));
00419
layout->
getWindow()->
getTitle()->
setBusy(
true);
00420
layout->
getSubalbums()->
updateButtons(
false);
00421
photos->setSelectionMode( QIconView::NoSelection ) ;
00422
updateButtons(
false);
00423
00424
00425 QString statusMessage = tr(
"Rotating %1 photos:");
00426
layout->
getWindow()->
getStatus()->
showProgressBar( statusMessage.arg(
photos->
numSelected()),
photos->
numSelected() );
00427 qApp->processEvents();
00428
00429
00430
int num = 0;
00431
QIconViewItem* current =
photos->firstItem();
00432
while(current != NULL)
00433 {
00434
if(current->isSelected())
00435 {
00436
00437
layout->
getWindow()->
getStatus()->
updateProgress( num, statusMessage.arg(
photos->
numSelected() - num) );
00438
00439 ((
PhotoPreviewWidget*)current)->getPhoto()->rotate90();
00440
photos->ensureItemVisible(((
PhotoPreviewWidget*)current));
00441 ((
PhotoPreviewWidget*)current)->updateImage();
00442 num++;
00443
layout->
getWindow()->
getStatus()->
updateProgress( num );
00444 qApp->processEvents();
00445 }
00446
00447
00448 current = current->nextItem();
00449 }
00450
00451
00452 emit
selectedPhotoStateChanged();
00453
00454
00455
layout->
getWindow()->
getStatus()->
setStatus( tr(
"Rotating complete.") );
00456
00457
00458
layout->
getWindow()->
getTitle()->
setBusy(
false);
00459
layout->
getSubalbums()->
updateButtons(
true);
00460
updateButtons(
true);
00461
photos->setSelectionMode( QIconView::Extended ) ;
00462
00463 qApp->restoreOverrideCursor();
00464 }
00465
00466 void SubalbumWidget::rotate270ImageAction()
00467 {
00468
00469 qApp->setOverrideCursor( QCursor(Qt::WaitCursor));
00470
layout->
getWindow()->
getTitle()->
setBusy(
true);
00471
layout->
getSubalbums()->
updateButtons(
false);
00472
photos->setSelectionMode( QIconView::NoSelection ) ;
00473
updateButtons(
false);
00474
00475
00476 QString statusMessage = tr(
"Rotating %1 photos:");
00477
layout->
getWindow()->
getStatus()->
showProgressBar( statusMessage.arg(
photos->
numSelected()),
photos->
numSelected() );
00478 qApp->processEvents();
00479
00480
00481
int num = 0;
00482
QIconViewItem* current =
photos->firstItem();
00483
while(current != NULL)
00484 {
00485
if(current->isSelected())
00486 {
00487
00488
layout->
getWindow()->
getStatus()->
updateProgress( num, statusMessage.arg(
photos->
numSelected() - num) );
00489
00490 ((
PhotoPreviewWidget*)current)->getPhoto()->rotate270();
00491
photos->ensureItemVisible(((
PhotoPreviewWidget*)current));
00492 ((
PhotoPreviewWidget*)current)->updateImage();
00493 num++;
00494
layout->
getWindow()->
getStatus()->
updateProgress( num );
00495 qApp->processEvents();
00496 }
00497
00498
00499 current = current->nextItem();
00500 }
00501
00502
00503 emit
selectedPhotoStateChanged();
00504
00505
00506
layout->
getWindow()->
getStatus()->
setStatus( tr(
"Rotating complete.") );
00507
00508
00509
layout->
getWindow()->
getTitle()->
setBusy(
false);
00510
layout->
getSubalbums()->
updateButtons(
true);
00511
updateButtons(
true);
00512
photos->setSelectionMode( QIconView::Extended ) ;
00513 qApp->restoreOverrideCursor();
00514 }
00515
00516 void SubalbumWidget::refreshPhotos()
00517 {
00518
00519
photos->clear();
00520
00521
if(
subalbum != NULL)
00522 {
00523
00524
Photo* currentPhoto =
subalbum->
getFirst();
00525
while(currentPhoto != NULL)
00526 {
00527
new PhotoPreviewWidget(
photos, currentPhoto );
00528 currentPhoto = currentPhoto->
getNext();
00529 }
00530
00531
photos->arrangeItemsInGrid();
00532 }
00533 }
00534
00535 void SubalbumWidget::refreshAllPhotos()
00536 {
00537
QIconViewItem* current =
photos->firstItem();
00538
while(current != NULL)
00539 {
00540 ((
PhotoPreviewWidget*)current)->updateImage();
00541 ((
PhotoPreviewWidget*)current)->updateDescription();
00542 current = current->nextItem();
00543 }
00544 }
00545
00546 void SubalbumWidget::refreshSelectedPhotos()
00547 {
00548
QIconViewItem* current =
photos->firstItem();
00549
while(current != NULL)
00550 {
00551
00552
if(current->isSelected())
00553 {
00554 ((
PhotoPreviewWidget*)current)->updateImage();
00555 ((
PhotoPreviewWidget*)current)->updateDescription();
00556 }
00557
00558
00559 current = current->nextItem();
00560 }
00561 }
00562
00563 void SubalbumWidget::stripDescriptionsFromSelectedPhotos()
00564 {
00565
QIconViewItem* current =
photos->firstItem();
00566
while(current != NULL)
00567 {
00568
00569
if(current->isSelected())
00570 {
00571 ((
PhotoPreviewWidget*)current)->getPhoto()->setDescription(
"");
00572 ((
PhotoPreviewWidget*)current)->setText(
"" );
00573 }
00574
00575
00576 current = current->nextItem();
00577 }
00578 }
00579
00580 Subalbum*
SubalbumWidget::getSubalbum()
00581 {
00582
return subalbum;
00583 }
00584
00585 Photo*
SubalbumWidget::getSelectedPhoto()
00586 {
00587
00588
int numSelected = 0;
00589
QIconViewItem* current =
photos->firstItem();
00590
QIconViewItem* selected = NULL;
00591
while(current != NULL)
00592 {
00593
00594
if(current->isSelected())
00595 {
00596 numSelected++;
00597 selected = current;
00598 }
00599
00600
00601
if(numSelected > 1)
return NULL;
00602
00603
00604 current = current->nextItem();
00605 }
00606
00607
00608
if(numSelected == 1) {
return ((
PhotoPreviewWidget*)selected)->getPhoto(); }
00609
else {
return NULL; }
00610 }
00611
00612 Photo*
SubalbumWidget::getFirstSelectedPhoto()
00613 {
00614
00615
QIconViewItem* current =
photos->firstItem();
00616
while(current != NULL)
00617 {
00618
00619
if(current->isSelected())
00620 {
return ((
PhotoPreviewWidget*)current)->getPhoto(); }
00621
00622
00623 current = current->nextItem();
00624 }
00625
00626
00627
return NULL;
00628 }
00629
00630 void SubalbumWidget::setSelectedPhoto(
Photo* selection)
00631 {
00632
00633
QIconViewItem* current =
photos->firstItem();
00634
while(current != NULL)
00635 {
00636
if( ((
PhotoPreviewWidget*)current)->getPhoto() == selection )
00637 {
00638
00639
photos->selectAll(
false);
00640
00641
00642 current->setSelected(
true);
00643
photos->ensureItemVisible( current );
00644
00645
return;
00646 }
00647
00648
00649 current = current->nextItem();
00650 }
00651 }
00652
00653 bool SubalbumWidget::anyPhotosSelected()
00654 {
00655
QIconViewItem* current =
photos->firstItem();
00656
while(current != NULL)
00657 {
00658
if(current->isSelected())
00659
return true;
00660 current = current->nextItem();
00661 }
00662
return false;
00663 }
00664
00665 bool SubalbumWidget::anySelectedPhotosRevertable()
00666 {
00667
QIconViewItem* current =
photos->firstItem();
00668
while(current != NULL)
00669 {
00670
if(current->isSelected())
00671 {
00672
if( ((
PhotoPreviewWidget*)current)->getPhoto()->revertPossible() )
00673
return true;
00674 }
00675 current = current->nextItem();
00676 }
00677
return false;
00678 }
00679
00680 void SubalbumWidget::resizeEvent( QResizeEvent * )
00681 {
00682
photos->arrangeItemsInGrid();
00683 }
00684
00685 QIconView*
SubalbumWidget::getPhotos()
00686 {
00687
return photos;
00688 }
00689
00690 void SubalbumWidget::reorder()
00691 {
00692
00693
photos->sort(
true );
00694
photos->arrangeItemsInGrid();
00695
00696
00697
subalbum->
syncPhotoList((
PhotoPreviewWidget*)
photos->firstItem());
00698 }
00699
00700 void SubalbumWidget::selectionChangedEvent()
00701 {
00702
00703
updateButtons();
00704
00705
00706 emit
selectedPhotoStateChanged();
00707 }
00708
00709 void SubalbumWidget::updateButtons()
00710 {
00711
int numSelected = 0;
00712
QIconViewItem* current =
photos->firstItem();
00713
while(current != NULL)
00714 {
00715
if(current->isSelected())
00716 {
00717 numSelected++;
00718
00719
00720
00721
00722
00723
00724
if(numSelected > 1)
00725
break;
00726 }
00727
00728
00729 current = current->nextItem();
00730 }
00731
00732
if(numSelected == 0)
00733 {
00734
removeImage->setEnabled(
false);
00735
rotate90Image->setEnabled(
false);
00736
rotate270Image->setEnabled(
false);
00737
if(
setDesktopBtn) {
setDesktopBtn->setEnabled(
false); }
00738
layout->
setEditTabEnabled(
false);
00739 }
00740
else
00741 {
00742
removeImage->setEnabled(
true);
00743
rotate90Image->setEnabled(
true);
00744
rotate270Image->setEnabled(
true);
00745
if(
setDesktopBtn) {
setDesktopBtn->setEnabled(
true); }
00746
layout->
setEditTabEnabled(
true);
00747 }
00748
00749
if(
setDesktopBtn) {
setDesktopBtn->setEnabled( numSelected == 1 ); }
00750 }
00751
00752 void SubalbumWidget::updateButtons(
bool enable)
00753 {
00754
if(!enable)
00755 {
00756
buttonsState =
rotate90Image->isEnabled();
00757
addImage->setEnabled(enable &&
true);
00758
removeImage->setEnabled(enable &&
true);
00759
rotate90Image->setEnabled(enable);
00760
rotate270Image->setEnabled(enable);
00761
if(
setDesktopBtn)
00762 {
00763
wallpaperButtonState =
setDesktopBtn->isEnabled();
00764
setDesktopBtn->setEnabled(enable);
00765 }
00766
layout->
setEditTabEnabled(enable);
00767 }
00768
else
00769 {
00770
addImage->setEnabled(enable &&
true);
00771
removeImage->setEnabled(
buttonsState &&
true);
00772
rotate90Image->setEnabled(
buttonsState);
00773
rotate270Image->setEnabled(
buttonsState);
00774
if(
setDesktopBtn) {
setDesktopBtn->setEnabled(
wallpaperButtonState); }
00775
layout->
setEditTabEnabled(
buttonsState);
00776 }
00777 }
00778
00779 void SubalbumWidget::deselectAll()
00780 {
00781
photos->selectAll(
false);
00782 }
00783