21#include "KoFileDialog.h"
22#include "KoDocument.h"
23#include <tdefilefiltercombo.h>
25#include <tdediroperator.h>
28KoFileDialog::KoFileDialog(
const TQString& startDir,
const TQString& filter,
29 TQWidget *parent,
const char *name,
31 : KFileDialog( startDir, filter, parent,
name, modal )
33 connect( filterWidget, TQ_SIGNAL( activated(
int) ),
34 this, TQ_SLOT( slotChangedfilter(
int ) ) );
37void KoFileDialog::slotChangedfilter(
int index )
41 KFile::Mode newMode = KFile::File;
42 if ( index >= 1 && index <= (
int)m_specialFormats.count()
43 && m_specialFormats[index-1] == KoDocument::SaveAsDirectoryStore ) {
44 newMode = KFile::Directory;
46 if ( newMode != mode() )
48 ops->setMode( newMode );
49 updateAutoSelectExtension();
53void KoFileDialog::setSpecialMimeFilter( TQStringList& mimeFilter,
54 const TQString& currentFormat,
const int specialOutputFlag,
55 const TQString& nativeFormat,
56 int supportedSpecialFormats )
58 Q_ASSERT( !mimeFilter.isEmpty() );
59 Q_ASSERT( mimeFilter[0] == nativeFormat );
61 bool addUncompressed = supportedSpecialFormats & KoDocument::SaveAsDirectoryStore;
62 bool addFlatXML = supportedSpecialFormats & KoDocument::SaveAsFlatXML;
64 int idxSpecialOutputFlag = 0;
65 int numSpecialEntries = 0;
66 if ( addUncompressed ) {
68 m_specialFormats.append( KoDocument::SaveAsDirectoryStore );
69 if ( specialOutputFlag == KoDocument::SaveAsDirectoryStore )
70 idxSpecialOutputFlag = numSpecialEntries;
74 m_specialFormats.append( KoDocument::SaveAsFlatXML );
75 if ( specialOutputFlag == KoDocument::SaveAsFlatXML )
76 idxSpecialOutputFlag = numSpecialEntries;
80 TQStringList::Iterator mimeFilterIt = mimeFilter.at( 1 );
81 mimeFilter.insert( mimeFilterIt , numSpecialEntries, nativeFormat );
86 setMimeFilter( mimeFilter, currentFormat.isEmpty() ? nativeFormat : currentFormat );
89 KMimeType::Ptr type = KMimeType::mimeType( nativeFormat );
92 if ( addUncompressed )
93 filterWidget->changeItem( i18n(
"%1 (Uncompressed XML Files)").arg( type->comment() ), idx++ );
95 filterWidget->changeItem( i18n(
"%1 (Flat XML File)").arg( type->comment() ), idx++ );
99 if (currentFormat == nativeFormat || currentFormat.isEmpty())
102 filterWidget->setCurrentItem( idxSpecialOutputFlag );
103 slotChangedfilter( filterWidget->currentItem() );
107 for (mimeFilterIt = mimeFilter.begin (); mimeFilterIt != mimeFilter.end (); ++mimeFilterIt, i++)
109 KMimeType::Ptr mime = KMimeType::mimeType (*mimeFilterIt);
110 TQString compatString = mime->property (
"X-TDE-CompatibleApplication").toString ();
111 if (!compatString.isEmpty ())
112 filterWidget->changeItem (i18n (
"%1 (%2 Compatible)").arg (mime->comment ()).arg (compatString), i);
116int KoFileDialog::specialEntrySelected()
118 int i = filterWidget->currentItem();
120 if ( i >= 1 && i <= (
int)m_specialFormats.count() )
121 return m_specialFormats[i-1];
125#include "KoFileDialog.moc"
const char * name(StdAction id)