/* This file is part of the KDE project Copyright (C) 2001, 2003 Lukas Tinkl Andreas Schlapbach This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "imgallerydialog.h" #include "imgallerydialog.moc" KIGPDialog::KIGPDialog(TQWidget *parent, const TQString& path, const char *name ) : KDialogBase( IconList, i18n("Configure"), Default|Ok|Cancel, Ok, parent, name, true, true ), m_dialogOk( false ) { m_path = path; setCaption(i18n("Create Image Gallery")); setButtonOK( KGuiItem(i18n("Create"),"imagegallery") ); m_config = new KConfig("kimgallerypluginrc", false, false); setupLookPage(path); setupDirectoryPage(path); setupThumbnailPage(path); } void KIGPDialog::slotDefault() { m_title->setText(i18n("Image Gallery for %1").arg(m_path)); m_imagesPerRow->setValue(4); m_imageName->setChecked(true); m_imageSize->setChecked(false); m_imageProperty->setChecked(false); m_fontName->setCurrentText( KGlobalSettings::generalFont().family() ); m_fontSize->setValue(14); m_foregroundColor->setColor( TQColor( "#d0ffd0") ); m_backgroundColor->setColor( TQColor("#333333") ); m_imageNameReq->setURL(m_path + "images.html"); m_recurseSubDir->setChecked( false ); m_recursionLevel->setEnabled( false ); m_copyOriginalFiles->setChecked( false ); m_useCommentFile->setChecked( false ); m_commentFileReq->setURL(m_path + "comments"); m_commentFileReq->setEnabled( false ); m_imageFormat->setCurrentText( "JPEG"); m_thumbnailSize->setValue(140); m_colorDepthSet->setChecked(false); m_colorDepth->setCurrentText("8"); } void KIGPDialog::setupLookPage(const TQString& path) { TQFrame *page = addPage( i18n("Look"), i18n("Page Look"), BarIcon("colorize", KIcon::SizeMedium ) ); m_config->setGroup("Look"); TQVBoxLayout *vlay = new TQVBoxLayout( page, 0, spacingHint() ); TQLabel *label; label = new TQLabel( i18n("&Page title:"), page); vlay->addWidget(label); m_title = new TQLineEdit(i18n("Image Gallery for %1").arg(path), page); vlay->addWidget( m_title ); label->setBuddy(m_title); m_imagesPerRow = new KIntNumInput(m_config->readNumEntry("ImagesPerRow", 4), page); m_imagesPerRow->setRange(1, 8, 1, true ); m_imagesPerRow->setLabel( i18n("I&mages per row:") ); vlay->addWidget( m_imagesPerRow ); TQGridLayout *grid = new TQGridLayout( 2, 2 ); vlay->addLayout( grid ); m_imageName = new TQCheckBox( i18n("Show image file &name"), page); m_imageName->setChecked( m_config->readBoolEntry("ImageName", true) ); grid->addWidget( m_imageName, 0, 0 ); m_imageSize = new TQCheckBox( i18n("Show image file &size"), page); m_imageSize->setChecked( m_config->readBoolEntry("ImageSize", false) ); grid->addWidget( m_imageSize, 0, 1 ); m_imageProperty = new TQCheckBox( i18n("Show image &dimensions"), page); m_imageProperty->setChecked( m_config->readBoolEntry("ImageProperty", false) ); grid->addWidget( m_imageProperty, 1, 0 ); TQHBoxLayout *hlay11 = new TQHBoxLayout( ); vlay->addLayout( hlay11 ); m_fontName = new TQComboBox( false,page ); TQStringList standardFonts; KFontChooser::getFontList(standardFonts, 0); m_fontName->insertStringList( standardFonts ); m_fontName->setCurrentText( m_config->readEntry("FontName", KGlobalSettings::generalFont().family() ) ); label = new TQLabel( i18n("Fon&t name:"), page ); label->setBuddy( m_fontName ); hlay11->addWidget( label ); hlay11->addStretch( 1 ); hlay11->addWidget( m_fontName ); TQHBoxLayout *hlay12 = new TQHBoxLayout( ); vlay->addLayout( hlay12 ); m_fontSize = new TQSpinBox( 6, 15, 1, page ); m_fontSize->setValue( m_config->readNumEntry("FontSize", 14) ); label = new TQLabel( i18n("Font si&ze:"), page ); label->setBuddy( m_fontSize ); hlay12->addWidget( label ); hlay12->addStretch( 1 ); hlay12->addWidget( m_fontSize ); TQHBoxLayout *hlay1 = new TQHBoxLayout( spacingHint() ); vlay->addLayout( hlay1 ); m_foregroundColor = new KColorButton(page); m_foregroundColor->setColor( TQColor( m_config->readEntry("ForegroundColor", "#d0ffd0") ) ); label = new TQLabel( i18n("&Foreground color:"), page); label->setBuddy( m_foregroundColor ); hlay1->addWidget( label ); hlay1->addStretch( 1 ); hlay1->addWidget(m_foregroundColor); TQHBoxLayout *hlay2 = new TQHBoxLayout( spacingHint() ); vlay->addLayout( hlay2 ); m_backgroundColor = new KColorButton(page); m_backgroundColor->setColor( TQColor(m_config->readEntry("BackgroundColor", "#333333") ) ); label = new TQLabel( i18n("&Background color:"), page); hlay2->addWidget( label ); label->setBuddy( m_backgroundColor ); hlay2->addStretch( 1 ); hlay2->addWidget(m_backgroundColor); vlay->addStretch(1); } void KIGPDialog::setupDirectoryPage(const TQString& path) { TQFrame *page = addPage( i18n("Folders"), i18n("Folders"), BarIcon("folder", KIcon::SizeMedium ) ); m_config->setGroup("Directory"); TQVBoxLayout *dvlay = new TQVBoxLayout( page, 0, spacingHint() ); TQLabel *label; label = new TQLabel(i18n("&Save to HTML file:"), page); dvlay->addWidget( label ); TQString whatsThis; whatsThis = i18n("

The name of the HTML file this gallery will be saved to."); TQWhatsThis::add( label, whatsThis ); m_imageNameReq = new KURLRequester(path + "images.html", page); label->setBuddy( m_imageNameReq ); dvlay->addWidget(m_imageNameReq); connect( m_imageNameReq, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(imageUrlChanged(const TQString&)) ); TQWhatsThis::add( m_imageNameReq, whatsThis ); const bool recurseSubDir = m_config->readBoolEntry("RecurseSubDirectories", false); m_recurseSubDir = new TQCheckBox(i18n("&Recurse subfolders"), page); m_recurseSubDir->setChecked( recurseSubDir ); whatsThis = i18n("

Whether subfolders should be included for the " "image gallery creation or not."); TQWhatsThis::add( m_recurseSubDir, whatsThis ); const int recursionLevel = m_config->readNumEntry("RecursionLevel", 0); m_recursionLevel = new KIntNumInput( recursionLevel, page ); m_recursionLevel->setRange( 0, 99, 1, true ); m_recursionLevel->setLabel( i18n("Rec&ursion depth:") ); if ( recursionLevel == 0 ) m_recursionLevel->setSpecialValueText( i18n("Endless")); m_recursionLevel->setEnabled(recurseSubDir); whatsThis = i18n("

You can limit the number of folders the " "image gallery creator will traverse to by setting an " "upper bound for the recursion depth."); TQWhatsThis::add( m_recursionLevel, whatsThis ); connect(m_recurseSubDir, TQT_SIGNAL( toggled(bool) ), m_recursionLevel, TQT_SLOT( setEnabled(bool) ) ); dvlay->addWidget(m_recurseSubDir); dvlay->addWidget(m_recursionLevel); m_copyOriginalFiles = new TQCheckBox(i18n("Copy or&iginal files"), page); m_copyOriginalFiles->setChecked(m_config->readBoolEntry("CopyOriginalFiles", false) ); dvlay->addWidget(m_copyOriginalFiles); whatsThis = i18n("

This makes a copy of all images and the gallery will refer " "to these copies instead of the original images."); TQWhatsThis::add( m_copyOriginalFiles, whatsThis ); const bool useCommentFile = m_config->readBoolEntry("UseCommentFile", false); m_useCommentFile = new TQCheckBox(i18n("Use &comment file"), page); m_useCommentFile->setChecked(useCommentFile); dvlay->addWidget(m_useCommentFile); whatsThis = i18n("

If you enable this option you can specify " "a comment file which will be used for generating " "subtitles for the images." "

For details about the file format please see " "the \"What's This?\" help below."); TQWhatsThis::add( m_useCommentFile, whatsThis ); label = new TQLabel(i18n("Comments &file:"), page); label->setEnabled( useCommentFile ); dvlay->addWidget( label ); whatsThis = i18n("

You can specify the name of the comment file here. " "The comment file contains the subtitles for the images. " "The format of this file is:" "

FILENAME1:" "
Description" "
" "
FILENAME2:" "
Description" "
" "
and so on"); TQWhatsThis::add( label, whatsThis ); m_commentFileReq = new KURLRequester(path + "comments", page); m_commentFileReq->setEnabled(useCommentFile); label->setBuddy( m_commentFileReq ); dvlay->addWidget(m_commentFileReq); TQWhatsThis::add( m_commentFileReq, whatsThis ); connect(m_useCommentFile, TQT_SIGNAL(toggled(bool)), label, TQT_SLOT(setEnabled(bool))); connect(m_useCommentFile, TQT_SIGNAL(toggled(bool)), m_commentFileReq, TQT_SLOT(setEnabled(bool))); dvlay->addStretch(1); } void KIGPDialog::setupThumbnailPage(const TQString& path) { TQFrame *page = addPage( i18n("Thumbnails"), i18n("Thumbnails"), BarIcon("thumbnail", KIcon::SizeMedium ) ); m_config->setGroup("Thumbnails"); TQLabel *label; TQVBoxLayout *vlay = new TQVBoxLayout( page, 0, spacingHint() ); TQHBoxLayout *hlay3 = new TQHBoxLayout( spacingHint() ); vlay->addLayout( hlay3 ); m_imageFormat = new TQComboBox(false, page); m_imageFormat->insertItem("JPEG"); m_imageFormat->insertItem("PNG"); m_imageFormat->setCurrentText( m_config->readEntry("ImageFormat", "JPEG") ); label = new TQLabel( i18n("Image format f&or the thumbnails:"), page); hlay3->addWidget( label ); label->setBuddy( m_imageFormat ); hlay3->addStretch( 1 ); hlay3->addWidget(m_imageFormat); m_thumbnailSize = new KIntNumInput(m_config->readNumEntry("ThumbnailSize", 140), page); m_thumbnailSize->setRange(10, 1000, 1, true ); m_thumbnailSize->setLabel( i18n("Thumbnail size:") ); vlay->addWidget( m_thumbnailSize ); TQGridLayout *grid = new TQGridLayout( 2, 2 ); vlay->addLayout( grid ); TQHBoxLayout *hlay4 = new TQHBoxLayout( spacingHint() ); vlay->addLayout( hlay4 ); const bool colorDepthSet = m_config->readBoolEntry("ColorDepthSet", false); m_colorDepthSet = new TQCheckBox(i18n("&Set different color depth:"), page); m_colorDepthSet->setChecked(colorDepthSet); hlay4->addWidget( m_colorDepthSet ); m_colorDepth = new TQComboBox(false, page); m_colorDepth->insertItem("1"); m_colorDepth->insertItem("8"); m_colorDepth->insertItem("16"); m_colorDepth->insertItem("32"); m_colorDepth->setCurrentText(m_config->readEntry("ColorDepth", "8")); m_colorDepth->setEnabled(colorDepthSet); hlay4->addWidget( m_colorDepth ); connect(m_colorDepthSet, TQT_SIGNAL( toggled(bool) ), m_colorDepth, TQT_SLOT( setEnabled(bool) ) ); vlay->addStretch(1); } void KIGPDialog::writeConfig() { m_config->setGroup("Look"); m_config->writeEntry("ImagesPerRow", getImagesPerRow()); m_config->writeEntry("ImageName", printImageName()); m_config->writeEntry("ImageSize", printImageSize()); m_config->writeEntry("ImageProperty", printImageProperty()); m_config->writeEntry("FontName", getFontName()); m_config->writeEntry("FontSize", getFontSize()); m_config->writeEntry("ForegroundColor", getForegroundColor().name() ); m_config->writeEntry("BackgroundColor", getBackgroundColor().name()); m_config->setGroup("Directory"); m_config->writeEntry("RecurseSubDirectories", recurseSubDirectories()); m_config->writeEntry("RecursionLevel", recursionLevel()); m_config->writeEntry("CopyOriginalFiles", copyOriginalFiles()); m_config->writeEntry("UseCommentFile", useCommentFile()); m_config->setGroup("Thumbnails"); m_config->writeEntry("ThumbnailSize", getThumbnailSize()); m_config->writeEntry("ColorDepth", getColorDepth()); m_config->writeEntry("ColorDepthSet", colorDepthSet()); m_config->writeEntry("ImageFormat", getImageFormat()); m_config->sync(); } KIGPDialog::~KIGPDialog() { } void KIGPDialog::imageUrlChanged(const TQString &url ) { enableButtonOK( !url.isEmpty()); } bool KIGPDialog::printImageName() const { return m_imageName->isChecked(); } bool KIGPDialog::printImageSize() const { return m_imageSize->isChecked(); } bool KIGPDialog::printImageProperty() const { return m_imageProperty->isChecked(); } bool KIGPDialog::recurseSubDirectories() const { return m_recurseSubDir->isChecked(); } int KIGPDialog::recursionLevel() const { return m_recursionLevel->value(); } bool KIGPDialog::copyOriginalFiles() const { return m_copyOriginalFiles->isChecked(); } bool KIGPDialog::useCommentFile() const { return m_useCommentFile->isChecked(); } int KIGPDialog::getImagesPerRow() const { return m_imagesPerRow->value(); } int KIGPDialog::getThumbnailSize() const { return m_thumbnailSize->value(); } int KIGPDialog::getColorDepth() const { return m_colorDepth->currentText().toInt(); } bool KIGPDialog::colorDepthSet() const { return m_colorDepthSet->isChecked(); } const TQString KIGPDialog::getTitle() const { return m_title->text(); } const TQString KIGPDialog::getImageName() const { return m_imageNameReq->url(); } const TQString KIGPDialog::getCommentFile() const { return m_commentFileReq->url(); } const TQString KIGPDialog::getFontName() const { return m_fontName->currentText(); } const TQString KIGPDialog::getFontSize() const { return m_fontSize->text(); } const TQColor KIGPDialog::getBackgroundColor() const { return m_backgroundColor->color(); } const TQColor KIGPDialog::getForegroundColor() const { return m_foregroundColor->color(); } const TQString KIGPDialog::getImageFormat() const { return m_imageFormat->currentText(); }