github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/client/GUI/onglets/notifications/list.go (about)

     1  package notifications
     2  
     3  import (
     4  	"github.com/benoitkugler/goACVE/client/GUI/basic"
     5  	"github.com/therecipe/qt/widgets"
     6  )
     7  
     8  type List struct {
     9  	*widgets.QListWidget
    10  }
    11  
    12  func NewList() List {
    13  	list := widgets.NewQListWidget(nil)
    14  	list.SetStyleSheet("QListWidget { background: transparent; }")
    15  	list.SetSpacing(3)
    16  	list.SetSelectionMode(widgets.QAbstractItemView__NoSelection)
    17  	list.SetUniformItemSizes(true)
    18  	list.SetLayoutMode(widgets.QListView__Batched)
    19  	return List{QListWidget: list}
    20  }
    21  
    22  // AddNotification ajoute une ligne. Si `onClick` est non nil
    23  // il est invoqué sur un clic sur un lien hypertext.
    24  func (l List) AddNotification(text string, onClick func()) {
    25  	item := widgets.NewQListWidgetItem(l, 0)
    26  	if onClick != nil {
    27  		text = "<a href>" + text + "</a>"
    28  	}
    29  	label := basic.Label(text)
    30  	label.ConnectLinkActivated(func(_ string) { onClick() })
    31  	item.SetSizeHint(label.MinimumSizeHint())
    32  	l.SetItemWidget(item, label)
    33  }