Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

SubalbumsWidget Class Reference

#include <subalbumsWidget.h>

Inheritance diagram for SubalbumsWidget:

Inheritance graph
[legend]
Collaboration diagram for SubalbumsWidget:

Collaboration graph
[legend]
List of all members.

Detailed Description

Columnview of all subalbums in album.

Definition at line 35 of file subalbumsWidget.h.

Public Member Functions

 SubalbumsWidget (QWidget *parent=0, const char *name=0)
 Creates layout.

void updateSubalbumName (const QString &val)
 Updates subalbum name.

void updateSubalbumThumbnail (QPixmap *val)
 Updates the current subalbums thumbnail.

void refresh ()
 Refreshes layout.

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

SubalbumsIconViewsubalbums
 list of subalbums

QToolButton * createSubalbum
 "Create" button

QToolButton * deleteSubalbum
 "Delete" button

LayoutWidgetlayout
 Pointer to layoutwidget this widget is in.

bool buttonsState
 cached enabled/disabled state of buttons


Constructor & Destructor Documentation

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

Creates layout.

Definition at line 40 of file subalbumsWidget.cpp.

References createAction(), createSubalbum, deleteAction(), deleteSubalbum, 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( tr("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 buttons  
00078   QFont buttonFont( qApp->font() );
00079   buttonFont.setBold(true);
00080   buttonFont.setPointSize( 11 );
00081   
00082   createSubalbum = new QToolButton( this );
00083   createSubalbum->setTextLabel(tr("Create"));
00084   createSubalbum->setIconSet( QPixmap(QString(IMAGE_PATH)+"create.png") );
00085   createSubalbum->setTextPosition(QToolButton::Right);
00086   createSubalbum->setFont( buttonFont );
00087   createSubalbum->setUsesTextLabel( true );
00088   QToolTip::add( createSubalbum, tr("Create a subalbum and append to subalbum list") );
00089   connect( createSubalbum, SIGNAL(clicked()), SLOT(createAction()) );
00090                                 
00091   deleteSubalbum = new QToolButton( this );
00092   deleteSubalbum->setTextLabel(tr("Delete"));
00093   deleteSubalbum->setIconSet( QPixmap(QString(IMAGE_PATH)+"delete.png") );
00094   deleteSubalbum->setTextPosition(QToolButton::Right);
00095   deleteSubalbum->setFont( buttonFont );
00096   deleteSubalbum->setUsesTextLabel( true );
00097   deleteSubalbum->setEnabled(false);
00098   QToolTip::add( deleteSubalbum, tr("Delete selected subalbum and all conents") );
00099   connect( deleteSubalbum, SIGNAL(clicked()), SLOT(deleteAction()) );
00100   
00101   //place label, listbox, and buttons in grid
00102   grid = new QGridLayout( this, 3, 5, 0 );
00103   grid->addMultiCellWidget( subalbumsText, 0, 0, 0, 4 );
00104   grid->addMultiCellWidget( subalbums, 1, 1, 0, 4 );
00105   grid->addWidget( createSubalbum, 2, 1);
00106   grid->addWidget( deleteSubalbum, 2, 3);
00107 
00108   grid->setColStretch( 0, 1 );
00109   grid->setColStretch( 2, 1 );
00110   grid->setColStretch( 4, 1 );
00111   
00112   //set listbox to grow
00113   grid->setRowStretch( 1, 1 );
00114 
00115   //set the background of the widget to be white
00116   setPaletteBackgroundColor( QColor(255, 255, 255) );
00117 }


Member Function Documentation

void SubalbumsWidget::createAction  )  [private, slot]
 

Creates new subalbum and adds to layout.

Definition at line 119 of file subalbumsWidget.cpp.

References Album::appendSubalbum(), TitleWidget::getAlbum(), Album::getNumSubalbums(), Window::getTitle(), LayoutWidget::getWindow(), layout, and subalbums.

Referenced by SubalbumsWidget().

00120 {
00121   Subalbum* n = new Subalbum(layout->getWindow()->getTitle()->getAlbum(),
00122                                              layout->getWindow()->getTitle()->getAlbum()->getNumSubalbums()+1);
00123   SubalbumPreviewWidget* p = new SubalbumPreviewWidget( subalbums, n );
00124   p->setDropEnabled(true);
00125    
00126   layout->getWindow()->getTitle()->getAlbum()->appendSubalbum( n );
00127 }

void SubalbumsWidget::deleteAction  )  [private, slot]
 

Deletes selected subalbum if user selects "yes".

Definition at line 129 of file subalbumsWidget.cpp.

References deleteSubalbum, TitleWidget::getAlbum(), Window::getTitle(), LayoutWidget::getWindow(), layout, Album::removeSubalbum(), TitleWidget::setSetButtonState(), subalbums, and updateSubalbumLayout().

Referenced by SubalbumsWidget().

00130 {
00131   //if an item is selected it remove it
00132   if(subalbums->currentItem() != NULL)
00133   { 
00134     //check if user is sure
00135     QuestionDialog sure( tr("Delete subalbum?"),
00136                          tr("Once deleted a subalbum and it's contents cannot be brought back unless a saved copy of the album exists."),
00137                          "warning.png",
00138                          this );
00139     //if user say yes then delete subalbum and refresh
00140     if(sure.exec())  
00141     {
00142       //delete the subalbum
00143       Subalbum* s = ((SubalbumPreviewWidget*) subalbums->currentItem())->getSubalbum();
00144       delete subalbums->currentItem();
00145 
00146       //remove subalbum from backend album object
00147       layout->getWindow()->getTitle()->getAlbum()->removeSubalbum( s );
00148       
00149       //rearrange the items in the grid
00150       subalbums->arrangeItemsInGrid();
00151       
00152       //update which subalbum is shown in the layout area
00153       updateSubalbumLayout(subalbums->firstItem(), false);
00154       
00155       //check if any subalbums selected, if not deactivate delete button
00156       if(subalbums->currentItem() == NULL || !subalbums->currentItem()->isSelected())
00157       {
00158           deleteSubalbum->setEnabled(false);
00159       }
00160       
00161       //no images themselves selected so disable set button
00162       layout->getWindow()->getTitle()->setSetButtonState(false);
00163     }
00164   }
00165 }

LayoutWidget * SubalbumsWidget::getParent  ) 
 

Returns parent.

Definition at line 262 of file subalbumsWidget.cpp.

References layout.

00263 {
00264   return layout;
00265 }

void SubalbumsWidget::refresh  ) 
 

Refreshes layout.

Definition at line 230 of file subalbumsWidget.cpp.

References TitleWidget::getAlbum(), Album::getFirstSubalbum(), Subalbum::getNext(), Window::getTitle(), LayoutWidget::getWindow(), layout, subalbums, and updateSubalbumLayout().

Referenced by LayoutWidget::refresh().

00231 {
00232   //delete all previous entries
00233   QIconViewItem* current = subalbums->firstItem();
00234   QIconViewItem* temp;
00235   while(current != NULL)
00236   {
00237     //get next pointer  
00238     temp = current->nextItem();
00239     
00240     //delete widget
00241     delete current;
00242     current = temp;
00243   }
00244 
00245   //insert all new subalums
00246   Subalbum* curSubalbum = layout->getWindow()->getTitle()->getAlbum()->getFirstSubalbum();
00247   while( curSubalbum != NULL)
00248   {
00249     (void) new SubalbumPreviewWidget( subalbums, curSubalbum );
00250     curSubalbum = curSubalbum->getNext();
00251   }
00252   
00253   //refresh layout
00254   subalbums->arrangeItemsInGrid();
00255   updateSubalbumLayout( subalbums->firstItem(), false );
00256   
00257   //auto select first item
00258   if(subalbums->firstItem() != NULL)
00259     subalbums->setSelected( subalbums->firstItem(), true);
00260 }

void SubalbumsWidget::reorder  )  [private, slot]
 

Definition at line 217 of file subalbumsWidget.cpp.

References TitleWidget::getAlbum(), Window::getTitle(), LayoutWidget::getWindow(), layout, subalbums, and Album::syncSubalbumList().

Referenced by SubalbumsWidget().

00218 {
00219   //so item has been moved, reorder linked list of items as necessary
00220   subalbums->sort( true );
00221   subalbums->arrangeItemsInGrid();
00222   
00223   //get handle on backend album object
00224   Album* albm = layout->getWindow()->getTitle()->getAlbum();
00225   
00226   //sync lists
00227   albm->syncSubalbumList((SubalbumPreviewWidget*)subalbums->firstItem());
00228 }

void SubalbumsWidget::updateButtons bool  enable  ) 
 

Activates/Deactives create/delete buttons.

Definition at line 267 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(), TitleWidget::saveAlbum(), and TitleWidget::saveAsAlbum().

00268 {
00269   if(!enable)
00270   {
00271     buttonsState = createSubalbum->isEnabled();
00272     createSubalbum->setEnabled(enable);
00273     deleteSubalbum->setEnabled(enable);  
00274   }
00275   else
00276   {
00277     createSubalbum->setEnabled(enable);
00278     deleteSubalbum->setEnabled(buttonsState);  
00279   }
00280 }

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

Definition at line 184 of file subalbumsWidget.cpp.

References layout, LayoutWidget::stopEdit(), and LayoutWidget::updateSubalbum().

00185 {
00186   //hide photo edit dialog in case we were just editing a photo
00187   layout->stopEdit(oldExists);
00188 
00189   if(selection == NULL)
00190     layout->updateSubalbum( NULL, oldExists );
00191   else
00192   {
00193     layout->updateSubalbum(((SubalbumPreviewWidget*)selection)->getSubalbum(), oldExists);
00194   }
00195 }

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

Updates subalbum layout with user selects a differnt subalbum.

Definition at line 167 of file subalbumsWidget.cpp.

References deleteSubalbum, TitleWidget::getBusy(), Window::getTitle(), LayoutWidget::getWindow(), and layout.

Referenced by deleteAction(), refresh(), and SubalbumsWidget().

00168 {
00169   //if application busy ignore action
00170   if(layout->getWindow()->getTitle()->getBusy())
00171   {
00172     return;
00173   }
00174   
00175   //activate/disable delete button depending on if something is currently selected or not
00176   if(selection == NULL)
00177     deleteSubalbum->setEnabled(false);
00178   else
00179     deleteSubalbum->setEnabled(true);
00180 
00181   updateSubalbumLayout(selection, true);
00182 }

void SubalbumsWidget::updateSubalbumName const QString &  val  ) 
 

Updates subalbum name.

Definition at line 197 of file subalbumsWidget.cpp.

References subalbums.

Referenced by LayoutWidget::updateSubalbumName().

00198 {
00199   //if an item is selected
00200   if(subalbums->currentItem() != NULL)
00201   { 
00202     subalbums->currentItem()->setText(val);
00203   }
00204   subalbums->arrangeItemsInGrid();
00205 }

void SubalbumsWidget::updateSubalbumThumbnail QPixmap *  val  ) 
 

Updates the current subalbums thumbnail.

Definition at line 207 of file subalbumsWidget.cpp.

References subalbums.

Referenced by LayoutWidget::updateSubalbumImage().

00208 {
00209   //if an item is selected
00210   if(subalbums->currentItem() != NULL)
00211   { 
00212     subalbums->currentItem()->setPixmap( *val );
00213   }
00214   subalbums->arrangeItemsInGrid();
00215 }


Member Data Documentation

bool SubalbumsWidget::buttonsState [private]
 

cached enabled/disabled state of buttons

Definition at line 94 of file subalbumsWidget.h.

Referenced by updateButtons().

QToolButton* SubalbumsWidget::createSubalbum [private]
 

"Create" button

Definition at line 85 of file subalbumsWidget.h.

Referenced by SubalbumsWidget(), and updateButtons().

QToolButton* SubalbumsWidget::deleteSubalbum [private]
 

"Delete" button

Definition at line 88 of file subalbumsWidget.h.

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

QGridLayout* SubalbumsWidget::grid [private]
 

Grid widgets place in.

Definition at line 76 of file subalbumsWidget.h.

Referenced by SubalbumsWidget().

LayoutWidget* SubalbumsWidget::layout [private]
 

Pointer to layoutwidget this widget is in.

Definition at line 91 of file subalbumsWidget.h.

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

SubalbumsIconView* SubalbumsWidget::subalbums [private]
 

list of subalbums

Definition at line 82 of file subalbumsWidget.h.

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

QLabel* SubalbumsWidget::subalbumsText [private]
 

"Subalbums:" label

Definition at line 79 of file subalbumsWidget.h.

Referenced by SubalbumsWidget().


The documentation for this class was generated from the following files:
Generated on Thu Nov 13 00:11:18 2003 for AlbumShaper by doxygen 1.3.4