/// <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)); }
/// <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))); } }
/// <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); }
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); }