tabview.cpp

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 

Generated on Thu Dec 13 18:13:10 2007 for SkyGI by  doxygen 1.5.1-p1