@ -169,41 +169,52 @@ func (mainscreen *Mainscreen) GetDefaultFocus() (tview.Primitive) {
return mainscreen . Articles
return mainscreen . Articles
}
}
func ( mainscreen * Mainscreen ) Refresh ( ) {
func ( mainscreen * Mainscreen ) addNodeToArticlesList ( level int , articlesNode * [ ] * models . Article , selectedGroup int , previousGroupsList [ ] string ) {
selectedGroup := mainscreen . CurrentGroupSelected
// fmt.Fprintf(os.Stderr, "%s Node has %d items\n", strings.Repeat(" ", level * 3), len(*articlesNode))
selectedArticle := mainscreen . CurrentArticleSelected
previousGroupsList := mainscreen . GroupsList
for i := 0 ; i < len ( * articlesNode ) ; i ++ {
mainscreen . GroupsList = [ ] string { }
article := ( * articlesNode ) [ i ]
// previousGroupsMap := mainscreen.GroupsMap
mainscreen . GroupsMap = make ( map [ string ] GroupMapEntry )
mainscreen . Groups . Clear ( )
mainscreen . ArticlesList = [ ] * models . Article { }
// fmt.Fprintf(os.Stderr, "%s Item has ID %s and is in reply of ID %s and has %d replies\n", strings.Repeat(" ", level * 3), article.ID, article.InReplyToID, len(article.Replies))
mainscreen . Articles . Clear ( )
mainscreen . GroupsList = append ( mainscreen . GroupsList , "*" )
mainscreen . GroupsMap [ "*" ] = GroupMapEntry {
Index : 0 ,
}
for i := 0 ; i < len ( * mainscreen . T . ArticlesDatasource ) ; i ++ {
article := ( * mainscreen . T . ArticlesDatasource ) [ i ]
if selectedGroup == 0 ||
if selectedGroup == 0 ||
( selectedGroup != 0 &&
( selectedGroup != 0 &&
article . Newsgroup == previousGroupsList [ selectedGroup ] ) {
article . Newsgroup == previousGroupsList [ selectedGroup ] ) {
prefix := ""
if level > 0 {
if i < ( len ( * articlesNode ) - 1 ) || len ( article . Replies ) > 0 {
prefix = "[gray]├[-]"
} else {
prefix = "[gray]└[-]"
}
}
prefixSub := " "
if len ( article . Replies ) > 0 || ( level > 0 && i < ( len ( * articlesNode ) - 1 ) ) {
prefixSub = "[gray]│[-]"
}
mainscreen . Articles . AddItem (
mainscreen . Articles . AddItem (
fmt . Sprintf (
fmt . Sprintf (
"%s" ,
"%s%s%s" ,
prefix ,
strings . Repeat ( " " , level ) ,
article . Subject ,
article . Subject ,
) ,
) ,
fmt . Sprintf (
fmt . Sprintf (
" on [darkgray]%s[-] by [darkgray]%s[-] in [darkgray]%s[-]" ,
"%s%s on [darkgray]%s[-] by [darkgray]%s[-] in [darkgray]%s[-]" ,
prefixSub ,
strings . Repeat ( " " , level ) ,
MillisecondsToDate ( article . Date ) ,
MillisecondsToDate ( article . Date ) ,
article . From ,
article . From ,
article . Newsgroup ,
article . Newsgroup ,
) , 0 , nil )
) , 0 , nil )
mainscreen . ArticlesList = append ( mainscreen . ArticlesList , & article )
mainscreen . ArticlesList = append ( mainscreen . ArticlesList , article )
if len ( article . Replies ) > 0 {
mainscreen . addNodeToArticlesList ( ( level + 1 ) , & article . Replies , selectedGroup , previousGroupsList )
}
}
}
if _ , ok := mainscreen . GroupsMap [ article . Newsgroup ] ; ! ok {
if _ , ok := mainscreen . GroupsMap [ article . Newsgroup ] ; ! ok {
@ -213,6 +224,27 @@ func(mainscreen *Mainscreen) Refresh() {
}
}
}
}
}
}
}
func ( mainscreen * Mainscreen ) Refresh ( ) {
selectedGroup := mainscreen . CurrentGroupSelected
selectedArticle := mainscreen . CurrentArticleSelected
previousGroupsList := mainscreen . GroupsList
mainscreen . GroupsList = [ ] string { }
// previousGroupsMap := mainscreen.GroupsMap
mainscreen . GroupsMap = make ( map [ string ] GroupMapEntry )
mainscreen . Groups . Clear ( )
mainscreen . ArticlesList = [ ] * models . Article { }
mainscreen . Articles . Clear ( )
mainscreen . GroupsList = append ( mainscreen . GroupsList , "*" )
mainscreen . GroupsMap [ "*" ] = GroupMapEntry {
Index : 0 ,
}
mainscreen . addNodeToArticlesList ( 0 , mainscreen . T . ArticlesRoots , selectedGroup , previousGroupsList )
sort . Strings ( mainscreen . GroupsList )
sort . Strings ( mainscreen . GroupsList )
for idx , group := range mainscreen . GroupsList {
for idx , group := range mainscreen . GroupsList {