t
This commit is contained in:
@@ -20,7 +20,6 @@ import (
|
||||
"github.com/BurntSushi/toml"
|
||||
"gosrc.io/xmpp"
|
||||
"gosrc.io/xmpp/stanza"
|
||||
"mellium.im/xmpp/jid"
|
||||
"time"
|
||||
|
||||
_ "embed"
|
||||
@@ -396,44 +395,9 @@ func main() {
|
||||
|
||||
} else { // This is a presence stanza from a regular user
|
||||
// The code is basically the exact same as above, we just don't check for mucuser
|
||||
user := jid.MustParse(presence.From).Bare().String()
|
||||
_, ok := userdevices.Load(user)
|
||||
_, mok := mucmembers.Load(user)
|
||||
if !ok && !mok { // FIXME: The initial muc presence gets picked up from this check
|
||||
ok := createTab(user, false, user)
|
||||
if ok {
|
||||
userdevices.Store(user, userUnit{})
|
||||
|
||||
b := gtk.NewLabel(user)
|
||||
gesture1 := gtk.NewGestureClick()
|
||||
gesture1.SetButton(1)
|
||||
gesture1.Connect("pressed", func() {
|
||||
switchToTab(user, &window.Window)
|
||||
})
|
||||
|
||||
b.AddController(gesture1)
|
||||
menu.Append(b)
|
||||
}
|
||||
}
|
||||
|
||||
unit, ok := userdevices.Load(user)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
resource := jid.MustParse(presence.From).Resourcepart()
|
||||
|
||||
typed_unit := unit.(userUnit)
|
||||
|
||||
if presence.Type != "unavailable" {
|
||||
typed_unit.Devices.Store(resource, presence)
|
||||
} else {
|
||||
typed_unit.Devices.Delete(resource)
|
||||
}
|
||||
|
||||
userdevices.Store(user, typed_unit)
|
||||
// TODO: Presence handling code goes here
|
||||
}
|
||||
time.Sleep(1 * time.Second)
|
||||
})
|
||||
|
||||
c, err := xmpp.NewClient(&config, router, func(err error) {
|
||||
@@ -482,33 +446,33 @@ func main() {
|
||||
|
||||
// Throughput
|
||||
/*
|
||||
var oldsize int64
|
||||
var newsize int64
|
||||
var diff float64
|
||||
go func() {
|
||||
for {
|
||||
time.Sleep(5 * time.Second)
|
||||
stat, err := xmlLog.Stat()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
var oldsize int64
|
||||
var newsize int64
|
||||
var diff float64
|
||||
go func() {
|
||||
for {
|
||||
time.Sleep(5 * time.Second)
|
||||
stat, err := xmlLog.Stat()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
newsize = stat.Size()
|
||||
diff = float64(newsize-oldsize) / 1000
|
||||
newsize = stat.Size()
|
||||
diff = float64(newsize-oldsize) / 1000
|
||||
|
||||
ic := clientAssets["car"]
|
||||
if diff >= 25 {
|
||||
ic = clientAssets["car_high"]
|
||||
}
|
||||
ic := clientAssets["car"]
|
||||
if diff >= 25 {
|
||||
ic = clientAssets["car_high"]
|
||||
}
|
||||
|
||||
glib.IdleAdd(func() {
|
||||
sStatus.SetText(fmt.Sprintf("%.2f%s", diff, loadedLocale["KBPerSecond"]))
|
||||
sIcon.SetFromPaintable(ic)
|
||||
})
|
||||
glib.IdleAdd(func() {
|
||||
sStatus.SetText(fmt.Sprintf("%.2f%s", diff, loadedLocale["KBPerSecond"]))
|
||||
sIcon.SetFromPaintable(ic)
|
||||
})
|
||||
|
||||
oldsize = newsize
|
||||
}
|
||||
}()
|
||||
oldsize = newsize
|
||||
}
|
||||
}()
|
||||
*/
|
||||
|
||||
glib.IdleAdd(func() {
|
||||
@@ -526,6 +490,55 @@ func main() {
|
||||
</iq>
|
||||
`, clientroot.Session.BindJid))
|
||||
|
||||
// Fetch roster
|
||||
i, err := stanza.NewIQ(stanza.Attrs{
|
||||
Type: "get",
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
roster := i.RosterItems()
|
||||
i.Payload = roster
|
||||
mychan, err := c.SendIQ(context.TODO(), i)
|
||||
result := <-mychan
|
||||
if err == nil {
|
||||
items, ok := result.Payload.(*stanza.RosterItems)
|
||||
if ok {
|
||||
for _, v := range items.Items {
|
||||
name := v.Name
|
||||
jid := v.Jid
|
||||
|
||||
if name == "" {
|
||||
name = jid
|
||||
}
|
||||
|
||||
createTab(jid, false, name)
|
||||
glib.IdleAdd(func() {
|
||||
box := gtk.NewBox(gtk.OrientationHorizontal, 10)
|
||||
b := gtk.NewLabel(name)
|
||||
gesture1 := gtk.NewGestureClick()
|
||||
gesture1.SetButton(1)
|
||||
gesture1.Connect("pressed", func() {
|
||||
switchToTab(jid, &window.Window)
|
||||
})
|
||||
box.Append(b)
|
||||
go func() {
|
||||
new_im := getAvatar(jid, jid) // TODO: Use PEP avatar and do not use JID as hash
|
||||
glib.IdleAdd(func() {
|
||||
new_im.SetPixelSize(40)
|
||||
box.Prepend(new_im)
|
||||
})
|
||||
}()
|
||||
|
||||
box.AddController(gesture1)
|
||||
menu.Append(box)
|
||||
menu.Append(gtk.NewSeparator(gtk.OrientationHorizontal))
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Join rooms in bookmarks
|
||||
if loadedConfig.JoinBookmarks {
|
||||
books, err := stanza.NewItemsRequest("", "urn:xmpp:bookmarks:1", 0)
|
||||
@@ -539,7 +552,7 @@ func main() {
|
||||
jid := item.Id
|
||||
node := item.Any
|
||||
autojoin := false
|
||||
name := ""
|
||||
name := jid
|
||||
password := ""
|
||||
nick := loadedConfig.Nick
|
||||
for _, attr := range node.Attrs {
|
||||
@@ -582,15 +595,25 @@ func main() {
|
||||
joinMuc(client, clientroot.Session.BindJid, jid, nick, password)
|
||||
createTab(jid, true, name)
|
||||
glib.IdleAdd(func() {
|
||||
box := gtk.NewBox(gtk.OrientationHorizontal, 10)
|
||||
b := gtk.NewLabel(name)
|
||||
gesture1 := gtk.NewGestureClick()
|
||||
gesture1.SetButton(1)
|
||||
gesture1.Connect("pressed", func() {
|
||||
switchToTab(jid, &window.Window)
|
||||
})
|
||||
box.Append(b)
|
||||
go func() {
|
||||
new_im := getAvatar(jid, jid)
|
||||
glib.IdleAdd(func() {
|
||||
new_im.SetPixelSize(40)
|
||||
box.Prepend(new_im)
|
||||
})
|
||||
}()
|
||||
|
||||
b.AddController(gesture1)
|
||||
menu.Append(b)
|
||||
box.AddController(gesture1)
|
||||
menu.Append(box)
|
||||
menu.Append(gtk.NewSeparator(gtk.OrientationHorizontal))
|
||||
})
|
||||
}
|
||||
|
||||
@@ -820,7 +843,16 @@ func activate(app *gtk.Application) {
|
||||
}
|
||||
|
||||
createTab(t, true, n)
|
||||
box := gtk.NewBox(gtk.OrientationHorizontal, 10)
|
||||
go func() {
|
||||
new_im := getAvatar(t, t)
|
||||
glib.IdleAdd(func() {
|
||||
new_im.SetPixelSize(40)
|
||||
box.Prepend(new_im)
|
||||
})
|
||||
}()
|
||||
b := gtk.NewLabel(n)
|
||||
box.Append(b)
|
||||
gesture1 := gtk.NewGestureClick()
|
||||
gesture1.SetButton(1)
|
||||
gesture1.Connect("pressed", func() {
|
||||
@@ -828,7 +860,8 @@ func activate(app *gtk.Application) {
|
||||
})
|
||||
|
||||
b.AddController(gesture1)
|
||||
menu.Append(b)
|
||||
menu.Append(box)
|
||||
menu.Append(gtk.NewSeparator(gtk.OrientationHorizontal))
|
||||
}
|
||||
if !ok {
|
||||
|
||||
@@ -1100,14 +1133,14 @@ func activate(app *gtk.Application) {
|
||||
statBar.Append(pBox)
|
||||
|
||||
/*
|
||||
sBox := gtk.NewBox(gtk.OrientationHorizontal, 0)
|
||||
sIcon = gtk.NewImageFromPaintable(clientAssets["car"])
|
||||
sIcon.AddCSSClass("icon")
|
||||
sStatus = gtk.NewLabel("-")
|
||||
sBox.Append(sIcon)
|
||||
sBox.Append(sStatus)
|
||||
sStatus.SetTooltipText(loadedLocale["throughputTooltip"])
|
||||
statBar.Append(sBox)
|
||||
sBox := gtk.NewBox(gtk.OrientationHorizontal, 0)
|
||||
sIcon = gtk.NewImageFromPaintable(clientAssets["car"])
|
||||
sIcon.AddCSSClass("icon")
|
||||
sStatus = gtk.NewLabel("-")
|
||||
sBox.Append(sIcon)
|
||||
sBox.Append(sStatus)
|
||||
sStatus.SetTooltipText(loadedLocale["throughputTooltip"])
|
||||
statBar.Append(sBox)
|
||||
*/
|
||||
|
||||
scrollerStatBar := gtk.NewScrolledWindow()
|
||||
|
||||
Reference in New Issue
Block a user