/*++

  Copyright (c) 1999 Intel Corporation

  Module Name:
    libTitle.c

--*/

#ifndef _LIB_TITLE_BAR
#define _LIB_TITLE_BAR

#include "editor.h"

STATIC  EFI_STATUS  MainTitleBarInit (VOID);
STATIC  EFI_STATUS  MainTitleBarCleanup (VOID);
STATIC  EFI_STATUS  MainTitleBarRefresh (VOID);
STATIC  EFI_STATUS  MainTitleBarHide (VOID);
STATIC  EFI_STATUS  MainTitleBarSetTitle (CHAR16*);

EFI_EDITOR_TITLE_BAR    MainTitleBar = {
    NULL,
    MainTitleBarInit,
    MainTitleBarCleanup,
    MainTitleBarRefresh,
    MainTitleBarHide,
    MainTitleBarSetTitle
};

EFI_EDITOR_TITLE_BAR    MainTitleBarConst = {
    NULL,
    MainTitleBarInit,
    MainTitleBarCleanup,
    MainTitleBarRefresh,
    MainTitleBarHide,
    MainTitleBarSetTitle
};

STATIC
EFI_STATUS
MainTitleBarInit    (
    VOID
    )
{
    CopyMem (&MainTitleBar, &MainTitleBarConst, sizeof(MainTitleBar));

    MainTitleBar.SetTitleString(L"New File");

    return EFI_SUCCESS;
}

STATIC
EFI_STATUS
MainTitleBarCleanup (
    VOID
    )
{
    MainEditor.FileBuffer->ClearLine (TITLE_BAR_LOCATION);
    return EFI_SUCCESS;
}

STATIC
EFI_STATUS
MainTitleBarRefresh (
    VOID
    )
{
    EFI_EDITOR_COLOR_UNION  Orig,New;

    Orig = MainEditor.ColorAttributes;
    New.Colors.Foreground = Orig.Colors.Background;
    New.Colors.Background = Orig.Colors.Foreground;

    Out->SetAttribute (Out,New.Data);

    MainEditor.FileBuffer->ClearLine (TITLE_BAR_LOCATION);
    PrintAt (0,TITLE_BAR_LOCATION,L"  %s  %s     %s   ",EDITOR_NAME,EDITOR_VERSION,MainTitleBar.Filename);
    
    if (MainEditor.FileImage->FileType == ASCII_FILE) {
        Print(L"[ASCII]");
    } else {
        Print(L"[UNICODE]");
    }
    if (MainEditor.FileModified) {
        Print(L"     Modified");
    }

    Out->SetAttribute (Out,Orig.Data);

    MainEditor.FileBuffer->RestorePosition();
    return EFI_SUCCESS;
}

STATIC
EFI_STATUS
MainTitleBarHide    (
    VOID
    )
{
    MainEditor.FileBuffer->ClearLine (TITLE_BAR_LOCATION);
    return EFI_SUCCESS;
}

STATIC
EFI_STATUS
MainTitleBarSetTitle    (
    IN  CHAR16  *Filename
    )
{
    if (MainTitleBar.Filename != NULL ) {
        FreePool (MainTitleBar.Filename);
    }
    MainTitleBar.Filename = StrDuplicate (Filename);
    MainTitleBar.Refresh();
    return EFI_SUCCESS;
}

#endif  /* _LIB_TITLE_BAR */