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

📄 qclipboard_qws.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
字号:
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the QtGui module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "qclipboard.h"#ifndef QT_NO_CLIPBOARD#include "qapplication.h"#include "qbitmap.h"#include "qdatetime.h"#include "qbuffer.h"#include "qwidget.h"#include "qevent.h"#include <qwsdisplay_qws.h>#include <qwsproperty_qws.h>#include <qwsevent_qws.h>/*****************************************************************************  Internal QClipboard functions for Qtopia Core *****************************************************************************/static const int TextClipboard=424242;static bool init = false;static inline void qwsInitClipboard(){    //### this should go into QWSServer; it only needs to happen once.    if( !init ) {	QPaintDevice::qwsDisplay()->addProperty(0, TextClipboard);	init = true;    }}static QString qwsClipboardText(){    char * data;    int len;    qwsInitClipboard();    if( !QPaintDevice::qwsDisplay()->getProperty(0, TextClipboard, data, len) ) {//        qDebug("Property received: %d bytes", len);    }    QString s((const QChar*)data, len/sizeof(QChar)); //       qDebug("Property received: '%s'", s.toAscii().constData());    delete[] data;    return s;}static void qwsSetClipboardText(const QString& s){    qwsInitClipboard();  //  qDebug("qwsSetClipboardText( %s )", s.toAscii().data());    int len =  s.length()*sizeof(QChar);    QByteArray ba((const char*)s.unicode(), len);    QPaintDevice::qwsDisplay()->        setProperty(0, TextClipboard, QWSPropertyManager::PropReplace, ba);}class QClipboardData{public:    QClipboardData();   ~QClipboardData();    void setSource(QMimeData* s)    {        if (s == src)            return;        delete src;        src = s;    }    QMimeData* source()        { return src; }#if 0    void addTransferredPixmap(QPixmap pm)        { /* TODO: queue them */            transferred[tindex] = pm;            tindex=(tindex+1)%2;        }    void clearTransfers()        {            transferred[0] = QPixmap();            transferred[1] = QPixmap();        }#endif    void clear();private:    QMimeData* src;#if 0    QPixmap transferred[2];    int tindex;#endif};QClipboardData::QClipboardData(){    src = 0;#if 0    tindex=0;#endif}QClipboardData::~QClipboardData(){    delete src;}void QClipboardData::clear(){    delete src;    src = 0;}static QClipboardData *internalCbData = 0;static void cleanupClipboardData(){    delete internalCbData;    internalCbData = 0;}static QClipboardData *clipboardData(){    if (internalCbData == 0) {        internalCbData = new QClipboardData;        qAddPostRoutine(cleanupClipboardData);    }    return internalCbData;}/*****************************************************************************  QClipboard member functions for FB. *****************************************************************************/#if 0QString QClipboard::text() const{    return qwsClipboardText();}void QClipboard::setText(const QString &text){    qwsSetClipboardText(text);}QString QClipboard::text(QString& subtype) const{    QString r;    if (subtype == "plain")        r = text();    return r;}#endifvoid QClipboard::clear(Mode mode){    setText(QString(), mode);}bool QClipboard::event(QEvent *e){    static bool recursionWatch = false;    if (e->type() != QEvent::Clipboard || recursionWatch)        return QObject::event(e);    recursionWatch = true;    QWSPropertyNotifyEvent *event = (QWSPropertyNotifyEvent *)(((QClipboardEvent *)e)->data());    if (event && event->simpleData.state == QWSPropertyNotifyEvent::PropertyNewValue) {	QClipboardData *d = clipboardData();	QString t = qwsClipboardText();	if( (d->source() == 0 && !t.isEmpty()) || (d->source() != 0 && d->source()->text() != t) ) {	    if( !d->source() )		d->setSource(new QMimeData);	    d->source()->setText( t );	    emitChanged(QClipboard::Clipboard);	}    }    recursionWatch = false;    return true;}const QMimeData* QClipboard::mimeData(Mode mode) const{    if (mode != Clipboard) return 0;    QClipboardData *d = clipboardData();    // Try and get data from QWSProperty if no mime data has been set on us.    if( !d->source() ) {	QString t = qwsClipboardText();	if( !t.isEmpty() ) {	    QMimeData* nd = new QMimeData;	    nd->setText( t );	    d->setSource( nd );	}    }    return d->source();}void QClipboard::setMimeData(QMimeData* src, Mode mode){    if (mode != Clipboard) return;    QClipboardData *d = clipboardData();    /* Propagate text data to other QWSClients */    QString newText;    if( src != 0 )	newText = src->text();    QString oldText;    if( d->source() != 0 )	oldText = d->source()->text();    d->setSource(src);    if( oldText != newText ) {	if( d->source() == 0 ) {	    qwsSetClipboardText( QString() );	} else {	    qwsSetClipboardText( d->source()->text() );	}    }    emitChanged(QClipboard::Clipboard);}bool QClipboard::supportsMode(Mode mode) const{    return (mode == Clipboard);}bool QClipboard::ownsMode(Mode mode) const{    if (mode == Clipboard)        qWarning("QClipboard::ownsClipboard: UNIMPLEMENTED!");    return false;}void QClipboard::connectNotify( const char * ){}void QClipboard::ownerDestroyed(){}#endif // QT_NO_CLIPBOARD

⌨️ 快捷键说明

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