summaryrefslogtreecommitdiffstats
path: root/kio/kio/kmimetypechooser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kio/kio/kmimetypechooser.cpp')
-rw-r--r--kio/kio/kmimetypechooser.cpp298
1 files changed, 0 insertions, 298 deletions
diff --git a/kio/kio/kmimetypechooser.cpp b/kio/kio/kmimetypechooser.cpp
deleted file mode 100644
index 8ab3a69ee..000000000
--- a/kio/kio/kmimetypechooser.cpp
+++ /dev/null
@@ -1,298 +0,0 @@
-/* This file is part of the KDE libraries
- Copyright (C) 2001 - 2004 Anders Lund <anders@alweb.dk>
-
- 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 "kmimetypechooser.h"
-
-#include <kconfig.h>
-#include <kiconloader.h>
-#include <klistview.h>
-#include <klocale.h>
-#include <kmimetype.h>
-#include <kprocess.h>
-#include <krun.h>
-#include <tdesycoca.h>
-
-#include <tqlabel.h>
-#include <tqlayout.h>
-#include <tqlineedit.h>
-#include <tqpushbutton.h>
-#include <tqwhatsthis.h>
-
-//BEGIN KMimeTypeChooserPrivate
-class KMimeTypeChooserPrivate
-{
- public:
- KListView *lvMimeTypes;
- TQPushButton *btnEditMimeType;
-
- TQString defaultgroup;
- TQStringList groups;
- int visuals;
-};
-//END
-
-//BEGIN KMimeTypeChooser
-KMimeTypeChooser::KMimeTypeChooser( const TQString &text,
- const TQStringList &selMimeTypes,
- const TQString &defaultGroup,
- const TQStringList &groupsToShow,
- int visuals,
- TQWidget *parent,
- const char *name )
- : TQVBox( parent, name )
-{
- d = new KMimeTypeChooserPrivate();
- d->lvMimeTypes = 0;
- d->btnEditMimeType = 0;
- d->defaultgroup = defaultGroup;
- d->groups = groupsToShow;
- d->visuals = visuals;
-
- setSpacing( KDialogBase::spacingHint() );
-
- if ( !text.isEmpty() )
- {
- new TQLabel( text, this );
- }
-
- d->lvMimeTypes = new KListView( this );
-
- d->lvMimeTypes->addColumn( i18n("Mime Type") );
-// d->lvMimeTypes->setColumnWidthMode( 0, TQListView::Manual );
-
- if ( visuals & Comments )
- {
- d->lvMimeTypes->addColumn( i18n("Comment") );
- d->lvMimeTypes->setColumnWidthMode( 1, TQListView::Manual );
- }
- if ( visuals & Patterns )
- d->lvMimeTypes->addColumn( i18n("Patterns") );
-
- d->lvMimeTypes->setRootIsDecorated( true );
-
- loadMimeTypes( selMimeTypes );
-
- if (visuals & KMimeTypeChooser::EditButton)
- {
- TQHBox *btns = new TQHBox( this );
- ((TQBoxLayout*)btns->layout())->addStretch(1);
- d->btnEditMimeType = new TQPushButton( i18n("&Edit..."), btns );
-
- connect( d->btnEditMimeType, TQT_SIGNAL(clicked()), this, TQT_SLOT(editMimeType()) );
- d->btnEditMimeType->setEnabled( false );
- connect( d->lvMimeTypes, TQT_SIGNAL( doubleClicked ( TQListViewItem * )),
- this, TQT_SLOT( editMimeType()));
- connect( d->lvMimeTypes, TQT_SIGNAL(currentChanged(TQListViewItem*)),
- this, TQT_SLOT(slotCurrentChanged(TQListViewItem*)) );
-
- TQWhatsThis::add( d->btnEditMimeType, i18n(
- "Click this button to display the familiar TDE mime type editor.") );
- }
-}
-
-KMimeTypeChooser::~KMimeTypeChooser()
-{
- delete d;
-}
-
-void KMimeTypeChooser::loadMimeTypes( const TQStringList &_selectedMimeTypes )
-{
- TQStringList selMimeTypes;
-
- if ( !_selectedMimeTypes.isEmpty() )
- selMimeTypes = _selectedMimeTypes;
- else
- selMimeTypes = mimeTypes();
-
- d->lvMimeTypes->clear();
-
- TQMap<TQString,TQListViewItem*> groups;
- // thanks to tdebase/kcontrol/filetypes/filetypesview
- KMimeType::List mimetypes = KMimeType::allMimeTypes();
- TQValueListIterator<KMimeType::Ptr> it(mimetypes.begin());
-
- TQListViewItem *groupItem;
- bool agroupisopen = false;
- TQListViewItem *idefault = 0; //open this, if all other fails
- TQListViewItem *firstChecked = 0; // make this one visible after the loop
-
- for (; it != mimetypes.end(); ++it)
- {
- TQString mimetype = (*it)->name();
- int index = mimetype.find("/");
- TQString maj = mimetype.left(index);
-
- if ( d->groups.count() && !d->groups.contains( maj ) )
- continue;
-
- TQString min = mimetype.right(mimetype.length() - (index+1));
-
- TQMapIterator<TQString,TQListViewItem*> mit = groups.find( maj );
- if ( mit == groups.end() )
- {
- groupItem = new TQListViewItem( d->lvMimeTypes, maj );
- groups.insert( maj, groupItem );
- if ( maj == d->defaultgroup )
- idefault = groupItem;
- }
- else
- groupItem = mit.data();
-
- TQCheckListItem *item = new TQCheckListItem( groupItem, min, TQCheckListItem::CheckBox );
- item->setPixmap( 0, SmallIcon( (*it)->icon(TQString::null,false) ) );
-
- int cl = 1;
-
- if ( d->visuals & Comments )
- {
- item->setText( cl, (*it)->comment(TQString::null, false) );
- cl++;
- }
-
- if ( d->visuals & Patterns )
- item->setText( cl, (*it)->patterns().join("; ") );
-
- if ( selMimeTypes.contains(mimetype) )
- {
- item->setOn( true );
- groupItem->setOpen( true );
- agroupisopen = true;
- if ( !firstChecked )
- firstChecked = item;
- }
- }
-
- if ( firstChecked )
- d->lvMimeTypes->ensureItemVisible( firstChecked );
-
- if ( !agroupisopen && idefault )
- {
- idefault->setOpen( true );
- d->lvMimeTypes->ensureItemVisible( idefault );
- }
-}
-
-void KMimeTypeChooser::editMimeType()
-{
- if ( !(d->lvMimeTypes->currentItem() && (d->lvMimeTypes->currentItem())->parent()) )
- return;
- TQString mt = (d->lvMimeTypes->currentItem()->parent())->text( 0 ) + "/" + (d->lvMimeTypes->currentItem())->text( 0 );
- // thanks to libkonq/konq_operations.cc
- connect( KSycoca::self(), TQT_SIGNAL(databaseChanged()),
- this, TQT_SLOT(slotSycocaDatabaseChanged()) );
- TQString keditfiletype = TQString::fromLatin1("keditfiletype");
- KRun::runCommand( keditfiletype
- + " --parent " + TQString::number( (ulong)topLevelWidget()->winId())
- + " " + TDEProcess::quote(mt),
- keditfiletype, keditfiletype /*unused*/);
-}
-
-void KMimeTypeChooser::slotCurrentChanged(TQListViewItem* i)
-{
- if ( d->btnEditMimeType )
- d->btnEditMimeType->setEnabled( i->parent() );
-}
-
-void KMimeTypeChooser::slotSycocaDatabaseChanged()
-{
- if ( KSycoca::self()->isChanged("mime") )
- loadMimeTypes();
-}
-
-TQStringList KMimeTypeChooser::mimeTypes() const
-{
- TQStringList l;
- TQListViewItemIterator it( d->lvMimeTypes );
- for (; it.current(); ++it)
- {
- if ( it.current()->parent() && ((TQCheckListItem*)it.current())->isOn() )
- l << it.current()->parent()->text(0) + "/" + it.current()->text(0); // FIXME uncecked, should be Ok unless someone changes mimetypes during this!
- }
- return l;
-}
-
-TQStringList KMimeTypeChooser::patterns() const
-{
- TQStringList l;
- KMimeType::Ptr p;
- TQString defMT = KMimeType::defaultMimeType();
- TQListViewItemIterator it( d->lvMimeTypes );
- for (; it.current(); ++it)
- {
- if ( it.current()->parent() && ((TQCheckListItem*)it.current())->isOn() )
- {
- p = KMimeType::mimeType( it.current()->parent()->text(0) + "/" + it.current()->text(0) );
- if ( p->name() != defMT )
- l += p->patterns();
- }
- }
- return l;
-}
-//END
-
-//BEGIN KMimeTypeChooserDialog
-KMimeTypeChooserDialog::KMimeTypeChooserDialog(
- const TQString &caption,
- const TQString& text,
- const TQStringList &selMimeTypes,
- const TQString &defaultGroup,
- const TQStringList &groupsToShow,
- int visuals,
- TQWidget *parent, const char *name )
- : KDialogBase(parent, name, true, caption, Cancel|Ok, Ok)
-{
- m_chooser = new KMimeTypeChooser( text, selMimeTypes,
- defaultGroup, groupsToShow, visuals,
- this, "chooser" );
- setMainWidget(m_chooser);
-
- TDEConfigGroup group( TDEGlobal::config(), "KMimeTypeChooserDialog");
- TQSize defaultSize( 400, 300 );
- resize( group.readSizeEntry("size", &defaultSize) );
-}
-
-KMimeTypeChooserDialog::KMimeTypeChooserDialog(
- const TQString &caption,
- const TQString& text,
- const TQStringList &selMimeTypes,
- const TQString &defaultGroup,
- TQWidget *parent, const char *name )
- : KDialogBase(parent, name, true, caption, Cancel|Ok, Ok)
-{
- m_chooser = new KMimeTypeChooser( text, selMimeTypes,
- defaultGroup, TQStringList(),
- KMimeTypeChooser::Comments|KMimeTypeChooser::Patterns|KMimeTypeChooser::EditButton,
- this, "chooser" );
- setMainWidget(m_chooser);
-
- TDEConfigGroup group( TDEGlobal::config(), "KMimeTypeChooserDialog");
- TQSize defaultSize( 400, 300 );
- resize( group.readSizeEntry("size", &defaultSize) );
-}
-
-
-KMimeTypeChooserDialog::~KMimeTypeChooserDialog()
-{
- TDEConfigGroup group( TDEGlobal::config(), "KMimeTypeChooserDialog");
- group.writeEntry("size", size());
-}
-
-//END KMimeTypeChooserDialog
-
-// kate: space-indent on; indent-width 2; replace-tabs on;
-#include "kmimetypechooser.moc"