#include <Catalog.h>
#include <LayoutBuilder.h>
#include <stdio.h>
#include <string.h>
#include "TGAView.h"
#include "TGATranslator.h"
#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "TGAView"
TGAView::TGAView(const char *name, uint32 flags, TranslatorSettings *settings)
:
BView(name, flags),
fSettings(settings)
{
SetViewUIColor(B_PANEL_BACKGROUND_COLOR);
fTitle = new BStringView("title", B_TRANSLATE("TGA image translator"));
fTitle->SetFont(be_bold_font);
char detail[100];
sprintf(detail, B_TRANSLATE("Version %d.%d.%d, %s"),
static_cast<int>(B_TRANSLATION_MAJOR_VERSION(TGA_TRANSLATOR_VERSION)),
static_cast<int>(B_TRANSLATION_MINOR_VERSION(TGA_TRANSLATOR_VERSION)),
static_cast<int>(B_TRANSLATION_REVISION_VERSION(
TGA_TRANSLATOR_VERSION)), __DATE__);
fDetail = new BStringView("detail", detail);
fWrittenBy = new BStringView("writtenby",
B_TRANSLATE("Written by the Haiku Translation Kit Team"));
fpchkIgnoreAlpha = new BCheckBox(B_TRANSLATE("Ignore TGA alpha channel"),
new BMessage(CHANGE_IGNORE_ALPHA));
int32 val = (fSettings->SetGetBool(TGA_SETTING_IGNORE_ALPHA)) ? 1 : 0;
fpchkIgnoreAlpha->SetValue(val);
fpchkIgnoreAlpha->SetViewColor(ViewColor());
fpchkRLE = new BCheckBox(B_TRANSLATE("Save with RLE compression"),
new BMessage(CHANGE_RLE));
val = (fSettings->SetGetBool(TGA_SETTING_RLE)) ? 1 : 0;
fpchkRLE->SetValue(val);
fpchkRLE->SetViewColor(ViewColor());
BLayoutBuilder::Group<>(this, B_VERTICAL, 0)
.SetInsets(B_USE_DEFAULT_SPACING)
.Add(fTitle)
.Add(fDetail)
.AddGlue()
.Add(fpchkIgnoreAlpha)
.Add(fpchkRLE)
.AddGlue()
.Add(fWrittenBy);
}
TGAView::~TGAView()
{
fSettings->Release();
}
void
TGAView::AllAttached()
{
fpchkIgnoreAlpha->SetTarget(this);
fpchkRLE->SetTarget(this);
}
void
TGAView::MessageReceived(BMessage* message)
{
switch (message->what) {
case CHANGE_IGNORE_ALPHA:
{
bool ignoreAlpha = fpchkIgnoreAlpha->Value() == B_CONTROL_ON;
fSettings->SetGetBool(TGA_SETTING_IGNORE_ALPHA, &ignoreAlpha);
fSettings->SaveSettings();
} break;
case CHANGE_RLE:
{
bool saveWithRLE = fpchkRLE->Value() == B_CONTROL_ON;
fSettings->SetGetBool(TGA_SETTING_RLE, &saveWithRLE);
fSettings->SaveSettings();
} break;
default:
BView::MessageReceived(message);
break;
}
}