summaryrefslogtreecommitdiffstats
path: root/kcontrol/filetypes/kserviceselectdlg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol/filetypes/kserviceselectdlg.cpp')
-rw-r--r--kcontrol/filetypes/kserviceselectdlg.cpp66
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 );
+}