[haiku-commits] r37613 - in haiku/trunk: headers/os/interface src/kits/interface

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 20 Jul 2010 10:28:55 +0200 (CEST)

Author: bonefish
Date: 2010-07-20 10:28:55 +0200 (Tue, 20 Jul 2010)
New Revision: 37613
Changeset: http://dev.haiku-os.org/changeset/37613

Modified:
   haiku/trunk/headers/os/interface/CardLayout.h
   haiku/trunk/src/kits/interface/CardLayout.cpp
Log:
Patch by Alex Wilson:
* Added support for archiving/unarchiving.
* Coding style cleanup.


Modified: haiku/trunk/headers/os/interface/CardLayout.h
===================================================================
--- haiku/trunk/headers/os/interface/CardLayout.h       2010-07-20 08:24:19 UTC 
(rev 37612)
+++ haiku/trunk/headers/os/interface/CardLayout.h       2010-07-20 08:28:55 UTC 
(rev 37613)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006, Haiku, Inc. All rights reserved.
+ * Copyright 2006-2010, Haiku, Inc. All rights reserved.
  * Distributed under the terms of the MIT License.
  */
 #ifndef        _CARD_LAYOUT_H
@@ -11,6 +11,7 @@
 class BCardLayout : public BLayout {
 public:
                                                                BCardLayout();
+                                                               
BCardLayout(BMessage* from);
        virtual                                         ~BCardLayout();
 
                        BLayoutItem*            VisibleItem() const;
@@ -30,6 +31,10 @@
        virtual void                            InvalidateLayout();
        virtual void                            LayoutView();
 
+       virtual status_t                        Archive(BMessage* into, bool 
deep = true) const;
+       virtual status_t                        AllUnarchived(const BMessage* 
from);
+       static  BArchivable*            Instantiate(BMessage* from);
+
 protected:
        virtual void                            ItemAdded(BLayoutItem* item);
        virtual void                            ItemRemoved(BLayoutItem* item);

Modified: haiku/trunk/src/kits/interface/CardLayout.cpp
===================================================================
--- haiku/trunk/src/kits/interface/CardLayout.cpp       2010-07-20 08:24:19 UTC 
(rev 37612)
+++ haiku/trunk/src/kits/interface/CardLayout.cpp       2010-07-20 08:28:55 UTC 
(rev 37613)
@@ -6,46 +6,66 @@
 #include <CardLayout.h>
 
 #include <LayoutItem.h>
+#include <Message.h>
 #include <View.h>
 
-// constructor
+
+namespace {
+       const char* kVisibleItemField = "BCardLayout:visibleItem";
+}
+
+
 BCardLayout::BCardLayout()
-       : BLayout(),
-         fMin(0, 0),
-         fMax(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED),
-         fPreferred(0, 0),
-         fVisibleItem(NULL),
-         fMinMaxValid(false)
+       :
+       BLayout(),
+       fMin(0, 0),
+       fMax(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED),
+       fPreferred(0, 0),
+       fVisibleItem(NULL),
+       fMinMaxValid(false)
 {
 }
 
-// destructor
+
+BCardLayout::BCardLayout(BMessage* from)
+       :
+       BLayout(BUnarchiver::PrepareArchive(from)),
+       fMin(0, 0),
+       fMax(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED),
+       fPreferred(0, 0),
+       fVisibleItem(NULL),
+       fMinMaxValid(false)
+{
+       BUnarchiver(from).Finish();
+}
+
+
 BCardLayout::~BCardLayout()
 {
 }
 
-// VisibleItem
+
 BLayoutItem*
 BCardLayout::VisibleItem() const
 {
        return fVisibleItem;
 }
 
-// VisibleIndex
+
 int32
 BCardLayout::VisibleIndex() const
 {
        return IndexOfItem(fVisibleItem);
 }
 
-// SetVisibleItem
+
 void
 BCardLayout::SetVisibleItem(int32 index)
 {
        SetVisibleItem(ItemAt(index));
 }
 
-// SetVisibleItem
+
 void
 BCardLayout::SetVisibleItem(BLayoutItem* item)
 {
@@ -67,7 +87,7 @@
        }
 }
 
-// MinSize
+
 BSize
 BCardLayout::MinSize()
 {
@@ -75,7 +95,7 @@
        return fMin;
 }
 
-// MaxSize
+
 BSize
 BCardLayout::MaxSize()
 {
@@ -83,7 +103,7 @@
        return fMax;
 }
 
-// PreferredSize
+
 BSize
 BCardLayout::PreferredSize()
 {
@@ -91,14 +111,14 @@
        return fPreferred;
 }
 
-// Alignment
+
 BAlignment
 BCardLayout::Alignment()
 {
        return BAlignment(B_ALIGN_USE_FULL_WIDTH, B_ALIGN_USE_FULL_HEIGHT);
 }
 
-// HasHeightForWidth
+
 bool
 BCardLayout::HasHeightForWidth()
 {
@@ -111,7 +131,7 @@
        return false;
 }
 
-// GetHeightForWidth
+
 void
 BCardLayout::GetHeightForWidth(float width, float* min, float* max,
        float* preferred)
@@ -152,7 +172,7 @@
                *preferred = preferredHeight;
 }
 
-// InvalidateLayout
+
 void
 BCardLayout::InvalidateLayout()
 {
@@ -161,7 +181,7 @@
        fMinMaxValid = false;
 }
 
-// LayoutView
+
 void
 BCardLayout::LayoutView()
 {
@@ -175,14 +195,52 @@
                fVisibleItem->AlignInFrame(BRect(0, 0, size.width, 
size.height));
 }
 
-// ItemAdded
+
+status_t
+BCardLayout::Archive(BMessage* into, bool deep) const
+{
+       BArchiver archiver(into);
+       status_t err = BLayout::Archive(into, deep);
+
+       if (err == B_OK && deep)
+               err = into->AddInt32(kVisibleItemField, 
IndexOfItem(fVisibleItem));
+
+       return archiver.Finish(err);
+}
+
+
+status_t
+BCardLayout::AllUnarchived(const BMessage* from)
+{
+       status_t err = BLayout::AllUnarchived(from);
+       if (err != B_OK)
+               return err;
+
+       int32 visibleIndex;
+       err = from->FindInt32(kVisibleItemField, &visibleIndex);
+       if (err == B_OK)
+               SetVisibleItem(visibleIndex);
+
+       return err;
+}
+
+
+BArchivable*
+BCardLayout::Instantiate(BMessage* from)
+{
+       if (validate_instantiation(from, "BCardLayout"))
+               return new BCardLayout(from);
+       return NULL;
+}
+       
+
 void
 BCardLayout::ItemAdded(BLayoutItem* item)
 {
        item->SetVisible(false);
 }
 
-// ItemRemoved
+
 void
 BCardLayout::ItemRemoved(BLayoutItem* item)
 {
@@ -192,7 +250,7 @@
        }
 }
 
-// _ValidateMinMax
+
 void
 BCardLayout::_ValidateMinMax()
 {


Other related posts:

  • » [haiku-commits] r37613 - in haiku/trunk: headers/os/interface src/kits/interface - ingo_weinhold