18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef ClipboardQt_h 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ClipboardQt_h 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Clipboard.h" 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CachedResourceClient.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQT_BEGIN_NAMESPACE 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QMimeData; 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQT_END_NAMESPACE 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class CachedImage; 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // State available during IE's events for drag and drop and copy/paste 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ClipboardQt : public Clipboard, public CachedResourceClient { 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static PassRefPtr<ClipboardQt> create(ClipboardAccessPolicy policy, const QMimeData* readableClipboard) 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return adoptRef(new ClipboardQt(policy, readableClipboard)); 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static PassRefPtr<ClipboardQt> create(ClipboardAccessPolicy policy, bool forDragging = false) 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return adoptRef(new ClipboardQt(policy, forDragging)); 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ~ClipboardQt(); 520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void clearData(const String& type); 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void clearAllData(); 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String getData(const String& type, bool& success) const; 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool setData(const String& type, const String& data); 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // extensions beyond IE's API 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual HashSet<String> types() const; 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual PassRefPtr<FileList> files() const; 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setDragImage(CachedImage*, const IntPoint&); 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setDragImageElement(Node*, const IntPoint&); 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual DragImageRef createDragImage(IntPoint& dragLoc) const; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void declareAndWriteDragImage(Element*, const KURL&, const String& title, Frame*); 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void writeURL(const KURL&, const String&, Frame*); 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void writeRange(Range*, Frame*); 698a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block virtual void writePlainText(const String&); 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool hasData(); 720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QMimeData* clipboardData() const { return m_writableData; } 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void invalidateWritableData() { m_writableData = 0; } 750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project private: 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ClipboardQt(ClipboardAccessPolicy, const QMimeData* readableClipboard); 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Clipboard is writable so it will create its own QMimeData object 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ClipboardQt(ClipboardAccessPolicy, bool forDragging); 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setDragImage(CachedImage*, Node*, const IntPoint& loc); 830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const QMimeData* m_readableData; 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QMimeData* m_writableData; 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ClipboardQt_h 90