00001 #include <gui/GUI.h>
00002 #include <os/OS.h>
00003 #include <iostream>
00004
00005 using namespace SkyGI;
00006
00007 class MyTabView : public View
00008 {
00009 public:
00010 MyTabView(Window *pParent, const Rect &rFrame, unsigned int nWindowLayoutFlags);
00011 TabView *pTabView;
00012 Button *pToogle;
00013 TextView *pCaption;
00014 void Add();
00015 void OnClicked(Window *pWindow, const InputEvent& nInputEvent);
00016 void Remove();
00017 };
00018
00019 void MyTabView::Remove()
00020 {
00021 }
00022
00023 void MyTabView::OnClicked(Window *pWindow, const InputEvent& nInputEvent)
00024 {
00025 int ret;
00026
00027 if (nInputEvent.m_nMouseButton != MOUSE_BUTTON_RIGHT)
00028 {
00029 pTabView->SetImage(new SystemIcon("actions/editcut"), pWindow);
00030 pTabView->ReLayout();
00031 return;
00032 }
00033
00034 Menu *pMenu = new Menu(MENU_LAYOUT_VERTICAL);
00035 MenuItem *pMenuItem;
00036
00037 pMenu->Add(pMenuItem = new MenuItem("Remove", true, 100));
00038 pMenuItem->Clicked.Connect(this, &MyTabView::Remove);
00039
00040 PopupMenu pPopupMenu(this, ConvertToScreen(nInputEvent.m_pPosition), pMenu, 0);
00041 ret = pPopupMenu.Run();
00042
00043 printf("done with %d\n", ret);
00044 if( ret == 100)
00045 {
00046 pTabView->Remove(pWindow);
00047 pTabView->ReLayout();
00048 }
00049
00050 }
00051
00052 void MyTabView::Add()
00053 {
00054 TextView *pTextView1 = new TextView(pTabView, Rect(0,0,0,0), WINDOW_LAYOUT_NOTHING);
00055
00056 pTabView->Append(pCaption->GetBuffer()[0].szText, new SystemIcon("actions/editcopy"), pTextView1);
00057 pTabView->ReLayout();
00058 }
00059
00060 MyTabView::MyTabView(Window *pParent, const Rect &rFrame, unsigned int nWindowLayoutFlags) : View(pParent, rFrame, nWindowLayoutFlags)
00061 {
00062 pTabView = new TabView(this, Rect(0,0,0,Height() - 40), WINDOW_LAYOUT_SAME_WIDTH | WINDOW_LAYOUT_FOLLOW_BOTTOM);
00063
00064 pTabView->Clicked.Connect(this, &MyTabView::OnClicked);
00065 pToogle = new Button(this, Rect(10, Height() - 30, 80, Height() - 30), "Add", WINDOW_LAYOUT_FOLLOW_V);
00066 pToogle->SetRect(Point(10, Height() - 30), Point(80, pToogle->GetPreferredSize().y));
00067 pToogle->Clicked.Connect(this, &MyTabView::Add);
00068
00069 pCaption = new TextView(this, Rect(120, Height() - 30, Width() - 10, Height()-10), WINDOW_LAYOUT_FOLLOW_V | WINDOW_LAYOUT_FOLLOW_RIGHT, TEXTVIEW_FLAG_SINGLE_LINE);
00070 pCaption->Set("Caption");
00071
00072 TextView *pTextView1 = new TextView(pTabView, Rect(0,0,0,0), WINDOW_LAYOUT_NOTHING);
00073 TextView *pTextView2 = new TextView(pTabView, Rect(0,0,0,0), WINDOW_LAYOUT_NOTHING);
00074
00075 pTabView->Append("TextView1", new SystemIcon("actions/editcopy"), pTextView1);
00076 pTabView->Append("TextView2", new SystemIcon("actions/editcopy"), pTextView2);
00077
00078 pTabView->Select(pTextView1);
00079
00080 pTabView->ReLayout();
00081 }
00082
00083 void TabViewTest()
00084 {
00085 Rect r(Point(100, 100), Point(400, 440));
00086
00087 ApplicationWindow* pApplicationWindow = new ApplicationWindow(r, "TabView", WINDOW_LAYOUT_NOTHING, APPLICATION_WINDOW_NO_VIEW);
00088
00089 pApplicationWindow->GetTitleWindow()->SetFlags( (TitleWindowFlags)(pApplicationWindow->GetTitleWindow()->GetFlags() ));
00090 pApplicationWindow->AttachView(new MyTabView(pApplicationWindow, pApplicationWindow->GetClientRect(), WINDOW_LAYOUT_NOTHING));
00091 pApplicationWindow->Show();
00092 }
00093