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

SaveDialog Class Reference

#include <saveDialog.h>

Inheritance diagram for SaveDialog:

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

Detailed Description

Save dialog widget.

Definition at line 32 of file saveDialog.h.

Signals

void dialogClosed ()

Public Member Functions

 SaveDialog (QString actionMessage, QString defaultPath, QString defaultTheme, QWidget *parent=0, const char *name=0)
QString getTheme ()
QString getPath ()

Static Public Member Functions

bool selectThemeAndPath (QString titleMessage, QString defaultPath, QString &theme, QString &path)
bool themeAvailable (QString theme)

Private Slots

void updatePreview ()
void save ()
void cancel ()
void prevScreenShot ()
void nextScreenShot ()
void browse ()

Private Attributes

QFramelocationFrame
QFramethemeSelectionFrame
QFramethemePreviewFrame
QFramebuttonsFrame
QGridLayout * locationGrid
QGridLayout * themeSelectionGrid
QGridLayout * themePreviewGrid
QGridLayout * mainGrid
QGridLayout * buttonsGrid
QLabellocationLabel
QLabelthemeScreenShot
QLabelthemePreviewLabel
QLabelthemesLabel
QLabelscreenShotLabel
QLineEdit * locationVal
QListBox * themesList
QTextBrowserthemeFeatures
QPushButton * saveButton
QPushButton * cancelButton
ClickableLabelbrowseButton
ClickableLabelthemeScreenPrev
ClickableLabelthemeScreenNext
int previewNum
int numPreviews


Constructor & Destructor Documentation

SaveDialog::SaveDialog QString  actionMessage,
QString  defaultPath,
QString  defaultTheme,
QWidget parent = 0,
const char *  name = 0
 

Definition at line 31 of file saveDialog.cpp.

References browse(), browseButton, buttonsFrame, buttonsGrid, cancel(), cancelButton, IMAGE_PATH, locationFrame, locationGrid, locationLabel, locationVal, mainGrid, nextScreenShot(), prevScreenShot(), save(), saveButton, SaveDialog(), screenShotLabel, ClickableLabel::setPixmap(), themeFeatures, themePreviewFrame, themePreviewGrid, themePreviewLabel, THEMES_PATH, themeScreenNext, themeScreenPrev, themeScreenShot, themeSelectionFrame, themeSelectionGrid, themesLabel, themesList, updatePreview(), and WIDGET_SPACING.

Referenced by SaveDialog().

00035 : 00036 QDialog(parent,name) 00037 { 00038 //set window title 00039 setCaption( actionMessage ); 00040 00041 //set the background of the widget to be white 00042 // setPaletteBackgroundColor( QColor(255, 255, 255) ); 00043 00044 00045 //create location frame and widgets 00046 locationFrame = new QFrame( this ); 00047 locationLabel = new QLabel( tr("Save to:"), locationFrame ); 00048 00049 QFont boldFont = locationLabel->font(); 00050 boldFont.setWeight(QFont::Bold); 00051 00052 locationLabel->setFont( boldFont ); 00053 locationVal = new QLineEdit( locationFrame ); 00054 locationVal->setText( defaultPath ); 00055 locationVal->setFont( boldFont ); 00056 00057 browseButton = new ClickableLabel( locationFrame ); 00058 browseButton->setPixmap( QPixmap(QString(IMAGE_PATH)+"buttonIcons/browse.png") ); 00059 QToolTip::add( browseButton, tr("Browse to save destination") ); 00060 connect( browseButton, SIGNAL(clicked()), SLOT(browse()) ); 00061 locationGrid = new QGridLayout( locationFrame, 1, 3, 0 ); 00062 locationGrid->addWidget( locationLabel, 0, 0 ); 00063 locationGrid->addWidget( locationVal, 0, 1 ); 00064 locationGrid->addWidget( browseButton, 0, 2); 00065 locationGrid->setColStretch( 1, 1 ); 00066 locationGrid->setSpacing(WIDGET_SPACING); 00067 00068 //create theme selection frame and widgets 00069 themeSelectionFrame = new QFrame( this ); 00070 themesLabel = new QLabel( tr("Themes:"), themeSelectionFrame ); 00071 themesLabel->setFont( boldFont ); 00072 themesList = new QListBox( themeSelectionFrame ); 00073 QToolTip::add( themesList, tr("Select theme for saving album") ); 00074 QDir localDir( THEMES_PATH ); 00075 QStringList list = localDir.entryList( QDir::Dirs ); 00076 bool itemsAdded = false; 00077 QStringList::Iterator file; 00078 for ( file = list.begin(); file != list.end(); ++file ) 00079 { 00080 if(localDir.exists( QString(*file) + "/theme.xsl" )) 00081 { 00082 themesList->insertItem( *file ); 00083 itemsAdded = true; 00084 } 00085 } 00086 00087 //attempt to select default theme passed in, if not found select first theme in list 00088 bool themeFound = false; 00089 uint i=0; 00090 for(i=0; i<themesList->count(); i++) 00091 { 00092 if(themesList->text(i) == defaultTheme ) 00093 { 00094 themeFound = true; 00095 themesList->setCurrentItem( i ); 00096 break; 00097 } 00098 } 00099 if(!themeFound && itemsAdded ) 00100 { 00101 themesList->setCurrentItem( 0 ); 00102 } 00103 00104 connect( themesList, SIGNAL( highlighted(int) ), this, SLOT( updatePreview() ) ); 00105 00106 themeSelectionGrid = new QGridLayout( themeSelectionFrame, 2, 1, 0 ); 00107 themeSelectionGrid->addWidget( themesLabel, 0, 0 ); 00108 themeSelectionGrid->addWidget( themesList, 1, 0 ); 00109 00110 //create theme preview frame and widgets 00111 themePreviewFrame = new QFrame( this ); 00112 themePreviewLabel = new QLabel( tr("Theme Preview:"), themePreviewFrame ); 00113 themePreviewLabel->setFont( boldFont ); 00114 themeScreenShot = new QLabel( themePreviewFrame ); 00115 screenShotLabel = new QLabel( themePreviewFrame ); 00116 screenShotLabel->setFont( boldFont ); 00117 00118 themeScreenPrev = new ClickableLabel( themePreviewFrame ); 00119 themeScreenPrev->setPixmap( QPixmap(QString(IMAGE_PATH)+"buttonIcons/previous.png") ); 00120 QToolTip::add( themeScreenPrev, tr("View previous theme screenshot") ); 00121 connect( themeScreenPrev, SIGNAL(clicked()), SLOT(prevScreenShot()) ); 00122 00123 themeScreenNext = new ClickableLabel( themePreviewFrame ); 00124 themeScreenNext->setPixmap( QPixmap(QString(IMAGE_PATH)+"buttonIcons/next.png") ); 00125 QToolTip::add( themeScreenNext, tr("View next theme screenshot") ); 00126 connect( themeScreenNext, SIGNAL(clicked()), SLOT(nextScreenShot()) ); 00127 00128 themeFeatures = new QTextBrowser( themePreviewFrame ); 00129 themeFeatures->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 00130 themeFeatures->mimeSourceFactory()->setFilePath( QStringList(THEMES_PATH) ); 00131 updatePreview(); 00132 00133 themePreviewGrid = new QGridLayout( themePreviewFrame, 5, 5, 0); 00134 themePreviewGrid->addMultiCellWidget( themePreviewLabel, 0,0, 0,4 ); 00135 00136 themePreviewGrid->addWidget( themeScreenPrev, 1, 0, Qt::AlignVCenter ); 00137 themePreviewGrid->addColSpacing( 1, 10 ); 00138 themePreviewGrid->setColStretch( 1, 1 ); 00139 themePreviewGrid->addWidget( themeScreenShot, 1, 2 ); 00140 themePreviewGrid->addColSpacing( 3, 10 ); 00141 themePreviewGrid->setColStretch( 3, 1 ); 00142 themePreviewGrid->addWidget( themeScreenNext, 1, 4, Qt::AlignVCenter ); 00143 themePreviewGrid->addMultiCellWidget( screenShotLabel, 2, 2, 0, 4, Qt::AlignCenter ); 00144 themePreviewGrid->addMultiCellWidget( themeFeatures, 4, 4, 0, 4 ); 00145 00146 //create buttons frame and widgets 00147 buttonsFrame = new QFrame( this ); 00148 saveButton = new QPushButton( 00149 //PLATFORM_SPECIFIC_CODE 00150 #ifndef Q_OS_MACX 00151 QPixmap(QString(IMAGE_PATH)+"buttonIcons/save.png"), 00152 #endif 00153 tr("Save"), buttonsFrame ); 00154 saveButton->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ); 00155 saveButton->setDefault(true); 00156 connect( saveButton, SIGNAL(clicked()), SLOT(save()) ); 00157 cancelButton = new QPushButton( 00158 //PLATFORM_SPECIFIC_CODE 00159 #ifndef Q_OS_MACX 00160 QPixmap(QString(IMAGE_PATH)+"buttonIcons/button_cancel.png"), 00161 #endif 00162 tr("Cancel"), buttonsFrame 00163 ); 00164 cancelButton->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ); 00165 connect( cancelButton, SIGNAL(clicked()), SLOT(cancel()) ); 00166 buttonsGrid = new QGridLayout( buttonsFrame, 1, 5, 0 ); 00167 buttonsGrid->setColStretch( 0, 1 ); 00168 buttonsGrid->addWidget( saveButton, 0, 1 ); 00169 buttonsGrid->addColSpacing( 2, 10 ); 00170 buttonsGrid->addWidget( cancelButton, 0, 3 ); 00171 buttonsGrid->setColStretch( 4, 1 ); 00172 00173 //place top level frames in grid 00174 mainGrid = new QGridLayout( this, 3, 2, 0); 00175 mainGrid->addWidget( themeSelectionFrame, 0, 0 ); 00176 mainGrid->addWidget( themePreviewFrame, 0, 1 ); 00177 mainGrid->addMultiCellWidget( locationFrame, 1, 1, 0, 1 ); 00178 mainGrid->addMultiCellWidget( buttonsFrame, 2, 2, 0, 1 ); 00179 00180 //allow image and description region of select theme to expand to fit window 00181 mainGrid->setColStretch( 1, 1 ); 00182 mainGrid->setRowStretch( 1, 1 ); 00183 mainGrid->setMargin(WIDGET_SPACING); 00184 mainGrid->setSpacing(WIDGET_SPACING); 00185 00186 //set window to not be resizeable 00187 this->show(); 00188 setFixedSize(size()); 00189 } //==============================================


Member Function Documentation

void SaveDialog::browse  )  [private, slot]
 

Definition at line 253 of file saveDialog.cpp.

References locationVal.

Referenced by SaveDialog().

00254 { 00255 //get directory from user 00256 QString dirName = QFileDialog::getSaveFileName( locationVal->text(), 00257 NULL, this, NULL, QString(tr("Save as")) ); 00258 00259 if(!dirName.isNull()) 00260 locationVal->setText( dirName ); 00261 }

void SaveDialog::cancel  )  [private, slot]
 

Definition at line 228 of file saveDialog.cpp.

Referenced by SaveDialog().

00229 { 00230 reject(); 00231 }

void SaveDialog::dialogClosed  )  [signal]
 

QString SaveDialog::getPath  ) 
 

Definition at line 268 of file saveDialog.cpp.

References locationVal.

Referenced by selectThemeAndPath().

00269 { 00270 return locationVal->text(); 00271 }

QString SaveDialog::getTheme  ) 
 

Definition at line 263 of file saveDialog.cpp.

References themesList.

Referenced by selectThemeAndPath().

00264 { 00265 return themesList->currentText(); 00266 }

void SaveDialog::nextScreenShot  )  [private, slot]
 

Definition at line 243 of file saveDialog.cpp.

References numPreviews, previewNum, screenShotLabel, ClickableLabel::setInvisible(), THEMES_PATH, themeScreenNext, themeScreenPrev, themeScreenShot, and themesList.

Referenced by SaveDialog().

00244 { 00245 previewNum++; 00246 themeScreenPrev->setInvisible(false); 00247 themeScreenNext->setInvisible(previewNum == numPreviews); 00248 00249 screenShotLabel->setText( QString( tr("Screenshot") ) + QString( " %1/%2").arg(previewNum).arg(numPreviews) ); 00250 themeScreenShot->setPixmap( QPixmap( QString(THEMES_PATH + themesList->currentText() + "/preview%1.png").arg(previewNum) ) ); 00251 }

void SaveDialog::prevScreenShot  )  [private, slot]
 

Definition at line 233 of file saveDialog.cpp.

References numPreviews, previewNum, screenShotLabel, ClickableLabel::setInvisible(), THEMES_PATH, themeScreenNext, themeScreenPrev, themeScreenShot, and themesList.

Referenced by SaveDialog().

00234 { 00235 previewNum--; 00236 themeScreenNext->setInvisible(false); 00237 themeScreenPrev->setInvisible(previewNum == 1); 00238 00239 screenShotLabel->setText( QString( tr("Screenshot") ) + QString( " %1/%2").arg(previewNum).arg(numPreviews) ); 00240 themeScreenShot->setPixmap( QPixmap( QString(THEMES_PATH + themesList->currentText() + "/preview%1.png").arg(previewNum) ) ); 00241 }

void SaveDialog::save  )  [private, slot]
 

Definition at line 223 of file saveDialog.cpp.

Referenced by SaveDialog().

00224 { 00225 accept(); 00226 }

bool SaveDialog::selectThemeAndPath QString  titleMessage,
QString  defaultPath,
QString &  theme,
QString &  path
[static]
 

Definition at line 273 of file saveDialog.cpp.

References getPath(), getTheme(), and selectThemeAndPath().

Referenced by selectThemeAndPath().

00277 { 00278 SaveDialog* dlg = new SaveDialog( titleMessage, defaultPath, theme ); 00279 if( dlg->exec() == QDialog::Accepted ) 00280 { 00281 theme = dlg->getTheme(); 00282 path = dlg->getPath(); 00283 delete dlg; 00284 return true; 00285 } 00286 else 00287 { 00288 delete dlg; 00289 return false; 00290 } 00291 }

bool SaveDialog::themeAvailable QString  theme  )  [static]
 

Definition at line 293 of file saveDialog.cpp.

References themeAvailable(), and THEMES_PATH.

Referenced by themeAvailable().

00294 { 00295 //walk through the themes directory searching 00296 //for a directory with the name of the theme 00297 //that also has a theme.xsl file inside it 00298 QDir localDir( THEMES_PATH ); 00299 QStringList list = localDir.entryList( QDir::Dirs ); 00300 QStringList::Iterator file; 00301 for ( file = list.begin(); file != list.end(); ++file ) 00302 { 00303 if(localDir.exists( QString(*file) + "/theme.xsl") && 00304 QString(*file) == theme) 00305 return true; 00306 } 00307 //theme not found 00308 return false; 00309 }

void SaveDialog::updatePreview  )  [private, slot]
 

Definition at line 191 of file saveDialog.cpp.

References IMAGE_PATH, numPreviews, previewNum, screenShotLabel, ClickableLabel::setInvisible(), themeFeatures, THEMES_PATH, themeScreenNext, themeScreenPrev, themeScreenShot, and themesList.

Referenced by SaveDialog().

00192 { 00193 previewNum = 1; 00194 int i=1; 00195 QDir localDir( THEMES_PATH ); 00196 while( localDir.exists( QString( themesList->currentText() + "/preview%1.png").arg(i) ) ) { i++; } 00197 numPreviews = i-1; 00198 00199 //update theme description if provided 00200 if(localDir.exists( themesList->currentText() + "/description.html" )) 00201 { 00202 themeFeatures->setSource( themesList->currentText() + "/description.html" ); 00203 } 00204 00205 //update preview image to provide one or default otherwise 00206 if(localDir.exists( themesList->currentText() + "/preview1.png") ) 00207 { 00208 screenShotLabel->setText( QString( tr("Screenshot") ) + QString( " %1/%2").arg(previewNum).arg(numPreviews) ); 00209 themeScreenShot->setPixmap( QPixmap(THEMES_PATH + themesList->currentText() + "/preview1.png") ); 00210 themeScreenPrev->setInvisible( true ); 00211 themeScreenNext->setInvisible( previewNum == numPreviews ); 00212 } 00213 else 00214 { 00215 screenShotLabel->setText( "" ); 00216 themeScreenShot->setPixmap( QPixmap(QString(IMAGE_PATH)+"miscImages/themePreview.png") ); 00217 themeScreenPrev->setInvisible( true ); 00218 themeScreenNext->setInvisible( true ); 00219 } 00220 00221 }


Member Data Documentation

ClickableLabel* SaveDialog::browseButton [private]
 

Definition at line 69 of file saveDialog.h.

Referenced by SaveDialog().

QFrame * SaveDialog::buttonsFrame [private]
 

Definition at line 61 of file saveDialog.h.

Referenced by SaveDialog().

QGridLayout * SaveDialog::buttonsGrid [private]
 

Definition at line 62 of file saveDialog.h.

Referenced by SaveDialog().

QPushButton * SaveDialog::cancelButton [private]
 

Definition at line 67 of file saveDialog.h.

Referenced by SaveDialog().

QFrame* SaveDialog::locationFrame [private]
 

Definition at line 61 of file saveDialog.h.

Referenced by SaveDialog().

QGridLayout* SaveDialog::locationGrid [private]
 

Definition at line 62 of file saveDialog.h.

Referenced by SaveDialog().

QLabel* SaveDialog::locationLabel [private]
 

Definition at line 63 of file saveDialog.h.

Referenced by SaveDialog().

QLineEdit* SaveDialog::locationVal [private]
 

Definition at line 64 of file saveDialog.h.

Referenced by browse(), getPath(), and SaveDialog().

QGridLayout * SaveDialog::mainGrid [private]
 

Definition at line 62 of file saveDialog.h.

Referenced by SaveDialog().

int SaveDialog::numPreviews [private]
 

Definition at line 72 of file saveDialog.h.

Referenced by nextScreenShot(), prevScreenShot(), and updatePreview().

int SaveDialog::previewNum [private]
 

Definition at line 71 of file saveDialog.h.

Referenced by nextScreenShot(), prevScreenShot(), and updatePreview().

QPushButton* SaveDialog::saveButton [private]
 

Definition at line 67 of file saveDialog.h.

Referenced by SaveDialog().

QLabel * SaveDialog::screenShotLabel [private]
 

Definition at line 63 of file saveDialog.h.

Referenced by nextScreenShot(), prevScreenShot(), SaveDialog(), and updatePreview().

QTextBrowser* SaveDialog::themeFeatures [private]
 

Definition at line 66 of file saveDialog.h.

Referenced by SaveDialog(), and updatePreview().

QFrame * SaveDialog::themePreviewFrame [private]
 

Definition at line 61 of file saveDialog.h.

Referenced by SaveDialog().

QGridLayout * SaveDialog::themePreviewGrid [private]
 

Definition at line 62 of file saveDialog.h.

Referenced by SaveDialog().

QLabel * SaveDialog::themePreviewLabel [private]
 

Definition at line 63 of file saveDialog.h.

Referenced by SaveDialog().

ClickableLabel * SaveDialog::themeScreenNext [private]
 

Definition at line 69 of file saveDialog.h.

Referenced by nextScreenShot(), prevScreenShot(), SaveDialog(), and updatePreview().

ClickableLabel * SaveDialog::themeScreenPrev [private]
 

Definition at line 69 of file saveDialog.h.

Referenced by nextScreenShot(), prevScreenShot(), SaveDialog(), and updatePreview().

QLabel * SaveDialog::themeScreenShot [private]
 

Definition at line 63 of file saveDialog.h.

Referenced by nextScreenShot(), prevScreenShot(), SaveDialog(), and updatePreview().

QFrame * SaveDialog::themeSelectionFrame [private]
 

Definition at line 61 of file saveDialog.h.

Referenced by SaveDialog().

QGridLayout * SaveDialog::themeSelectionGrid [private]
 

Definition at line 62 of file saveDialog.h.

Referenced by SaveDialog().

QLabel * SaveDialog::themesLabel [private]
 

Definition at line 63 of file saveDialog.h.

Referenced by SaveDialog().

QListBox* SaveDialog::themesList [private]
 

Definition at line 65 of file saveDialog.h.

Referenced by getTheme(), nextScreenShot(), prevScreenShot(), SaveDialog(), and updatePreview().


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