Chat-O-Matic/application/views/CayaRenderView.cpp
Jaidyn Ann 577cfd1ae0 Show timestamps in RunView, with custom values
This makes it so RunView's built-in timestamps are used― but requires
that a time_t be sent with each newly-appended line. This allows for lines to
be backdated or forward-dated.
2021-06-14 14:42:38 -05:00

114 lines
2.8 KiB
C++

#include "CayaRenderView.h"
#include <librunview/RunView.h>
#include <librunview/Theme.h>
#include "CayaPreferences.h"
CayaRenderView::CayaRenderView(const char *name, const char* smileyConfig)
:
RunView(BRect(0, 0, 1, 1), name,
fTheme = new Theme(name, COL_MAX_COLORS + 1, COL_MAX_COLORS + 1,
MAX_RENDERS + 1),
B_FOLLOW_ALL, B_WILL_DRAW)
{
if (smileyConfig)
Emoticor::Get()->LoadConfig(smileyConfig);
PrepareTheme(fTheme);
SetTimeStampFormat("[%H:%M]");
if ( IsHidden() )
Show();
ScrollToBottom();
}
void
CayaRenderView::AppendMessage(const char* nick, const char* message,
rgb_color nameColor)
{
rgb_color bg = ui_color(B_PANEL_BACKGROUND_COLOR);
rgb_color fg = ui_color(B_PANEL_TEXT_COLOR);
Append("<", nameColor, bg, nameColor, time(NULL));
Append(nick, fg, bg, fg);
Append("> ", nameColor, bg, nameColor);
// AddEmoticText(message, fg, bg);
Append(message, fg, bg, fg);
Append("\n", fg, bg, fg);
ScrollToSelection();
}
void
CayaRenderView::AppendGenericMessage(const char* message)
{
rgb_color bg = ui_color(B_PANEL_BACKGROUND_COLOR);
rgb_color fg = ui_color(B_PANEL_TEXT_COLOR);
Append(message, fg, bg, fg, time(NULL));
ScrollToSelection();
}
void
CayaRenderView::AddEmoticText(const char * txt, rgb_color fore, rgb_color bg)
{
if (CayaPreferences::Item()->IgnoreEmoticons)
Append(txt, fore, bg, fore);
else
Emoticor::Get()->AddText(this, txt, fore, fore, bg, fore);
}
void
CayaRenderView::PrepareTheme(Theme *fTheme)
{
Theme::TimestampFore = COL_TIMESTAMP_DUMMY;
Theme::TimestampBack = COL_TIMESTAMP_DUMMY;
Theme::TimespaceFore = COL_MAX_COLORS;
Theme::TimespaceBack = COL_MAX_COLORS;
Theme::TimespaceFont = MAX_RENDERS;
Theme::TimestampFont = R_TIMESTAMP_DUMMY;
Theme::NormalFore = COL_TEXT;
Theme::NormalBack = COL_TEXT;
Theme::NormalFont = R_TEXT;
Theme::SelectionBack = COL_SELECTION;
fTheme->WriteLock();
rgb_color bg = ui_color(B_PANEL_BACKGROUND_COLOR);
rgb_color fg = ui_color(B_PANEL_TEXT_COLOR);
fTheme->SetForeground(COL_URL, ui_color(B_LINK_TEXT_COLOR));
fTheme->SetBackground(COL_URL, bg);
fTheme->SetForeground(COL_TIMESTAMP, fg);
fTheme->SetBackground(COL_TIMESTAMP, bg);
fTheme->SetForeground(COL_TEXT, fg);
fTheme->SetBackground(COL_TEXT, bg);
fTheme->SetForeground(COL_ACTION, fg);
fTheme->SetBackground(COL_ACTION, bg);
fTheme->SetForeground(COL_SELECTION, ui_color(B_MENU_SELECTED_ITEM_TEXT_COLOR));
fTheme->SetBackground(COL_SELECTION, ui_color(B_MENU_SELECTED_BACKGROUND_COLOR));
fTheme->SetForeground(COL_OWNNICK, 0, 0, 255);
fTheme->SetBackground(COL_OWNNICK, bg);
fTheme->SetForeground(COL_OTHERNICK, 255, 0, 0);
fTheme->SetBackground(COL_OTHERNICK, bg);
fTheme->SetTextRender(R_EMOTICON, &str);
fTheme->SetSoftLineIndent(5.0);
fTheme->SetTextMargin(5.0);
fTheme->WriteUnlock();
}