diff options
Diffstat (limited to 'kcontrol/hwmanager/hwmanager.cpp')
| -rw-r--r-- | kcontrol/hwmanager/hwmanager.cpp | 175 | 
1 files changed, 175 insertions, 0 deletions
| diff --git a/kcontrol/hwmanager/hwmanager.cpp b/kcontrol/hwmanager/hwmanager.cpp new file mode 100644 index 000000000..049460d17 --- /dev/null +++ b/kcontrol/hwmanager/hwmanager.cpp @@ -0,0 +1,175 @@ +/** + * hwmanager.cpp + * + * Copyright (c) 2009-2010 Timothy Pearson <kb9vqf@pearsoncomputing.net> + * + *  This program is free software; you can redistribute it and/or modify + *  it under the terms of the GNU General Public License as published by + *  the Free Software Foundation; either version 2 of the License, or + *  (at your option) any later version. + * + *  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; if not, write to the Free Software + *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. + */ + +#include <tqcheckbox.h> +#include <tqlabel.h> +#include <tqlayout.h> +#include <tqlineedit.h> +#include <tqpushbutton.h> + +#include <dcopclient.h> + +#include <kaboutdata.h> +#include <kapplication.h> +#include <kconfig.h> +#include <kcombobox.h> +#include <kdebug.h> +#include <kdialog.h> +#include <kglobal.h> +#include <klistview.h> +#include <klocale.h> +#include <kmessagebox.h> +#include <kpopupmenu.h> +#include <kinputdialog.h> +#include <kurlrequester.h> +#include <kgenericfactory.h> + +#include <unistd.h> +#include <ksimpleconfig.h> +#include <string> +#include <stdio.h> +#include <tqstring.h> + +#include "hwmanager.h" + +using namespace std; + +/**** DLL Interface ****/ +typedef KGenericFactory<TDEHWManager, TQWidget> TDEHWManagerFactory; +K_EXPORT_COMPONENT_FACTORY( kcm_hwmanager, TDEHWManagerFactory("kcmhwmanager") ) + +KSimpleConfig *config; +KSimpleConfig *systemconfig; + +/**** TDEHWManager ****/ + +TDEHWManager::TDEHWManager(TQWidget *parent, const char *name, const TQStringList &) +  : KCModule(TDEHWManagerFactory::instance(), parent, name) +{ +	TQVBoxLayout *layout = new TQVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); +	config = new KSimpleConfig( TQString::fromLatin1( "hwmanagerrc" )); +	systemconfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdehw/hwmanagerrc" )); + +	KAboutData *about = +	new KAboutData(I18N_NOOP("kcmhwmanager"), I18N_NOOP("TDE Hardware Device Manager"), +		0, 0, KAboutData::License_GPL, +		I18N_NOOP("(c) 2012 Timothy Pearson")); +	 +	about->addAuthor("Timothy Pearson", 0, "kb9vqf@pearsoncomputing.net"); +	setAboutData( about ); + +	base = new TDEHWManagerBase(this); +	layout->add(base); + +	setRootOnlyMsg(i18n("<b>Hardware settings are system wide, and requires administrator access</b><br>To alter the system's hardware settings, click on the \"Administrator Mode\" button below.")); +	setUseRootOnlyMsg(true); + +	TDEHardwareDevices *hwdevices = KGlobal::hardwareDevices(); + +	connect(base->showByConnection, TQT_SIGNAL(clicked()), TQT_SLOT(changed())); +	connect(base->showByConnection, TQT_SIGNAL(clicked()), TQT_SLOT(populateTreeView())); + +	connect(hwdevices, TQT_SIGNAL(hardwareAdded(TDEGenericDevice*)), this, TQT_SLOT(populateTreeView())); +	connect(hwdevices, TQT_SIGNAL(hardwareRemoved(TDEGenericDevice*)), this, TQT_SLOT(populateTreeView())); +	connect(hwdevices, TQT_SIGNAL(hardwareUpdated(TDEGenericDevice*)), this, TQT_SLOT(populateTreeView())); + +	load(); + +	populateTreeView(); +} + +TDEHWManager::~TDEHWManager() +{ +	delete config; +	delete systemconfig; +} + +void TDEHWManager::load() +{ +	load( false ); +} + +void TDEHWManager::load(bool useDefaults ) +{ +	emit changed(useDefaults); +} + +void TDEHWManager::save() +{ +	emit changed(false); +} + +void TDEHWManager::defaults() +{ +	load( true ); +} + +void TDEHWManager::populateTreeView() +{ +	bool show_by_connection = base->showByConnection->isChecked(); + +	base->deviceTree->clear(); + +	if (show_by_connection) { +		DeviceIconItem* rootitem = new DeviceIconItem(base->deviceTree, "Linux System", DesktopIcon("misc", base->deviceTree->iconSize()), 0); + +		TDEHardwareDevices *hwdevices = KGlobal::hardwareDevices(); +		TDEGenericHardwareList hwlist = hwdevices->listByDeviceClass(TDEGenericDeviceType::Root); +		TDEGenericDevice *hwdevice; +		for ( hwdevice = hwlist.first(); hwdevice; hwdevice = hwlist.next() ) { +			DeviceIconItem* item = new DeviceIconItem(rootitem, hwdevice->friendlyName(), hwdevice->icon(base->deviceTree->iconSize()), hwdevice); +			populateTreeViewLeaf(item, show_by_connection); +		} +	} +	else { +		TDEHardwareDevices *hwdevices = KGlobal::hardwareDevices(); +		for (int i=0;i<=TDEGenericDeviceType::Last;i++) { +			if (i != TDEGenericDeviceType::Root) { +				DeviceIconItem* item = new DeviceIconItem(base->deviceTree, hwdevices->getFriendlyDeviceTypeStringFromType((TDEGenericDeviceType::TDEGenericDeviceType)i), hwdevices->getDeviceTypeIconFromType((TDEGenericDeviceType::TDEGenericDeviceType)i, base->deviceTree->iconSize()), 0); +				TDEGenericDevice *hwdevice; +				TDEGenericHardwareList hwlist = hwdevices->listByDeviceClass((TDEGenericDeviceType::TDEGenericDeviceType)i); +				for ( hwdevice = hwlist.first(); hwdevice; hwdevice = hwlist.next() ) { +					new DeviceIconItem(item, hwdevice->friendlyName(), hwdevice->icon(base->deviceTree->iconSize()), hwdevice); +				} +			} +		} +	} +} + +void TDEHWManager::populateTreeViewLeaf(DeviceIconItem *parent, bool show_by_connection) { +	if (show_by_connection) { +		TDEHardwareDevices *hwdevices = KGlobal::hardwareDevices(); +		TDEGenericHardwareList hwlist = hwdevices->listAllPhysicalDevices(); +		TDEGenericDevice *hwdevice; +		for ( hwdevice = hwlist.first(); hwdevice; hwdevice = hwlist.next() ) { +			if (hwdevice->parentDevice() == parent->device()) { +				DeviceIconItem* item = new DeviceIconItem(parent, hwdevice->friendlyName(), hwdevices->getDeviceTypeIconFromType(hwdevice->type(), base->deviceTree->iconSize()), hwdevice); +				populateTreeViewLeaf(item, show_by_connection); +			} +		} +	} +} + +TQString TDEHWManager::quickHelp() const +{ +  return i18n("<h1>TDE Hardware Device Manager</h1> This module allows you to configure hardware devices on your system"); +} + +#include "hwmanager.moc" | 
