diff options
Diffstat (limited to 'kicker/applets/media/preferencesdialog.cpp')
-rw-r--r-- | kicker/applets/media/preferencesdialog.cpp | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/kicker/applets/media/preferencesdialog.cpp b/kicker/applets/media/preferencesdialog.cpp new file mode 100644 index 000000000..179878e89 --- /dev/null +++ b/kicker/applets/media/preferencesdialog.cpp @@ -0,0 +1,167 @@ +/* This file is part of the KDE project + Copyright (c) 2004 Kevin Ottens <ervin ipsquad net> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + 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 "preferencesdialog.h" + +#include <klocale.h> +#include <kmimetype.h> +#include <qvbox.h> +#include <qwhatsthis.h> +#include <klistview.h> +#include <kfiledetailview.h> + +class MediumTypeItem : public QCheckListItem +{ +public: + MediumTypeItem(QListView *parent, const QString name, + const QString mimetype) + : QCheckListItem(parent, name, CheckBox), + mMimeType(mimetype) { } + + const QString &mimeType() const { return mMimeType; } + +private: + QString mMimeType; +}; + +class MediumItem : public QCheckListItem +{ +public: + MediumItem(QListView *parent, const QString name, + const KFileItem medium) + : QCheckListItem(parent, name, CheckBox), + mMedium(medium) { } + + const QString itemURL() const { return mMedium.url().url(); } + +private: + KFileItem mMedium; +}; + + + +PreferencesDialog::PreferencesDialog(KFileItemList media, QWidget *parent, + const char *name) + : KDialogBase(Tabbed, i18n("Media Applet Preferences"), Ok|Cancel|Default, + Ok, parent, name, true), + mMedia(media) +{ + QVBox *types_page = addVBoxPage( i18n("Medium Types") ); + mpMediumTypesListView = new KListView(types_page); + + //mpMediumTypesListView->setFullWidth(true); + mpMediumTypesListView->addColumn( i18n("Types to Display") ); + QWhatsThis::add(mpMediumTypesListView, i18n("Deselect the medium types which you do not want to see in the applet")); + + + + QVBox *media_page = addVBoxPage( i18n("Media") ); + mpMediaListView = new KListView(media_page); + + //mpMediaListView->setFullWidth(true); + mpMediaListView->addColumn( i18n("Media to Display") ); + QWhatsThis::add(mpMediaListView, i18n("Deselect the media which you do not want to see in the applet")); + + slotDefault(); +} + +PreferencesDialog::~PreferencesDialog() +{ +} + +void PreferencesDialog::slotDefault() +{ + QStringList defaultExclude; + + defaultExclude << "media/hdd_mounted"; + defaultExclude << "media/hdd_unmounted"; + defaultExclude << "media/nfs_mounted"; + defaultExclude << "media/nfs_unmounted"; + defaultExclude << "media/smb_mounted"; + defaultExclude << "media/smb_unmounted"; + + setExcludedMediumTypes(defaultExclude); + setExcludedMedia(QStringList()); +} + +QStringList PreferencesDialog::excludedMediumTypes() +{ + QStringList excludedTypes; + + for(MediumTypeItem *it=static_cast<MediumTypeItem *>(mpMediumTypesListView->firstChild()); + it; it=static_cast<MediumTypeItem *>(it->nextSibling())) + { + if(!it->isOn()) excludedTypes << it->mimeType(); + } + + return excludedTypes; +} + +void PreferencesDialog::setExcludedMediumTypes(QStringList excludedTypesList) +{ + mpMediumTypesListView->clear(); + mpMediumTypesListView->setRootIsDecorated(false); + KMimeType::List mimetypes = KMimeType::allMimeTypes(); + + QValueListIterator<KMimeType::Ptr> it(mimetypes.begin()); + + for(; it != mimetypes.end(); ++it) + { + if ((*it)->name().startsWith("media/")) + { + bool ok=excludedTypesList.contains((*it)->name())==0; + MediumTypeItem *item = new MediumTypeItem(mpMediumTypesListView, (*it)->comment(), (*it)->name()); + item->setOn(ok); + } + } +} + +QStringList PreferencesDialog::excludedMedia() +{ + QStringList excluded; + + for(MediumItem *it=static_cast<MediumItem *>(mpMediaListView->firstChild()); + it; it=static_cast<MediumItem *>(it->nextSibling())) + { + if(!it->isOn()) excluded << it->itemURL(); + } + + return excluded; +} + +void PreferencesDialog::setExcludedMedia(QStringList excludedList) +{ + mpMediaListView->clear(); + mpMediaListView->setRootIsDecorated(false); + + KFileItemListIterator it( mMedia ); + KFileItem *file; + while ( (file = it.current()) != 0 ) + { + ++it; + + bool ok = excludedList.contains(file->url().url())==0; + MediumItem *item = new MediumItem(mpMediaListView, + file->text(), *file); + item->setOn(ok); + } +} + + +#include "preferencesdialog.moc" |