#include <subalbumsWidget.h>
Definition at line 36 of file subalbumsWidget.h.
Public Member Functions | |
SubalbumsWidget (QWidget *parent=0, const char *name=0) | |
Creates layout. | |
~SubalbumsWidget () | |
Deletes objects. | |
void | updateSubalbumName (const QString &val) |
Updates subalbum name. | |
void | updateSubalbumThumbnail (QPixmap *val) |
Updates the current subalbums thumbnail. | |
void | refresh () |
Refreshes layout. | |
LayoutWidget * | getParent () |
Returns parent. | |
void | updateButtons (bool enable) |
Activates/Deactives create/delete buttons. | |
Private Slots | |
void | createAction () |
Creates new subalbum and adds to layout. | |
void | deleteAction () |
Deletes selected subalbum if user selects "yes". | |
void | updateSubalbumLayout (QIconViewItem *selection) |
Updates subalbum layout with user selects a differnt subalbum. | |
void | updateSubalbumLayout (QIconViewItem *selection, bool oldExists) |
void | reorder () |
Private Attributes | |
QGridLayout * | grid |
Grid widgets place in. | |
QLabel * | subalbumsText |
"Subalbums:" label | |
SubalbumsIconView * | subalbums |
list of subalbums | |
QPixmap * | createSubalbumImage |
"Create" image | |
QPushButton * | createSubalbum |
"Create" button | |
QPixmap * | deleteSubalbumImage |
"Delete" image | |
QPushButton * | deleteSubalbum |
"Delete" button | |
LayoutWidget * | layout |
Pointer to layoutwidget this widget is in. | |
bool | buttonsState |
cached enabled/disabled state of buttons | |
QIconViewItem * | cachedSelection |
cached selected subalbum |
|
Creates layout.
Definition at line 40 of file subalbumsWidget.cpp. References cachedSelection, createAction(), createSubalbum, createSubalbumImage, deleteAction(), deleteSubalbum, deleteSubalbumImage, grid, IMAGE_PATH, layout, reorder(), subalbums, subalbumsText, and updateSubalbumLayout().
00041 : 00042 QWidget(parent,name) 00043 { 00044 //set layout pointer 00045 layout = (LayoutWidget*)parent; 00046 00047 //create subalbums text 00048 subalbumsText = new QLabel( this ); 00049 subalbumsText->setText( "Subalbums: " ); 00050 subalbumsText->setFont( QFont( "Times", 12, QFont::Bold ) ); 00051 00052 //create subalbums iconview 00053 subalbums = new SubalbumsIconView( this ); 00054 00055 //establish a top-down view such that the scrollbar is always placed on the right 00056 subalbums->setArrangement( QIconView::LeftToRight ); 00057 subalbums->setVScrollBarMode( QScrollView::AlwaysOn ); 00058 00059 //only allow one subalbum to be selected at a time 00060 subalbums->setSelectionMode( QIconView::Single ) ; 00061 00062 //set auto-scroll off for drag-n-drop 00063 subalbums->setDragAutoScroll(true); 00064 subalbums->setAcceptDrops(true); 00065 00066 //connect drop event on iconview to reorder slot 00067 connect( subalbums, SIGNAL(itemHasMoved()), SLOT(reorder()) ); 00068 00069 //connect selectionChanged signal to updateSubalbumLayout method 00070 connect( subalbums, SIGNAL(selectionChanged(QIconViewItem*)), 00071 SLOT(updateSubalbumLayout(QIconViewItem*)) ); 00072 00073 //connect rightButtonClicked signal to updateSubalbumLayout method 00074 connect( subalbums, SIGNAL(rightButtonClicked(QIconViewItem*, const QPoint&)), 00075 SLOT(updateSubalbumLayout(QIconViewItem*)) ); 00076 00077 //create create/delete subalbum buttons 00078 createSubalbumImage = new QPixmap( QString(IMAGE_PATH)+"create.png" ); 00079 00080 createSubalbum = new QPushButton( this ); 00081 createSubalbum->setPixmap( *createSubalbumImage ); 00082 createSubalbum->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum ); 00083 connect( createSubalbum, SIGNAL(clicked()), SLOT(createAction()) ); 00084 00085 deleteSubalbumImage = new QPixmap( QString(IMAGE_PATH)+"delete.png" ); 00086 00087 deleteSubalbum = new QPushButton( this ); 00088 deleteSubalbum->setPixmap( *deleteSubalbumImage ); 00089 deleteSubalbum->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum ); 00090 deleteSubalbum->setEnabled(false); 00091 connect( deleteSubalbum, SIGNAL(clicked()), SLOT(deleteAction()) ); 00092 00093 //place label, listbox, and buttons in grid 00094 grid = new QGridLayout( this, 3, 2, 0 ); 00095 grid->addMultiCellWidget( subalbumsText, 0, 0, 0, 1 ); 00096 grid->addMultiCellWidget( subalbums, 1, 1, 0, 1 ); 00097 grid->addWidget( createSubalbum, 2, 0); 00098 grid->addWidget( deleteSubalbum, 2, 1); 00099 00100 //set listbox to grow 00101 grid->setRowStretch( 1, 1 ); 00102 00103 //set the background of the widget to be white 00104 setPaletteBackgroundColor( QColor(255, 255, 255) ); 00105 00106 //nothign selected at first 00107 cachedSelection = NULL; 00108 } |
|
Deletes objects.
Definition at line 110 of file subalbumsWidget.cpp. References createSubalbumImage, and deleteSubalbumImage.
00111 { 00112 delete createSubalbumImage; 00113 delete deleteSubalbumImage; 00114 } |
|
Creates new subalbum and adds to layout.
Definition at line 116 of file subalbumsWidget.cpp. References Album::appendSubalbum(), TitleWidget::getAlbum(), Album::getNumSubalbums(), Window::getTitle(), LayoutWidget::getWindow(), layout, and subalbums. Referenced by SubalbumsWidget().
00117 { 00118 Subalbum* n = new Subalbum(layout->getWindow()->getTitle()->getAlbum(), 00119 layout->getWindow()->getTitle()->getAlbum()->getNumSubalbums()+1); 00120 SubalbumPreviewWidget* p = new SubalbumPreviewWidget( subalbums, n ); 00121 p->setDropEnabled(true); 00122 00123 layout->getWindow()->getTitle()->getAlbum()->appendSubalbum( n ); 00124 } |
|
Deletes selected subalbum if user selects "yes".
Definition at line 126 of file subalbumsWidget.cpp. References deleteSubalbum, TitleWidget::getAlbum(), Window::getTitle(), LayoutWidget::getWindow(), layout, Album::removeSubalbum(), TitleWidget::setSetButtonState(), subalbums, and updateSubalbumLayout(). Referenced by SubalbumsWidget().
00127 { 00128 //if an item is selected it remove it 00129 if(subalbums->currentItem() != NULL) 00130 { 00131 //check if user is sure 00132 QuestionDialog sure( "Delete subalbum?", 00133 "Once deleted a subalbum and it's contents cannot be brought back unless a saved copy of the album exists.", 00134 "warning.png", 00135 this ); 00136 //if user say yes then delete subalbum and refresh 00137 if(sure.exec()) 00138 { 00139 //delete the subalbum 00140 Subalbum* s = ((SubalbumPreviewWidget*) subalbums->currentItem())->getSubalbum(); 00141 delete subalbums->currentItem(); 00142 00143 //remove subalbum from backend album object 00144 layout->getWindow()->getTitle()->getAlbum()->removeSubalbum( s ); 00145 00146 //rearrange the items in the grid 00147 subalbums->arrangeItemsInGrid(); 00148 00149 //update which subalbum is shown in the layout area 00150 updateSubalbumLayout(subalbums->firstItem(), false); 00151 00152 //check if any subalbums selected, if not deactivate delete button 00153 if(subalbums->currentItem() == NULL || !subalbums->currentItem()->isSelected()) 00154 { 00155 deleteSubalbum->setEnabled(false); 00156 } 00157 00158 //no images themselves selected so disable set button 00159 layout->getWindow()->getTitle()->setSetButtonState(false); 00160 } 00161 } 00162 } |
|
Returns parent.
Definition at line 266 of file subalbumsWidget.cpp. References layout.
00267 { 00268 return layout; 00269 } |
|
Refreshes layout.
Definition at line 234 of file subalbumsWidget.cpp. References TitleWidget::getAlbum(), Album::getFirstSubalbum(), Subalbum::getNext(), Window::getTitle(), LayoutWidget::getWindow(), layout, subalbums, and updateSubalbumLayout(). Referenced by LayoutWidget::refresh().
00235 { 00236 //delete all previous entries 00237 QIconViewItem* current = subalbums->firstItem(); 00238 QIconViewItem* temp; 00239 while(current != NULL) 00240 { 00241 //get next pointer 00242 temp = current->nextItem(); 00243 00244 //delete widget 00245 delete current; 00246 current = temp; 00247 } 00248 00249 //insert all new subalums 00250 Subalbum* curSubalbum = layout->getWindow()->getTitle()->getAlbum()->getFirstSubalbum(); 00251 while( curSubalbum != NULL) 00252 { 00253 (void) new SubalbumPreviewWidget( subalbums, curSubalbum ); 00254 curSubalbum = curSubalbum->getNext(); 00255 } 00256 00257 //refresh layout 00258 subalbums->arrangeItemsInGrid(); 00259 updateSubalbumLayout( subalbums->firstItem(), false ); 00260 00261 //auto select first item 00262 if(subalbums->firstItem() != NULL) 00263 subalbums->setSelected( subalbums->firstItem(), TRUE); 00264 } |
|
Definition at line 221 of file subalbumsWidget.cpp. References TitleWidget::getAlbum(), Window::getTitle(), LayoutWidget::getWindow(), layout, subalbums, and Album::syncSubalbumList(). Referenced by SubalbumsWidget().
00222 { 00223 //so item has been moved, reorder linked list of items as necessary 00224 subalbums->sort( true ); 00225 subalbums->arrangeItemsInGrid(); 00226 00227 //get handle on backend album object 00228 Album* albm = layout->getWindow()->getTitle()->getAlbum(); 00229 00230 //sync lists 00231 albm->syncSubalbumList((SubalbumPreviewWidget*)subalbums->firstItem()); 00232 } |
|
Activates/Deactives create/delete buttons.
Definition at line 271 of file subalbumsWidget.cpp. References buttonsState, createSubalbum, and deleteSubalbum. Referenced by SubalbumWidget::addImageAction(), SubalbumWidget::flipHorizontallyImageAction(), SubalbumWidget::flipVerticallyImageAction(), TitleWidget::loadAlbum(), SubalbumWidget::removeImageAction(), SubalbumWidget::rotate270ImageAction(), SubalbumWidget::rotate90ImageAction(), and TitleWidget::saveAlbum().
00272 { 00273 if(!enable) 00274 { 00275 buttonsState = createSubalbum->isEnabled(); 00276 createSubalbum->setEnabled(enable); 00277 deleteSubalbum->setEnabled(enable); 00278 } 00279 else 00280 { 00281 createSubalbum->setEnabled(enable); 00282 deleteSubalbum->setEnabled(buttonsState); 00283 } 00284 } |
|
Definition at line 188 of file subalbumsWidget.cpp. References layout, LayoutWidget::stopEdit(), and LayoutWidget::updateSubalbum().
00189 { 00190 //hide photo edit dialog in case we were just editing a photo 00191 layout->stopEdit(oldExists); 00192 00193 if(selection == NULL) 00194 layout->updateSubalbum( NULL, oldExists ); 00195 else 00196 { 00197 layout->updateSubalbum(((SubalbumPreviewWidget*)selection)->getSubalbum(), oldExists); 00198 } 00199 } |
|
Updates subalbum layout with user selects a differnt subalbum.
Definition at line 164 of file subalbumsWidget.cpp. References cachedSelection, deleteSubalbum, TitleWidget::getBusy(), Window::getTitle(), LayoutWidget::getWindow(), layout, and subalbums. Referenced by deleteAction(), refresh(), and SubalbumsWidget().
00165 { 00166 //if application busy ignore action 00167 if(layout->getWindow()->getTitle()->getBusy()) 00168 { 00169 if(cachedSelection == NULL) 00170 subalbums->clearSelection(); 00171 else 00172 subalbums->setSelected(cachedSelection, true); 00173 return; 00174 } 00175 00176 //cache selection 00177 cachedSelection = selection; 00178 00179 //activate/disable delete button depending on if something is currently selected or not 00180 if(selection == NULL) 00181 deleteSubalbum->setEnabled(false); 00182 else 00183 deleteSubalbum->setEnabled(true); 00184 00185 updateSubalbumLayout(selection, true); 00186 } |
|
Updates subalbum name.
Definition at line 201 of file subalbumsWidget.cpp. References subalbums. Referenced by LayoutWidget::updateSubalbumName().
|
|
Updates the current subalbums thumbnail.
Definition at line 211 of file subalbumsWidget.cpp. References subalbums. Referenced by LayoutWidget::updateSubalbumImage().
|
|
cached enabled/disabled state of buttons
Definition at line 104 of file subalbumsWidget.h. Referenced by updateButtons(). |
|
cached selected subalbum
Definition at line 107 of file subalbumsWidget.h. Referenced by SubalbumsWidget(), and updateSubalbumLayout(). |
|
"Create" button
Definition at line 92 of file subalbumsWidget.h. Referenced by SubalbumsWidget(), and updateButtons(). |
|
"Create" image
Definition at line 89 of file subalbumsWidget.h. Referenced by SubalbumsWidget(), and ~SubalbumsWidget(). |
|
"Delete" button
Definition at line 98 of file subalbumsWidget.h. Referenced by deleteAction(), SubalbumsWidget(), updateButtons(), and updateSubalbumLayout(). |
|
"Delete" image
Definition at line 95 of file subalbumsWidget.h. Referenced by SubalbumsWidget(), and ~SubalbumsWidget(). |
|
Grid widgets place in.
Definition at line 80 of file subalbumsWidget.h. Referenced by SubalbumsWidget(). |
|
Pointer to layoutwidget this widget is in.
Definition at line 101 of file subalbumsWidget.h. Referenced by createAction(), deleteAction(), getParent(), refresh(), reorder(), SubalbumsWidget(), and updateSubalbumLayout(). |
|
list of subalbums
Definition at line 86 of file subalbumsWidget.h. Referenced by createAction(), deleteAction(), refresh(), reorder(), SubalbumsWidget(), updateSubalbumLayout(), updateSubalbumName(), and updateSubalbumThumbnail(). |
|
"Subalbums:" label
Definition at line 83 of file subalbumsWidget.h. Referenced by SubalbumsWidget(). |