diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 4aed2c8219774f5d797760606b8489a92ddc5163 (patch) | |
tree | 3f8c130f7d269626bf6a9447407ef6c35954426a /kcontrol/filetypes/kserviceselectdlg.cpp | |
download | tdebase-4aed2c8219774f5d797760606b8489a92ddc5163.tar.gz tdebase-4aed2c8219774f5d797760606b8489a92ddc5163.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
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 <faure@kde.org> + + 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 ); +} |