1/* 2 * Copyright 2007-2009, Haiku Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Author: 6 * Gabe Yoder, gyoder@stny.rr.com 7 */ 8#ifndef _CLIPBOARD_H 9#define _CLIPBOARD_H 10 11 12#include <BeBuild.h> 13#include <Locker.h> 14#include <Messenger.h> 15 16class BMessage; 17 18 19enum { 20 B_CLIPBOARD_CHANGED = 'CLCH' 21}; 22 23class BClipboard { 24public: 25 BClipboard(const char* name, 26 bool transient = false); 27 virtual ~BClipboard(); 28 29 const char* Name() const; 30 31 uint32 LocalCount() const; 32 uint32 SystemCount() const; 33 status_t StartWatching(BMessenger target); 34 status_t StopWatching(BMessenger target); 35 36 bool Lock(); 37 void Unlock(); 38 bool IsLocked() const; 39 40 status_t Clear(); 41 status_t Commit(); 42 status_t Commit(bool failIfChanged); 43 status_t Revert(); 44 45 BMessenger DataSource() const; 46 BMessage* Data() const; 47 48private: 49 BClipboard(const BClipboard&); 50 BClipboard& operator=(const BClipboard&); 51 52 virtual void _ReservedClipboard1(); 53 virtual void _ReservedClipboard2(); 54 virtual void _ReservedClipboard3(); 55 56 bool _AssertLocked() const; 57 status_t _DownloadFromSystem(bool force = false); 58 status_t _UploadToSystem(); 59 60 uint32 _reserved0; 61 BMessage* fData; 62 BLocker fLock; 63 BMessenger fClipHandler; 64 BMessenger fDataSource; 65 uint32 fCount; 66 char* fName; 67 uint32 _reserved[4]; 68}; 69 70extern BClipboard* be_clipboard; 71 72#endif // _CLIPBOARD_H 73