Ejemplo n.º 1
0
        /// <summary>
        /// Returns the resized screenshot as a byte array.
        /// </summary>
        /// <param name="width">Width to resize the screenshot proportionally to, 0 to keep original</param>
        /// <returns></returns>
        public byte[] resizedScreenshot(int width)
        {
            if (Screenshot == null)
            {
                return(new byte[0]);
            }

            Image image = (width > 0) ? ImageHelper.ResizedImage(Screenshot, width) : Screenshot;

            return(ImageHelper.imageToByteArray(image, System.Drawing.Imaging.ImageFormat.Jpeg));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Add a plugin to the display list if it is active
 /// </summary>
 /// <param name="plugin"></param>
 private void addPluginToList(ItemTag plugin)
 {
     if (plugin.IsEnabled)
     {
         pluginsDataSource.Add(
             new WindowPlugin(plugin.SetupForm.PluginName(),
                              plugin.WindowId,
                              (plugin.ActiveImage != null) ? ImageHelper.imageToByteArray(plugin.ActiveImage, System.Drawing.Imaging.ImageFormat.Png)
                                                           : ImageHelper.imageToByteArray(Properties.Resources.NoPluginImage, System.Drawing.Imaging.ImageFormat.Png),
                              !ignoredPluginsList.Contains(plugin.WindowId)));
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Get all active window plugins and the corresponding window IDs.
        /// This can be used in the client to jump to a specific plugin.
        ///
        /// We are also sending the plugin icon as byte array if it exists.
        /// </summary>
        internal static ArrayList GetActiveWindowPluginsAndIDs(bool sendIcons)
        {
            // Return cached data
            if (WifiRemote.savedAndSortedPlugins != null)
            {
                return(WifiRemote.savedAndSortedPlugins);
            }

            // Init cache
            savedAndSortedPlugins = new ArrayList();

            // No cache yet, build plugin list
            ArrayList plugins       = new ArrayList();
            ArrayList sortedPlugins = new ArrayList();

            Dictionary <int, String> savedPlugins;
            List <int> ignoredPluginsList;

            using (MediaPortal.Profile.Settings reader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml")))
            {
                // Read plugin ids and convert them to int
                String[] savedPluginStrings = reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "savedPlugins", "").Split('|');
                savedPlugins = new Dictionary <int, string>();

                for (int j = 0; j + 1 < savedPluginStrings.Length; j = j + 2)
                {
                    // Add plugin id and name
                    int i;
                    if (int.TryParse(savedPluginStrings[j], out i))
                    {
                        savedPlugins.Add(i, savedPluginStrings[j + 1]);
                    }
                }

                // Read ignored plugins
                // Ignored by default:
                //     -1:
                //      0: home
                //   3005: GUITopbar
                // 730716: fanart handler
                String[] ignoredPluginsString = reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "ignoredPlugins", "-1|0|3005|730716").Split('|');
                ignoredPluginsList = new List <int>();

                foreach (String pluginId in ignoredPluginsString)
                {
                    int i;
                    if (int.TryParse(pluginId, out i))
                    {
                        ignoredPluginsList.Add(i);
                    }
                }
            }

            // Fetch all active plugins
            foreach (ISetupForm plugin in PluginManager.SetupForms)
            {
                // Plugin not hidden
                if (!ignoredPluginsList.Contains(plugin.GetWindowId()))
                {
                    if (sendIcons)
                    {
                        byte[] iconBytes = new byte[0];

                        // Load plugin icon
                        Type pluginType = plugin.GetType();
                        PluginIconsAttribute[] icons = (PluginIconsAttribute[])pluginType.GetCustomAttributes(typeof(PluginIconsAttribute), false);
                        if (icons.Length > 0)
                        {
                            string resourceName = icons[0].ActivatedResourceName;
                            if (!string.IsNullOrEmpty(resourceName))
                            {
                                System.Drawing.Image icon = null;
                                try
                                {
                                    icon = System.Drawing.Image.FromStream(pluginType.Assembly.GetManifestResourceStream(resourceName));
                                }
                                catch (Exception e)
                                {
                                    WifiRemote.LogMessage("Could not load plugin icon: " + e.Message, WifiRemote.LogType.Error);
                                }

                                if (icon != null)
                                {
                                    iconBytes = ImageHelper.imageToByteArray(icon, System.Drawing.Imaging.ImageFormat.Png);
                                }
                            }
                        }

                        plugins.Add(new WindowPlugin(plugin.PluginName(), plugin.GetWindowId(), iconBytes));
                    }
                    else
                    {
                        plugins.Add(new WindowPlugin(plugin.PluginName(), plugin.GetWindowId(), null));
                    }
                }
            }

            // Add sorted plugins
            foreach (var aSavedPlugin in savedPlugins)
            {
                // Find saved plugin with this window id
                var query = from WindowPlugin p in plugins
                            where p.WindowId == aSavedPlugin.Key
                            select p;

                // Add the first found plugin to the list
                foreach (WindowPlugin plugin in query)
                {
                    WifiRemote.savedAndSortedPlugins.Add(new WindowPlugin(aSavedPlugin.Value, aSavedPlugin.Key, plugin.Icon));
                    break;
                }
            }

            // Add rest of plugins
            foreach (WindowPlugin plugin in plugins)
            {
                if (!savedPlugins.ContainsKey(plugin.WindowId))
                {
                    WifiRemote.savedAndSortedPlugins.Add(plugin);
                }
            }

            return(WifiRemote.savedAndSortedPlugins);
        }
Ejemplo n.º 4
0
        public SetupForm()
        {
            InitializeComponent();
            labelDefaultPort.Text = String.Format("(Default: {0})", WifiRemote.DEFAULT_PORT);

            // load port from settings
            using (MediaPortal.Profile.Settings reader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml")))
            {
                originalPort = reader.GetValue(WifiRemote.PLUGIN_NAME, "port");
                checkBoxDisableBonjour.Checked = reader.GetValueAsBool(WifiRemote.PLUGIN_NAME, "disableBonjour", false);
                textBoxName.Text = reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "serviceName", WifiRemote.GetServiceName());
                checkBoxShowConnectionMessage.Checked = reader.GetValueAsBool(WifiRemote.PLUGIN_NAME, "showNotifications", false);

                txtUsername.Text = WifiRemote.DecryptString(reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "username", ""));
                txtPassword.Text = WifiRemote.DecryptString(reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "password", ""));
                txtPasscode.Text = WifiRemote.DecryptString(reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "passcode", ""));

                cbAuthMethod.SelectedIndex   = reader.GetValueAsInt(WifiRemote.PLUGIN_NAME, "auth", 0);
                numericUpDownAutologin.Value = reader.GetValueAsInt(WifiRemote.PLUGIN_NAME, "autologinTimeout", 0);



                resetPort();

                // Read plugin ids and convert them to int
                String[] savedPluginStrings = reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "savedPlugins", "").Split('|');
                savedPlugins = new Dictionary <int, string>();

                for (int j = 0; j + 1 < savedPluginStrings.Length; j = j + 2)
                {
                    // Add plugin id and name
                    int i;
                    if (int.TryParse(savedPluginStrings[j], out i))
                    {
                        try
                        {
                            savedPlugins.Add(i, savedPluginStrings[j + 1]);
                        }
                        catch (Exception e)
                        {
                            WifiRemote.LogMessage("Adding saved plugin from config failed: " + e.Message, WifiRemote.LogType.Debug);
                        }
                    }
                }

                // Read ignored plugins
                // Ignored by default:
                //     -1:
                //      0: home
                //   3005: GUITopbar
                // 730716: fanart handler
                String[] ignoredPluginsString = reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "ignoredPlugins", "-1|0|3005|730716").Split('|');
                ignoredPluginsList = new List <int>();

                foreach (String pluginId in ignoredPluginsString)
                {
                    int i;
                    if (int.TryParse(pluginId, out i))
                    {
                        try
                        {
                            ignoredPluginsList.Add(i);
                        }
                        catch (Exception e)
                        {
                            WifiRemote.LogMessage("Adding ignored plugin from config failed: " + e.Message, WifiRemote.LogType.Debug);
                        }
                    }
                }
            }

            // Test if Bonjour is installed
            try
            {
                Version bonjourVersion = ZeroconfService.NetService.DaemonVersion;
                buttonDownloadBonjour.Enabled  = false;
                checkBoxDisableBonjour.Enabled = false;
                buttonDownloadBonjour.Text     = "Bonjour already installed";
            }
            catch
            {
                if (Is64Bit() || Is32BitProcessOn64BitProcessor())
                {
                    // 64 bit windows
                    is64bit = true;
                    buttonDownloadBonjour.Enabled  = true;
                    checkBoxDisableBonjour.Enabled = true;
                    buttonDownloadBonjour.Text     = "Download and install Bonjour (64 bit)";
                }
                else
                {
                    // 32 bit windows
                    is64bit = false;
                    buttonDownloadBonjour.Enabled  = true;
                    checkBoxDisableBonjour.Enabled = true;
                    buttonDownloadBonjour.Text     = "Download and install Bonjour (32 bit)";
                }
            }

            // Setup plugins list
            availablePlugins      = new ArrayList();
            plugins               = new ArrayList();
            pluginIcons           = new ImageList();
            pluginIcons.ImageSize = new Size(20, 20);

            EnumerateWindowPlugins();
            LoadPlugins();
            LoadSettings();

            // Add saved plugins to list for ordering
            foreach (var aSavedPlugin in savedPlugins)
            {
                // Find saved plugin with this window id
                var query = from ItemTag p in plugins
                            where p.WindowId == aSavedPlugin.Key
                            select p;

                // Add the first found plugin to the list
                foreach (ItemTag plugin in query)
                {
                    if (plugin.IsEnabled)
                    {
                        pluginsDataSource.Add(new WindowPlugin(aSavedPlugin.Value,
                                                               aSavedPlugin.Key,
                                                               (plugin.ActiveImage != null)
                                                                    ? ImageHelper.imageToByteArray(plugin.ActiveImage, System.Drawing.Imaging.ImageFormat.Png)
                                                                    : ImageHelper.imageToByteArray(Properties.Resources.NoPluginImage, System.Drawing.Imaging.ImageFormat.Png),
                                                               !ignoredPluginsList.Contains(aSavedPlugin.Key)));
                    }
                    break;
                }
            }

            // Add rest of the plugins to the list
            foreach (ItemTag plugin in plugins)
            {
                if (!savedPlugins.ContainsKey(plugin.WindowId))
                {
                    addPluginToList(plugin);
                }
            }

            dataGridViewPluginList.AutoGenerateColumns           = false;
            dataGridViewPluginList.AutoSize                      = true;
            dataGridViewPluginList.DataSource                    = pluginsDataSource;
            dataGridViewPluginList.CurrentCellDirtyStateChanged += new EventHandler(dataGridViewPluginList_CurrentCellDirtyStateChanged);

            DataGridViewCheckBoxColumn displayColumn = new DataGridViewCheckBoxColumn();

            displayColumn.ReadOnly         = false;
            displayColumn.AutoSizeMode     = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;
            displayColumn.DataPropertyName = "DisplayPlugin";
            displayColumn.Name             = "";
            dataGridViewPluginList.Columns.Add(displayColumn);

            DataGridViewImageColumn iconColumn = new DataGridViewImageColumn(false);

            iconColumn.ReadOnly         = true;
            iconColumn.ImageLayout      = DataGridViewImageCellLayout.Zoom;
            iconColumn.Width            = 20;
            iconColumn.DataPropertyName = "Icon";
            iconColumn.Name             = "";
            dataGridViewPluginList.Columns.Add(iconColumn);

            DataGridViewColumn nameColumn = new DataGridViewTextBoxColumn();

            nameColumn.ReadOnly         = false;
            nameColumn.MinimumWidth     = 200;
            nameColumn.AutoSizeMode     = DataGridViewAutoSizeColumnMode.Fill;
            nameColumn.DataPropertyName = "Name";
            nameColumn.Name             = "Plugin";
            dataGridViewPluginList.Columns.Add(nameColumn);
        }