Enhanced header/footer, adjusted colors

pull/17/head
マリウス 2 years ago
parent 1f1ab89056
commit 0a536393e5
No known key found for this signature in database
GPG Key ID: 272ED814BF63261F

@ -8,11 +8,16 @@ import (
"os"
"os/exec"
"strings"
"time"
"github.com/mrusme/superhighway84/models"
"github.com/rivo/tview"
)
func MillisecondsToDate(ms int64) (string) {
return time.Unix(0, ms * int64(time.Millisecond)).Format("Mon Jan _2 15:04:05 2006")
}
func OpenArticle(app *tview.Application, article *models.Article) (models.Article, error) {
tmpFile, err := ioutil.TempFile(os.TempDir(), "article-*.txt")
if err != nil {
@ -57,6 +62,7 @@ func OpenArticle(app *tview.Application, article *models.Article) (models.Articl
headerPart := strings.TrimSpace(content[0])
subject := strings.TrimPrefix(headerPart, "Subject: ")
// TODO: Perform more validations
if len(subject) <= 1 {
return *article, errors.New("Invalid subject")
}

@ -4,7 +4,6 @@ import (
"fmt"
"sort"
"strings"
"time"
"unicode"
"github.com/gdamore/tcell/v2"
@ -12,6 +11,14 @@ import (
"github.com/rivo/tview"
)
var HEADER_LOGO =
` _ _ _ __ ____ __ _ __ ___ ____
/ / / // / __/_ _____ ___ ____/ / (_)__ _/ / _ _____ ___ __( _ )/ / /
_\ _\_\_\\_\ \/ // / _ \/ -_) __/ _ \/ / _ \/ _ \ |/|/ / _ \/ // / _ /_ _/
/ / / // /___/\_,_/ .__/\__/_/ /_//_/_/\_, /_//_/__,__/\_,_/\_, /\___/ /_/
/_/ /___/ /___/
`
type GroupMapEntry struct {
Index int
}
@ -20,6 +27,9 @@ type Mainscreen struct {
T *TUI
Canvas *tview.Grid
Header *tview.TextView
Footer *tview.TextView
Groups *tview.List
Articles *tview.List
@ -39,36 +49,52 @@ func(t *TUI) NewMainscreen(articlesDatasource *[]models.Article) (*Mainscreen) {
mainscreen.ArticlesDatasource = articlesDatasource
newPrimitive := func(text string) tview.Primitive {
return tview.NewTextView().
SetTextAlign(tview.AlignCenter).
SetText(text)
}
mainscreen.Groups = tview.NewList().
SetWrapAround(false).
ShowSecondaryText(false).
SetHighlightFullLine(true).
SetSelectedBackgroundColor(tcell.ColorTeal).
SetSelectedBackgroundColor(tcell.ColorHotPink).
SetSelectedTextColor(tcell.ColorWhite).
SetSecondaryTextColor(tcell.ColorGrey).
SetChangedFunc(mainscreen.changeHandler("group")).
SetSelectedFunc(mainscreen.selectHandler("group"))
mainscreen.Groups.
SetBorder(true).
SetBorderAttributes(tcell.AttrNone).
SetBorderColor(tcell.ColorTeal)
mainscreen.Articles = tview.NewList().
SetWrapAround(true).
ShowSecondaryText(true).
SetHighlightFullLine(true).
SetSelectedBackgroundColor(tcell.ColorTeal).
SetSelectedBackgroundColor(tcell.ColorHotPink).
SetSelectedTextColor(tcell.ColorWhite).
SetSecondaryTextColor(tcell.ColorGrey).
SetChangedFunc(mainscreen.changeHandler("article")).
SetSelectedFunc(mainscreen.selectHandler("article"))
mainscreen.Articles.
SetBorder(true).
SetBorderAttributes(tcell.AttrNone).
SetBorderColor(tcell.ColorTeal)
mainscreen.Header = tview.NewTextView().
SetText(HEADER_LOGO).
SetTextColor(tcell.ColorHotPink)
mainscreen.Header.SetBorder(false)
mainscreen.Footer = tview.NewTextView().
SetText("It really whips the llama's ass").
SetTextColor(tcell.ColorHotPink).
SetTextAlign(tview.AlignRight)
mainscreen.Footer.SetBorder(false).
SetBorderPadding(0, 0, 1, 1)
mainscreen.Canvas = tview.NewGrid().
SetRows(3, 0, 3).
SetRows(5, 0, 1).
SetColumns(30, 0).
SetBorders(true).
AddItem(newPrimitive("Header"), 0, 0, 1, 2, 0, 0, false).
AddItem(newPrimitive("Footer"), 2, 0, 1, 2, 0, 0, false)
SetBorders(false).
AddItem(mainscreen.Header, 0, 0, 1, 2, 0, 0, false).
AddItem(mainscreen.Footer, 2, 0, 1, 2, 0, 0, false)
mainscreen.Canvas.AddItem(mainscreen.Groups, 1, 0, 1, 1, 0, 0, false).
AddItem(mainscreen.Articles, 1, 1, 1, 1, 0, 0, false)
@ -76,6 +102,10 @@ func(t *TUI) NewMainscreen(articlesDatasource *[]models.Article) (*Mainscreen) {
return mainscreen
}
func (mainscreen *Mainscreen) SetFooter(text string) {
mainscreen.Footer.SetText(text)
}
func (mainscreen *Mainscreen) GetCanvas() (tview.Primitive) {
return mainscreen.Canvas
}
@ -106,7 +136,7 @@ func(mainscreen *Mainscreen) Refresh() {
if selectedGroup == 0 ||
(selectedGroup != 0 &&
article.Newsgroup == previousGroupsList[selectedGroup]) {
mainscreen.Articles.AddItem(article.Subject, article.From, 0, nil)
mainscreen.Articles.AddItem(fmt.Sprintf("[teal]%s[-]", article.Subject), fmt.Sprintf("On [lightgray]%s[-] by %s", MillisecondsToDate(article.Date), article.From), 0, nil)
mainscreen.ArticlesList = append(mainscreen.ArticlesList, &article)
}
@ -219,7 +249,7 @@ func(mainscreen *Mainscreen) replyToArticle(article *models.Article) {
newArticle.Newsgroup = article.Newsgroup
// TODO: newArticle.From =
// TODO: newArticle.Organisation =
newArticle.Body = fmt.Sprintf("\nOn %s %s wrote:\n> %s", time.Unix(0, article.Date * int64(time.Millisecond)).Format("Mon Jan _2 15:04:05 2006"), article.From, strings.Replace(article.Body, "\n", "\n> ", -1))
newArticle.Body = fmt.Sprintf("\nOn %s %s wrote:\n> %s", MillisecondsToDate(article.Date), article.From, strings.Replace(article.Body, "\n", "\n> ", -1))
updatedNewArticle, err := OpenArticle(mainscreen.T.App, newArticle)
if err != nil {

Loading…
Cancel
Save