diff options
Diffstat (limited to 'kcontrol/filetypes/kserviceselectdlg.cpp')
-rw-r--r-- | kcontrol/filetypes/kserviceselectdlg.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/kcontrol/filetypes/kserviceselectdlg.cpp b/kcontrol/filetypes/kserviceselectdlg.cpp new file mode 100644 index 000000000..c3a925218 --- /dev/null +++ b/kcontrol/filetypes/kserviceselectdlg.cpp @@ -0,0 +1,66 @@ +/* This file is part of the KDE project + Copyright (C) 2000 David Faure <[email protected]> + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License version 2 as published by the Free Software Foundation. + + 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; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "kserviceselectdlg.h" +#include "kserviceselectdlg.moc" +#include "kservicelistwidget.h" + +#include <klocale.h> + +#include <qvbox.h> +#include <qlabel.h> + +KServiceSelectDlg::KServiceSelectDlg( const QString& /*serviceType*/, const QString& /*value*/, QWidget *parent ) + : KDialogBase( parent, "serviceSelectDlg", true, + i18n( "Add Service" ), Ok|Cancel, Ok ) +{ + QVBox *vbox = new QVBox ( this ); + + vbox->setSpacing( KDialog::spacingHint() ); + new QLabel( i18n( "Select service:" ), vbox ); + m_listbox=new KListBox( vbox ); + + // Can't make a KTrader query since we don't have a servicetype to give, + // we want all services that are not applications....... + // So we have to do it the slow way + // ### Why can't we query for KParts/ReadOnlyPart as the servicetype? Should work fine! + KService::List allServices = KService::allServices(); + QValueListIterator<KService::Ptr> it(allServices.begin()); + for ( ; it != allServices.end() ; ++it ) + if ( (*it)->hasServiceType( "KParts/ReadOnlyPart" ) ) + { + m_listbox->insertItem( new KServiceListItem( (*it), KServiceListWidget::SERVICELIST_SERVICES ) ); + } + + m_listbox->sort(); + m_listbox->setMinimumHeight(350); + m_listbox->setMinimumWidth(300); + connect(m_listbox,SIGNAL(doubleClicked ( QListBoxItem * )),SLOT(slotOk())); + setMainWidget(vbox); +} + +KServiceSelectDlg::~KServiceSelectDlg() +{ +} + +KService::Ptr KServiceSelectDlg::service() +{ + unsigned int selIndex = m_listbox->currentItem(); + KServiceListItem *selItem = static_cast<KServiceListItem *>(m_listbox->item(selIndex)); + return KService::serviceByDesktopPath( selItem->desktopPath ); +} |