#include <subalbumsWidget.h>
Inheritance diagram for SubalbumsWidget:


Definition at line 29 of file subalbumsWidget.h.
Public Slots | |
| void | updatedSelectedCollectionImage (QPixmap *val) |
| void | refreshSelectedCollectionName () |
Signals | |
| void | collectionSelected (Subalbum *) |
Public Member Functions | |
| SubalbumsWidget (QWidget *parent=0, const char *name=0) | |
| Creates layout. | |
| void | refreshCollectionsList () |
| Refreshes list of collections, selecting first by default. | |
| LayoutWidget * | getParent () |
| Returns parent. | |
| void | updateButtons (bool enable) |
| Activates/Deactives create/delete buttons. | |
| QIconViewItem * | getCurrentSelection () |
| Returns current selection. | |
| Subalbum * | getSelectedSubalbum () |
| Returns the currently selected subalbum. | |
Private Slots | |
| void | createAction () |
| create a new collection | |
| void | deleteAction () |
| deletes the currently selected collection | |
| void | handleSelectionAttempt (QIconViewItem *item) |
| respond to user clicking collection icons | |
| void | reorder () |
| relayout collectionicons after a create/delete refresh | |
Private Member Functions | |
| void | selectFirstCollection () |
| select first collection | |
| void | selectCollection (QIconViewItem *item) |
| select specified collection | |
Private Attributes | |
| SubalbumsIconView * | collections |
| list of subalbums | |
| QIconViewItem * | currentSelection |
| QToolButton * | createButton |
| Create collection button. | |
| QToolButton * | deleteButton |
| Delete collection button. | |
| LayoutWidget * | layout |
| Pointer to layoutwidget this widget is in. | |
| bool | buttonsState |
| Cached enabled/disabled state of buttons. | |
|
||||||||||||
|
Creates layout.
Definition at line 36 of file subalbumsWidget.cpp. References collections, createAction(), createButton, currentSelection, deleteAction(), deleteButton, handleSelectionAttempt(), IMAGE_PATH, layout, and reorder(). 00037 : 00038 QWidget(parent,name) 00039 { 00040 //set layout pointer 00041 layout = (LayoutWidget*)parent; 00042 00043 //create "Collections:" header 00044 QLabel* collectionsHeader = new QLabel( this ); 00045 collectionsHeader->setText( tr("Collections:") ); 00046 QFont labelFont = collectionsHeader->font(); 00047 labelFont.setWeight(QFont::Bold); 00048 collectionsHeader->setFont( labelFont ); 00049 //-------------------------------------- 00050 //create collections list 00051 collections = new SubalbumsIconView( this ); 00052 00053 //only one item can be selected at a time 00054 collections->setSelectionMode( QIconView::Single ) ; 00055 00056 //single column of items 00057 collections->setGridX(1); 00058 00059 //text is on right of icons 00060 collections->setItemTextPos( QIconView::Right ); 00061 00062 //disable frame 00063 collections->setFrameShape ( QFrame::NoFrame ); 00064 00065 collections->setMaxItemWidth(500); 00066 collections->setPaletteBackgroundColor( QColor(193, 210, 238) ); 00067 collections->setDragAutoScroll(true); 00068 collections->setAcceptDrops(true); 00069 collections->setVScrollBarMode( QScrollView::Auto ); 00070 collections->setHScrollBarMode( QScrollView::Auto ); 00071 //-------------------------------------- 00072 //no selection by default 00073 currentSelection = NULL; 00074 //-------------------------------------- 00075 //connect drop event on iconview to reorder slot 00076 connect( collections, SIGNAL(itemHasMoved()), SLOT(reorder()) ); 00077 00078 //handle selection attempts 00079 connect( collections, SIGNAL(selectionChanged(QIconViewItem*)), 00080 this, SLOT(handleSelectionAttempt(QIconViewItem*))); 00081 //-------------------------------------- 00082 //create create/delete buttons 00083 QFont buttonFont( qApp->font() ); 00084 buttonFont.setBold(true); 00085 buttonFont.setPointSize( 11 ); 00086 00087 createButton = new QToolButton( this ); 00088 createButton->setTextLabel(tr("Create")); 00089 createButton->setIconSet( QPixmap(QString(IMAGE_PATH)+"buttonIcons/create.png") ); 00090 createButton->setTextPosition(QToolButton::Right); 00091 createButton->setFont( buttonFont ); 00092 createButton->setUsesTextLabel( true ); 00093 createButton->setEnabled(true); 00094 createButton->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ); 00095 QToolTip::add( createButton, tr("Create a collection and append to subalbum list") ); 00096 connect( createButton, SIGNAL(clicked()), SLOT(createAction()) ); 00097 00098 deleteButton = new QToolButton( this ); 00099 deleteButton->setTextLabel(tr("Delete")); 00100 deleteButton->setIconSet( QPixmap(QString(IMAGE_PATH)+"buttonIcons/delete.png") ); 00101 deleteButton->setTextPosition(QToolButton::Right); 00102 deleteButton->setFont( buttonFont ); 00103 deleteButton->setUsesTextLabel( true ); 00104 deleteButton->setEnabled(false); 00105 deleteButton->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ); 00106 QToolTip::add( deleteButton, tr("Delete selected collection and all its contents") ); 00107 connect( deleteButton, SIGNAL(clicked()), SLOT(deleteAction()) ); 00108 //-------------------------------------- 00109 //place label, listbox, and buttons in grid 00110 QGridLayout* grid = new QGridLayout( this, 3, 2, 0 ); 00111 grid->addMultiCellWidget( collectionsHeader, 0, 0, 0, 1, Qt::AlignHCenter ); 00112 grid->addMultiCellWidget( collections, 1, 1, 0, 1 ); 00113 grid->addWidget( createButton, 2, 0, Qt::AlignHCenter); 00114 grid->addWidget( deleteButton, 2, 1, Qt::AlignHCenter); 00115 00116 //allow collections listing to grow 00117 grid->setRowStretch( 1, 1 ); 00118 00119 //set the background of the widget to be white 00120 setPaletteBackgroundColor( QColor(193, 210, 238) ); 00121 } //==============================================
|
|
|
Referenced by selectCollection(). |
|
|
create a new collection
Definition at line 123 of file subalbumsWidget.cpp. References Album::appendSubalbum(), collections, deleteButton, TitleWidget::getAlbum(), Album::getNumSubalbums(), Window::getTitle(), LayoutWidget::getWindow(), layout, and selectCollection(). Referenced by SubalbumsWidget(). 00124 {
00125 //create new collection object
00126 Album* albm = layout->getWindow()->getTitle()->getAlbum();
00127 Subalbum* newCollection = new Subalbum( albm, albm->getNumSubalbums()+1 );
00128 albm->appendSubalbum( newCollection );
00129
00130 //create collection icon and auto select it
00131 SubalbumPreviewWidget* newCollectionIcon = new SubalbumPreviewWidget( collections, newCollection );
00132 newCollectionIcon->setDropEnabled(true);
00133 selectCollection( newCollectionIcon );
00134
00135 //update enabled state of delete collection button
00136 deleteButton->setEnabled( collections->count() > 1 );
00137 }
|
|
|
deletes the currently selected collection
Definition at line 139 of file subalbumsWidget.cpp. References collections, deleteButton, TitleWidget::getAlbum(), Window::getTitle(), LayoutWidget::getWindow(), layout, Album::removeSubalbum(), selectCollection(), and TitleWidget::updateMenus(). Referenced by SubalbumsWidget(). 00140 {
00141 //if an item is selected it remove it
00142 if(collections->currentItem() != NULL)
00143 {
00144 //if user has chosen to not receive destructive action warnings, or agrees to the action, then
00145 //delete subalbum and refresh view
00146 bool proceed = !((Window*)qApp->mainWidget())->getConfig()->getBool( "alerts", "showDestructiveAlerts" );
00147 if(!proceed)
00148 {
00149 QuestionDialog sure( tr("Delete collection?"),
00150 tr("Once deleted a collection and it's contents cannot be brought back unless a saved copy of the album exists."),
00151 "alertIcons/warning.png",
00152 this );
00153 proceed = sure.exec();
00154 }
00155 if(proceed)
00156 {
00157 //get handle on currently selected collection
00158 QIconViewItem* oldSelection = collections->currentItem();
00159
00160 //get handle on the next automatically selected collection
00161 //auto select the new collection. If there is no next
00162 //collection, select the previous collection (again if present)
00163 QIconViewItem* newSelection = oldSelection->nextItem();
00164 if(newSelection == NULL) newSelection = oldSelection->prevItem();
00165
00166 //auto select a remaining collection if one exists
00167 //we select before removing and deleting the old collection so that
00168 //the collection information above smoothly transitions
00169 selectCollection( newSelection );
00170
00171 //remove the collection from the album
00172 Subalbum* s = ((SubalbumPreviewWidget*) oldSelection)->getSubalbum();
00173 layout->getWindow()->getTitle()->getAlbum()->removeSubalbum( s );
00174
00175 //free the collection icon
00176 delete oldSelection;
00177 oldSelection = NULL;
00178
00179 //rearrange the items in the grid, making
00180 //sure new selection is visible
00181 collections->arrangeItemsInGrid();
00182 if(newSelection != NULL) collections->ensureItemVisible( newSelection );
00183
00184 //update enabled state of delete collection button
00185 deleteButton->setEnabled( collections->count() > 1 );
00186
00187 //notifty title widget that the album's photo count has possible changed
00188 layout->getWindow()->getTitle()->updateMenus();
00189 }
00190 }
00191 }
|
|
|
Returns current selection.
Definition at line 232 of file subalbumsWidget.cpp. Referenced by TitleWidget::setSubalbumImage(), and TitleWidget::unsetSubalbumImage(). 00232 { return currentSelection; }
|
|
|
Returns parent.
Definition at line 231 of file subalbumsWidget.cpp. 00231 { return layout; }
|
|
|
Returns the currently selected subalbum.
Definition at line 234 of file subalbumsWidget.cpp. Referenced by TitleWidget::storeAnnotations(). 00235 {
00236 return ((SubalbumPreviewWidget*) currentSelection )->getSubalbum();
00237 }
|
|
|
respond to user clicking collection icons
Definition at line 273 of file subalbumsWidget.cpp. References TitleWidget::getBusy(), Window::getTitle(), LayoutWidget::getWindow(), layout, and selectCollection(). Referenced by SubalbumsWidget(). 00274 {
00275 //select collections only when program is not busy.
00276 if( !layout->getWindow()->getTitle()->getBusy() )
00277 selectCollection( item );
00278 }
|
|
|
Refreshes list of collections, selecting first by default.
Definition at line 239 of file subalbumsWidget.cpp. References collections, currentSelection, TitleWidget::getAlbum(), Album::getFirstSubalbum(), Subalbum::getNext(), Window::getTitle(), LayoutWidget::getWindow(), layout, and selectFirstCollection(). Referenced by LayoutWidget::refresh(). 00240 {
00241 //delete all previous entries
00242 QIconViewItem* current = collections->firstItem();
00243 while(current != NULL)
00244 {
00245 QIconViewItem* next = current->nextItem();
00246 delete current;
00247 current = next;
00248 }
00249
00250 //for some reason scrollbar does not disappear automatically.
00251 //Calling clear fixes this.
00252 collections->clear();
00253
00254 //reset cached selection handle
00255 currentSelection = NULL;
00256
00257 //insert all collections
00258 Subalbum* curCollection = layout->getWindow()->getTitle()->getAlbum()->getFirstSubalbum();
00259 while( curCollection != NULL)
00260 {
00261 SubalbumPreviewWidget* item = new SubalbumPreviewWidget( collections, curCollection );
00262 item->setDropEnabled(true);
00263 curCollection = curCollection->getNext();
00264 }
00265
00266 //refresh iconview
00267 collections->arrangeItemsInGrid();
00268
00269 //auto select first item
00270 selectFirstCollection();
00271 }
|
|
|
Definition at line 193 of file subalbumsWidget.cpp. References currentSelection. Referenced by LayoutWidget::refreshSelectedCollectionIconName(). 00194 {
00195 if( currentSelection != NULL)
00196 currentSelection->setText( ((SubalbumPreviewWidget*)currentSelection)->getSubalbum()->getName() );
00197 }
|
|
|
relayout collectionicons after a create/delete refresh
Definition at line 205 of file subalbumsWidget.cpp. References collections, TitleWidget::getAlbum(), Window::getTitle(), LayoutWidget::getWindow(), layout, and Album::syncSubalbumList(). Referenced by SubalbumsWidget(). 00206 {
00207 //so item has been moved, reorder linked list of items as necessary
00208 collections->sort( true );
00209 collections->arrangeItemsInGrid();
00210
00211 //sync lists
00212 Album* albm = layout->getWindow()->getTitle()->getAlbum();
00213 albm->syncSubalbumList((SubalbumPreviewWidget*)collections->firstItem());
00214 }
|
|
|
select specified collection
Definition at line 285 of file subalbumsWidget.cpp. References collections, collectionSelected(), and currentSelection. Referenced by createAction(), deleteAction(), handleSelectionAttempt(), and selectFirstCollection(). 00286 {
00287 //no necessary action when selecting the currently selection collection
00288 if(currentSelection == item) return;
00289
00290 //select item
00291 if( item != NULL ) collections->setSelected( item, true);
00292
00293 //cachce selection
00294 currentSelection = item;
00295
00296 //emit signal that a different collection has been selected
00297 if(currentSelection == NULL )
00298 emit collectionSelected( NULL );
00299 else
00300 emit collectionSelected( ((SubalbumPreviewWidget*)currentSelection)->getSubalbum() );
00301 }
|
|
|
select first collection
Definition at line 280 of file subalbumsWidget.cpp. References collections, and selectCollection(). Referenced by refreshCollectionsList(). 00281 {
00282 selectCollection( collections->firstItem() );
00283 }
|
|
|
Activates/Deactives create/delete buttons.
Definition at line 216 of file subalbumsWidget.cpp. References buttonsState, createButton, and deleteButton. Referenced by SubalbumWidget::addImageAction(), TitleWidget::exportLargeImages(), TitleWidget::exportSmallWebGallery(), TitleWidget::loadAlbum(), SubalbumWidget::removeImageAction(), SubalbumWidget::rotate270ImageAction(), SubalbumWidget::rotate90ImageAction(), TitleWidget::saveAlbum(), and TitleWidget::saveAsAlbum(). 00217 {
00218 if(enable)
00219 {
00220 createButton->setEnabled( true );
00221 deleteButton->setEnabled( buttonsState );
00222 }
00223 else
00224 {
00225 buttonsState = createButton->isEnabled();
00226 createButton->setEnabled( false );
00227 deleteButton->setEnabled( false );
00228 }
00229 }
|
|
|
Definition at line 199 of file subalbumsWidget.cpp. References currentSelection. Referenced by LayoutWidget::updateSubalbumImage(). 00200 {
00201 if( currentSelection != NULL)
00202 currentSelection->setPixmap( *val );
00203 }
|
|
|
Cached enabled/disabled state of buttons.
Definition at line 78 of file subalbumsWidget.h. Referenced by updateButtons(). |
|
|
list of subalbums
Definition at line 63 of file subalbumsWidget.h. Referenced by createAction(), deleteAction(), refreshCollectionsList(), reorder(), selectCollection(), selectFirstCollection(), and SubalbumsWidget(). |
|
|
Create collection button.
Definition at line 69 of file subalbumsWidget.h. Referenced by SubalbumsWidget(), and updateButtons(). |
|
|
Definition at line 66 of file subalbumsWidget.h. Referenced by refreshCollectionsList(), refreshSelectedCollectionName(), selectCollection(), SubalbumsWidget(), and updatedSelectedCollectionImage(). |
|
|
Delete collection button.
Definition at line 72 of file subalbumsWidget.h. Referenced by createAction(), deleteAction(), SubalbumsWidget(), and updateButtons(). |
|
|
Pointer to layoutwidget this widget is in.
Definition at line 75 of file subalbumsWidget.h. Referenced by createAction(), deleteAction(), handleSelectionAttempt(), refreshCollectionsList(), reorder(), and SubalbumsWidget(). |
1.3.9.1