1/*
2 * Copyright 2011, Rene Gollent, rene@gollent.com.
3 * Distributed under the terms of the MIT License.
4 */
5
6
7#include "GuiSettingsUtils.h"
8
9#include <Message.h>
10#include <SplitView.h>
11
12#include "table/AbstractTable.h"
13
14
15/*static*/ status_t
16GuiSettingsUtils::ArchiveSplitView(BMessage& settings, BSplitView* view)
17{
18	settings.MakeEmpty();
19	for (int32 i = 0; i < view->CountItems(); i++) {
20		if (settings.AddFloat("weight", view->ItemWeight(i)) != B_OK)
21			return B_NO_MEMORY;
22
23		if (settings.AddBool("collapsed", view->IsItemCollapsed(i)) != B_OK)
24			return B_NO_MEMORY;
25	}
26
27	return B_OK;
28}
29
30
31/*static*/ void
32GuiSettingsUtils::UnarchiveSplitView(const BMessage& settings,
33	BSplitView* view)
34{
35	for (int32 i = 0; i < view->CountItems(); i++) {
36		float weight;
37		if (settings.FindFloat("weight", i, &weight) == B_OK)
38			view->SetItemWeight(i, weight, i == view->CountItems() - 1);
39
40		bool collapsed;
41		if (settings.FindBool("collapsed", i, &collapsed) == B_OK)
42			view->SetItemCollapsed(i, collapsed);
43	}
44}
45
46
47/*static*/ status_t
48GuiSettingsUtils::ArchiveTableSettings(BMessage& settings,
49	AbstractTable* table)
50{
51	settings.MakeEmpty();
52	table->SaveState(&settings);
53
54	return B_OK;
55}
56
57
58/*static*/ void
59GuiSettingsUtils::UnarchiveTableSettings(const BMessage& settings,
60	AbstractTable* table)
61{
62	BMessage settingsCopy(settings);
63	table->LoadState(&settingsCopy);
64}
65
66