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

📄 imagesource.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
字号:
/************************************************************************ Copyright (C) 2000-2005 Trolltech AS.  All rights reserved.**** This file is part of the Qtopia Environment.** ** 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.** ** A copy of the GNU GPL license version 2 is included in this package as ** LICENSE.GPL.**** 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.**** In addition, as a special exception Trolltech gives permission to link** the code of this program with Qtopia applications copyrighted, developed** and distributed by Trolltech under the terms of the Qtopia Personal Use** License Agreement. You must comply with the GNU General Public License** in all respects for all of the code used other than the applications** licensed under the Qtopia Personal Use License Agreement. If you modify** this file, you may extend this exception to your version of the file,** but you are not obligated to do so. If you do not wish to do so, delete** this exception statement from your version.** ** 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 "imagesource.h"#include <qtopia/qcopenvelope_qws.h>#include <qtopia/services.h>#include <qtopia/global.h>#include <qtopia/mimetype.h>#include <qtopia/qpeapplication.h>#include <qtopia/config.h>#include <qtopia/resource.h>#include <qtopia/qcopenvelope_qws.h>#include <qimage.h>#include <qsignalmapper.h>#include <qguardedptr.h>class ValueServiceChannel : public QCopChannel {    Q_OBJECTpublic:    ValueServiceChannel(QObject* parent) :	QCopChannel("QPE/QDS",parent)    {	//allapps=new AppLnkSet(MimeType::appsFolderName());    }    //AppLnkSet *allapps;signals:    void valueSupplied(const QString&,QDataStream&);private:    void receive(const QCString& msg,const QByteArray& data)    {	if ( msg.left(22) == "valueSupplied(QString," ) {	    QDataStream ds(data,IO_ReadOnly);	    QString id;	    ds >> id;	    emit valueSupplied(id,ds);	}    }};class ValueServiceData {public:    ValueServiceData(ValueService::Type st, const char* mimetype, const char* params, const char* returns) 	: rettypes( returns ), args(params)    {	/*	get all the servers for this service	a server is an action of an application, not just the application itself	*/	QStringList apps;	const QString serviceName = ServiceNames[(uint)st]+QCString("/")+mimetype+QCString("/");	apps = Service::apps( serviceName );	for( QStringList::Iterator it = apps.begin() ; it != apps.end() ; ++it )	{	    QString config = 	    Service::appConfig( serviceName, *it );	    Config cfg( config, Config::File );	    cfg.setGroup("Standard");	    QStringList actions = QStringList::split( ";", 				cfg.readEntry("Actions").stripWhiteSpace() );	    for( QStringList::Iterator ait = actions.begin() ; 						ait != actions.end() ; ++ait )	    {		cfg.setGroup( *ait );		QCString actionName = (*ait).left( (*ait).find( '(' ) ).latin1();		ValueServiceServer src(cfg.readEntry("Name").stripWhiteSpace(), 				QCString("QPE/Application/")+(*it).latin1(), 								actionName, 	    Resource::loadIconSet( cfg.readEntry("Icon").stripWhiteSpace() )					.pixmap( QIconSet::Small, TRUE ) );		servers += src;	    }	}	id = Global::generateUuid().toString();	sm = 0;    }    QCString requestMessage( int i )    {	if( i > (int)servers.count() || i < 0 )	{	    return 0;	}	return servers[i].actionName()+QCString("(QCString,QString,")+args+")";    }    QString rettypes;    QValueList<ValueServiceServer> servers;    QString id;    QSignalMapper *sm;    static QGuardedPtr<ValueServiceChannel> *channel;private:    QCString args;    static const char *ServiceNames[];};//service names corresponding to the values of ValueService::Typeconst char *ValueServiceData::ServiceNames[] = { "GetValue", "SetValue" };QGuardedPtr<ValueServiceChannel> *ValueServiceData::channel = 0;ValueServiceServer::ValueServiceServer(){}ValueServiceServer::ValueServiceServer( const QString &n, const QCString &c, const QCString &a, const QPixmap &p )    : mName( n ), mChannel( c ), mAction( a ), mPix( p ){}bool ValueServiceServer::isNull() const{    return (mName.isNull() && mChannel.isNull() && mAction.isNull() && mPix.isNull());}ValueServiceServer::ValueServiceServer( const ValueServiceServer &copy ){    mName = copy.mName;    mChannel = copy.mChannel;    mAction = copy.mAction;    mPix = copy.mPix;}ValueServiceServer &ValueServiceServer::operator=( const ValueServiceServer 									&copy ){    mName = copy.mName;    mChannel = copy.mChannel;    mAction = copy.mAction;    mPix = copy.mPix;    return *this;}QString ValueServiceServer::name() const{    return mName;}QCString ValueServiceServer::channel() const{    return mChannel;}QCString ValueServiceServer::actionName() const{    return mAction;}QPixmap ValueServiceServer::pixmap() const{    return mPix;}ValueService::ValueService(QObject* parent, ValueService::Type st, const char* type, const char* params, const char* returns) :    d(new ValueServiceData(st,type,params,returns)){    if ( !d->channel )	d->channel = new QGuardedPtr<ValueServiceChannel>();    if ( !(*(d->channel)) )	*(d->channel) = new ValueServiceChannel(parent);    connect(*(d->channel), SIGNAL(valueSupplied(const QString&,QDataStream&)),	this, SLOT(valueSupplied(const QString&,QDataStream&)));}ValueService::~ValueService(){    delete d;}void ValueService::sendParameters( QCopEnvelope &){    qWarning("ValueService::sendParameters(ServiceRequest&) must be reimplemented " );}void ValueService::valueSupplied(const QString& id, QDataStream& ds){    if ( id == d->id ) // Could also check rettypes (need to then be given msg)	valueSupplied(ds);}int ValueService::serverCount() const{    return d->servers.count();}ValueServiceServer ValueService::server(int serverindex) const{    return (serverindex >= 0 && serverindex < serverCount()) ? 	    d->servers[serverindex] : ValueServiceServer();}void ValueService::connectToServer(QObject* sender, const char* signl, int serverindex){    if ( !d->sm ) {	d->sm = new QSignalMapper(this);	connect(d->sm, SIGNAL(mapped(int)), this, SLOT(request(int)));    }    d->sm->setMapping(sender,serverindex);    connect(sender, signl, d->sm, SLOT(map()));}void ValueService::request(int serverindex){    /*    don't just send a service request. we've already looked up    the service information, now send a message directly to    the server    */    QCopEnvelope e( d->servers[serverindex].channel(), d->requestMessage( serverindex ) );    e << QCString("QPE/QDS") << d->id;    sendParameters( e );}ImageServerManager::ImageServerManager(QObject* parent) :    ValueService(parent,ValueService::Get,"image","int,int,QImage","QImage"), // No tr    maxw(-1),maxh(-1){}ImageServerManager::~ImageServerManager(){}void ImageServerManager::valueSupplied(QDataStream& ds){    QImage img;    ds >> img;    emit imageSupplied(img);    // Optimize case of no connections, no need to make pixmap    if ( receivers( SIGNAL(pixmapSupplied(const QPixmap&)) ) ) {	QPixmap pm;	pm.convertFromImage(img);	emit pixmapSupplied(pm);    }}void ImageServerManager::setMaximumSize(int w,int h){    maxw = w;    maxh = h;}void ImageServerManager::setDefaultImage( const QImage &img ){    defaultImage = img;}void ImageServerManager::sendParameters( QCopEnvelope &sreq){    sreq << maxw << maxh << defaultImage;}#include "imagesource.moc"

⌨️ 快捷键说明

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