⛏️ index : haiku.git

/*
 * Copyright 2017 Haiku Inc. All rights reserved.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *		Brian Hill
 */


#include "RepoRow.h"

#include <Catalog.h>
#include <ColumnTypes.h>

#include "constants.h"


#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "RepoRow"


RepoRow::RepoRow(const char* repo_name, const char* repo_url, bool enabled)
	:
	BRow(),
	fName(repo_name),
	fUrl(repo_url),
	fEnabled(enabled),
	fTaskState(STATE_NOT_IN_QUEUE)
{
	SetField(new BStringField(""), kEnabledColumn);
	SetField(new BStringField(fName.String()), kNameColumn);
	SetField(new BStringField(fUrl.String()), kUrlColumn);
	if (enabled)
		SetEnabled(enabled);
}


void
RepoRow::SetName(const char* name)
{
	BStringField* field = (BStringField*)GetField(kNameColumn);
	field->SetString(name);
	fName.SetTo(name);
	Invalidate();
}


void
RepoRow::SetEnabled(bool enabled)
{
	fEnabled = enabled;
	RefreshEnabledField();
}


void
RepoRow::RefreshEnabledField()
{
	BStringField* field = (BStringField*)GetField(kEnabledColumn);
	if (fTaskState == STATE_NOT_IN_QUEUE)
		field->SetString(fEnabled ? B_TRANSLATE_COMMENT("Enabled",
			"Tag in the Status column") : "");
	else
		field->SetString(B_UTF8_ELLIPSIS);
	Invalidate();
}


void
RepoRow::SetTaskState(uint32 state)
{
	fTaskState = state;
	RefreshEnabledField();
}