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

RecentAlbumMenuItem Class Reference

#include <recentAlbumMenuItem.h>

Inheritance diagram for RecentAlbumMenuItem:

[legend]
Collaboration diagram for RecentAlbumMenuItem:
[legend]
List of all members.

Detailed Description

A custom menu entry, displays album image, name, and number of photos.

Definition at line 23 of file recentAlbumMenuItem.h.

Public Member Functions

 RecentAlbumMenuItem (Key acceleratorKey)
void changeItem (QString albumName, QString albumLocation, QString numPhotos)
 updates entry as per arguments passed (used by constructor during intiailization as well)

void paint (QPainter *p, const QColorGroup &cg, bool act, bool enabled, int x, int y, int w, int h)
 paints entry

QSize sizeHint ()
 returns menu entry size

void setMaxWidth (int val)
 after all menu items have been refreshed hint at maximum width so we can adequately position the accelerator text

bool fullSpan () const
 no icon necessary since album image painted here


Private Attributes

Key acceleratorKey
QImage albumImage
 album image

QString albumName
 album name

QString numPhotos
 number of photos

QSize size
 computed size

int maxWidth
 max element width

int idealImageWidth
 used for painting purposes


Constructor & Destructor Documentation

RecentAlbumMenuItem::RecentAlbumMenuItem Key  acceleratorKey  ) 
 

Definition at line 22 of file recentAlbumMenuItem.cpp.

References changeItem(), and RecentAlbumMenuItem().

Referenced by RecentAlbumMenuItem().

00022 : QCustomMenuItem() 00023 { 00024 this->acceleratorKey = acceleratorKey; 00025 changeItem( "unitialized", "unitialized", "unitialized" ); 00026 }


Member Function Documentation

void RecentAlbumMenuItem::changeItem QString  albumName,
QString  albumLocation,
QString  numPhotos
 

updates entry as per arguments passed (used by constructor during intiailization as well)

Definition at line 28 of file recentAlbumMenuItem.cpp.

References albumImage, changeItem(), idealImageWidth, scaleImage(), and size.

Referenced by changeItem(), RecentAlbumMenuItem(), and TitleWidget::refreshOpenRecentMenu().

00031 { 00032 //set name, and number of photos 00033 this->albumName = albumName; 00034 this->numPhotos = numPhotos; 00035 00036 //compute height 00037 QFontMetrics fm( qApp->font() ); 00038 size.setHeight( 2 + fm.leading() + 2*fm.height() + 2); 00039 00040 //attempt to set album image 00041 QString albumImageLocation = QDir::convertSeparators( albumLocation + "/img/album.jpg" ); 00042 QDir tempDir; 00043 if( tempDir.exists( albumImageLocation ) ) 00044 { 00045 //ideal image width assuming 4:3 aspect ratio 00046 idealImageWidth = (4 * (size.height()-4) ) / 3; 00047 00048 //scale image 00049 scaleImage( albumImageLocation, albumImage, idealImageWidth, size.height() ); 00050 } 00051 else 00052 { 00053 idealImageWidth = 0; 00054 } 00055 00056 //compute menu entry width 00057 size.setWidth( idealImageWidth + 2 + fm.width(albumName) ); 00058 }

bool RecentAlbumMenuItem::fullSpan  )  const
 

no icon necessary since album image painted here

Definition at line 108 of file recentAlbumMenuItem.cpp.

00109 { return true; }

void RecentAlbumMenuItem::paint QPainter *  p,
const QColorGroup &  cg,
bool  act,
bool  enabled,
int  x,
int  y,
int  w,
int  h
 

paints entry

Definition at line 60 of file recentAlbumMenuItem.cpp.

References acceleratorKey, albumImage, albumName, idealImageWidth, maxWidth, numPhotos, paint(), and size.

Referenced by paint().

00064 { 00065 //move down and right by two for spacing purposes 00066 y+=2; 00067 x+=2; 00068 int xOffset = 0; 00069 int yOffset = 0; 00070 00071 //paint album image first if not null 00072 if(!albumImage.isNull()) 00073 { 00074 p->drawImage( x + (idealImageWidth - albumImage.width()) / 2, 00075 y + (size.height() - albumImage.height() - 4)/2, 00076 albumImage ); 00077 xOffset+=(idealImageWidth + 2); 00078 } 00079 00080 //paint album name + photo count 00081 QFontMetrics fm( qApp->font() ); 00082 yOffset+=fm.ascent(); 00083 p->drawText( x+xOffset, y+yOffset, albumName ); 00084 00085 //if photo count available print it as well 00086 if(numPhotos.compare("-1") != 0) 00087 { 00088 yOffset+=fm.descent() + 1 + fm.leading() + fm.ascent(); 00089 p->drawText( x+xOffset, y+yOffset, 00090 qApp->translate("RecentAlbumMenuItem", "%1 Photos").arg(numPhotos) ); 00091 } 00092 00093 //paint accelerator key 00094 if( acceleratorKey != Key_unknown ) 00095 { 00096 xOffset = maxWidth + 24; 00097 yOffset = fm.ascent() + fm.height()/2; 00098 QKeySequence seq( CTRL+acceleratorKey ); 00099 QString str = (QString)seq; 00100 p->drawText( x+xOffset, y+yOffset, 00101 str); 00102 } 00103 }

void RecentAlbumMenuItem::setMaxWidth int  val  ) 
 

after all menu items have been refreshed hint at maximum width so we can adequately position the accelerator text

Definition at line 111 of file recentAlbumMenuItem.cpp.

References maxWidth, and setMaxWidth().

Referenced by TitleWidget::refreshOpenRecentMenu(), and setMaxWidth().

00112 { maxWidth = val; }

QSize RecentAlbumMenuItem::sizeHint  ) 
 

returns menu entry size

Definition at line 105 of file recentAlbumMenuItem.cpp.

References size.

00106 { return size; }


Member Data Documentation

Key RecentAlbumMenuItem::acceleratorKey [private]
 

Definition at line 48 of file recentAlbumMenuItem.h.

Referenced by paint().

QImage RecentAlbumMenuItem::albumImage [private]
 

album image

Definition at line 51 of file recentAlbumMenuItem.h.

Referenced by changeItem(), and paint().

QString RecentAlbumMenuItem::albumName [private]
 

album name

Definition at line 54 of file recentAlbumMenuItem.h.

Referenced by paint().

int RecentAlbumMenuItem::idealImageWidth [private]
 

used for painting purposes

Definition at line 66 of file recentAlbumMenuItem.h.

Referenced by changeItem(), and paint().

int RecentAlbumMenuItem::maxWidth [private]
 

max element width

Definition at line 63 of file recentAlbumMenuItem.h.

Referenced by paint(), and setMaxWidth().

QString RecentAlbumMenuItem::numPhotos [private]
 

number of photos

Definition at line 57 of file recentAlbumMenuItem.h.

Referenced by paint().

QSize RecentAlbumMenuItem::size [private]
 

computed size

Definition at line 60 of file recentAlbumMenuItem.h.

Referenced by changeItem(), paint(), and sizeHint().


The documentation for this class was generated from the following files:
Generated on Sun Mar 4 19:43:08 2007 for AlbumShaper by doxygen 1.3.7