|
AlbumShaper
1.0a3
|
Save dialog widget. More...
#include <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 | |
| static bool | selectThemeAndPath (QString titleMessage, QString defaultPath, QString &theme, QString &path) |
| static bool | themeAvailable (QString theme) |
Private Slots | |
| void | updatePreview () |
| void | save () |
| void | cancel () |
| void | prevScreenShot () |
| void | nextScreenShot () |
| void | browse () |
Private Attributes | |
| QFrame * | locationFrame |
| QFrame * | themeSelectionFrame |
| QFrame * | themePreviewFrame |
| QFrame * | buttonsFrame |
| QGridLayout * | locationGrid |
| QGridLayout * | themeSelectionGrid |
| QGridLayout * | themePreviewGrid |
| QGridLayout * | mainGrid |
| QGridLayout * | buttonsGrid |
| QLabel * | locationLabel |
| QLabel * | themeScreenShot |
| QLabel * | themePreviewLabel |
| QLabel * | themesLabel |
| QLabel * | screenShotLabel |
| QLineEdit * | locationVal |
| QListBox * | themesList |
| QTextBrowser * | themeFeatures |
| QPushButton * | saveButton |
| QPushButton * | cancelButton |
| ClickableLabel * | browseButton |
| ClickableLabel * | themeScreenPrev |
| ClickableLabel * | themeScreenNext |
| int | previewNum |
| int | numPreviews |
Save dialog widget.
Definition at line 32 of file saveDialog.h.
| 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, screenShotLabel, ClickableLabel::setPixmap(), themeFeatures, themePreviewFrame, themePreviewGrid, themePreviewLabel, THEMES_PATH, themeScreenNext, themeScreenPrev, themeScreenShot, themeSelectionFrame, themeSelectionGrid, themesLabel, themesList, updatePreview(), and WIDGET_SPACING.
Referenced by selectThemeAndPath().
:
QDialog(parent,name)
{
//set window title
setCaption( actionMessage );
//set the background of the widget to be white
// setPaletteBackgroundColor( QColor(255, 255, 255) );
//create location frame and widgets
locationFrame = new QFrame( this );
locationLabel = new QLabel( tr("Save to:"), locationFrame );
QFont boldFont = locationLabel->font();
boldFont.setWeight(QFont::Bold);
locationLabel->setFont( boldFont );
locationVal = new QLineEdit( locationFrame );
locationVal->setText( defaultPath );
locationVal->setFont( boldFont );
browseButton = new ClickableLabel( locationFrame );
browseButton->setPixmap( QPixmap(QString(IMAGE_PATH)+"buttonIcons/browse.png") );
QToolTip::add( browseButton, tr("Browse to save destination") );
connect( browseButton, SIGNAL(clicked()), SLOT(browse()) );
locationGrid = new QGridLayout( locationFrame, 1, 3, 0 );
locationGrid->addWidget( locationLabel, 0, 0 );
locationGrid->addWidget( locationVal, 0, 1 );
locationGrid->addWidget( browseButton, 0, 2);
locationGrid->setColStretch( 1, 1 );
locationGrid->setSpacing(WIDGET_SPACING);
//create theme selection frame and widgets
themeSelectionFrame = new QFrame( this );
themesLabel = new QLabel( tr("Themes:"), themeSelectionFrame );
themesLabel->setFont( boldFont );
themesList = new QListBox( themeSelectionFrame );
QToolTip::add( themesList, tr("Select theme for saving album") );
QDir localDir( THEMES_PATH );
QStringList list = localDir.entryList( QDir::Dirs );
bool itemsAdded = false;
QStringList::Iterator file;
for ( file = list.begin(); file != list.end(); ++file )
{
if(localDir.exists( QString(*file) + "/theme.xsl" ))
{
themesList->insertItem( *file );
itemsAdded = true;
}
}
//attempt to select default theme passed in, if not found select first theme in list
bool themeFound = false;
uint i=0;
for(i=0; i<themesList->count(); i++)
{
if(themesList->text(i) == defaultTheme )
{
themeFound = true;
themesList->setCurrentItem( i );
break;
}
}
if(!themeFound && itemsAdded )
{
themesList->setCurrentItem( 0 );
}
connect( themesList, SIGNAL( highlighted(int) ), this, SLOT( updatePreview() ) );
themeSelectionGrid = new QGridLayout( themeSelectionFrame, 2, 1, 0 );
themeSelectionGrid->addWidget( themesLabel, 0, 0 );
themeSelectionGrid->addWidget( themesList, 1, 0 );
//create theme preview frame and widgets
themePreviewFrame = new QFrame( this );
themePreviewLabel = new QLabel( tr("Theme Preview:"), themePreviewFrame );
themePreviewLabel->setFont( boldFont );
themeScreenShot = new QLabel( themePreviewFrame );
screenShotLabel = new QLabel( themePreviewFrame );
screenShotLabel->setFont( boldFont );
themeScreenPrev = new ClickableLabel( themePreviewFrame );
themeScreenPrev->setPixmap( QPixmap(QString(IMAGE_PATH)+"buttonIcons/previous.png") );
QToolTip::add( themeScreenPrev, tr("View previous theme screenshot") );
connect( themeScreenPrev, SIGNAL(clicked()), SLOT(prevScreenShot()) );
themeScreenNext = new ClickableLabel( themePreviewFrame );
themeScreenNext->setPixmap( QPixmap(QString(IMAGE_PATH)+"buttonIcons/next.png") );
QToolTip::add( themeScreenNext, tr("View next theme screenshot") );
connect( themeScreenNext, SIGNAL(clicked()), SLOT(nextScreenShot()) );
themeFeatures = new QTextBrowser( themePreviewFrame );
themeFeatures->setFrameStyle( QFrame::Panel | QFrame::Sunken );
themeFeatures->mimeSourceFactory()->setFilePath( QStringList(THEMES_PATH) );
updatePreview();
themePreviewGrid = new QGridLayout( themePreviewFrame, 5, 5, 0);
themePreviewGrid->addMultiCellWidget( themePreviewLabel, 0,0, 0,4 );
themePreviewGrid->addWidget( themeScreenPrev, 1, 0, Qt::AlignVCenter );
themePreviewGrid->addColSpacing( 1, 10 );
themePreviewGrid->setColStretch( 1, 1 );
themePreviewGrid->addWidget( themeScreenShot, 1, 2 );
themePreviewGrid->addColSpacing( 3, 10 );
themePreviewGrid->setColStretch( 3, 1 );
themePreviewGrid->addWidget( themeScreenNext, 1, 4, Qt::AlignVCenter );
themePreviewGrid->addMultiCellWidget( screenShotLabel, 2, 2, 0, 4, Qt::AlignCenter );
themePreviewGrid->addMultiCellWidget( themeFeatures, 4, 4, 0, 4 );
//create buttons frame and widgets
buttonsFrame = new QFrame( this );
saveButton = new QPushButton(
//PLATFORM_SPECIFIC_CODE
#ifndef Q_OS_MACX
QPixmap(QString(IMAGE_PATH)+"buttonIcons/save.png"),
#endif
tr("Save"), buttonsFrame );
saveButton->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
saveButton->setDefault(true);
connect( saveButton, SIGNAL(clicked()), SLOT(save()) );
cancelButton = new QPushButton(
//PLATFORM_SPECIFIC_CODE
#ifndef Q_OS_MACX
QPixmap(QString(IMAGE_PATH)+"buttonIcons/button_cancel.png"),
#endif
tr("Cancel"), buttonsFrame
);
cancelButton->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
connect( cancelButton, SIGNAL(clicked()), SLOT(cancel()) );
buttonsGrid = new QGridLayout( buttonsFrame, 1, 5, 0 );
buttonsGrid->setColStretch( 0, 1 );
buttonsGrid->addWidget( saveButton, 0, 1 );
buttonsGrid->addColSpacing( 2, 10 );
buttonsGrid->addWidget( cancelButton, 0, 3 );
buttonsGrid->setColStretch( 4, 1 );
//place top level frames in grid
mainGrid = new QGridLayout( this, 3, 2, 0);
mainGrid->addWidget( themeSelectionFrame, 0, 0 );
mainGrid->addWidget( themePreviewFrame, 0, 1 );
mainGrid->addMultiCellWidget( locationFrame, 1, 1, 0, 1 );
mainGrid->addMultiCellWidget( buttonsFrame, 2, 2, 0, 1 );
//allow image and description region of select theme to expand to fit window
mainGrid->setColStretch( 1, 1 );
mainGrid->setRowStretch( 1, 1 );
mainGrid->setMargin(WIDGET_SPACING);
mainGrid->setSpacing(WIDGET_SPACING);
//set window to not be resizeable
this->show();
setFixedSize(size());
}
| void SaveDialog::browse | ( | ) | [private, slot] |
Definition at line 253 of file saveDialog.cpp.
References locationVal.
Referenced by SaveDialog().
{
//get directory from user
QString dirName = QFileDialog::getSaveFileName( locationVal->text(),
NULL, this, NULL, QString(tr("Save as")) );
if(!dirName.isNull())
locationVal->setText( dirName );
}
| void SaveDialog::cancel | ( | ) | [private, slot] |
| void SaveDialog::dialogClosed | ( | ) | [signal] |
| QString SaveDialog::getPath | ( | ) |
Definition at line 268 of file saveDialog.cpp.
References locationVal.
Referenced by selectThemeAndPath().
{
return locationVal->text();
}
| QString SaveDialog::getTheme | ( | ) |
Definition at line 263 of file saveDialog.cpp.
References themesList.
Referenced by selectThemeAndPath().
{
return themesList->currentText();
}
| 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().
{
previewNum++;
themeScreenPrev->setInvisible(false);
themeScreenNext->setInvisible(previewNum == numPreviews);
screenShotLabel->setText( QString( tr("Screenshot") ) + QString( " %1/%2").arg(previewNum).arg(numPreviews) );
themeScreenShot->setPixmap( QPixmap( QString(THEMES_PATH + themesList->currentText() + "/preview%1.png").arg(previewNum) ) );
}
| 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().
{
previewNum--;
themeScreenNext->setInvisible(false);
themeScreenPrev->setInvisible(previewNum == 1);
screenShotLabel->setText( QString( tr("Screenshot") ) + QString( " %1/%2").arg(previewNum).arg(numPreviews) );
themeScreenShot->setPixmap( QPixmap( QString(THEMES_PATH + themesList->currentText() + "/preview%1.png").arg(previewNum) ) );
}
| void SaveDialog::save | ( | ) | [private, slot] |
| bool SaveDialog::selectThemeAndPath | ( | QString | titleMessage, |
| QString | defaultPath, | ||
| QString & | theme, | ||
| QString & | path | ||
| ) | [static] |
Definition at line 273 of file saveDialog.cpp.
References getPath(), getTheme(), and SaveDialog().
Referenced by TitleWidget::saveAsAlbum().
{
SaveDialog* dlg = new SaveDialog( titleMessage, defaultPath, theme );
if( dlg->exec() == QDialog::Accepted )
{
theme = dlg->getTheme();
path = dlg->getPath();
delete dlg;
return true;
}
else
{
delete dlg;
return false;
}
}
| bool SaveDialog::themeAvailable | ( | QString | theme | ) | [static] |
Definition at line 293 of file saveDialog.cpp.
References THEMES_PATH.
Referenced by TitleWidget::exportSmallWebGallery(), and TitleWidget::saveAlbum().
{
//walk through the themes directory searching
//for a directory with the name of the theme
//that also has a theme.xsl file inside it
QDir localDir( THEMES_PATH );
QStringList list = localDir.entryList( QDir::Dirs );
QStringList::Iterator file;
for ( file = list.begin(); file != list.end(); ++file )
{
if(localDir.exists( QString(*file) + "/theme.xsl") &&
QString(*file) == theme)
return true;
}
//theme not found
return false;
}
| 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().
{
previewNum = 1;
int i=1;
QDir localDir( THEMES_PATH );
while( localDir.exists( QString( themesList->currentText() + "/preview%1.png").arg(i) ) ) { i++; }
numPreviews = i-1;
//update theme description if provided
if(localDir.exists( themesList->currentText() + "/description.html" ))
{
themeFeatures->setSource( themesList->currentText() + "/description.html" );
}
//update preview image to provide one or default otherwise
if(localDir.exists( themesList->currentText() + "/preview1.png") )
{
screenShotLabel->setText( QString( tr("Screenshot") ) + QString( " %1/%2").arg(previewNum).arg(numPreviews) );
themeScreenShot->setPixmap( QPixmap(THEMES_PATH + themesList->currentText() + "/preview1.png") );
themeScreenPrev->setInvisible( true );
themeScreenNext->setInvisible( previewNum == numPreviews );
}
else
{
screenShotLabel->setText( "" );
themeScreenShot->setPixmap( QPixmap(QString(IMAGE_PATH)+"miscImages/themePreview.png") );
themeScreenPrev->setInvisible( true );
themeScreenNext->setInvisible( true );
}
}
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().
1.7.5.1