#ifndef KWQCLIPBOARD_H_
#define KWQCLIPBOARD_H_
#include "xml/dom2_eventsimpl.h"
#ifdef __OBJC__
@class NSImage;
@class NSPasteboard;
#else
class NSImage;
class NSPasteboard;
#endif
typedef unsigned NSDragOperation;
class KWQKHTMLPart;
class KWQClipboard : public DOM::ClipboardImpl
{
public:
typedef enum {
Numb, ImageWritable, Writable, TypesReadable, Readable
} AccessPolicy;
KWQClipboard(bool forDragging, NSPasteboard *pasteboard, AccessPolicy policy, KWQKHTMLPart *part = 0);
virtual ~KWQClipboard();
bool isForDragging() const;
DOM::DOMString dropEffect() const;
void setDropEffect(const DOM::DOMString &s);
DOM::DOMString effectAllowed() const;
void setEffectAllowed(const DOM::DOMString &s);
void clearData(const DOM::DOMString &type);
void clearAllData();
DOM::DOMString getData(const DOM::DOMString &type, bool &success) const;
bool setData(const DOM::DOMString &type, const DOM::DOMString &data);
virtual QStringList types() const;
QPoint dragLocation() const; QPixmap dragImage() const;
void setDragImage(const QPixmap &, const QPoint &);
const DOM::Node dragImageElement();
void setDragImageElement(const DOM::Node &, const QPoint &);
NSImage *dragNSImage(NSPoint *loc); bool sourceOperation(NSDragOperation *op) const;
bool destinationOperation(NSDragOperation *op) const;
void setSourceOperation(NSDragOperation op);
void setDestinationOperation(NSDragOperation op);
void setAccessPolicy(AccessPolicy policy);
AccessPolicy accessPolicy() const;
void setDragHasStarted() { m_dragStarted = true; }
private:
void setDragImage(const QPixmap &pm, const DOM::Node &, const QPoint &loc);
NSPasteboard *m_pasteboard;
bool m_forDragging;
DOM::DOMString m_dropEffect;
DOM::DOMString m_effectAllowed;
QPoint m_dragLoc;
QPixmap m_dragImage;
DOM::Node m_dragImageElement;
AccessPolicy m_policy;
int m_changeCount;
bool m_dragStarted;
KWQKHTMLPart *m_part; };
#endif