Implemented views for articles list, documented

pull/34/head
マリウス 2 years ago
parent 1a7f70403b
commit 0435efd200
No known key found for this signature in database
GPG Key ID: 272ED814BF63261F

@ -125,6 +125,37 @@ patient.
CONFIGURATION
-------------
Superhighway84 will guide you through the basic configuration on its first run.
The configuration is stored at the path that you specified in the setup wizard.
After it was successfully created, it can be adjusted manually and will take
effect on the next launch of Superhighway84.
Configuration options that might be of interest:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ArticlesListView =
The view to be used for the articles lit. Possible values:
0 - threaded view, latest thread at the top
1 - list view, latest article at the top
[Profile]
From =
The identifier that is being shown when posting an article, e.g. your name,
username or email that you'd like to display
Organization =
An optional organization that you'd like to display affiliation with
[Shortcuts]
The shortcuts for navigating Superhighway84, can be reset to its defaults by
simply removing the whole [Shortcuts] block and launching Superhighway84
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
USAGE
-----
@ -158,6 +189,7 @@ For simple ASCII characters use their ASCII code, e.g. `114` for the character
`r`.
KNOWN LIMITATIONS
-----------------

@ -45,6 +45,8 @@ type Config struct {
Profile ConfigProfile
Shortcuts map[string]string
ArticlesListView int8
}
func LoadConfig() (*Config, error) {
@ -109,6 +111,7 @@ func (cfg *Config) LoadDefaults() (error) {
cfg.Shortcuts[strconv.FormatInt(int64(tcell.KeyF8), 10)] = "play"
}
return cfg.Persist()
}

@ -60,6 +60,8 @@ type Mainscreen struct {
ArticlesList []*models.Article
MarkTimer *time.Timer
ArticlesListView int8
}
func(t *TUI) NewMainscreen() (*Mainscreen) {
@ -144,6 +146,7 @@ func(t *TUI) NewMainscreen() (*Mainscreen) {
AddItem(mainscreen.Articles, 1, 1, 1, 2, 0, 0, false).
AddItem(mainscreen.Preview, 2, 1, 1, 2, 0, 0, false)
mainscreen.ArticlesListView = mainscreen.T.Config.ArticlesListView
return mainscreen
}
@ -206,7 +209,7 @@ func (mainscreen *Mainscreen) GetDefaultFocus() (tview.Primitive) {
return mainscreen.Articles
}
func(mainscreen *Mainscreen) addNodeToArticlesList(level int, articlesNode *[]*models.Article, selectedGroup int, previousGroupsList []string) {
func(mainscreen *Mainscreen) addNodeToArticlesList(view int8, level int, articlesNode *[]*models.Article, selectedGroup int, previousGroupsList []string) {
// fmt.Fprintf(os.Stderr, "%s Node has %d items\n", strings.Repeat(" ", level * 3), len(*articlesNode))
for i := 0; i < len(*articlesNode); i++ {
@ -219,7 +222,7 @@ func(mainscreen *Mainscreen) addNodeToArticlesList(level int, articlesNode *[]*m
article.Newsgroup == previousGroupsList[selectedGroup]) {
prefix := ""
if level > 0 {
if view == 0 && level > 0 {
if i < (len(*articlesNode) - 1) || len(article.Replies) > 0 {
prefix = "[gray]├[-]"
} else {
@ -228,7 +231,7 @@ func(mainscreen *Mainscreen) addNodeToArticlesList(level int, articlesNode *[]*m
}
prefixSub := " "
if len(article.Replies) > 0 || (level > 0 && i < (len(*articlesNode) - 1)) {
if view == 0 && (len(article.Replies) > 0 || (level > 0 && i < (len(*articlesNode) - 1))) {
prefixSub = "[gray]│[-]"
}
@ -254,8 +257,8 @@ func(mainscreen *Mainscreen) addNodeToArticlesList(level int, articlesNode *[]*m
), 0, nil)
mainscreen.ArticlesList = append(mainscreen.ArticlesList, article)
if len(article.Replies) > 0 {
mainscreen.addNodeToArticlesList((level + 1), &article.Replies, selectedGroup, previousGroupsList)
if view == 0 && len(article.Replies) > 0 {
mainscreen.addNodeToArticlesList(view, (level + 1), &article.Replies, selectedGroup, previousGroupsList)
}
}
@ -288,7 +291,14 @@ func(mainscreen *Mainscreen) Refresh() {
Index: 0,
}
mainscreen.addNodeToArticlesList(0, mainscreen.T.ArticlesRoots, selectedGroup, previousGroupsList)
var articlesSource *[]*models.Article
switch(mainscreen.ArticlesListView) {
case 0:
articlesSource = mainscreen.T.ArticlesRoots
case 1:
articlesSource = mainscreen.T.ArticlesDatasource
}
mainscreen.addNodeToArticlesList(mainscreen.ArticlesListView, 0, articlesSource, selectedGroup, previousGroupsList)
sort.Strings(mainscreen.GroupsList)
for idx, group := range mainscreen.GroupsList {

Loading…
Cancel
Save