kde-workspace/kcontrol/componentchooser/componentchooserbrowser.cpp

116 lines
3.6 KiB
C++
Raw Normal View History

2014-11-15 03:14:34 +02:00
/***************************************************************************
componentchooserbrowser.cpp
-------------------
copyright : (C) 2002 by Joseph Wenninger
email : jowenn@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 Foundationi *
* *
***************************************************************************/
#include "componentchooserbrowser.h"
#include <kopenwithdialog.h>
#include <kglobalsettings.h>
#include <kconfiggroup.h>
#include <KUrl>
CfgBrowser::CfgBrowser(QWidget *parent)
: QWidget(parent), Ui::BrowserConfig_UI(),CfgPlugin()
{
setupUi(this);
connect(lineExec,SIGNAL(textChanged(const QString &)),this,SLOT(configChanged()));
connect(radioKIO,SIGNAL(toggled(bool)),this,SLOT(configChanged()));
connect(radioExec,SIGNAL(toggled(bool)),this,SLOT(configChanged()));
connect(btnSelectBrowser,SIGNAL(clicked()),this, SLOT(selectBrowser()));
}
CfgBrowser::~CfgBrowser() {
}
void CfgBrowser::configChanged()
{
emit changed(true);
}
void CfgBrowser::defaults()
{
load(0);
}
void CfgBrowser::load(KConfig *)
{
KConfigGroup config(KSharedConfig::openConfig("kdeglobals"), QLatin1String("General") );
QString exec = config.readPathEntry( QLatin1String("BrowserApplication"), QString("") );
if (exec.isEmpty())
{
radioKIO->setChecked(true);
m_browserExec = exec;
m_browserService = 0;
}
else
{
radioExec->setChecked(true);
if (exec.startsWith('!'))
{
m_browserExec = exec.mid(1);
m_browserService = 0;
}
else
{
m_browserService = KService::serviceByStorageId( exec );
if (m_browserService)
m_browserExec = m_browserService->desktopEntryName();
else
m_browserExec.clear();
}
}
lineExec->setText(m_browserExec);
emit changed(false);
}
void CfgBrowser::save(KConfig *)
{
KConfigGroup config(KSharedConfig::openConfig("kdeglobals"), QLatin1String("General") );
QString exec;
if (radioExec->isChecked())
{
exec = lineExec->text();
if (m_browserService && (exec == m_browserExec))
exec = m_browserService->storageId(); // Use service
else if (!exec.isEmpty())
exec = '!' + exec; // Literal command
}
config.writePathEntry( QLatin1String("BrowserApplication"), exec); // KConfig::Normal|KConfig::Global
config.sync();
KGlobalSettings::self()->emitChange(KGlobalSettings::SettingsChanged);
emit changed(false);
}
void CfgBrowser::selectBrowser()
{
KUrl::List urlList;
KOpenWithDialog dlg(urlList, i18n("Select preferred Web browser application:"), QString(), this);
if (dlg.exec() != QDialog::Accepted)
return;
m_browserService = dlg.service();
if (m_browserService) {
m_browserExec = m_browserService->desktopEntryName();
if (m_browserExec.isEmpty())
m_browserExec = m_browserService->exec();
} else {
m_browserExec = dlg.text();
}
lineExec->setText(m_browserExec);
}