AlbumShaper  1.0a3
Public Slots | Signals | Public Member Functions | Private Slots | Private Member Functions | Private Attributes | List of all members
SubalbumsWidget Class Reference

Columnview of all subalbums in album. More...

#include <subalbumsWidget.h>

Inheritance diagram for SubalbumsWidget:
Inheritance graph
[legend]
Collaboration diagram for SubalbumsWidget:
Collaboration graph
[legend]

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. More...
 
void refreshCollectionsList ()
 Refreshes list of collections, selecting first by default. More...
 
LayoutWidgetgetParent ()
 Returns parent. More...
 
void updateButtons (bool enable)
 Activates/Deactives create/delete buttons. More...
 
Q3IconViewItemgetCurrentSelection ()
 Returns current selection. More...
 
SubalbumgetSelectedSubalbum ()
 Returns the currently selected subalbum. More...
 

Private Slots

void createAction ()
 create a new collection More...
 
void deleteAction ()
 deletes the currently selected collection More...
 
void handleSelectionAttempt (Q3IconViewItem *item)
 respond to user clicking collection icons More...
 
void reorder ()
 relayout collectionicons after a create/delete refresh More...
 

Private Member Functions

void selectFirstCollection ()
 Select specified subalbum. More...
 
void selectCollection (Q3IconViewItem *item)
 select specified collection More...
 

Private Attributes

SubalbumsIconViewcollections
 list of subalbums More...
 
Q3IconViewItemcurrentSelection
 
QToolButton * createButton
 Create collection button. More...
 
QToolButton * deleteButton
 Delete collection button. More...
 
LayoutWidgetlayout
 Pointer to layoutwidget this widget is in. More...
 
bool buttonsState
 Cached enabled/disabled state of buttons. More...
 

Detailed Description

Columnview of all subalbums in album.

Definition at line 31 of file subalbumsWidget.h.

Constructor & Destructor Documentation

§ SubalbumsWidget()

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

Creates layout.

Definition at line 39 of file subalbumsWidget.cpp.

References collections, createAction(), createButton, currentSelection, deleteAction(), deleteButton, handleSelectionAttempt(), IMAGE_PATH, layout, and reorder().

40  :
41  QWidget(parent,name)
42 {
43  //set layout pointer
44  layout = (LayoutWidget*)parent;
45 
46  //create "Collections:" header
47  QLabel* collectionsHeader = new QLabel( this );
48  collectionsHeader->setText( tr("Collections:") );
49  QFont labelFont = collectionsHeader->font();
50  labelFont.setWeight(QFont::Bold);
51  collectionsHeader->setFont( labelFont );
52  //--------------------------------------
53  //create collections list
54  collections = new SubalbumsIconView( this );
55 
56  //only one item can be selected at a time
57  collections->setSelectionMode( Q3IconView::Single ) ;
58 
59  //single column of items
60  collections->setGridX(1);
61 
62  //text is on right of icons
63  collections->setItemTextPos( Q3IconView::Right );
64 
65  //disable frame
66  collections->setFrameShape ( Q3Frame::NoFrame );
67 
68  collections->setMaxItemWidth(500);
69  collections->setPaletteBackgroundColor( QColor(193, 210, 238) );
70  collections->setDragAutoScroll(true);
71  collections->setAcceptDrops(true);
72  collections->setVScrollBarMode( Q3ScrollView::Auto );
73  collections->setHScrollBarMode( Q3ScrollView::Auto );
74  //--------------------------------------
75  //no selection by default
76  currentSelection = NULL;
77  //--------------------------------------
78  //connect drop event on iconview to reorder slot
79  connect( collections, SIGNAL(itemHasMoved()), SLOT(reorder()) );
80 
81  //handle selection attempts
82  connect( collections, SIGNAL(selectionChanged(Q3IconViewItem*)),
84  //--------------------------------------
85  //create create/delete buttons
86  QFont buttonFont( qApp->font() );
87  buttonFont.setBold(true);
88  buttonFont.setPointSize( 11 );
89 
90  createButton = new QToolButton( this );
91  createButton->setTextLabel(tr("Create"));
92  createButton->setIconSet( QPixmap(QString(IMAGE_PATH)+"buttonIcons/create.png") );
93  createButton->setTextPosition(QToolButton::BesideIcon);
94  createButton->setFont( buttonFont );
95  createButton->setUsesTextLabel( true );
96  createButton->setEnabled(true);
97  createButton->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
98  QToolTip::add( createButton, tr("Create a collection and append to subalbum list") );
99  connect( createButton, SIGNAL(clicked()), SLOT(createAction()) );
100 
101  deleteButton = new QToolButton( this );
102  deleteButton->setTextLabel(tr("Delete"));
103  deleteButton->setIconSet( QPixmap(QString(IMAGE_PATH)+"buttonIcons/delete.png") );
104  deleteButton->setTextPosition(QToolButton::BesideIcon);
105  deleteButton->setFont( buttonFont );
106  deleteButton->setUsesTextLabel( true );
107  deleteButton->setEnabled(false);
108  deleteButton->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
109  QToolTip::add( deleteButton, tr("Delete selected collection and all its contents") );
110  connect( deleteButton, SIGNAL(clicked()), SLOT(deleteAction()) );
111  //--------------------------------------
112  //place label, listbox, and buttons in grid
113  Q3GridLayout* grid = new Q3GridLayout( this, 3, 2, 0 );
114  grid->addMultiCellWidget( collectionsHeader, 0, 0, 0, 1, Qt::AlignHCenter );
115  grid->addMultiCellWidget( collections, 1, 1, 0, 1 );
116  grid->addWidget( createButton, 2, 0, Qt::AlignHCenter);
117  grid->addWidget( deleteButton, 2, 1, Qt::AlignHCenter);
118 
119  //allow collections listing to grow
120  grid->setRowStretch( 1, 1 );
121 
122  //set the background of the widget to be white
123  setPaletteBackgroundColor( QColor(193, 210, 238) );
124 }
SubalbumsIconView * collections
list of subalbums
QToolButton * createButton
Create collection button.
LayoutWidget * layout
Pointer to layoutwidget this widget is in.
Extension of iconview, used to list all subalbums in album. Supports drag-n-drop within iconview such...
QToolButton * deleteButton
Delete collection button.
Displays list of subalbums and a particular subalbum layout.
Definition: layoutWidget.h:39
QString IMAGE_PATH
Definition: config.cpp:18
void handleSelectionAttempt(Q3IconViewItem *item)
respond to user clicking collection icons
void reorder()
relayout collectionicons after a create/delete refresh
Q3IconViewItem * currentSelection
void createAction()
create a new collection
void deleteAction()
deletes the currently selected collection

Member Function Documentation

§ collectionSelected

void SubalbumsWidget::collectionSelected ( Subalbum )
signal

Referenced by selectCollection().

§ createAction

void SubalbumsWidget::createAction ( )
privateslot

create a new collection

Definition at line 126 of file subalbumsWidget.cpp.

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

Referenced by SubalbumsWidget().

127 {
128  //create new collection object
129  Album* albm = layout->getWindow()->getTitle()->getAlbum();
130  Subalbum* newCollection = new Subalbum( albm, albm->getNumSubalbums()+1 );
131  albm->appendSubalbum( newCollection );
132 
133  //create collection icon and auto select it
134  SubalbumPreviewWidget* newCollectionIcon = new SubalbumPreviewWidget( collections, newCollection );
135  newCollectionIcon->setDropEnabled(true);
136  selectCollection( newCollectionIcon );
137 
138  //update enabled state of delete collection button
139  deleteButton->setEnabled( collections->count() > 1 );
140 }
void selectCollection(Q3IconViewItem *item)
select specified collection
SubalbumsIconView * collections
list of subalbums
LayoutWidget * layout
Pointer to layoutwidget this widget is in.
int getNumSubalbums()
Returns number of subalbums.
Definition: album.cpp:144
void appendSubalbum(Subalbum *val)
Appends subalbum to end of linked list.
Definition: album.cpp:234
QToolButton * deleteButton
Delete collection button.
A subalbum contains photos.
Definition: subalbum.h:48
Displays subalbum icon and name.
Window * getWindow()
Returns a pointer to the window.
An album contains Subalbums.
Definition: album.h:52
Album * getAlbum()
Returns a pointer to the album object.
TitleWidget * getTitle()
returns a pointer to the title widget
Definition: window.cpp:188

§ deleteAction

void SubalbumsWidget::deleteAction ( )
privateslot

deletes the currently selected collection

Definition at line 142 of file subalbumsWidget.cpp.

References collections, deleteButton, TitleWidget::getAlbum(), Window::getTitle(), LayoutWidget::getWindow(), layout, Album::removeSubalbum(), selectCollection(), and TitleWidget::updateMenus().

Referenced by SubalbumsWidget().

143 {
144  //if an item is selected it remove it
145  if(collections->currentItem() != NULL)
146  {
147  //if user has chosen to not receive destructive action warnings, or agrees to the action, then
148  //delete subalbum and refresh view
149  bool proceed = !((Window*)qApp->mainWidget())->getConfig()->getBool( "alerts", "showDestructiveAlerts" );
150  if(!proceed)
151  {
152  QuestionDialog sure( tr("Delete collection?"),
153  tr("Once deleted a collection and it's contents cannot be brought back unless a saved copy of the album exists."),
154  "alertIcons/warning.png",
155  this );
156  proceed = sure.exec();
157  }
158  if(proceed)
159  {
160  //get handle on currently selected collection
161  Q3IconViewItem* oldSelection = collections->currentItem();
162 
163  //get handle on the next automatically selected collection
164  //auto select the new collection. If there is no next
165  //collection, select the previous collection (again if present)
166  Q3IconViewItem* newSelection = oldSelection->nextItem();
167  if(newSelection == NULL) newSelection = oldSelection->prevItem();
168 
169  //auto select a remaining collection if one exists
170  //we select before removing and deleting the old collection so that
171  //the collection information above smoothly transitions
172  selectCollection( newSelection );
173 
174  //remove the collection from the album
175  Subalbum* s = ((SubalbumPreviewWidget*) oldSelection)->getSubalbum();
177 
178  //free the collection icon
179  delete oldSelection;
180  oldSelection = NULL;
181 
182  //rearrange the items in the grid, making
183  //sure new selection is visible
184  collections->arrangeItemsInGrid();
185  if(newSelection != NULL) collections->ensureItemVisible( newSelection );
186 
187  //update enabled state of delete collection button
188  deleteButton->setEnabled( collections->count() > 1 );
189 
190  //notifty title widget that the album's photo count has possible changed
192  }
193  }
194 }
void selectCollection(Q3IconViewItem *item)
select specified collection
SubalbumsIconView * collections
list of subalbums
LayoutWidget * layout
Pointer to layoutwidget this widget is in.
QToolButton * deleteButton
Delete collection button.
Top level widget, encapsulates the title widget, the layout widget, and the toolbar widget...
Definition: window.h:39
void updateMenus(bool anySelected=false, bool anyRevertable=false)
update begin presentation menu entry - disabled when no photos in album
A subalbum contains photos.
Definition: subalbum.h:48
void removeSubalbum(Subalbum *val)
Removes a subalbum.
Definition: album.cpp:257
Displays subalbum icon and name.
Window * getWindow()
Returns a pointer to the window.
Album * getAlbum()
Returns a pointer to the album object.
A configurable question dialog that returns true/false.
TitleWidget * getTitle()
returns a pointer to the title widget
Definition: window.cpp:188

§ getCurrentSelection()

Q3IconViewItem * SubalbumsWidget::getCurrentSelection ( )

Returns current selection.

Definition at line 235 of file subalbumsWidget.cpp.

References currentSelection.

Referenced by TitleWidget::setSubalbumImage(), and TitleWidget::unsetSubalbumImage().

235 { return currentSelection; }
Q3IconViewItem * currentSelection

§ getParent()

LayoutWidget * SubalbumsWidget::getParent ( )

Returns parent.

Definition at line 234 of file subalbumsWidget.cpp.

References layout.

234 { return layout; }
LayoutWidget * layout
Pointer to layoutwidget this widget is in.

§ getSelectedSubalbum()

Subalbum * SubalbumsWidget::getSelectedSubalbum ( )

Returns the currently selected subalbum.

Definition at line 237 of file subalbumsWidget.cpp.

References currentSelection.

Referenced by TitleWidget::storeAnnotations().

238 {
239  return ((SubalbumPreviewWidget*) currentSelection )->getSubalbum();
240 }
Displays subalbum icon and name.
Q3IconViewItem * currentSelection

§ handleSelectionAttempt

void SubalbumsWidget::handleSelectionAttempt ( Q3IconViewItem item)
privateslot

respond to user clicking collection icons

Definition at line 276 of file subalbumsWidget.cpp.

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

Referenced by SubalbumsWidget().

277 {
278  //select collections only when program is not busy.
279  if( !layout->getWindow()->getTitle()->getBusy() )
280  selectCollection( item );
281 }
void selectCollection(Q3IconViewItem *item)
select specified collection
LayoutWidget * layout
Pointer to layoutwidget this widget is in.
bool getBusy()
is program busy?
Window * getWindow()
Returns a pointer to the window.
TitleWidget * getTitle()
returns a pointer to the title widget
Definition: window.cpp:188

§ refreshCollectionsList()

void SubalbumsWidget::refreshCollectionsList ( )

Refreshes list of collections, selecting first by default.

Definition at line 242 of file subalbumsWidget.cpp.

References collections, currentSelection, TitleWidget::getAlbum(), Album::getFirstSubalbum(), Subalbum::getNext(), Window::getTitle(), LayoutWidget::getWindow(), layout, and selectFirstCollection().

Referenced by LayoutWidget::refresh().

243 {
244  //delete all previous entries
245  Q3IconViewItem* current = collections->firstItem();
246  while(current != NULL)
247  {
248  Q3IconViewItem* next = current->nextItem();
249  delete current;
250  current = next;
251  }
252 
253  //for some reason scrollbar does not disappear automatically.
254  //Calling clear fixes this.
255  collections->clear();
256 
257  //reset cached selection handle
258  currentSelection = NULL;
259 
260  //insert all collections
261  Subalbum* curCollection = layout->getWindow()->getTitle()->getAlbum()->getFirstSubalbum();
262  while( curCollection != NULL)
263  {
264  SubalbumPreviewWidget* item = new SubalbumPreviewWidget( collections, curCollection );
265  item->setDropEnabled(true);
266  curCollection = curCollection->getNext();
267  }
268 
269  //refresh iconview
270  collections->arrangeItemsInGrid();
271 
272  //auto select first item
274 }
SubalbumsIconView * collections
list of subalbums
LayoutWidget * layout
Pointer to layoutwidget this widget is in.
A subalbum contains photos.
Definition: subalbum.h:48
Displays subalbum icon and name.
Subalbum * getFirstSubalbum()
Returns a pointer to the first Subalbum.
Definition: album.cpp:135
Window * getWindow()
Returns a pointer to the window.
Subalbum * getNext()
Returns pointer to next subalbum.
Definition: subalbum.cpp:98
Q3IconViewItem * currentSelection
Album * getAlbum()
Returns a pointer to the album object.
void selectFirstCollection()
Select specified subalbum.
TitleWidget * getTitle()
returns a pointer to the title widget
Definition: window.cpp:188

§ refreshSelectedCollectionName

void SubalbumsWidget::refreshSelectedCollectionName ( )
slot

Definition at line 196 of file subalbumsWidget.cpp.

References currentSelection.

Referenced by LayoutWidget::refreshSelectedCollectionIconName().

197 {
198  if( currentSelection != NULL)
199  currentSelection->setText( ((SubalbumPreviewWidget*)currentSelection)->getSubalbum()->getName() );
200 }
Displays subalbum icon and name.
Q3IconViewItem * currentSelection

§ reorder

void SubalbumsWidget::reorder ( )
privateslot

relayout collectionicons after a create/delete refresh

Definition at line 208 of file subalbumsWidget.cpp.

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

Referenced by SubalbumsWidget().

209 {
210  //so item has been moved, reorder linked list of items as necessary
211  collections->sort( true );
212  collections->arrangeItemsInGrid();
213 
214  //sync lists
215  Album* albm = layout->getWindow()->getTitle()->getAlbum();
216  albm->syncSubalbumList((SubalbumPreviewWidget*)collections->firstItem());
217 }
SubalbumsIconView * collections
list of subalbums
LayoutWidget * layout
Pointer to layoutwidget this widget is in.
void syncSubalbumList(SubalbumPreviewWidget *item)
Syncs subalbum ordering with front end gui ordering.
Definition: album.cpp:1369
Displays subalbum icon and name.
Window * getWindow()
Returns a pointer to the window.
An album contains Subalbums.
Definition: album.h:52
Album * getAlbum()
Returns a pointer to the album object.
TitleWidget * getTitle()
returns a pointer to the title widget
Definition: window.cpp:188

§ selectCollection()

void SubalbumsWidget::selectCollection ( Q3IconViewItem item)
private

select specified collection

Definition at line 288 of file subalbumsWidget.cpp.

References collections, collectionSelected(), and currentSelection.

Referenced by createAction(), deleteAction(), handleSelectionAttempt(), and selectFirstCollection().

289 {
290  //no necessary action when selecting the currently selection collection
291  if(currentSelection == item) return;
292 
293  //select item
294  if( item != NULL ) collections->setSelected( item, true);
295 
296  //cachce selection
297  currentSelection = item;
298 
299  //emit signal that a different collection has been selected
300  if(currentSelection == NULL )
301  emit collectionSelected( NULL );
302  else
303  emit collectionSelected( ((SubalbumPreviewWidget*)currentSelection)->getSubalbum() );
304 }
SubalbumsIconView * collections
list of subalbums
Displays subalbum icon and name.
void collectionSelected(Subalbum *)
Q3IconViewItem * currentSelection

§ selectFirstCollection()

void SubalbumsWidget::selectFirstCollection ( )
private

Select specified subalbum.

select first collection

Definition at line 283 of file subalbumsWidget.cpp.

References collections, and selectCollection().

Referenced by refreshCollectionsList().

284 {
285  selectCollection( collections->firstItem() );
286 }
void selectCollection(Q3IconViewItem *item)
select specified collection
SubalbumsIconView * collections
list of subalbums

§ updateButtons()

void SubalbumsWidget::updateButtons ( bool  enable)

Activates/Deactives create/delete buttons.

Definition at line 219 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().

220 {
221  if(enable)
222  {
223  createButton->setEnabled( true );
224  deleteButton->setEnabled( buttonsState );
225  }
226  else
227  {
228  buttonsState = createButton->isEnabled();
229  createButton->setEnabled( false );
230  deleteButton->setEnabled( false );
231  }
232 }
QToolButton * createButton
Create collection button.
QToolButton * deleteButton
Delete collection button.
bool buttonsState
Cached enabled/disabled state of buttons.

§ updatedSelectedCollectionImage

void SubalbumsWidget::updatedSelectedCollectionImage ( QPixmap *  val)
slot

Definition at line 202 of file subalbumsWidget.cpp.

References currentSelection.

Referenced by LayoutWidget::updateSubalbumImage().

203 {
204  if( currentSelection != NULL)
205  currentSelection->setPixmap( *val );
206 }
Q3IconViewItem * currentSelection

Member Data Documentation

§ buttonsState

bool SubalbumsWidget::buttonsState
private

Cached enabled/disabled state of buttons.

Definition at line 80 of file subalbumsWidget.h.

Referenced by updateButtons().

§ collections

SubalbumsIconView* SubalbumsWidget::collections
private

§ createButton

QToolButton* SubalbumsWidget::createButton
private

Create collection button.

Definition at line 71 of file subalbumsWidget.h.

Referenced by SubalbumsWidget(), and updateButtons().

§ currentSelection

Q3IconViewItem* SubalbumsWidget::currentSelection
private

§ deleteButton

QToolButton* SubalbumsWidget::deleteButton
private

Delete collection button.

Definition at line 74 of file subalbumsWidget.h.

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

§ layout

LayoutWidget* SubalbumsWidget::layout
private

Pointer to layoutwidget this widget is in.

Definition at line 77 of file subalbumsWidget.h.

Referenced by createAction(), deleteAction(), getParent(), handleSelectionAttempt(), refreshCollectionsList(), reorder(), and SubalbumsWidget().


The documentation for this class was generated from the following files: