⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 networksettings.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.7平台上编译为嵌入式图形界面操作系统。
💻 CPP
字号:
/************************************************************************ Copyright (C) 2000-2002 Trolltech AS.  All rights reserved.**** This file is part of the Qtopia Environment.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#include "networksettings.h"#include "addnetworksetting.h"#include <qtopia/networkinterface.h>#include <qtopia/network.h>#include <qtopia/global.h>#include <qtopia/config.h>#include <qtopia/resource.h>#include <qtopia/qpeapplication.h>#ifdef QWS#include <qtopia/qcopenvelope_qws.h>#endif#include <qtopia/qlibrary.h>#include <qtopia/qpemessagebox.h>#include <qmessagebox.h>#include <qpushbutton.h>#include <qlistbox.h>#include <qdir.h>#include <qlayout.h>#include <qdict.h>#include <qobjectlist.h>/*  *  Constructs a NetworkConnections which is a child of 'parent', with the  *  name 'name' and widget flags set to 'f'  */NetworkSettings::NetworkSettings( QWidget* parent,  const char* name, WFlags fl )    : NetworkSettingsBase( parent, name, fl ){    emptyString = tr("<p>There are no running network services.");    notEmptyString = tr("<p>This is the state of your running network services.");    loadSettings();    connect(add, SIGNAL(clicked()), this, SLOT(addSetting()));    connect(remove, SIGNAL(clicked()), this, SLOT(removeSetting()));    connect(props, SIGNAL(clicked()), this, SLOT(doProperties()));    connect(settings, SIGNAL(selectionChanged()), this, SLOT(serviceSelected()) );    remove->setEnabled( false );    props->setEnabled( false );#ifdef QWS    Network::connectChoiceChange(this,SLOT(updateCurrent()));#endif    updateCurrent();}/*   *  Destroys the object and frees any allocated resources */NetworkSettings::~NetworkSettings(){    // no need to delete child widgets, Qt does it all for us}void NetworkSettings::loadSettings(){#ifdef QWS    filelist = Network::choices(settings);#endif}void NetworkSettings::addSetting(){    AddNetworkSetting a;    a.showMaximized();    if ( a.exec() ) {	QString basename = QFileInfo(a.selectedFile()).baseName();	QDir settingsdir(Network::settingsDir());	QString uniq = "";	int n=0;	QString filename;	do {	    filename = settingsdir.filePath(basename + uniq + ".conf");	    uniq = QString::number(n++);	} while (QFile::exists(filename));	// copy	{	    QFile i(a.selectedFile());	    if ( !i.open(IO_ReadOnly) )		return;	    QFile o(filename);	    if ( !o.open(IO_WriteOnly) )		return;	    o.writeBlock(i.readAll());	}	bool ok = TRUE;	{	    Config cfg(filename, Config::File);	    QFile::remove(filename);	    cfg.setGroup("Help");	    cfg.clearGroup();	    cfg.setGroup("Info");	    QString type = cfg.readEntry("Type");	    NetworkInterface* plugin;	    if ( cfg.readNumEntry("Unique",0) && n > 1 ) {		QMessageBox::information(this,tr("Error"),		    tr("<p>Only one %1 can be added. Remove the current one, "			"or change its Properties").arg(cfg.readEntry("Name")));		plugin = 0;	    } else {#ifdef QWS		plugin = Network::loadPlugin(type);#endif	    }	    if ( plugin ) {		if ( (ok = plugin->create(cfg)) ) {		    cfg.setGroup("Properties");		    if ( !plugin->doProperties(this, cfg) ) {			plugin->remove(cfg);			plugin = 0;			ok = FALSE;		    }		}	    } else {		ok = FALSE;	    }	    if ( ok )		cfg.write(); // since we delete it after load	}	if ( ok ) {	    loadSettings();#ifndef QT_NO_COP	    QCopEnvelope("QPE/Network", "choicesChanged()");#endif	} else {	    QFile::remove(filename);	}    }}void NetworkSettings::serviceSelected(){    bool sel = false;    QStringList::ConstIterator it = filelist.begin();    for (QListBoxItem* i=settings->firstItem(); i; i=i->next(), ++it) {	if ( i->selected() ) {	    sel = true;	    break;	}    }    remove->setEnabled( sel );    props->setEnabled( sel );}void NetworkSettings::removeSetting(){    bool ch=FALSE;    QStringList::ConstIterator it = filelist.begin();    for (QListBoxItem* i=settings->firstItem(); i; i=i->next(), ++it) {	if ( i->selected() && QPEMessageBox::confirmDelete( 0,                     NetworkSettings::tr( "Network" ), i->text()) ) {	    removeSetting(*it);	    ch = TRUE;	}    }    if ( ch ) {	loadSettings();#ifndef QT_NO_COP	QCopEnvelope("QPE/Network", "choicesChanged()");#endif	serviceSelected();    }}void NetworkSettings::removeSetting(const QString& cfgfile){    {	Config cfg(cfgfile, Config::File);	cfg.setGroup("Info");	QString type = cfg.readEntry("Type");#ifdef QWS	NetworkInterface* plugin = Network::loadPlugin(type);	if ( plugin ) {	    if ( !plugin->remove(cfg) )		return;	}#endif    }    QFile::remove(cfgfile);}void NetworkSettings::doProperties(){    QStringList::ConstIterator it = filelist.begin();    for (QListBoxItem* i=settings->firstItem(); i; i=i->next(), ++it) {	if ( i->selected() ) {	    doProperties(*it);	    loadSettings();#ifndef QT_NO_COP	    QCopEnvelope("QPE/Network", "choicesChanged()");#endif	    return;	}    }}void NetworkSettings::doProperties(const QString& cfgfile){    Config cfg(cfgfile, Config::File);    cfg.setGroup("Info");    QString type = cfg.readEntry("Type");#ifdef QWS    NetworkInterface* plugin = Network::loadPlugin(type);    if ( plugin ) {	cfg.setGroup("Properties");	plugin->doProperties(this, cfg);	updateCurrent();    }#endif}void NetworkSettings::updateCurrent(){    states->hide();    const QObjectList *l = states->children();    if ( l ) {	start: {	    QObjectListIt i(*l);	    while (i.current()) {		if (i.current()->isWidgetType()) {		    delete i.current();		    goto start;		}		++i;	    }	}    }    delete states->layout();#ifdef QWS    Network::addStateWidgets(states);#endif    states->show();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -