* Copyright 2009, Haiku, Inc.
* Distributed under the terms of the MIT license.
*
* Authors:
* Michael Lotz, mmlr@mlotz.ch
*/
#include "HVIFView.h"
#include "HVIFTranslator.h"
#include <Catalog.h>
#include <LayoutBuilder.h>
#include <String.h>
#include <StringView.h>
#include <stdio.h>
#define HVIF_SETTING_RENDER_SIZE_CHANGED 'rsch'
#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "HVIFView"
HVIFView::HVIFView(const char* name, uint32 flags, TranslatorSettings *settings)
:
BView(name, flags, new BGroupLayout(B_VERTICAL)),
fSettings(settings)
{
BAlignment labelAlignment(B_ALIGN_LEFT, B_ALIGN_NO_VERTICAL);
BStringView* title= new BStringView("title",
B_TRANSLATE("Haiku vector icon translator"));
title->SetFont(be_bold_font);
title->SetExplicitAlignment(labelAlignment);
char versionString[256];
snprintf(versionString, sizeof(versionString),
B_TRANSLATE("Version %d.%d.%d, %s"),
int(B_TRANSLATION_MAJOR_VERSION(HVIF_TRANSLATOR_VERSION)),
int(B_TRANSLATION_MINOR_VERSION(HVIF_TRANSLATOR_VERSION)),
int(B_TRANSLATION_REVISION_VERSION(HVIF_TRANSLATOR_VERSION)),
__DATE__);
BStringView* version = new BStringView("version", versionString);
version->SetExplicitAlignment(labelAlignment);
BStringView* copyright = new BStringView("copyright",
B_UTF8_COPYRIGHT"2009 Haiku Inc.");
copyright->SetExplicitAlignment(labelAlignment);
int32 renderSize = fSettings->SetGetInt32(HVIF_SETTING_RENDER_SIZE);
BString label = B_TRANSLATE("Render size:");
label << " " << renderSize;
fRenderSize = new BSlider("renderSize", label.String(),
NULL, 1, 32, B_HORIZONTAL, B_TRIANGLE_THUMB);
fRenderSize->SetValue(renderSize / 8);
fRenderSize->SetHashMarks(B_HASH_MARKS_BOTTOM);
fRenderSize->SetHashMarkCount(16);
fRenderSize->SetModificationMessage(
new BMessage(HVIF_SETTING_RENDER_SIZE_CHANGED));
fRenderSize->SetExplicitAlignment(labelAlignment);
BLayoutBuilder::Group<>(this, B_VERTICAL, 0)
.SetInsets(B_USE_DEFAULT_SPACING)
.Add(title)
.Add(version)
.Add(copyright)
.AddGlue()
.Add(fRenderSize)
.AddGlue();
}
HVIFView::~HVIFView()
{
fSettings->Release();
}
void
HVIFView::AttachedToWindow()
{
fRenderSize->SetTarget(this);
}
void
HVIFView::MessageReceived(BMessage *message)
{
switch (message->what) {
case HVIF_SETTING_RENDER_SIZE_CHANGED:
{
int32 value = fRenderSize->Value();
if (value <= 0 || value > 32)
break;
value *= 8;
fSettings->SetGetInt32(HVIF_SETTING_RENDER_SIZE, &value);
fSettings->SaveSettings();
BString newLabel = B_TRANSLATE("Render size:");
newLabel << " " << value;
fRenderSize->SetLabel(newLabel.String());
return;
}
}
BView::MessageReceived(message);
}