Favorites dialog server updates.
Favorites dialog now able to fetch server's information and update list of available game profiles.
This commit is contained in:
parent
ac57e6376c
commit
cc20dca39c
@ -34,7 +34,7 @@ type Pooler struct {
|
|||||||
func (p *Pooler) Initialize() {
|
func (p *Pooler) Initialize() {
|
||||||
fmt.Println("Initializing requester goroutine pooler...")
|
fmt.Println("Initializing requester goroutine pooler...")
|
||||||
// ToDo: figure out how to make this work nice.
|
// ToDo: figure out how to make this work nice.
|
||||||
p.maxrequests = 500
|
p.maxrequests = 100
|
||||||
p.pp = "\377\377\377\377"
|
p.pp = "\377\377\377\377"
|
||||||
fmt.Println("Pooler initialized")
|
fmt.Println("Pooler initialized")
|
||||||
}
|
}
|
||||||
@ -127,7 +127,7 @@ func (p *Pooler) UpdateOneServer(server_address string) {
|
|||||||
wait.Add(1)
|
wait.Add(1)
|
||||||
go func(server *datamodels.Server) {
|
go func(server *datamodels.Server) {
|
||||||
defer wait.Done()
|
defer wait.Done()
|
||||||
p.updateSpecificServer(server)
|
p.UpdateSpecificServer(server)
|
||||||
}(server)
|
}(server)
|
||||||
wait.Wait()
|
wait.Wait()
|
||||||
p.PingOneServer(server_address)
|
p.PingOneServer(server_address)
|
||||||
@ -148,7 +148,7 @@ func (p *Pooler) UpdateServers(servers_type string) {
|
|||||||
wait.Add(1)
|
wait.Add(1)
|
||||||
go func(server *datamodels.Server) {
|
go func(server *datamodels.Server) {
|
||||||
defer wait.Done()
|
defer wait.Done()
|
||||||
p.updateSpecificServer(server)
|
p.UpdateSpecificServer(server)
|
||||||
}(server.Server)
|
}(server.Server)
|
||||||
}
|
}
|
||||||
wait.Wait()
|
wait.Wait()
|
||||||
@ -161,7 +161,7 @@ func (p *Pooler) UpdateServers(servers_type string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Updates information about specific server.
|
// Updates information about specific server.
|
||||||
func (p *Pooler) updateSpecificServer(server *datamodels.Server) error {
|
func (p *Pooler) UpdateSpecificServer(server *datamodels.Server) error {
|
||||||
server_addr := server.Ip + ":" + server.Port
|
server_addr := server.Ip + ":" + server.Port
|
||||||
fmt.Println("Updating server: " + server_addr)
|
fmt.Println("Updating server: " + server_addr)
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ import (
|
|||||||
|
|
||||||
type Requester struct {
|
type Requester struct {
|
||||||
// Pooler.
|
// Pooler.
|
||||||
pooler *Pooler
|
Pooler *Pooler
|
||||||
// Master server address
|
// Master server address
|
||||||
master_server string
|
master_server string
|
||||||
// Master server port
|
// Master server port
|
||||||
@ -40,8 +40,8 @@ func (r *Requester) Initialize() {
|
|||||||
r.master_server_port = "27900"
|
r.master_server_port = "27900"
|
||||||
r.pp = "\377\377\377\377"
|
r.pp = "\377\377\377\377"
|
||||||
r.ip_delimiter = 92
|
r.ip_delimiter = 92
|
||||||
r.pooler = &Pooler{}
|
r.Pooler = &Pooler{}
|
||||||
r.pooler.Initialize()
|
r.Pooler.Initialize()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gets all available servers from master server.
|
// Gets all available servers from master server.
|
||||||
@ -125,15 +125,15 @@ func (r *Requester) getServers() {
|
|||||||
func (r *Requester) UpdateAllServers() {
|
func (r *Requester) UpdateAllServers() {
|
||||||
fmt.Println("Starting all servers updating procedure...")
|
fmt.Println("Starting all servers updating procedure...")
|
||||||
r.getServers()
|
r.getServers()
|
||||||
r.pooler.UpdateServers("all")
|
r.Pooler.UpdateServers("all")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Requester) UpdateFavoriteServers() {
|
func (r *Requester) UpdateFavoriteServers() {
|
||||||
fmt.Println("Updating favorites servers...")
|
fmt.Println("Updating favorites servers...")
|
||||||
r.pooler.UpdateServers("favorites")
|
r.Pooler.UpdateServers("favorites")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Requester) UpdateOneServer(server_address string) {
|
func (r *Requester) UpdateOneServer(server_address string) {
|
||||||
fmt.Println("Updating server " + server_address)
|
fmt.Println("Updating server " + server_address)
|
||||||
r.pooler.UpdateOneServer(server_address)
|
r.Pooler.UpdateOneServer(server_address)
|
||||||
}
|
}
|
||||||
|
@ -45,8 +45,10 @@ type FavoriteDialog struct {
|
|||||||
update bool
|
update bool
|
||||||
|
|
||||||
// Data.
|
// Data.
|
||||||
// If known server is used - here server's datamodel is.
|
// Server's we're working with.
|
||||||
server *datamodels.Server
|
server *datamodels.Server
|
||||||
|
// Profiles count that was added to profiles combobox.
|
||||||
|
profiles int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FavoriteDialog) Close() {}
|
func (f *FavoriteDialog) Close() {}
|
||||||
@ -61,6 +63,13 @@ func (f *FavoriteDialog) fill() {
|
|||||||
f.server_password.SetText(f.server.Password)
|
f.server_password.SetText(f.server.Password)
|
||||||
|
|
||||||
// Profiles.
|
// Profiles.
|
||||||
|
// Remove old profiles.
|
||||||
|
if f.profiles > 0 {
|
||||||
|
for i := 0; i <= f.profiles; i++ {
|
||||||
|
f.profile.RemoveText(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
profiles := []datamodels.Profile{}
|
profiles := []datamodels.Profile{}
|
||||||
err := ctx.Database.Db.Select(&profiles, "SELECT * FROM urt_profiles")
|
err := ctx.Database.Db.Select(&profiles, "SELECT * FROM urt_profiles")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -73,6 +82,7 @@ func (f *FavoriteDialog) fill() {
|
|||||||
f.profile.AppendText(profiles[p].Name)
|
f.profile.AppendText(profiles[p].Name)
|
||||||
idx_should_be_active = idx_in_combobox
|
idx_should_be_active = idx_in_combobox
|
||||||
idx_in_combobox += 1
|
idx_in_combobox += 1
|
||||||
|
f.profiles += 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,6 +91,8 @@ func (f *FavoriteDialog) fill() {
|
|||||||
|
|
||||||
func (f *FavoriteDialog) InitializeNew() {
|
func (f *FavoriteDialog) InitializeNew() {
|
||||||
f.update = false
|
f.update = false
|
||||||
|
f.server = &datamodels.Server{}
|
||||||
|
f.profiles = 0
|
||||||
f.initializeWindow()
|
f.initializeWindow()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,6 +100,7 @@ func (f *FavoriteDialog) InitializeUpdate(server *datamodels.Server) {
|
|||||||
fmt.Println("Favorites updating...")
|
fmt.Println("Favorites updating...")
|
||||||
f.update = true
|
f.update = true
|
||||||
f.server = server
|
f.server = server
|
||||||
|
f.profiles = 0
|
||||||
f.initializeWindow()
|
f.initializeWindow()
|
||||||
f.fill()
|
f.fill()
|
||||||
}
|
}
|
||||||
@ -113,6 +126,11 @@ func (f *FavoriteDialog) initializeWindow() {
|
|||||||
logo = icon_pixbuf.GetPixbuf()
|
logo = icon_pixbuf.GetPixbuf()
|
||||||
f.window.SetIcon(logo)
|
f.window.SetIcon(logo)
|
||||||
|
|
||||||
|
// Set some GTK options for this window.
|
||||||
|
gtk_opts_raw := gtk.SettingsGetDefault()
|
||||||
|
gtk_opts := gtk_opts_raw.ToGObject()
|
||||||
|
gtk_opts.Set("gtk-button-images", true)
|
||||||
|
|
||||||
// Server name.
|
// Server name.
|
||||||
srv_name_hbox := gtk.NewHBox(false, 0)
|
srv_name_hbox := gtk.NewHBox(false, 0)
|
||||||
f.vbox.PackStart(srv_name_hbox, false, true, 5)
|
f.vbox.PackStart(srv_name_hbox, false, true, 5)
|
||||||
@ -132,6 +150,12 @@ func (f *FavoriteDialog) initializeWindow() {
|
|||||||
srv_addr_hbox.PackStart(srv_addr_sep, true, true, 5)
|
srv_addr_hbox.PackStart(srv_addr_sep, true, true, 5)
|
||||||
f.server_address = gtk.NewEntry()
|
f.server_address = gtk.NewEntry()
|
||||||
srv_addr_hbox.PackStart(f.server_address, true, true, 5)
|
srv_addr_hbox.PackStart(f.server_address, true, true, 5)
|
||||||
|
srv_addr_update_btn := gtk.NewButton()
|
||||||
|
srv_addr_update_btn.SetTooltipText("Update server information")
|
||||||
|
srv_addr_update_btn_image := gtk.NewImageFromStock(gtk.STOCK_REDO, 24)
|
||||||
|
srv_addr_update_btn.SetImage(srv_addr_update_btn_image)
|
||||||
|
srv_addr_update_btn.Clicked(f.updateServerInfo)
|
||||||
|
srv_addr_hbox.PackStart(srv_addr_update_btn, false, true, 5)
|
||||||
if f.update {
|
if f.update {
|
||||||
f.server_address.SetSensitive(false)
|
f.server_address.SetSensitive(false)
|
||||||
}
|
}
|
||||||
@ -176,6 +200,10 @@ func (f *FavoriteDialog) initializeWindow() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (f *FavoriteDialog) saveFavorite() error {
|
func (f *FavoriteDialog) saveFavorite() error {
|
||||||
|
// Update server's information.
|
||||||
|
f.server.Name = f.server_name.GetText()
|
||||||
|
//ctx.Requester.Pooler.UpdateSpecificServer(f.server)
|
||||||
|
|
||||||
if len(f.server_address.GetText()) == 0 {
|
if len(f.server_address.GetText()) == 0 {
|
||||||
mbox_string := "Server address is empty.\n\nServers without address cannot be added."
|
mbox_string := "Server address is empty.\n\nServers without address cannot be added."
|
||||||
m := gtk.NewMessageDialog(f.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
|
m := gtk.NewMessageDialog(f.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
|
||||||
@ -186,6 +214,15 @@ func (f *FavoriteDialog) saveFavorite() error {
|
|||||||
return errors.New("No server address specified")
|
return errors.New("No server address specified")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var port string = ""
|
||||||
|
if strings.Contains(f.server_address.GetText(), ":") {
|
||||||
|
port = strings.Split(f.server_address.GetText(), ":")[1]
|
||||||
|
} else {
|
||||||
|
port = "27960"
|
||||||
|
}
|
||||||
|
f.server.Ip = strings.Split(f.server_address.GetText(), ":")[0]
|
||||||
|
f.server.Port = port
|
||||||
|
|
||||||
if len(f.profile.GetActiveText()) == 0 {
|
if len(f.profile.GetActiveText()) == 0 {
|
||||||
mbox_string := "Profile wasn't selected.\n\nPlease, select valid profile for this server.\nIf you haven't add profiles yet - you can do it\nin options on \"Urban Terror\" tab."
|
mbox_string := "Profile wasn't selected.\n\nPlease, select valid profile for this server.\nIf you haven't add profiles yet - you can do it\nin options on \"Urban Terror\" tab."
|
||||||
m := gtk.NewMessageDialog(f.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
|
m := gtk.NewMessageDialog(f.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
|
||||||
@ -196,25 +233,36 @@ func (f *FavoriteDialog) saveFavorite() error {
|
|||||||
return errors.New("No game profile specified")
|
return errors.New("No game profile specified")
|
||||||
}
|
}
|
||||||
|
|
||||||
var port string = ""
|
|
||||||
if strings.Contains(f.server_address.GetText(), ":") {
|
|
||||||
port = strings.Split(f.server_address.GetText(), ":")[1]
|
|
||||||
} else {
|
|
||||||
port = "27960"
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println("Saving favorite server...")
|
fmt.Println("Saving favorite server...")
|
||||||
|
|
||||||
key := strings.Split(f.server_address.GetText(), ":")[0] + ":" + port
|
key := strings.Split(f.server_address.GetText(), ":")[0] + ":" + port
|
||||||
ctx.Cache.Servers[key].Server.Ip = strings.Split(f.server_address.GetText(), ":")[0]
|
ctx.Cache.Servers[key].Server.Ip = f.server.Ip
|
||||||
ctx.Cache.Servers[key].Server.Port = port
|
ctx.Cache.Servers[key].Server.Port = f.server.Port
|
||||||
ctx.Cache.Servers[key].Server.Name = f.server_name.GetText()
|
ctx.Cache.Servers[key].Server.Name = f.server.Name
|
||||||
ctx.Cache.Servers[key].Server.Password = f.server_password.GetText()
|
ctx.Cache.Servers[key].Server.Password = f.server_password.GetText()
|
||||||
ctx.Cache.Servers[key].Server.ProfileToUse = f.profile.GetActiveText()
|
ctx.Cache.Servers[key].Server.ProfileToUse = f.profile.GetActiveText()
|
||||||
ctx.Cache.Servers[key].Server.Favorite = "1"
|
ctx.Cache.Servers[key].Server.Favorite = "1"
|
||||||
|
ctx.Cache.Servers[key].Server.ExtendedConfig = f.server.ExtendedConfig
|
||||||
|
ctx.Cache.Servers[key].Server.PlayersInfo = f.server.PlayersInfo
|
||||||
|
|
||||||
ctx.Eventer.LaunchEvent("loadFavoriteServers")
|
ctx.Eventer.LaunchEvent("loadFavoriteServers")
|
||||||
f.window.Destroy()
|
f.window.Destroy()
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *FavoriteDialog) updateServerInfo() {
|
||||||
|
fmt.Println("Updating server information...")
|
||||||
|
var port string = ""
|
||||||
|
if strings.Contains(f.server_address.GetText(), ":") {
|
||||||
|
port = strings.Split(f.server_address.GetText(), ":")[1]
|
||||||
|
} else {
|
||||||
|
port = "27960"
|
||||||
|
}
|
||||||
|
f.server.Ip = strings.Split(f.server_address.GetText(), ":")[0]
|
||||||
|
f.server.Port = port
|
||||||
|
|
||||||
|
ctx.Requester.Pooler.UpdateSpecificServer(f.server)
|
||||||
|
|
||||||
|
f.fill()
|
||||||
|
}
|
||||||
|
@ -67,6 +67,11 @@ func (m *MainWindow) Initialize() {
|
|||||||
m.window_height, _ = strconv.Atoi(win_size_height_str)
|
m.window_height, _ = strconv.Atoi(win_size_height_str)
|
||||||
m.window.SetDefaultSize(m.window_width, m.window_height)
|
m.window.SetDefaultSize(m.window_width, m.window_height)
|
||||||
|
|
||||||
|
// Set some GTK options for this window.
|
||||||
|
gtk_opts_raw := gtk.SettingsGetDefault()
|
||||||
|
gtk_opts := gtk_opts_raw.ToGObject()
|
||||||
|
gtk_opts.Set("gtk-button-images", true)
|
||||||
|
|
||||||
// Dialogs initialization.
|
// Dialogs initialization.
|
||||||
m.options_dialog = &OptionsDialog{}
|
m.options_dialog = &OptionsDialog{}
|
||||||
|
|
||||||
@ -504,7 +509,7 @@ func (m *MainWindow) InitializeToolbar() {
|
|||||||
button_update_all_servers.OnClicked(m.UpdateServers)
|
button_update_all_servers.OnClicked(m.UpdateServers)
|
||||||
m.toolbar.Insert(button_update_all_servers, 0)
|
m.toolbar.Insert(button_update_all_servers, 0)
|
||||||
|
|
||||||
button_update_one_server := gtk.NewToolButtonFromStock(gtk.STOCK_UNDO)
|
button_update_one_server := gtk.NewToolButtonFromStock(gtk.STOCK_REDO)
|
||||||
button_update_one_server.SetLabel("Update selected server")
|
button_update_one_server.SetLabel("Update selected server")
|
||||||
button_update_one_server.SetTooltipText("Update only selected server")
|
button_update_one_server.SetTooltipText("Update only selected server")
|
||||||
button_update_one_server.OnClicked(m.updateOneServer)
|
button_update_one_server.OnClicked(m.updateOneServer)
|
||||||
|
Reference in New Issue
Block a user