haiku/src/apps/devices/PropertyListPlain.cpp

117 lines
2.2 KiB
C++

/*
* Copyright 2009 Haiku Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Author:
* Artur Wyszynski <harakash@gmail.com>
* Modified by Pieter Panman
*/
#include "PropertyListPlain.h"
#include <GridLayout.h>
#include <GridLayoutBuilder.h>
#include <GroupLayout.h>
#include <GroupLayoutBuilder.h>
#include <Message.h>
#include <SpaceLayoutItem.h>
#include <String.h>
#include <StringView.h>
#include <TextView.h>
#include "Device.h"
PropertyListPlain::PropertyListPlain(const char* name)
:
BView(name, 0, NULL)
{
SetViewUIColor(B_PANEL_BACKGROUND_COLOR);
SetLayout(new BGroupLayout(B_VERTICAL));
}
PropertyListPlain::~PropertyListPlain()
{
}
void
PropertyListPlain::AddAttributes(const Attributes& attributes)
{
RemoveAll();
BGroupLayoutBuilder layout(B_VERTICAL);
BTextView* view = new BTextView(BRect(0, 0, 1000, 1000),
"attribs", BRect(5, 5, 995, 995), B_FOLLOW_ALL_SIDES);
rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR);
view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR);
view->SetFontAndColor(be_plain_font, B_FONT_ALL, &textColor);
view->MakeEditable(false);
for (unsigned int i = 0; i < attributes.size(); i++) {
BString attributeLine;
attributeLine << attributes[i].fName
<< "\t" << attributes[i].fValue << "\n";
view->Insert(attributeLine);
view->SetExplicitAlignment(
BAlignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_UNSET));
}
layout.Add(view);
fAttributeViews.AddItem(view);
AddChild(layout);
}
void
PropertyListPlain::RemoveAll()
{
BView *child;
while ((child = ChildAt(0))) {
RemoveChild(child);
delete child;
}
}
void
PropertyListPlain::MessageReceived(BMessage* message)
{
switch (message->what) {
case B_COLORS_UPDATED:
{
rgb_color color;
if (message->FindColor(ui_color_name(B_PANEL_TEXT_COLOR), &color)
!= B_OK)
break;
BTextView* view = NULL;
int32 count = fAttributeViews.CountItems();
for (int32 index = 0; index < count; ++index) {
view = fAttributeViews.ItemAt(index);
view->SetFontAndColor(be_plain_font, 0, &color);
}
break;
}
default:
BView::MessageReceived(message);
}
}
void
PropertyListPlain::AttachedToWindow()
{
}
void
PropertyListPlain::DetachedFromWindow()
{
}