00001 #include <gui/MessageBox.h>
00002 #include <gui/MessageQueue.h>
00003 #include <gui/Button.h>
00004 #include <gui/TextView.h>
00005 #include <gui/TopView.h>
00006 #include <gui/Exceptions.h>
00007 #include <gui/Window.h>
00008 #include <gui/StringView.h>
00009 #include <gui/ApplicationWindow.h>
00010 #include <gui/Application.h>
00011 #include <gui/Menu.h>
00012 #include <gui/StatusBar.h>
00013 #include <gui/CheckBox.h>
00014 #include <os/Clipboard.h>
00015 #include <iostream>
00016
00017 using namespace SkyGI;
00018
00019 #define ID_ADD 10000
00020
00021 class MyClipboard : public View
00022 {
00023 public:
00024 MyClipboard(Window *pParent, const Rect &rFrame, unsigned int nWindowLayoutFlags);
00025
00026 void OnChange();
00027
00028 TextView *pSource;
00029 TextView *pDestination;
00030 };
00031
00032 MyClipboard::MyClipboard(Window *pParent, const Rect &rFrame, unsigned int nWindowLayoutFlags) : View(pParent, rFrame, nWindowLayoutFlags)
00033 {
00034 StringView *pStringView;
00035
00036 pStringView = new StringView(this, Rect(), "Copy:", 0);
00037 pStringView->SetRect(Point(10, 10), pStringView->GetPreferredSize());
00038
00039 pSource = new TextView(this, Rect(10, 30, 200, 50), WINDOW_LAYOUT_FOLLOW_RIGHT , TEXTVIEW_FLAG_SINGLE_LINE);
00040 pSource->SetFocus();
00041
00042 pStringView = new StringView(this, Rect(), "To:", 0);
00043 pStringView->SetRect(Point(10, 60), pStringView->GetPreferredSize());
00044
00045 pDestination = new TextView(this, Rect(10, 80, 200, 100), WINDOW_LAYOUT_FOLLOW_RIGHT , TEXTVIEW_FLAG_SINGLE_LINE);
00046
00047 pSource->Changed.Connect(this, &MyClipboard::OnChange);
00048 }
00049
00050 void MyClipboard::OnChange()
00051 {
00052 Clipboard pClipboard;
00053 DataCollection pDataCollection;
00054
00055
00056 pDataCollection.Add("text/plain", pSource->GetBuffer()[0].szText);
00057
00058 pClipboard.Submit(pDataCollection);
00059
00060
00061 DataCollection *pDataCollection2 = pClipboard.Get();
00062 if (pDataCollection2)
00063 {
00064 String cString;
00065
00066 if (pDataCollection2->Get("text/plain", cString) == true)
00067 pDestination->Set(cString);
00068
00069 delete pDataCollection2;
00070 }
00071
00072 }
00073
00074 void ClipboardTest()
00075 {
00076 Rect r(Point(100, 100), Point(400, 440));
00077
00078 ApplicationWindow* pApplicationWindow = new ApplicationWindow(r, "Clipboard", WINDOW_LAYOUT_NOTHING, APPLICATION_WINDOW_NO_VIEW);
00079
00080 pApplicationWindow->GetTitleWindow()->SetFlags( (TitleWindowFlags)(pApplicationWindow->GetTitleWindow()->GetFlags() ));
00081 pApplicationWindow->AttachView(new MyClipboard(pApplicationWindow, pApplicationWindow->GetClientRect(), WINDOW_LAYOUT_NOTHING));
00082 pApplicationWindow->Show();
00083 }
00084