From 4199a81a8d10740893b6804c77ad3e5090559c94 Mon Sep 17 00:00:00 2001 From: Alex Wilson Date: Thu, 2 Feb 2012 16:23:11 +1300 Subject: [PATCH] Add archiving to ALMHelloWorld test. --- src/tests/libs/alm/HelloWorld.cpp | 41 ++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/tests/libs/alm/HelloWorld.cpp b/src/tests/libs/alm/HelloWorld.cpp index 3edbc561af..58f1e7c856 100644 --- a/src/tests/libs/alm/HelloWorld.cpp +++ b/src/tests/libs/alm/HelloWorld.cpp @@ -7,13 +7,18 @@ #include #include +#include #include +#include #include // include this for ALM #include "ALMLayout.h" +const uint32 kMsgClone = 'clne'; + + class HelloWorldWindow : public BWindow { public: HelloWorldWindow(BRect frame) @@ -25,7 +30,11 @@ public: // create a new BALMLayout and use it for this window fLayout = new BALMLayout(); - SetLayout(fLayout); + BView* view = new BView("alm view", 0, fLayout); + fLayout->SetExplicitAlignment(BAlignment(B_ALIGN_USE_FULL_WIDTH, + B_ALIGN_USE_FULL_HEIGHT)); + SetLayout(new BGroupLayout(B_VERTICAL)); + AddChild(view); // add an area containing the button // use the borders of the layout as the borders for the area @@ -40,9 +49,39 @@ public: BSize min = fLayout->MinSize(); BSize max = fLayout->MaxSize(); SetSizeLimits(min.Width(), max.Width(), min.Height(), max.Height()); + + AddShortcut('c', B_COMMAND_KEY, new BMessage(kMsgClone)); + } + + void MessageReceived(BMessage* message) + { + switch (message->what) { + case kMsgClone: + { + BView* view = fLayout->View(); + BMessage archive; + view->Archive(&archive, true); + BWindow* window = new BWindow(BRect(30, 30, 100, 100), + "ALM HelloWorld Clone", B_TITLED_WINDOW, + B_QUIT_ON_WINDOW_CLOSE | B_AUTO_UPDATE_SIZE_LIMITS); + window->SetLayout(new BGroupLayout(B_VERTICAL)); + BView* clone; + status_t err = BUnarchiver::InstantiateObject(&archive, clone); + if (err != B_OK) + window->AddChild(new BStringView("", "An error occurred!")); + else + window->AddChild(clone); + window->Show(); + + break; + } + default: + BWindow::MessageReceived(message); + } } private: + BALMLayout* fLayout; BButton* button1; };