You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
3.7 KiB
131 lines
3.7 KiB
/*
|
|
Gwenview - A simple image viewer for TDE
|
|
Copyright 2000-2004 Aurélien Gâteau
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
This program 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 General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
// TQt includes
|
|
#include <tqtimer.h>
|
|
|
|
// KDE includes
|
|
#include <kdebug.h>
|
|
#include <tdeversion.h>
|
|
#include <tdefilefiltercombo.h>
|
|
#include <kimageio.h>
|
|
#include <tdelocale.h>
|
|
#include <kurlcombobox.h>
|
|
|
|
// Our includes
|
|
#include "imagesavedialog.moc"
|
|
namespace Gwenview {
|
|
|
|
|
|
static int findFormatInFilterList(const TQStringList& filters, const TQString& format) {
|
|
int pos=0;
|
|
for(TQStringList::const_iterator it=filters.begin(); it!=filters.end(); ++it,++pos) {
|
|
TQStringList list=TQStringList::split("|",*it);
|
|
if ( list[1].startsWith(format) ) return pos;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
|
|
ImageSaveDialog::ImageSaveDialog(KURL& url, const TQCString& imageFormat, TQWidget* parent)
|
|
: KFileDialog(":ImageSaveDialog",TQString(),parent,"imagesavedialog",true)
|
|
, mURL(url)
|
|
, mImageFormat(imageFormat)
|
|
{
|
|
setOperationMode(KFileDialog::Saving);
|
|
|
|
// FIXME: Ugly code to define the filter combo label.
|
|
KMimeType::List types;
|
|
setFilterMimeType(i18n("Format:"),types,KMimeType::mimeType(""));
|
|
|
|
TQStringList filters;
|
|
|
|
// Create our filter list
|
|
TQStringList mimeTypes=KImageIO::mimeTypes();
|
|
for(TQStringList::const_iterator it=mimeTypes.begin(); it!=mimeTypes.end(); ++it) {
|
|
TQString format=KImageIO::typeForMime(*it);
|
|
|
|
// Create the pattern part of the filter string
|
|
KMimeType::Ptr mt=KMimeType::mimeType(*it);
|
|
TQStringList patterns;
|
|
for (TQStringList::const_iterator patIt=mt->patterns().begin();patIt!=mt->patterns().end();++patIt) {
|
|
TQString pattern=(*patIt).lower();
|
|
if (!patterns.contains(pattern)) patterns.append(pattern);
|
|
}
|
|
if (patterns.isEmpty()) {
|
|
patterns.append( TQString("*.%1").arg(format.lower()) );
|
|
}
|
|
TQString patternString=patterns.join(" ");
|
|
|
|
// Create the filter string
|
|
TQString filter=patternString + "|"
|
|
+ format + " - " + mt->comment()
|
|
+ " (" + patternString + ")";
|
|
|
|
// Add it to our list
|
|
filters.append(filter);
|
|
}
|
|
|
|
qHeapSort(filters);
|
|
setFilter(filters.join("\n"));
|
|
|
|
// Select the default image format
|
|
int pos=findFormatInFilterList(filters,mImageFormat);
|
|
if (pos==-1) {
|
|
pos=findFormatInFilterList(filters,"PNG");
|
|
mImageFormat="PNG";
|
|
}
|
|
|
|
filterWidget->setCurrentItem(pos);
|
|
|
|
// Tweak the filter widget
|
|
filterWidget->setEditable(false);
|
|
|
|
connect(filterWidget,TQT_SIGNAL(activated(const TQString&)),
|
|
this,TQT_SLOT(updateImageFormat(const TQString&)) );
|
|
|
|
// Call slotFilterChanged() to get the list filtered by the filter we
|
|
// selected. If we don't use a single shot, it leads to a crash :-/
|
|
TQTimer::singleShot(0,this,TQT_SLOT(slotFilterChanged()));
|
|
}
|
|
|
|
|
|
void ImageSaveDialog::accept() {
|
|
KFileDialog::accept();
|
|
mURL=selectedURL();
|
|
}
|
|
|
|
|
|
void ImageSaveDialog::updateImageFormat(const TQString& text) {
|
|
TQStringList list=TQStringList::split(" ",text);
|
|
mImageFormat=list[0].local8Bit();
|
|
|
|
TQString name=locationEdit->currentText();
|
|
TQString suffix=KImageIO::suffix(mImageFormat);
|
|
int dotPos=name.findRev('.');
|
|
if (dotPos>-1) {
|
|
name=name.left(dotPos);
|
|
}
|
|
name.append('.').append(suffix);
|
|
locationEdit->setCurrentText(name);
|
|
}
|
|
|
|
|
|
} // namespace
|