Main Page   Compound List   File List   Compound Members   File Members  

SubalbumsWidget Class Reference

#include <subalbumsWidget.h>

List of all members.


Detailed Description

Columnview of all subalbums in album.

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


Constructor & Destructor Documentation

SubalbumsWidget::SubalbumsWidget QWidget *  parent = 0,
const char *  name = 0
 

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 }

SubalbumsWidget::~SubalbumsWidget  ) 
 

Deletes objects.

Definition at line 110 of file subalbumsWidget.cpp.

References createSubalbumImage, and deleteSubalbumImage.

00111 {
00112   delete createSubalbumImage;
00113   delete deleteSubalbumImage;
00114 }


Member Function Documentation

void SubalbumsWidget::createAction  )  [private, slot]
 

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 }

void SubalbumsWidget::deleteAction  )  [private, slot]
 

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 }

LayoutWidget * SubalbumsWidget::getParent  ) 
 

Returns parent.

Definition at line 266 of file subalbumsWidget.cpp.

References layout.

00267 {
00268   return layout;
00269 }

void SubalbumsWidget::refresh  ) 
 

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 }

void SubalbumsWidget::reorder  )  [private, slot]
 

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 }

void SubalbumsWidget::updateButtons bool  enable  ) 
 

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 }

void SubalbumsWidget::updateSubalbumLayout QIconViewItem *  selection,
bool  oldExists
[private, slot]
 

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 }

void SubalbumsWidget::updateSubalbumLayout QIconViewItem *  selection  )  [private, slot]
 

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 }

void SubalbumsWidget::updateSubalbumName const QString &  val  ) 
 

Updates subalbum name.

Definition at line 201 of file subalbumsWidget.cpp.

References subalbums.

Referenced by LayoutWidget::updateSubalbumName().

00202 {
00203   //if an item is selected
00204   if(subalbums->currentItem() != NULL)
00205   { 
00206     subalbums->currentItem()->setText(val);
00207   }
00208   subalbums->arrangeItemsInGrid();
00209 }

void SubalbumsWidget::updateSubalbumThumbnail QPixmap *  val  ) 
 

Updates the current subalbums thumbnail.

Definition at line 211 of file subalbumsWidget.cpp.

References subalbums.

Referenced by LayoutWidget::updateSubalbumImage().

00212 {
00213   //if an item is selected
00214   if(subalbums->currentItem() != NULL)
00215   { 
00216     subalbums->currentItem()->setPixmap( *val );
00217   }
00218   subalbums->arrangeItemsInGrid();
00219 }


Member Data Documentation

bool SubalbumsWidget::buttonsState [private]
 

cached enabled/disabled state of buttons

Definition at line 104 of file subalbumsWidget.h.

Referenced by updateButtons().

QIconViewItem* SubalbumsWidget::cachedSelection [private]
 

cached selected subalbum

Definition at line 107 of file subalbumsWidget.h.

Referenced by SubalbumsWidget(), and updateSubalbumLayout().

QPushButton* SubalbumsWidget::createSubalbum [private]
 

"Create" button

Definition at line 92 of file subalbumsWidget.h.

Referenced by SubalbumsWidget(), and updateButtons().

QPixmap* SubalbumsWidget::createSubalbumImage [private]
 

"Create" image

Definition at line 89 of file subalbumsWidget.h.

Referenced by SubalbumsWidget(), and ~SubalbumsWidget().

QPushButton* SubalbumsWidget::deleteSubalbum [private]
 

"Delete" button

Definition at line 98 of file subalbumsWidget.h.

Referenced by deleteAction(), SubalbumsWidget(), updateButtons(), and updateSubalbumLayout().

QPixmap* SubalbumsWidget::deleteSubalbumImage [private]
 

"Delete" image

Definition at line 95 of file subalbumsWidget.h.

Referenced by SubalbumsWidget(), and ~SubalbumsWidget().

QGridLayout* SubalbumsWidget::grid [private]
 

Grid widgets place in.

Definition at line 80 of file subalbumsWidget.h.

Referenced by SubalbumsWidget().

LayoutWidget* SubalbumsWidget::layout [private]
 

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().

SubalbumsIconView* SubalbumsWidget::subalbums [private]
 

list of subalbums

Definition at line 86 of file subalbumsWidget.h.

Referenced by createAction(), deleteAction(), refresh(), reorder(), SubalbumsWidget(), updateSubalbumLayout(), updateSubalbumName(), and updateSubalbumThumbnail().

QLabel* SubalbumsWidget::subalbumsText [private]
 

"Subalbums:" label

Definition at line 83 of file subalbumsWidget.h.

Referenced by SubalbumsWidget().


The documentation for this class was generated from the following files:
Generated on Tue Jun 10 23:41:23 2003 for AlbumShaper by doxygen 1.3.1