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

albumStatistics.cpp

Go to the documentation of this file.
00001 //==============================================
00002 //  copyright            : (C) 2003-2005 by Will Stokes
00003 //==============================================
00004 //  This program is free software; you can redistribute it
00005 //  and/or modify it under the terms of the GNU General
00006 //  Public License as published by the Free Software
00007 //  Foundation; either version 2 of the License, or
00008 //  (at your option) any later version.
00009 //==============================================
00010 
00011 //Systemwide includes
00012 #include <qlayout.h>
00013 #include <qlabel.h>
00014 #include <qfont.h>
00015 #include <qpixmap.h>
00016 #include <qimage.h>
00017 #include <qpushbutton.h>
00018 #include <qfileinfo.h>
00019 
00020 #include <qtoolbutton.h>
00021 
00022 //Projectwide includes
00023 #include "albumStatistics.h"
00024 #include "../../config.h"
00025 #include "../../backend/album.h"
00026 #include "../../backend/subalbum.h"
00027 #include "../../backend/photo.h"
00028 #include "../../backend/tools/imageTools.h"
00029 
00030 //==============================================
00031 AlbumStatistics::AlbumStatistics( Album* album,
00032                                              QWidget* parent,
00033                                              const char* name ) :
00034                                              QDialog(parent,name)
00035 {
00036   //--------------------------------------------------------------
00037   QColor white(255, 255, 255);
00038   QColor darkBlue(35, 75, 139);
00039   //--------------------------------------------------------------
00040   //this album pointer
00041   this->album = album;
00042   //--
00043   //compute size on disk
00044   int albumSize = 0;
00045   Subalbum* curSubalbum = album->getFirstSubalbum();
00046   QFileInfo info;
00047   while(curSubalbum != NULL)
00048   {
00049     Photo* curPhoto = curSubalbum->getFirst();
00050     while(curPhoto != NULL)
00051     {
00052       info.setFile( curPhoto->getImageFilename() );
00053       albumSize+=info.size();
00054 
00055       info.setFile( curPhoto->getSlideshowFilename() );
00056       albumSize+=info.size();
00057 
00058       curPhoto = curPhoto->getNext();
00059     }
00060     curSubalbum = curSubalbum->getNext();
00061   }
00062   //--
00063   //set window title
00064   setCaption( tr("Album Statistics"));
00065   //--
00066   //create title
00067   titleMessage = new QLabel( tr("Album Statistics:"), this);
00068 
00069   QFont titleFont = titleMessage->font();
00070   titleFont.setWeight(QFont::Bold);
00071   titleFont.setPointSize( titleFont.pointSize() + 2 );
00072 
00073   QFont statsFont = titleMessage->font();
00074   statsFont.setWeight(QFont::Bold);
00075 
00076   titleMessage->setFont( titleFont );
00077   //--
00078   //create stats
00079   //--
00080   numSubalbums = new QLabel( tr("Collections:"), this);
00081   numSubalbums->setFont( statsFont );
00082   numSubalbumsVal = new QLabel(this);
00083   numSubalbumsVal->setText( QString("%1").arg(album->getNumSubalbums()) );
00084   numSubalbumsVal->setFont( statsFont );
00085   //--
00086   numPhotos = new QLabel( tr("Photos:"), this);
00087   numPhotos->setFont( statsFont );
00088   numPhotosVal = new QLabel(this);
00089   numPhotosVal->setText( QString("%1").arg(album->getNumPhotos()) );
00090   numPhotosVal->setFont( statsFont );
00091   //--
00092   sizeOnDisk = new QLabel( tr("Size:"), this);
00093   sizeOnDisk->setFont( statsFont );
00094   sizeOnDiskVal = new QLabel(this);
00095   sizeOnDiskVal->setFont( statsFont );
00096   if(albumSize < 1024)
00097     sizeOnDiskVal->setText( QString(tr("~%1 Bytes")).arg(albumSize) );
00098   else if( albumSize/1024 < 1024)
00099     sizeOnDiskVal->setText( QString(tr("~%1 Kb")).arg( ((float)albumSize)/1024 ) );
00100   else if( albumSize/(1024*1024) < 1024)
00101     sizeOnDiskVal->setText( QString(tr("~%1 Mb")).arg( ((float)albumSize)/(1024*1024) ) );
00102   else
00103     sizeOnDiskVal->setText( QString(tr("~%1 Gigs")).arg( ((float)albumSize)/(1024*1024*1024) ) );
00104   //--
00105   QString months[] = { tr("January"),
00106   tr("February"),
00107   tr("March"),
00108   tr("April"),
00109   tr("May"),
00110   tr("June"),
00111   tr("July"),
00112   tr("August"),
00113   tr("September"),
00114   tr("October"),
00115   tr("November"),
00116   tr("December") };
00117 
00118   created = new QLabel( tr("Created:"), this);
00119   created->setFont( statsFont );
00120   QString cVal = QString("%1 %2").arg(months[album->getCreationMonth()-1]).arg(album->getCreationDay());
00121   if(album->getCreationDay() == 1 ||
00122      album->getCreationDay() == 21 ||
00123      album->getCreationDay() == 31)
00124      cVal = cVal + "st";
00125   else if(album->getCreationDay() == 2 ||
00126      album->getCreationDay() == 22)
00127      cVal = cVal + "nd";
00128   else if(album->getCreationDay() == 3 ||
00129      album->getCreationDay() == 23)
00130      cVal = cVal + "rd";
00131   else
00132      cVal = cVal + "th";
00133   cVal = QString("%1, %2").arg(cVal).arg(album->getCreationYear());
00134 
00135   createdVal = new QLabel( cVal, this );
00136   createdVal->setFont( statsFont );
00137 
00138   modified = new QLabel( tr("Modified:"), this);
00139   modified->setFont( statsFont );
00140   QString mVal = QString("%1 %2").arg(months[album->getModificationMonth()-1]).arg(album->getModificationDay());
00141 
00142   if(album->getModificationDay() == 1 ||
00143      album->getModificationDay() == 21 ||
00144      album->getModificationDay() == 31)
00145      mVal = mVal + "st";
00146   else if(album->getModificationDay() == 2 ||
00147      album->getModificationDay() == 22)
00148      mVal = mVal + "nd";
00149   else if(album->getModificationDay() == 3 ||
00150      album->getModificationDay() == 23)
00151      mVal = mVal + "rd";
00152   else
00153      mVal = mVal + "th";
00154   mVal = QString("%1, %2").arg(mVal).arg(album->getModificationYear());
00155   modifiedVal = new QLabel( mVal, this );
00156   modifiedVal->setFont( statsFont );
00157     //--
00158   //create album image and title labels
00159   albumPreview = new QFrame( this );
00160   albumIcon = new QLabel( albumPreview );
00161 
00162   //if no rep image use small version
00163   if(album->getRepresentativeImage(LARGE) != NULL)
00164   {
00165     QImage tImage = album->getRepresentativeImage( LARGE )->convertToImage();
00166     int newWidth, newHeight;
00167     calcScaledImageDimensions( tImage.width(), tImage.height(), 
00168                                300, 300, 
00169                                newWidth, newHeight);
00170     QImage tImage2 = tImage.smoothScale( newWidth, newHeight );
00171     albumImage = new QPixmap( newWidth, newHeight );
00172     albumImage->convertFromImage( tImage2 );
00173     albumIcon->setPixmap( *albumImage );
00174   }
00175 
00176   albumTitle = new QLabel( albumPreview );
00177   if(album->getName().compare("") != 0)
00178   {
00179     albumTitle->setText( "\"" + album->getName() + "\"" );
00180   }
00181   albumTitle->setFont( statsFont );
00182   //--
00183   //create close button
00184   closeButton = new QPushButton( tr("Close"), this );
00185   closeButton->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
00186   closeButton->setDefault(true);
00187   closeButton->setFocus();
00188   connect( closeButton, SIGNAL(clicked()), SLOT(close()) );
00189   //--
00190   setPaletteBackgroundColor( darkBlue );
00191   titleMessage->setPaletteForegroundColor( white );
00192   titleMessage->setPaletteBackgroundColor( darkBlue );
00193   numSubalbums->setPaletteForegroundColor( white );
00194   numSubalbums->setPaletteBackgroundColor( darkBlue );
00195   numSubalbumsVal->setPaletteForegroundColor( white );
00196   numSubalbumsVal->setPaletteBackgroundColor( darkBlue );
00197   numPhotos->setPaletteForegroundColor( white );
00198   numPhotos->setPaletteBackgroundColor( darkBlue );
00199   numPhotosVal->setPaletteForegroundColor( white );
00200   numPhotosVal->setPaletteBackgroundColor( darkBlue );
00201   sizeOnDisk->setPaletteForegroundColor( white );
00202   sizeOnDisk->setPaletteBackgroundColor( darkBlue );
00203   sizeOnDiskVal->setPaletteForegroundColor( white );
00204   sizeOnDiskVal->setPaletteBackgroundColor( darkBlue );
00205   created->setPaletteForegroundColor( white );
00206   created->setPaletteBackgroundColor( darkBlue );
00207   createdVal->setPaletteForegroundColor( white );
00208   createdVal->setPaletteBackgroundColor( darkBlue );
00209   modified->setPaletteForegroundColor( white );
00210   modified->setPaletteBackgroundColor( darkBlue );
00211   modifiedVal->setPaletteForegroundColor( white );
00212   modifiedVal->setPaletteBackgroundColor( darkBlue );
00213   albumTitle->setPaletteForegroundColor( white );
00214   albumTitle->setPaletteBackgroundColor( darkBlue );
00215   albumPreview->setPaletteBackgroundColor( darkBlue );
00216   closeButton->setEraseColor(darkBlue);
00217   //--
00218   //place widgets in grid
00219   grid = new QGridLayout( this, 10, 3, 0);
00220   grid->setMargin(WIDGET_SPACING);
00221   grid->setSpacing(WIDGET_SPACING);
00222 
00223   grid->addRowSpacing( 0, 10 );
00224   grid->setRowStretch( 0, 1 );
00225 
00226   //add statistics text
00227   grid->addMultiCellWidget( titleMessage, 1, 1, 0, 1, Qt::AlignCenter);
00228 
00229     //add space between "Album Statistics" text and actual statistics
00230   grid->addRowSpacing( 2, 10 );
00231   grid->setRowStretch( 2, 1 );
00232 
00233   grid->addWidget( numSubalbums, 3, 0 );
00234   grid->addWidget( numSubalbumsVal, 3, 1, Qt::AlignRight );
00235   grid->addWidget( numPhotos, 4, 0 );
00236   grid->addWidget( numPhotosVal, 4, 1, Qt::AlignRight );
00237   grid->addWidget( sizeOnDisk, 5, 0 );
00238   grid->addWidget( sizeOnDiskVal, 5, 1, Qt::AlignRight );
00239   grid->addWidget( created, 6,0 );
00240   grid->addWidget( createdVal, 6, 1, Qt::AlignRight );
00241   grid->addWidget( modified, 7,0 );
00242   grid->addWidget( modifiedVal, 7, 1, Qt::AlignRight );
00243 
00244   grid->setRowStretch( 8, 1 );
00245 
00246 
00247   //add album image and name
00248   grid2 = new QGridLayout( albumPreview, 2, 1, 0 );
00249   grid2->setSpacing(WIDGET_SPACING);
00250 
00251   grid2->addWidget( albumIcon, 0, 0, Qt::AlignCenter );
00252   grid2->addWidget( albumTitle, 1, 0, Qt::AlignCenter );
00253   grid->addMultiCellWidget( albumPreview, 0,8, 2, 2, Qt::AlignCenter );
00254 
00255   //add ok button
00256   grid->addMultiCellWidget( closeButton, 9,9, 0, 2, Qt::AlignCenter );
00257     //--
00258   //set window to not be resizeable
00259   show();
00260   setFixedSize(size());
00261   //-------------------------------
00262 }
00263 //==============================================
00264 void AlbumStatistics::setCreationDate()
00265 {
00266 
00267 }
00268 //==============================================
00269 void AlbumStatistics::closeEvent( QCloseEvent* e)
00270 {
00271   QWidget::closeEvent( e );
00272   emit closed();
00273 }
00274 //==============================================
00275 void AlbumStatistics::reject()
00276 {
00277   QDialog::reject();
00278   emit closed();
00279 }
00280 //==============================================

Generated on Mon Apr 11 18:27:45 2005 for AlbumShaper by  doxygen 1.3.9.1