diff --git a/Main/App.config b/Main/App.config deleted file mode 100644 index f27a85b..0000000 --- a/Main/App.config +++ /dev/null @@ -1,66 +0,0 @@ - - - - -
- - - - - - Office 2010 Black - - - 324810 - - - 324810,328070,440 - - - hl2master.steampowered.com:27011 - - - 0 - - - 1 - - - False - - - True - - - hl2master.steampowered.com:27011,hl1master.steampowered.com:27011,masterserver.css.setti.info:27011 - - - True - - - True - - - 0 - - - - - - - - - - - - - - - - - - - - - - diff --git a/Main/Main.csproj b/Main/Main.csproj index de44daa..f8602b6 100644 --- a/Main/Main.csproj +++ b/Main/Main.csproj @@ -74,11 +74,6 @@ - - Settings.settings - True - True - ResXFileCodeGenerator Resources.Designer.cs @@ -93,14 +88,9 @@ - - - SettingsSingleFileGenerator - Settings.Designer.cs - diff --git a/Main/Program.cs b/Main/Program.cs index 1e25953..c3bf921 100644 --- a/Main/Program.cs +++ b/Main/Program.cs @@ -8,7 +8,7 @@ namespace Main { public static class Program { - private const string Version = "1.12.2"; + private const string Version = "1.13"; [STAThread] static void Main() @@ -20,7 +20,7 @@ static void Main() System.Threading.Thread.CurrentThread.CurrentCulture = culture; #endif // change font before creating the main form to get correct auto-scaling - ServerBrowser.Program.Init(new Font("Segoe UI", AppearanceObject.DefaultFont.Size + 0.75f), Properties.Settings.Default.Skin); + ServerBrowser.Program.Init(new Font("Segoe UI", AppearanceObject.DefaultFont.Size + 0.75f), ServerBrowser.Properties.Settings.Default.Skin); var mainForm = new ServerBrowserForm(); var icon = typeof (Program).Assembly.GetManifestResourceStream("Main.App.ico"); diff --git a/Main/Properties/AssemblyInfo.cs b/Main/Properties/AssemblyInfo.cs index 725d0c9..a40609c 100644 --- a/Main/Properties/AssemblyInfo.cs +++ b/Main/Properties/AssemblyInfo.cs @@ -5,11 +5,11 @@ // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("Main")] +[assembly: AssemblyTitle("ServerBrowser")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Main")] +[assembly: AssemblyCompany("ServerBrowser")] +[assembly: AssemblyProduct("ServerBrowser")] [assembly: AssemblyCopyright("Copyright © 2015")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/Main/Properties/Settings.Designer.cs b/Main/Properties/Settings.Designer.cs deleted file mode 100644 index f6289d1..0000000 --- a/Main/Properties/Settings.Designer.cs +++ /dev/null @@ -1,219 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.34209 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Main.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Office 2010 Black")] - public string Skin { - get { - return ((string)(this["Skin"])); - } - set { - this["Skin"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("324810")] - public int InitialGameID { - get { - return ((int)(this["InitialGameID"])); - } - set { - this["InitialGameID"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("324810,328070,440")] - public string FavGameIDs { - get { - return ((string)(this["FavGameIDs"])); - } - set { - this["FavGameIDs"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("hl2master.steampowered.com:27011")] - public string MasterServer { - get { - return ((string)(this["MasterServer"])); - } - set { - this["MasterServer"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] - public int ToxikkConsoleKey { - get { - return ((int)(this["ToxikkConsoleKey"])); - } - set { - this["ToxikkConsoleKey"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("1")] - public int RefreshInterval { - get { - return ((int)(this["RefreshInterval"])); - } - set { - this["RefreshInterval"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool ShowOptions { - get { - return ((bool)(this["ShowOptions"])); - } - set { - this["ShowOptions"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool RefreshSelected { - get { - return ((bool)(this["RefreshSelected"])); - } - set { - this["RefreshSelected"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("hl2master.steampowered.com:27011,hl1master.steampowered.com:27011,masterserver.cs" + - "s.setti.info:27011")] - public string MasterServerList { - get { - return ((string)(this["MasterServerList"])); - } - set { - this["MasterServerList"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool GetEmptyServers { - get { - return ((bool)(this["GetEmptyServers"])); - } - set { - this["GetEmptyServers"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool GetFullServers { - get { - return ((bool)(this["GetFullServers"])); - } - set { - this["GetFullServers"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] - public int ShowAddressMode { - get { - return ((int)(this["ShowAddressMode"])); - } - set { - this["ShowAddressMode"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string TagsInclude { - get { - return ((string)(this["TagsInclude"])); - } - set { - this["TagsInclude"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string TagsExclude { - get { - return ((string)(this["TagsExclude"])); - } - set { - this["TagsExclude"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string FilterMod { - get { - return ((string)(this["FilterMod"])); - } - set { - this["FilterMod"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string FilterMap { - get { - return ((string)(this["FilterMap"])); - } - set { - this["FilterMap"] = value; - } - } - } -} diff --git a/Main/Properties/Settings.settings b/Main/Properties/Settings.settings deleted file mode 100644 index f6f014f..0000000 --- a/Main/Properties/Settings.settings +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Office 2010 Black - - - 324810 - - - 324810,328070,440 - - - hl2master.steampowered.com:27011 - - - 0 - - - 1 - - - False - - - True - - - hl2master.steampowered.com:27011,hl1master.steampowered.com:27011,masterserver.css.setti.info:27011 - - - True - - - True - - - 0 - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServerBrowser/Properties/Settings.Designer.cs b/ServerBrowser/Properties/Settings.Designer.cs index 29f5e5d..6759fb2 100644 --- a/ServerBrowser/Properties/Settings.Designer.cs +++ b/ServerBrowser/Properties/Settings.Designer.cs @@ -13,7 +13,7 @@ namespace ServerBrowser.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -215,5 +215,29 @@ public string FilterMap { this["FilterMap"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string FavServers { + get { + return ((string)(this["FavServers"])); + } + set { + this["FavServers"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool KeepFavServersOnTop { + get { + return ((bool)(this["KeepFavServersOnTop"])); + } + set { + this["KeepFavServersOnTop"] = value; + } + } } } diff --git a/ServerBrowser/Properties/Settings.settings b/ServerBrowser/Properties/Settings.settings index f6f014f..612adb7 100644 --- a/ServerBrowser/Properties/Settings.settings +++ b/ServerBrowser/Properties/Settings.settings @@ -50,5 +50,11 @@ + + + + + False + \ No newline at end of file diff --git a/ServerBrowser/ServerBrowser.csproj b/ServerBrowser/ServerBrowser.csproj index 0811157..4235d0c 100644 --- a/ServerBrowser/ServerBrowser.csproj +++ b/ServerBrowser/ServerBrowser.csproj @@ -140,6 +140,11 @@ + + Settings.settings + True + True + Form @@ -201,11 +206,6 @@ SettingsSingleFileGenerator Settings.Designer.cs - - True - Settings.settings - True - diff --git a/ServerBrowser/ServerBrowserForm.Designer.cs b/ServerBrowser/ServerBrowserForm.Designer.cs index c729d8b..a73460b 100644 --- a/ServerBrowser/ServerBrowserForm.Designer.cs +++ b/ServerBrowser/ServerBrowserForm.Designer.cs @@ -53,6 +53,9 @@ private void InitializeComponent() this.colLocation = new DevExpress.XtraGrid.Columns.GridColumn(); this.riCountryFlagEdit = new DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox(); this.imgFlags = new DevExpress.Utils.ImageCollection(this.components); + this.colFavServer = new DevExpress.XtraGrid.Columns.GridColumn(); + this.riFavServer = new DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit(); + this.imageCollection = new DevExpress.Utils.ImageCollection(this.components); this.colEndPoint = new DevExpress.XtraGrid.Columns.GridColumn(); this.colName = new DevExpress.XtraGrid.Columns.GridColumn(); this.colDedicated = new DevExpress.XtraGrid.Columns.GridColumn(); @@ -69,6 +72,11 @@ private void InitializeComponent() this.colStatus = new DevExpress.XtraGrid.Columns.GridColumn(); this.toolTipController = new DevExpress.Utils.ToolTipController(this.components); this.dockManager1 = new DevExpress.XtraBars.Docking.DockManager(this.components); + this.panelRcon = new DevExpress.XtraBars.Docking.DockPanel(); + this.controlContainer3 = new DevExpress.XtraBars.Docking.ControlContainer(); + this.labelControl13 = new DevExpress.XtraEditors.LabelControl(); + this.labelControl15 = new DevExpress.XtraEditors.LabelControl(); + this.txtRconPort = new DevExpress.XtraEditors.ButtonEdit(); this.barManager1 = new DevExpress.XtraBars.BarManager(this.components); this.barMenu = new DevExpress.XtraBars.Bar(); this.miReloadServers = new DevExpress.XtraBars.BarButtonItem(); @@ -76,13 +84,18 @@ private void InitializeComponent() this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl(); this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl(); this.barDockControlRight = new DevExpress.XtraBars.BarDockControl(); - this.imageCollection = new DevExpress.Utils.ImageCollection(this.components); this.miUpdateServerInfo = new DevExpress.XtraBars.BarButtonItem(); this.miConnect = new DevExpress.XtraBars.BarButtonItem(); this.miConnectSpectator = new DevExpress.XtraBars.BarButtonItem(); this.miCopyAddress = new DevExpress.XtraBars.BarButtonItem(); this.miAddRulesColumnText = new DevExpress.XtraBars.BarButtonItem(); this.miAddRulesColumnNumeric = new DevExpress.XtraBars.BarButtonItem(); + this.barButtonItem1 = new DevExpress.XtraBars.BarButtonItem(); + this.miFavServer = new DevExpress.XtraBars.BarButtonItem(); + this.txtRconConsole = new DevExpress.XtraEditors.MemoEdit(); + this.txtRconCommand = new DevExpress.XtraEditors.ButtonEdit(); + this.labelControl14 = new DevExpress.XtraEditors.LabelControl(); + this.txtRconPassword = new DevExpress.XtraEditors.ButtonEdit(); this.panelContainer1 = new DevExpress.XtraBars.Docking.DockPanel(); this.panelPlayers = new DevExpress.XtraBars.Docking.DockPanel(); this.dockPanel1_Container = new DevExpress.XtraBars.Docking.ControlContainer(); @@ -95,15 +108,6 @@ private void InitializeComponent() this.gvRules = new DevExpress.XtraGrid.Views.Grid.GridView(); this.gridColumn1 = new DevExpress.XtraGrid.Columns.GridColumn(); this.gridColumn2 = new DevExpress.XtraGrid.Columns.GridColumn(); - this.panelRcon = new DevExpress.XtraBars.Docking.DockPanel(); - this.controlContainer3 = new DevExpress.XtraBars.Docking.ControlContainer(); - this.labelControl13 = new DevExpress.XtraEditors.LabelControl(); - this.labelControl15 = new DevExpress.XtraEditors.LabelControl(); - this.txtRconPort = new DevExpress.XtraEditors.ButtonEdit(); - this.txtRconConsole = new DevExpress.XtraEditors.MemoEdit(); - this.txtRconCommand = new DevExpress.XtraEditors.ButtonEdit(); - this.labelControl14 = new DevExpress.XtraEditors.LabelControl(); - this.txtRconPassword = new DevExpress.XtraEditors.ButtonEdit(); this.panelServerList = new DevExpress.XtraBars.Docking.DockPanel(); this.controlContainer1 = new DevExpress.XtraBars.Docking.ControlContainer(); this.btnSkin = new DevExpress.XtraEditors.SimpleButton(); @@ -113,6 +117,7 @@ private void InitializeComponent() this.panelTop = new DevExpress.XtraEditors.PanelControl(); this.panelControls = new DevExpress.XtraEditors.PanelControl(); this.panelOptions = new DevExpress.XtraEditors.PanelControl(); + this.btnQuickRefresh = new DevExpress.XtraEditors.SimpleButton(); this.rbFavGame4 = new DevExpress.XtraEditors.CheckEdit(); this.txtMod = new DevExpress.XtraEditors.ButtonEdit(); this.labelControl12 = new DevExpress.XtraEditors.LabelControl(); @@ -135,6 +140,7 @@ private void InitializeComponent() this.labelControl3 = new DevExpress.XtraEditors.LabelControl(); this.timerUpdateServerList = new System.Windows.Forms.Timer(this.components); this.panelAdvancedOptions = new DevExpress.XtraEditors.PanelControl(); + this.cbFavServersOnTop = new DevExpress.XtraEditors.CheckEdit(); this.txtGameServer = new DevExpress.XtraEditors.ButtonEdit(); this.rbAddressGamePort = new DevExpress.XtraEditors.CheckEdit(); this.rbAddressQueryPort = new DevExpress.XtraEditors.CheckEdit(); @@ -166,9 +172,16 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.gvServers)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.riCountryFlagEdit)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.imgFlags)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.riFavServer)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.imageCollection)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dockManager1)).BeginInit(); + this.panelRcon.SuspendLayout(); + this.controlContainer3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.txtRconPort.Properties)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.barManager1)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.imageCollection)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.txtRconConsole.Properties)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.txtRconCommand.Properties)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.txtRconPassword.Properties)).BeginInit(); this.panelContainer1.SuspendLayout(); this.panelPlayers.SuspendLayout(); this.dockPanel1_Container.SuspendLayout(); @@ -179,12 +192,6 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.gcRules)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dsRules)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.gvRules)).BeginInit(); - this.panelRcon.SuspendLayout(); - this.controlContainer3.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.txtRconPort.Properties)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.txtRconConsole.Properties)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.txtRconCommand.Properties)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.txtRconPassword.Properties)).BeginInit(); this.panelServerList.SuspendLayout(); this.controlContainer1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.cbRefreshSelectedServer.Properties)).BeginInit(); @@ -206,6 +213,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.panelTopFill)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.panelAdvancedOptions)).BeginInit(); this.panelAdvancedOptions.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.cbFavServersOnTop.Properties)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.txtGameServer.Properties)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.rbAddressGamePort.Properties)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.rbAddressQueryPort.Properties)).BeginInit(); @@ -385,7 +393,8 @@ private void InitializeComponent() this.gcServers.MainView = this.gvServers; this.gcServers.Name = "gcServers"; this.gcServers.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { - this.riCountryFlagEdit}); + this.riCountryFlagEdit, + this.riFavServer}); this.gcServers.Size = new System.Drawing.Size(1095, 358); this.gcServers.TabIndex = 0; this.gcServers.ToolTipController = this.toolTipController; @@ -400,6 +409,7 @@ private void InitializeComponent() // this.gvServers.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { this.colLocation, + this.colFavServer, this.colEndPoint, this.colName, this.colDedicated, @@ -424,6 +434,7 @@ private void InitializeComponent() this.gvServers.OptionsView.ShowIndicator = false; this.gvServers.SortInfo.AddRange(new DevExpress.XtraGrid.Columns.GridColumnSortInfo[] { new DevExpress.XtraGrid.Columns.GridColumnSortInfo(this.colPlayerCount, DevExpress.Data.ColumnSortOrder.Descending)}); + this.gvServers.StartSorting += new System.EventHandler(this.gvServers_StartSorting); this.gvServers.FocusedRowChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventHandler(this.gvServers_FocusedRowChanged); this.gvServers.ColumnFilterChanged += new System.EventHandler(this.gvServers_ColumnFilterChanged); this.gvServers.CustomUnboundColumnData += new DevExpress.XtraGrid.Views.Base.CustomColumnDataEventHandler(this.gvServers_CustomUnboundColumnData); @@ -440,7 +451,7 @@ private void InitializeComponent() this.colLocation.OptionsColumn.AllowEdit = false; this.colLocation.ToolTip = "Country"; this.colLocation.Visible = true; - this.colLocation.VisibleIndex = 0; + this.colLocation.VisibleIndex = 1; this.colLocation.Width = 49; // // riCountryFlagEdit @@ -695,6 +706,44 @@ private void InitializeComponent() this.imgFlags.Images.SetKeyName(239, "zm.png"); this.imgFlags.Images.SetKeyName(240, "zw.png"); // + // colFavServer + // + this.colFavServer.Caption = "Favorite"; + this.colFavServer.ColumnEdit = this.riFavServer; + this.colFavServer.FieldName = "IsFavorite"; + this.colFavServer.Name = "colFavServer"; + this.colFavServer.SortMode = DevExpress.XtraGrid.ColumnSortMode.Value; + this.colFavServer.ToolTip = "Favorite Server"; + this.colFavServer.UnboundType = DevExpress.Data.UnboundColumnType.Boolean; + this.colFavServer.Visible = true; + this.colFavServer.VisibleIndex = 0; + this.colFavServer.Width = 22; + // + // riFavServer + // + this.riFavServer.AutoHeight = false; + this.riFavServer.CheckStyle = DevExpress.XtraEditors.Controls.CheckStyles.UserDefined; + this.riFavServer.ImageIndexChecked = 3; + this.riFavServer.ImageIndexGrayed = 10; + this.riFavServer.Images = this.imageCollection; + this.riFavServer.Name = "riFavServer"; + this.riFavServer.EditValueChanged += new System.EventHandler(this.riFavServer_EditValueChanged); + // + // imageCollection + // + this.imageCollection.ImageStream = ((DevExpress.Utils.ImageCollectionStreamer)(resources.GetObject("imageCollection.ImageStream"))); + this.imageCollection.Images.SetKeyName(0, "0005.png"); + this.imageCollection.Images.SetKeyName(1, "001.png"); + this.imageCollection.Images.SetKeyName(2, "002.png"); + this.imageCollection.Images.SetKeyName(3, "003.png"); + this.imageCollection.Images.SetKeyName(4, "004.png"); + this.imageCollection.Images.SetKeyName(5, "005.png"); + this.imageCollection.Images.SetKeyName(6, "006.png"); + this.imageCollection.Images.SetKeyName(7, "007.png"); + this.imageCollection.Images.SetKeyName(8, "008.png"); + this.imageCollection.Images.SetKeyName(9, "009.png"); + this.imageCollection.Images.SetKeyName(10, "010.png"); + // // colEndPoint // this.colEndPoint.Caption = "Address"; @@ -703,7 +752,7 @@ private void InitializeComponent() this.colEndPoint.OptionsColumn.ReadOnly = true; this.colEndPoint.UnboundType = DevExpress.Data.UnboundColumnType.String; this.colEndPoint.Visible = true; - this.colEndPoint.VisibleIndex = 1; + this.colEndPoint.VisibleIndex = 2; this.colEndPoint.Width = 132; // // colName @@ -714,7 +763,7 @@ private void InitializeComponent() this.colName.OptionsColumn.ReadOnly = true; this.colName.UnboundType = DevExpress.Data.UnboundColumnType.String; this.colName.Visible = true; - this.colName.VisibleIndex = 2; + this.colName.VisibleIndex = 3; this.colName.Width = 260; // // colDedicated @@ -725,7 +774,7 @@ private void InitializeComponent() this.colDedicated.ToolTip = "Dedicated"; this.colDedicated.UnboundType = DevExpress.Data.UnboundColumnType.Boolean; this.colDedicated.Visible = true; - this.colDedicated.VisibleIndex = 3; + this.colDedicated.VisibleIndex = 4; this.colDedicated.Width = 35; // // colPrivate @@ -736,7 +785,7 @@ private void InitializeComponent() this.colPrivate.Name = "colPrivate"; this.colPrivate.OptionsColumn.AllowEdit = false; this.colPrivate.Visible = true; - this.colPrivate.VisibleIndex = 4; + this.colPrivate.VisibleIndex = 5; this.colPrivate.Width = 45; // // colDescription @@ -746,7 +795,7 @@ private void InitializeComponent() this.colDescription.Name = "colDescription"; this.colDescription.OptionsColumn.AllowEdit = false; this.colDescription.Visible = true; - this.colDescription.VisibleIndex = 5; + this.colDescription.VisibleIndex = 6; this.colDescription.Width = 101; // // colTags @@ -756,7 +805,7 @@ private void InitializeComponent() this.colTags.Name = "colTags"; this.colTags.OptionsColumn.AllowEdit = false; this.colTags.Visible = true; - this.colTags.VisibleIndex = 6; + this.colTags.VisibleIndex = 7; this.colTags.Width = 127; // // colPlayerCount @@ -767,7 +816,7 @@ private void InitializeComponent() this.colPlayerCount.OptionsColumn.AllowEdit = false; this.colPlayerCount.SortMode = DevExpress.XtraGrid.ColumnSortMode.Value; this.colPlayerCount.Visible = true; - this.colPlayerCount.VisibleIndex = 7; + this.colPlayerCount.VisibleIndex = 8; // // colHumanPlayers // @@ -777,7 +826,7 @@ private void InitializeComponent() this.colHumanPlayers.OptionsColumn.AllowEdit = false; this.colHumanPlayers.ToolTip = "Human Players"; this.colHumanPlayers.Visible = true; - this.colHumanPlayers.VisibleIndex = 8; + this.colHumanPlayers.VisibleIndex = 9; this.colHumanPlayers.Width = 30; // // colBots @@ -787,7 +836,7 @@ private void InitializeComponent() this.colBots.Name = "colBots"; this.colBots.OptionsColumn.AllowEdit = false; this.colBots.Visible = true; - this.colBots.VisibleIndex = 9; + this.colBots.VisibleIndex = 10; this.colBots.Width = 30; // // colTotalPlayers @@ -798,7 +847,7 @@ private void InitializeComponent() this.colTotalPlayers.OptionsColumn.AllowEdit = false; this.colTotalPlayers.ToolTip = "Total Players (Humans + Bots)"; this.colTotalPlayers.Visible = true; - this.colTotalPlayers.VisibleIndex = 10; + this.colTotalPlayers.VisibleIndex = 11; this.colTotalPlayers.Width = 30; // // colMaxPlayers @@ -809,7 +858,7 @@ private void InitializeComponent() this.colMaxPlayers.OptionsColumn.AllowEdit = false; this.colMaxPlayers.ToolTip = "Maximum Players"; this.colMaxPlayers.Visible = true; - this.colMaxPlayers.VisibleIndex = 11; + this.colMaxPlayers.VisibleIndex = 12; this.colMaxPlayers.Width = 30; // // colMap @@ -819,7 +868,7 @@ private void InitializeComponent() this.colMap.Name = "colMap"; this.colMap.OptionsColumn.AllowEdit = false; this.colMap.Visible = true; - this.colMap.VisibleIndex = 12; + this.colMap.VisibleIndex = 13; this.colMap.Width = 110; // // colPing @@ -831,7 +880,7 @@ private void InitializeComponent() this.colPing.Name = "colPing"; this.colPing.OptionsColumn.AllowEdit = false; this.colPing.Visible = true; - this.colPing.VisibleIndex = 13; + this.colPing.VisibleIndex = 14; this.colPing.Width = 32; // // colStatus @@ -841,7 +890,7 @@ private void InitializeComponent() this.colStatus.Name = "colStatus"; this.colStatus.OptionsColumn.AllowEdit = false; this.colStatus.Visible = true; - this.colStatus.VisibleIndex = 14; + this.colStatus.VisibleIndex = 15; this.colStatus.Width = 61; // // toolTipController @@ -872,6 +921,62 @@ private void InitializeComponent() "DevExpress.XtraEditors.PanelControl"}); this.dockManager1.StartDocking += new DevExpress.XtraBars.Docking.DockPanelCancelEventHandler(this.dockManager1_StartDocking); // + // panelRcon + // + this.panelRcon.Controls.Add(this.controlContainer3); + this.panelRcon.Dock = DevExpress.XtraBars.Docking.DockingStyle.Bottom; + this.panelRcon.ID = new System.Guid("7b6df7b6-b112-4685-a1f4-c23ae548835f"); + this.panelRcon.Location = new System.Drawing.Point(0, 648); + this.panelRcon.Name = "panelRcon"; + this.panelRcon.OriginalSize = new System.Drawing.Size(200, 136); + this.panelRcon.SavedDock = DevExpress.XtraBars.Docking.DockingStyle.Bottom; + this.panelRcon.SavedIndex = 1; + this.panelRcon.Size = new System.Drawing.Size(1103, 136); + this.panelRcon.Text = "Remote Console"; + this.panelRcon.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; + // + // controlContainer3 + // + this.controlContainer3.Controls.Add(this.labelControl13); + this.controlContainer3.Controls.Add(this.labelControl15); + this.controlContainer3.Controls.Add(this.txtRconPort); + this.controlContainer3.Controls.Add(this.txtRconConsole); + this.controlContainer3.Controls.Add(this.txtRconCommand); + this.controlContainer3.Controls.Add(this.labelControl14); + this.controlContainer3.Controls.Add(this.txtRconPassword); + this.controlContainer3.Location = new System.Drawing.Point(4, 23); + this.controlContainer3.Name = "controlContainer3"; + this.controlContainer3.Size = new System.Drawing.Size(1095, 109); + this.controlContainer3.TabIndex = 0; + // + // labelControl13 + // + this.labelControl13.Location = new System.Drawing.Point(4, 6); + this.labelControl13.Name = "labelControl13"; + this.labelControl13.Size = new System.Drawing.Size(24, 13); + this.labelControl13.TabIndex = 0; + this.labelControl13.Text = "Port:"; + // + // labelControl15 + // + this.labelControl15.Location = new System.Drawing.Point(406, 6); + this.labelControl15.Name = "labelControl15"; + this.labelControl15.Size = new System.Drawing.Size(51, 13); + this.labelControl15.TabIndex = 4; + this.labelControl15.Text = "Command:"; + // + // txtRconPort + // + this.txtRconPort.Location = new System.Drawing.Point(49, 3); + this.txtRconPort.MenuManager = this.barManager1; + this.txtRconPort.Name = "txtRconPort"; + this.txtRconPort.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { + new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Delete)}); + this.txtRconPort.Properties.Mask.EditMask = "\\d+"; + this.txtRconPort.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.RegEx; + this.txtRconPort.Size = new System.Drawing.Size(83, 20); + this.txtRconPort.TabIndex = 1; + // // barManager1 // this.barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] { @@ -894,8 +999,10 @@ private void InitializeComponent() this.miCopyAddress, this.miReloadServers, this.miAddRulesColumnText, - this.miAddRulesColumnNumeric}); - this.barManager1.MaxItemId = 7; + this.miAddRulesColumnNumeric, + this.barButtonItem1, + this.miFavServer}); + this.barManager1.MaxItemId = 9; // // barMenu // @@ -949,19 +1056,6 @@ private void InitializeComponent() this.barDockControlRight.Location = new System.Drawing.Point(1465, 31); this.barDockControlRight.Size = new System.Drawing.Size(0, 777); // - // imageCollection - // - this.imageCollection.ImageStream = ((DevExpress.Utils.ImageCollectionStreamer)(resources.GetObject("imageCollection.ImageStream"))); - this.imageCollection.Images.SetKeyName(0, "000.png"); - this.imageCollection.Images.SetKeyName(1, "001.png"); - this.imageCollection.Images.SetKeyName(2, "002.png"); - this.imageCollection.Images.SetKeyName(3, "003.png"); - this.imageCollection.Images.SetKeyName(4, "004.png"); - this.imageCollection.Images.SetKeyName(5, "005.png"); - this.imageCollection.Images.SetKeyName(6, "006.png"); - this.imageCollection.Images.SetKeyName(7, "007.png"); - this.imageCollection.Images.SetKeyName(8, "008.png"); - // // miUpdateServerInfo // this.miUpdateServerInfo.Caption = "Update Information"; @@ -1011,6 +1105,64 @@ private void InitializeComponent() this.miAddRulesColumnNumeric.Name = "miAddRulesColumnNumeric"; this.miAddRulesColumnNumeric.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miAddRulesColumnNumeric_ItemClick); // + // barButtonItem1 + // + this.barButtonItem1.Caption = "barButtonItem1"; + this.barButtonItem1.Id = 7; + this.barButtonItem1.Name = "barButtonItem1"; + // + // miFavServer + // + this.miFavServer.ButtonStyle = DevExpress.XtraBars.BarButtonStyle.Check; + this.miFavServer.Caption = "Favorite Server"; + this.miFavServer.Id = 8; + this.miFavServer.ImageIndex = 3; + this.miFavServer.Name = "miFavServer"; + this.miFavServer.DownChanged += new DevExpress.XtraBars.ItemClickEventHandler(this.miFavServer_DownChanged); + // + // txtRconConsole + // + this.txtRconConsole.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtRconConsole.Location = new System.Drawing.Point(-2, 26); + this.txtRconConsole.MenuManager = this.barManager1; + this.txtRconConsole.Name = "txtRconConsole"; + this.txtRconConsole.Properties.ReadOnly = true; + this.txtRconConsole.Size = new System.Drawing.Size(1094, 81); + this.txtRconConsole.TabIndex = 6; + // + // txtRconCommand + // + this.txtRconCommand.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtRconCommand.Location = new System.Drawing.Point(481, 3); + this.txtRconCommand.MenuManager = this.barManager1; + this.txtRconCommand.Name = "txtRconCommand"; + this.txtRconCommand.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { + new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Delete)}); + this.txtRconCommand.Size = new System.Drawing.Size(611, 20); + this.txtRconCommand.TabIndex = 5; + this.txtRconCommand.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtRconCommand_KeyDown); + // + // labelControl14 + // + this.labelControl14.Location = new System.Drawing.Point(161, 6); + this.labelControl14.Name = "labelControl14"; + this.labelControl14.Size = new System.Drawing.Size(50, 13); + this.labelControl14.TabIndex = 2; + this.labelControl14.Text = "Password:"; + // + // txtRconPassword + // + this.txtRconPassword.Location = new System.Drawing.Point(230, 3); + this.txtRconPassword.MenuManager = this.barManager1; + this.txtRconPassword.Name = "txtRconPassword"; + this.txtRconPassword.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { + new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Delete)}); + this.txtRconPassword.Size = new System.Drawing.Size(143, 20); + this.txtRconPassword.TabIndex = 3; + // // panelContainer1 // this.panelContainer1.ActiveChild = this.panelPlayers; @@ -1134,105 +1286,6 @@ private void InitializeComponent() this.gridColumn2.VisibleIndex = 1; this.gridColumn2.Width = 150; // - // panelRcon - // - this.panelRcon.Controls.Add(this.controlContainer3); - this.panelRcon.Dock = DevExpress.XtraBars.Docking.DockingStyle.Bottom; - this.panelRcon.ID = new System.Guid("7b6df7b6-b112-4685-a1f4-c23ae548835f"); - this.panelRcon.Location = new System.Drawing.Point(0, 648); - this.panelRcon.Name = "panelRcon"; - this.panelRcon.OriginalSize = new System.Drawing.Size(200, 136); - this.panelRcon.SavedDock = DevExpress.XtraBars.Docking.DockingStyle.Bottom; - this.panelRcon.SavedIndex = 1; - this.panelRcon.Size = new System.Drawing.Size(1103, 136); - this.panelRcon.Text = "Remote Console"; - this.panelRcon.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - // - // controlContainer3 - // - this.controlContainer3.Controls.Add(this.labelControl13); - this.controlContainer3.Controls.Add(this.labelControl15); - this.controlContainer3.Controls.Add(this.txtRconPort); - this.controlContainer3.Controls.Add(this.txtRconConsole); - this.controlContainer3.Controls.Add(this.txtRconCommand); - this.controlContainer3.Controls.Add(this.labelControl14); - this.controlContainer3.Controls.Add(this.txtRconPassword); - this.controlContainer3.Location = new System.Drawing.Point(4, 23); - this.controlContainer3.Name = "controlContainer3"; - this.controlContainer3.Size = new System.Drawing.Size(1095, 109); - this.controlContainer3.TabIndex = 0; - // - // labelControl13 - // - this.labelControl13.Location = new System.Drawing.Point(4, 6); - this.labelControl13.Name = "labelControl13"; - this.labelControl13.Size = new System.Drawing.Size(24, 13); - this.labelControl13.TabIndex = 0; - this.labelControl13.Text = "Port:"; - // - // labelControl15 - // - this.labelControl15.Location = new System.Drawing.Point(406, 6); - this.labelControl15.Name = "labelControl15"; - this.labelControl15.Size = new System.Drawing.Size(51, 13); - this.labelControl15.TabIndex = 4; - this.labelControl15.Text = "Command:"; - // - // txtRconPort - // - this.txtRconPort.Location = new System.Drawing.Point(49, 3); - this.txtRconPort.MenuManager = this.barManager1; - this.txtRconPort.Name = "txtRconPort"; - this.txtRconPort.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { - new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Delete)}); - this.txtRconPort.Properties.Mask.EditMask = "\\d+"; - this.txtRconPort.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.RegEx; - this.txtRconPort.Size = new System.Drawing.Size(83, 20); - this.txtRconPort.TabIndex = 1; - // - // txtRconConsole - // - this.txtRconConsole.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.txtRconConsole.Location = new System.Drawing.Point(-2, 26); - this.txtRconConsole.MenuManager = this.barManager1; - this.txtRconConsole.Name = "txtRconConsole"; - this.txtRconConsole.Properties.ReadOnly = true; - this.txtRconConsole.Size = new System.Drawing.Size(1094, 81); - this.txtRconConsole.TabIndex = 6; - // - // txtRconCommand - // - this.txtRconCommand.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.txtRconCommand.Location = new System.Drawing.Point(481, 3); - this.txtRconCommand.MenuManager = this.barManager1; - this.txtRconCommand.Name = "txtRconCommand"; - this.txtRconCommand.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { - new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Delete)}); - this.txtRconCommand.Size = new System.Drawing.Size(611, 20); - this.txtRconCommand.TabIndex = 5; - this.txtRconCommand.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtRconCommand_KeyDown); - // - // labelControl14 - // - this.labelControl14.Location = new System.Drawing.Point(161, 6); - this.labelControl14.Name = "labelControl14"; - this.labelControl14.Size = new System.Drawing.Size(50, 13); - this.labelControl14.TabIndex = 2; - this.labelControl14.Text = "Password:"; - // - // txtRconPassword - // - this.txtRconPassword.Location = new System.Drawing.Point(230, 3); - this.txtRconPassword.MenuManager = this.barManager1; - this.txtRconPassword.Name = "txtRconPassword"; - this.txtRconPassword.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { - new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Delete)}); - this.txtRconPassword.Size = new System.Drawing.Size(143, 20); - this.txtRconPassword.TabIndex = 3; - // // panelServerList // this.panelServerList.Controls.Add(this.controlContainer1); @@ -1261,7 +1314,7 @@ private void InitializeComponent() // // btnSkin // - this.btnSkin.Location = new System.Drawing.Point(514, 5); + this.btnSkin.Location = new System.Drawing.Point(369, 54); this.btnSkin.Name = "btnSkin"; this.btnSkin.Size = new System.Drawing.Size(115, 25); this.btnSkin.TabIndex = 12; @@ -1288,13 +1341,14 @@ private void InitializeComponent() // // btnQueryMaster // - this.btnQueryMaster.ImageIndex = 1; + this.btnQueryMaster.ImageIndex = 0; this.btnQueryMaster.ImageList = this.imageCollection; - this.btnQueryMaster.Location = new System.Drawing.Point(939, 54); + this.btnQueryMaster.Location = new System.Drawing.Point(1071, 13); this.btnQueryMaster.Name = "btnQueryMaster"; this.btnQueryMaster.Size = new System.Drawing.Size(115, 25); this.btnQueryMaster.TabIndex = 20; - this.btnQueryMaster.Text = "Reload Servers"; + this.btnQueryMaster.Text = "Find Servers"; + this.btnQueryMaster.ToolTip = "Get new server list from Valve master server"; this.btnQueryMaster.Click += new System.EventHandler(this.btnQueryMaster_Click); // // panelTop @@ -1322,6 +1376,7 @@ private void InitializeComponent() // panelOptions // this.panelOptions.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.panelOptions.Controls.Add(this.btnQuickRefresh); this.panelOptions.Controls.Add(this.rbFavGame4); this.panelOptions.Controls.Add(this.txtMod); this.panelOptions.Controls.Add(this.labelControl12); @@ -1351,6 +1406,18 @@ private void InitializeComponent() this.panelOptions.Size = new System.Drawing.Size(1460, 83); this.panelOptions.TabIndex = 0; // + // btnQuickRefresh + // + this.btnQuickRefresh.ImageIndex = 1; + this.btnQuickRefresh.ImageList = this.imageCollection; + this.btnQuickRefresh.Location = new System.Drawing.Point(1071, 54); + this.btnQuickRefresh.Name = "btnQuickRefresh"; + this.btnQuickRefresh.Size = new System.Drawing.Size(115, 25); + this.btnQuickRefresh.TabIndex = 22; + this.btnQuickRefresh.Text = "Quick Refresh"; + this.btnQuickRefresh.ToolTip = "Update status of the servers in the current list"; + this.btnQuickRefresh.Click += new System.EventHandler(this.btnQuickRefresh_Click); + // // rbFavGame4 // this.rbFavGame4.Location = new System.Drawing.Point(343, 57); @@ -1440,7 +1507,7 @@ private void InitializeComponent() // this.cbAdvancedOptions.ImageIndex = 4; this.cbAdvancedOptions.ImageList = this.imageCollection; - this.cbAdvancedOptions.Location = new System.Drawing.Point(1070, 54); + this.cbAdvancedOptions.Location = new System.Drawing.Point(939, 54); this.cbAdvancedOptions.Name = "cbAdvancedOptions"; this.cbAdvancedOptions.Size = new System.Drawing.Size(115, 25); this.cbAdvancedOptions.TabIndex = 21; @@ -1560,6 +1627,7 @@ private void InitializeComponent() // // panelAdvancedOptions // + this.panelAdvancedOptions.Controls.Add(this.cbFavServersOnTop); this.panelAdvancedOptions.Controls.Add(this.txtGameServer); this.panelAdvancedOptions.Controls.Add(this.rbAddressGamePort); this.panelAdvancedOptions.Controls.Add(this.rbAddressQueryPort); @@ -1580,9 +1648,19 @@ private void InitializeComponent() this.panelAdvancedOptions.TabIndex = 1; this.panelAdvancedOptions.Visible = false; // + // cbFavServersOnTop + // + this.cbFavServersOnTop.Location = new System.Drawing.Point(369, 28); + this.cbFavServersOnTop.Name = "cbFavServersOnTop"; + this.cbFavServersOnTop.Properties.AutoWidth = true; + this.cbFavServersOnTop.Properties.Caption = "Keep favorite servers on top"; + this.cbFavServersOnTop.Size = new System.Drawing.Size(160, 19); + this.cbFavServersOnTop.TabIndex = 16; + this.cbFavServersOnTop.CheckedChanged += new System.EventHandler(this.cbFavServersOnTop_CheckedChanged); + // // txtGameServer // - this.txtGameServer.Location = new System.Drawing.Point(445, 50); + this.txtGameServer.Location = new System.Drawing.Point(445, 6); this.txtGameServer.MenuManager = this.barManager1; this.txtGameServer.Name = "txtGameServer"; this.txtGameServer.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { @@ -1620,7 +1698,7 @@ private void InitializeComponent() // // labelControl6 // - this.labelControl6.Location = new System.Drawing.Point(369, 53); + this.labelControl6.Location = new System.Drawing.Point(369, 9); this.labelControl6.Name = "labelControl6"; this.labelControl6.Size = new System.Drawing.Size(65, 13); this.labelControl6.TabIndex = 8; @@ -1714,7 +1792,8 @@ private void InitializeComponent() new DevExpress.XtraBars.LinkPersistInfo(this.miUpdateServerInfo), new DevExpress.XtraBars.LinkPersistInfo(this.miConnect), new DevExpress.XtraBars.LinkPersistInfo(this.miConnectSpectator), - new DevExpress.XtraBars.LinkPersistInfo(this.miCopyAddress, true)}); + new DevExpress.XtraBars.LinkPersistInfo(this.miCopyAddress, true), + new DevExpress.XtraBars.LinkPersistInfo(this.miFavServer)}); this.menuServers.Manager = this.barManager1; this.menuServers.Name = "menuServers"; // @@ -1776,9 +1855,17 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.gvServers)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.riCountryFlagEdit)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.imgFlags)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.riFavServer)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.imageCollection)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dockManager1)).EndInit(); + this.panelRcon.ResumeLayout(false); + this.controlContainer3.ResumeLayout(false); + this.controlContainer3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.txtRconPort.Properties)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.barManager1)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.imageCollection)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.txtRconConsole.Properties)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.txtRconCommand.Properties)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.txtRconPassword.Properties)).EndInit(); this.panelContainer1.ResumeLayout(false); this.panelPlayers.ResumeLayout(false); this.dockPanel1_Container.ResumeLayout(false); @@ -1789,13 +1876,6 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.gcRules)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dsRules)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.gvRules)).EndInit(); - this.panelRcon.ResumeLayout(false); - this.controlContainer3.ResumeLayout(false); - this.controlContainer3.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.txtRconPort.Properties)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.txtRconConsole.Properties)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.txtRconCommand.Properties)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.txtRconPassword.Properties)).EndInit(); this.panelServerList.ResumeLayout(false); this.controlContainer1.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.cbRefreshSelectedServer.Properties)).EndInit(); @@ -1819,6 +1899,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.panelAdvancedOptions)).EndInit(); this.panelAdvancedOptions.ResumeLayout(false); this.panelAdvancedOptions.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.cbFavServersOnTop.Properties)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.txtGameServer.Properties)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.rbAddressGamePort.Properties)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.rbAddressQueryPort.Properties)).EndInit(); @@ -1955,6 +2036,12 @@ private void InitializeComponent() protected ButtonEdit txtRconPassword; protected LabelControl labelControl13; protected ButtonEdit txtRconPort; + private DevExpress.XtraGrid.Columns.GridColumn colFavServer; + private DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit riFavServer; + private DevExpress.XtraBars.BarButtonItem barButtonItem1; + private DevExpress.XtraBars.BarButtonItem miFavServer; + protected SimpleButton btnQuickRefresh; + protected CheckEdit cbFavServersOnTop; diff --git a/ServerBrowser/ServerBrowserForm.cs b/ServerBrowser/ServerBrowserForm.cs index b0ba5dc..ca0f942 100644 --- a/ServerBrowser/ServerBrowserForm.cs +++ b/ServerBrowser/ServerBrowserForm.cs @@ -7,6 +7,7 @@ using System.Media; using System.Net; using System.Reflection; +using System.Text; using System.Threading; using System.Windows.Forms; using DevExpress.Data; @@ -16,7 +17,6 @@ using DevExpress.XtraBars.Docking; using DevExpress.XtraEditors; using DevExpress.XtraEditors.Controls; -using DevExpress.XtraGrid; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Base; using DevExpress.XtraGrid.Views.Grid; @@ -60,6 +60,7 @@ public partial class ServerBrowserForm : XtraForm private ServerRow currentServer; private IServerSource serverSource; private int geoIpModified; + private readonly HashSet favServers = new HashSet(); #region ctor() public ServerBrowserForm() @@ -150,6 +151,15 @@ protected virtual void SaveAppSettings() Properties.Settings.Default.RefreshInterval = Convert.ToInt32(this.spinRefreshInterval.EditValue); Properties.Settings.Default.RefreshSelected = this.cbRefreshSelectedServer.Checked; + var sb = new StringBuilder(); + foreach (var fav in this.favServers) + { + if (sb.Length > 0) sb.Append(","); + sb.Append(fav); + } + Properties.Settings.Default.FavServers = sb.ToString(); + Properties.Settings.Default.KeepFavServersOnTop = this.cbFavServersOnTop.Checked; + Properties.Settings.Default.Save(); } #endregion @@ -267,6 +277,15 @@ protected virtual void InitAppSettings() this.txtTagExclude.Text = Properties.Settings.Default.TagsExclude; this.txtMod.Text = Properties.Settings.Default.FilterMod; this.txtMap.Text = Properties.Settings.Default.FilterMap; + + // load favorite servers + foreach (var server in Properties.Settings.Default.FavServers.Split(',')) + { + if (server == "") continue; + var parts = server.Split(':'); + this.favServers.Add(new IPEndPoint(IPAddress.Parse(parts[0]), int.Parse(parts[1]))); + } + this.cbFavServersOnTop.Checked = Properties.Settings.Default.KeepFavServersOnTop; } #endregion @@ -780,6 +799,17 @@ private void btnQueryMaster_Click(object sender, EventArgs e) } #endregion + #region btnQuickRefresh_Click + private void btnQuickRefresh_Click(object sender, EventArgs e) + { + if (this.queryLogic.IsUpdating) + return; + this.timerReloadServers.Stop(); + this.queryLogic.RefreshAllServers(this.servers); + this.timerReloadServers.Start(); + } + #endregion + #region linkFilter_HyperlinkClick private void linkFilter_HyperlinkClick(object sender, HyperlinkClickEventArgs e) { @@ -897,6 +927,17 @@ private void btnSkin_Click(object sender, EventArgs e) } #endregion + #region cbFavServersOnTop_CheckedChanged + private void cbFavServersOnTop_CheckedChanged(object sender, EventArgs e) + { + this.gvServers.BeginSort(); + if (this.cbFavServersOnTop.Checked) + gvServers_StartSorting(null, null); + else + this.colFavServer.SortOrder = ColumnSortOrder.None; + this.gvServers.EndSort(); + } + #endregion // Servers grid @@ -927,20 +968,36 @@ private void timerUpdateServerList_Tick(object sender, EventArgs e) #endregion #region gvServers_CustomUnboundColumnData - private void gvServers_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) + private void gvServers_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e) { - if (!e.IsGetData) return; + if (e.IsSetData) + { + if (e.Column == this.colFavServer) + { + var server = (ServerRow) e.Row; + if ((bool) e.Value) + this.favServers.Add(server.EndPoint); + else + this.favServers.Remove(server.EndPoint); + } + return; + } + var row = (ServerRow) e.Row; - if (e.Column == this.colEndPoint) + if (e.Column == this.colFavServer) + e.Value = this.favServers.Contains(row.EndPoint); + else if (e.Column == this.colEndPoint) e.Value = GetServerAddress(row); else if (e.Column == this.colName) - e.Value = row.ServerInfo == null ? (showAddressMode == 0 ? GetServerAddress(row) : null) : row.ServerInfo.Name; + e.Value = row.ServerInfo == null ? (showAddressMode == 0 ? GetServerAddress(row) : null) : row.ServerInfo.Name.Trim(); else if (e.Column.FieldName.StartsWith(CustomNumericRuleColumnPrefix)) { var fieldName = e.Column.FieldName.Substring(CustomNumericRuleColumnPrefix.Length); e.Value = row.GetExtenderCellValue(fieldName); try { e.Value = Convert.ToDecimal(e.Value); } - catch { } + catch + { + } } else e.Value = row.GetExtenderCellValue(e.Column.FieldName); @@ -979,7 +1036,7 @@ private void toolTipController_GetActiveObjectInfo(object sender, ToolTipControl #endregion #region gvServers_FocusedRowChanged - private void gvServers_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) + private void gvServers_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e) { try { @@ -1042,6 +1099,19 @@ private void gvServers_MouseDown(object sender, MouseEventArgs e) } #endregion + #region gvServers_StartSorting + private void gvServers_StartSorting(object sender, EventArgs e) + { + if (this.cbFavServersOnTop.Checked) + { + if (this.gvServers.SortInfo[this.colFavServer] == null) + this.gvServers.SortInfo.Insert(0, this.colFavServer, ColumnSortOrder.Descending); + this.colFavServer.SortOrder = ColumnSortOrder.Descending; + this.colFavServer.SortIndex = 0; + } + } + #endregion + #region miUpdateServerInfo_ItemClick private void miUpdateServerInfo_ItemClick(object sender, ItemClickEventArgs e) { @@ -1071,13 +1141,33 @@ private void miCopyAddress_ItemClick(object sender, ItemClickEventArgs e) } #endregion + #region riFavServer_EditValueChanged + private void riFavServer_EditValueChanged(object sender, EventArgs e) + { + this.gvServers.PostEditor(); + } + #endregion + + #region miFavServer_DownChanged + private void miFavServer_DownChanged(object sender, ItemClickEventArgs e) + { + var row = (ServerRow)this.gvServers.GetFocusedRow(); + if (row == null) return; + if (this.miFavServer.Down) + this.favServers.Add(row.EndPoint); + else + this.favServers.Remove(row.EndPoint); + this.gvServers.RefreshRow(this.gvServers.FocusedRowHandle); + } + #endregion + // Players grid #region gvPlayers_CustomUnboundColumnData - private void gvPlayers_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) + private void gvPlayers_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e) { if (!e.IsGetData) return; - var server = (ServerRow)this.gvServers.GetFocusedRow(); + var server = (ServerRow) this.gvServers.GetFocusedRow(); var player = (Player) e.Row; if (server != null && player != null) e.Value = server.GameExtension.GetPlayerCellValue(server, player, e.Column.FieldName); @@ -1198,5 +1288,6 @@ private void SendRconCommand(ServerRow row, int port, string pass, string text) if (row.GameExtension != null) row.GameExtension.Rcon(row, port, pass, text); } + } } \ No newline at end of file diff --git a/ServerBrowser/ServerBrowserForm.resx b/ServerBrowser/ServerBrowserForm.resx index 7a11ba6..07a3515 100644 --- a/ServerBrowser/ServerBrowserForm.resx +++ b/ServerBrowser/ServerBrowserForm.resx @@ -3808,18 +3808,6 @@ 4ClskjT9C1o4e2dU+Eg0AAAAAElFTkSuQmCCCw== - - 369, 56 - - - 142, 17 - - - 475, 17 - - - 17, 17 - 17, 56 @@ -3831,90 +3819,126 @@ a2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAAChEZXZFeHByZXNzLlV0aWxzLkltYWdlQ29sbGVjdGlvblN0 cmVhbWVyAgAAAAlJbWFnZVNpemUERGF0YQQHE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAAgIAAAAF/P// /xNTeXN0ZW0uRHJhd2luZy5TaXplAgAAAAV3aWR0aAZoZWlnaHQAAAgIAwAAABAAAAAQAAAACQUAAAAP - BQAAAPcSAAACTgEAAIlQTkcNChoKAAAADUlIRFIAAAAQAAAAEAgGAAAAH/P/YQAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRy - oQAAAMpJREFUOE+lkr0OwiAQgGlro5tRF03cfNE+ZSemDnTqxMIE3p13zRVJDJXk4+B+vjQNJsbYpJRK - 9MABaBV4PwMnvjcGtg4PjDTiGWuI1HRuzZthGNJeYHUk2LN4rv1X0JMghFANCx4k8N5Xw4I7CZZlqYYF - n584z/MG59xXLmcjmKapmo3gF9ZaIs+TADZ5eRI1HTaO40jw0AXzwBNj/lRLXEXCAsytz1kEaJRzKfY4 - rARrXZokoYckivxY+AJDBb7cOOZCzQtQtWTeF24184AzFQ0AAAAASUVORK5CYIKSAgAAiVBORw0KGgoA - AAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwwAADsMBx2+o - ZAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAACDklEQVQ4T2MgFrgXH0xgZGZl - gnJJA1ohy/hdq67/dM7fkwgVwg8cUzcJBdeey3Uvv7jcufziNufKS3vtK279d62+/tYkYpYMVBl2EFBx - ItC97Mpby/xr/01yr/03yr3+3zD/xn+jwpv/TUpu/7ctObcBqAy7V/xKj/ta5V7+o5d6/p9m3LEHWonH - r+pmXPxkWHjrv0nZ3f/mVff/29Y/+O9QfCgaqgUBzGPXClhknH6uHbFlrpJ9lTZQiA2ImVX9Z6ibV937 - b13/8L9t06P/lhUXjxkkrnEDa0IGjunb/LV8JnsAmSjOsyi/nGhdf/+PecmZTZrh8xyAQiwQGUzACKVR - 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 - rkJgggs= + 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 + g9ECzSBjSIkAAAAASUVORK5CYIIL + + 369, 56 + + + 142, 17 + + + 475, 17 + + + 17, 17 + 568, 17 diff --git a/ServerBrowser/ServerQueryLogic.cs b/ServerBrowser/ServerQueryLogic.cs index b6eaff5..ca0b44e 100644 --- a/ServerBrowser/ServerQueryLogic.cs +++ b/ServerBrowser/ServerQueryLogic.cs @@ -188,6 +188,18 @@ private void OnMasterServerReceive(UpdateRequest request, ReadOnlyCollection servers) + { + var request = new UpdateRequest(this.currentRequest.AppId, this.currentRequest.MaxResults, this.currentRequest.Timeout, this.currentRequest.GameExtension); + request.Servers.AddRange(servers); + foreach (var server in servers) + server.Status = "updating..."; + this.currentRequest.SetDataModified(); + ThreadPool.QueueUserWorkItem(ctx => this.AllServersReceived(request)); + } + #endregion + #region AllServersReceived() private void AllServersReceived(UpdateRequest request) { diff --git a/ServerBrowser/Settings.cs b/ServerBrowser/Settings.cs index bfa7c47..e1c8a33 100644 --- a/ServerBrowser/Settings.cs +++ b/ServerBrowser/Settings.cs @@ -6,7 +6,7 @@ // The PropertyChanged event is raised after a setting's value is changed. // The SettingsLoaded event is raised after the setting values are loaded. // The SettingsSaving event is raised before the setting values are saved. - internal sealed partial class Settings { + public sealed partial class Settings { public Settings() { // // To add event handlers for saving and changing settings, uncomment the lines below: diff --git a/ServerBrowser/app.config b/ServerBrowser/app.config index 93eb0ed..dd26c95 100644 --- a/ServerBrowser/app.config +++ b/ServerBrowser/app.config @@ -44,16 +44,22 @@ 0 - + - + - + - + + + + + + + False diff --git a/ServerBrowser/images/000.png b/ServerBrowser/images/000.png index 311eb82..bcf5982 100644 Binary files a/ServerBrowser/images/000.png and b/ServerBrowser/images/000.png differ diff --git a/ServerBrowser/images/009.png b/ServerBrowser/images/009.png new file mode 100644 index 0000000..311eb82 Binary files /dev/null and b/ServerBrowser/images/009.png differ diff --git a/ServerBrowser/images/010.png b/ServerBrowser/images/010.png new file mode 100644 index 0000000..d97101e Binary files /dev/null and b/ServerBrowser/images/010.png differ diff --git a/changelog.md b/changelog.md index 49ea44a..790163e 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,10 @@ +1.13 +--- +- added support to mark servers as favorites and keep them on top of the server list +- added button for "Quick Refresh" which updates the status of all servers in the current list +- renamed "Reload Servers" to "Find Servers" which should make it clearer that it loads a new server list +- removing leading/trailing spaces from server names + 1.12.2 --- - when trying to connect to a skill limited TOXIKK server, a message box informs you that this is not possible