예제 #1
0
        private void LoadSearchEngines()
        {
            _searchEngines.Clear();

            listSearchEngines.Items.Clear();

            var searchPluginMap = new Dictionary <ITablatureSearchEngine, PluginInstance>();

            foreach (var plugin in Program.GetPluginManager().GetPluginHosts())
            {
                foreach (var engine in plugin.GetClassInstances <ITablatureSearchEngine>())
                {
                    _searchEngines.Add(engine);
                    searchPluginMap[engine] = plugin;
                }
            }

            foreach (var searchPluginPair in searchPluginMap)
            {
                var enabled = !Settings.Default.DisabledSearchEngines.Contains(TabsterSettingsUtilities.GetSearchEngineIdentifier(searchPluginPair.Value, searchPluginPair.Key));

                var lvi = new ListViewItem
                {
                    Text      = searchPluginPair.Key.Name,
                    Checked   = enabled,
                    ForeColor = enabled ? _enabledColor : _disabledColor
                };

                lvi.SubItems.Add(enabled ? "Yes" : "No");

                listSearchEngines.Items.Add(lvi);
            }

            if (listSearchEngines.Items.Count == 0)
            {
                listSearchEngines.Dock = DockStyle.Fill;
            }
            else
            {
                listSearchEngines.Items[0].Selected = true;
            }
        }
예제 #2
0
        private TablatureSearchRequest CreateSearchRequest()
        {
            var artist = txtSearchArtist.Text.Trim();
            var title  = txtSearchTitle.Text.Trim();
            var type   = searchTypeList.HasTypeSelected ? searchTypeList.SelectedType : null;
            var rating = cbSearchRating.SelectedRating;

            var searchEngines = new List <ITablatureSearchEngine>();

            foreach (var engine in TabsterSettingsUtilities.GetEnabledSearchEngines())
            {
                try
                {
                    //check engine requirements
                    if ((engine.RequiresArtistParameter && string.IsNullOrEmpty(artist)) ||
                        (engine.RequiresTitleParameter && string.IsNullOrEmpty(title)) ||
                        (engine.RequiresTypeParamter && type == null) ||
                        (!engine.SupportsRatings && rating != TablatureRating.None))
                    {
                        continue;
                    }

                    //tablature type checking
                    if (type != null && !engine.SupportsTabType(type))
                    {
                        continue;
                    }

                    searchEngines.Add(engine);
                }

                catch
                {
                    //unhandled
                }
            }

            return(new TablatureSearchRequest(artist, title, type, rating, searchEngines));
        }
예제 #3
0
        private void SavePreferences()
        {
            //search engines
            if (SearchEnginesModified)
            {
                foreach (ListViewItem lvi in listSearchEngines.Items)
                {
                    var engine = _searchEngines[lvi.Index];
                    var plugin = Program.GetPluginManager().GetHostByType(engine.GetType());
                    var id     = TabsterSettingsUtilities.GetSearchEngineIdentifier(plugin, engine);

                    if (id == null)
                    {
                        continue;
                    }

                    var engineEnabled = lvi.Checked;

                    Settings.Default.DisabledSearchEngines.Remove(id);

                    if (!engineEnabled)
                    {
                        Settings.Default.DisabledSearchEngines.Add(id);
                    }
                }
            }

            //printing
            Settings.Default.PrintColor       = printColorPreview.BackColor;
            Settings.Default.PrintPageNumbers = chkPrintPageNumbers.Checked;
            Settings.Default.PrintTimestamp   = chkPrintTimestamp.Checked;

            if (numMaxRecentItems.Value != Settings.Default.MaxRecentItems)
            {
                MaxRecentItemsModified          = true;
                Settings.Default.MaxRecentItems = (int)numMaxRecentItems.Value;
            }

            //network
            var proxyConfig = ProxyConfiguration.None;

            if (radioNoProxy.Checked)
            {
                proxyConfig = ProxyConfiguration.None;
            }
            else if (radioSystemProxy.Checked)
            {
                proxyConfig = ProxyConfiguration.System;
            }
            else if (radioManualProxy.Checked)
            {
                proxyConfig = ProxyConfiguration.Manual;
            }

            var customProxy = GetProxyFromInput();

            Settings.Default.ProxyConfig = proxyConfig.ToString();

            if (customProxy != null)
            {
                Settings.Default.ProxyHost = customProxy.Address.Host;
                Settings.Default.ProxyPort = (ushort)customProxy.Address.Port;

                if (customProxy.Credentials != null)
                {
                    var credentials = (NetworkCredential)customProxy.Credentials;

                    Settings.Default.ProxyUsername = credentials.UserName != null
                        ? ((NetworkCredential)customProxy.Credentials).UserName
                        : null;
                    Settings.Default.ProxyPassword = credentials.Password != null
                        ? ((NetworkCredential)customProxy.Credentials).Password
                        : null;
                }

                TabsterSettingsUtilities.ProxySettings.ManualProxyParameters = new ManualProxyParameters(
                    customProxy.Address.Host, (ushort)customProxy.Address.Port,
                    customProxy.Credentials);
            }

            //apply settings to active proxy config
            TabsterSettingsUtilities.ProxySettings.Configuration = proxyConfig;

            Settings.Default.StartupUpdate       = chkUpdates.Checked;
            Settings.Default.StripVersionedNames = chkStripVersionedNames.Checked;

            Settings.Default.Save();
        }