Simplify archiving functions.

This commit is contained in:
Rene Gollent
2011-11-19 18:17:37 -05:00
parent 258d8821ea
commit 1483288fe1
2 changed files with 26 additions and 57 deletions
@@ -6,28 +6,21 @@
#include "GUISettingsUtils.h" #include "GUISettingsUtils.h"
#include <Message.h>
#include <SplitView.h> #include <SplitView.h>
#include "GUITeamUISettings.h"
#include "table/AbstractTable.h" #include "table/AbstractTable.h"
/*static*/ status_t /*static*/ status_t
GUISettingsUtils::ArchiveSplitView(const char* sourceName, GUISettingsUtils::ArchiveSplitView(BMessage& settings, BSplitView* view)
const char* viewName, GUITeamUISettings* settings, BSplitView* view)
{ {
BString settingName; settings.MakeEmpty();
for (int32 i = 0; i < view->CountItems(); i++) { for (int32 i = 0; i < view->CountItems(); i++) {
settingName.SetToFormat("%s%sSplit%d", sourceName, viewName, i); if (settings.AddFloat("weight", view->ItemWeight(i)) != B_OK)
if (!settings->SetValue(settingName.String(),
view->ItemWeight(i)))
return B_NO_MEMORY; return B_NO_MEMORY;
settingName.SetToFormat("%s%sCollapsed%d", sourceName, viewName, i); if (settings.AddFloat("collapsed", view->IsItemCollapsed(i)) != B_OK)
if (!settings->SetValue(settingName.String(),
view->IsItemCollapsed(i)))
return B_NO_MEMORY; return B_NO_MEMORY;
} }
@@ -36,54 +29,37 @@ GUISettingsUtils::ArchiveSplitView(const char* sourceName,
/*static*/ void /*static*/ void
GUISettingsUtils::UnarchiveSplitView(const char* sourceName, GUISettingsUtils::UnarchiveSplitView(const BMessage& settings,
const char* viewName, const GUITeamUISettings* settings, BSplitView* view) BSplitView* view)
{ {
BString settingName;
BVariant value;
for (int32 i = 0; i < view->CountItems(); i++) { for (int32 i = 0; i < view->CountItems(); i++) {
settingName.SetToFormat("%s%sSplit%d", sourceName, viewName, i); float weight;
status_t error = settings->Value(settingName.String(), value); if (settings.FindFloat("weight", i, &weight) == B_OK)
if (error == B_OK) { view->SetItemWeight(i, weight, i == view->CountItems() - 1);
view->SetItemWeight(i, value.ToFloat(),
i == view->CountItems() - 1);
}
settingName.SetToFormat("%s%sCollapsed%d", sourceName, viewName, i); bool collapsed;
error = settings->Value(settingName.String(), value); if (settings.FindBool("collapsed", i, &collapsed) == B_OK)
if (error == B_OK) view->SetItemCollapsed(i, collapsed);
view->SetItemCollapsed(i, value.ToBool());
} }
} }
/*static*/ status_t /*static*/ status_t
GUISettingsUtils::ArchiveTableSettings(const char* sourceName, GUISettingsUtils::ArchiveTableSettings(BMessage& settings,
const char* viewName, GUITeamUISettings* settings, AbstractTable* table) AbstractTable* table)
{ {
BString settingName; settings.MakeEmpty();
BMessage data; table->SaveState(&settings);
settingName.SetToFormat("%s%sTable", sourceName, viewName);
table->SaveState(&data);
if (!settings->AddSettings(settingName.String(), data))
return B_NO_MEMORY;
return B_OK; return B_OK;
} }
/*static*/ void /*static*/ void
GUISettingsUtils::UnarchiveTableSettings(const char* sourceName, GUISettingsUtils::UnarchiveTableSettings(const BMessage& settings,
const char* viewName, const GUITeamUISettings* settings,
AbstractTable* table) AbstractTable* table)
{ {
BString settingName; BMessage settingsCopy(settings);
BMessage data; table->LoadState(&settingsCopy);
settingName.SetToFormat("%s%sTable", sourceName, viewName);
if (settings->Settings(settingName.String(), data) == B_OK)
table->LoadState(&data);
} }
@@ -10,31 +10,24 @@
class AbstractTable; class AbstractTable;
class BMessage;
class BSplitView; class BSplitView;
class GUITeamUISettings;
class GUISettingsUtils class GUISettingsUtils
{ {
public: public:
static status_t ArchiveSplitView(const char* sourceName, static status_t ArchiveSplitView(BMessage& settings,
const char* viewName,
GUITeamUISettings* settings,
BSplitView* view); BSplitView* view);
static void UnarchiveSplitView(const char* sourceName, static void UnarchiveSplitView(const BMessage& settings,
const char* viewName,
const GUITeamUISettings* settings,
BSplitView* view); BSplitView* view);
static status_t ArchiveTableSettings(const char* sourceName, static status_t ArchiveTableSettings(BMessage& settings,
const char* viewName,
GUITeamUISettings* settings,
AbstractTable* table); AbstractTable* table);
static void UnarchiveTableSettings(const char* sourceName, static void UnarchiveTableSettings(
const char* viewName, const BMessage& settings,
const GUITeamUISettings* settings,
AbstractTable* table); AbstractTable* table);