Exemple #1
0
        /// <summary>
        /// Create content items and add to the display
        /// </summary>
        void ChangeItems()
        {
            addItems = 0;

            // add content to display.
            IGoogleDesktopDisplayPluginHelper pluginHelper =
                (IGoogleDesktopDisplayPluginHelper)this;

            GoogleDesktopContentItemDisplayOptions options;
            GameserverContentItem curItem;
            GoogleDesktopDisplayContentItemFlags itemFlags;
            IGoogleDesktopDisplayContentItemHelper itemHelper = null;

            options = GoogleDesktopContentItemDisplayOptions.GDD_ITEM_DISPLAY_IN_SIDEBAR;

            itemFlags =
                GoogleDesktopDisplayContentItemFlags.GDD_CONTENT_ITEM_FLAG_NO_REMOVE
                | GoogleDesktopDisplayContentItemFlags.GDD_CONTENT_ITEM_FLAG_SHAREABLE;

            DateTime now = DateTime.UtcNow;

            try
            {
                RegistryKey serverKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Imagine Interactive\Gameserver Panel\Servers");

                String[] servers = serverKey.GetSubKeyNames();

                if (servers.Length == 0)
                {
                    itemFlags = GoogleDesktopDisplayContentItemFlags.GDD_CONTENT_ITEM_FLAG_LEFT_ICON |
                        GoogleDesktopDisplayContentItemFlags.GDD_CONTENT_ITEM_FLAG_NO_REMOVE
                        ;

                    curItem = new GameserverContentItem();
                    itemHelper = (IGoogleDesktopDisplayContentItemHelper)curItem;

                    Rectangle r = getDisplayRect();
                    curItem.SetRect(r.X, r.Y, r.Width, r.Height*2);
                    pluginHelper.AddContentItem(curItem, options);

                    itemHelper.snippet = "MESSAGE";
                    itemHelper.heading = lang.getValue("noServer");
                    itemHelper.tooltip = lang.getValue("noServer");
                    itemHelper.source = "";
                    itemHelper.time_created = now;
                    itemHelper.flags = itemFlags;
                    itemHelper.layout = contentLayout;
                    itemHelper.open_command = this;
                }

                for (int i=0; i<servers.Length; i++)
                {
                    try
                    {
                        RegistryKey server = serverKey.OpenSubKey(servers[i]);

                        if (server.GetValue("category").ToString() != displayGroup)
                        {
                            continue;
                        }
                        int queryPort = Int32.Parse(server.GetValue("port").ToString());
                        if (server.GetValue("queryPort") != null)
                        {
                            queryPort = Int32.Parse(server.GetValue("queryPort").ToString());
                        }
                        String[] serverData = queryServer(server.GetValue("qstat").ToString(), server.GetValue("ip").ToString(), queryPort);

                        itemFlags = GoogleDesktopDisplayContentItemFlags.GDD_CONTENT_ITEM_FLAG_LEFT_ICON |
                            GoogleDesktopDisplayContentItemFlags.GDD_CONTENT_ITEM_FLAG_NO_REMOVE
                            ;

                        curItem = new GameserverContentItem();
                        itemHelper = (IGoogleDesktopDisplayContentItemHelper)curItem;

                        Rectangle r = getDisplayRect();
                        curItem.SetRect(r.X, r.Y, r.Width, r.Height);
                        pluginHelper.AddContentItem(curItem, options);

                        itemHelper.snippet = server.GetValue("game").ToString() + "|"
                            + server.GetValue("ip").ToString() + "|"
                            + server.GetValue("port").ToString() + "|"
                            + server.GetValue("qstat").ToString() + "|"
                            + server.GetValue("queryPort").ToString();

                        // do the actual setting of properties
                        if (serverData.Length > 3)
                        {
                            itemHelper.heading = serverData[2];
                            itemHelper.tooltip = serverData[2];
                            itemHelper.source = serverData[6]+","+serverData[5]+","+serverData[4];
                            itemHelper.snippet += "|"+serverData[3];
                        }
                        else
                        {
                            itemHelper.heading = server.GetValue("name").ToString();
                            itemHelper.tooltip = server.GetValue("name").ToString();
                            itemHelper.source = "0,0,0";
                        }
                        itemHelper.time_created = now;
                        itemHelper.flags = itemFlags;
                        itemHelper.layout = contentLayout;
                        itemHelper.open_command = this;

                        Bitmap bmp;
                        loadGameIcon(server.GetValue("game").ToString(), out bmp);
                        itemHelper.image = ImageConverter.ImageToIpicture(bmp);
                        bmp.Dispose();

                        addItems++;

                        server.Close();
                    }
                    catch (Exception E)
                    {
                        Log.Error("Error Adding Item for "+servers[i]+": "+E.Message);
                    }
                }

                serverKey.Close();
            }
            catch (Exception e)
            {
                Log.Error("on ChangeItems: "+e.Message);
            }

            // Replace & with && so that the next character won't be underlined _
            //if (itemHelper != null)
            //    itemHelper.heading = itemHelper.heading.Replace("&", "&&");

            // if we are in minimized mode, update the title with latest info.
            // displaySite will be null until plugin is fully initialized.
            if (displaySite != null && displaySite.display_state ==
                GoogleDesktopDisplayTileDisplayState.GDD_TILE_DISPLAY_STATE_MINIMIZED)
            {
                UpdateTitle();
            }
        }