root/src/preferences/repositories/RepoRow.cpp
/*
 * 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();
}