/// <summary> /// Updates the visibility and tooltip of the search indicator /// based on a given configuration. /// </summary> /// <param name="icon">The search indicator icon</param> /// <param name="config">The configuration containing the search filter</param> private void RefreshSearchIndicator(Image icon, ViewDetailsConfig config) { if (config != null && config.Filter != null && config.Filter.Trim().Length > 0) { icon.Visibility = Visibility.Visible; icon.ToolTip = String.Format(U.T("SearchTooltip"), config.Filter); } else { icon.Visibility = Visibility.Collapsed; } }
/// <summary> /// Sets whether the search indicator for a given navigation item should /// be visible or not. /// </summary> /// <param name="navigation">The navigation item</param> /// <param name="config">The configuration specifying the filtering</param> public void SetSearchIndicator(string navigation, ViewDetailsConfig config) { Image i = null; if (navigation == "Files") { i = FileSearchIcon; } else if (navigation == "YouTube") { i = YoutubeSearchIcon; } else if (navigation == "SoundCloud") { i = SoundCloudSearchIcon; } else if (navigation == "Radio") { i = RadioSearchIcon; } else if (navigation == "Queue") { i = QueueSearchIcon; } else if (navigation == "History") { i = HistorySearchIcon; } else { foreach (TreeViewItem tvi in Playlists.Items) { PlaylistData p = Tvi2Pl(tvi); if (p != null && navigation == "Playlist:" + p.Name) { DockPanel dp = tvi.Header as DockPanel; i = dp.Children[2] as Image; break; } } } if (i != null) { RefreshSearchIndicator(i, config); } }
/// <summary> /// Initializes a configuration of a ViewDetails list. /// </summary> /// <param name="config">The configuration to initialize</param> public static void InitViewDetailsConfig(ViewDetailsConfig config) { config.Columns.Add(CreateListColumn("Artist", U.T("ColumnArtist"), 180)); config.Columns.Add(CreateListColumn("Album", U.T("ColumnAlbum"), 160)); config.Columns.Add(CreateListColumn("Title", U.T("ColumnTitle"), 220)); config.Columns.Add(CreateListColumn("Genre", U.T("ColumnGenre"), 90)); config.Columns.Add(CreateListColumn("Length", U.T("ColumnLength"), 70, "Duration", Alignment.Right)); config.Columns.Add(CreateListColumn("Year", U.T("ColumnYear"), 100, Alignment.Right, false)); config.Columns.Add(CreateListColumn("LastPlayed", U.T("ColumnLastPlayed"), 150, "DateTime", Alignment.Left, false)); config.Columns.Add(CreateListColumn("PlayCount", U.T("ColumnPlayCount"), 80, "Number", Alignment.Right)); config.Columns.Add(CreateListColumn("Track", U.T("ColumnTrack"), "Track", 100, Alignment.Right, false)); config.Columns.Add(CreateListColumn("Path", U.T("ColumnPath"), "Path", 300, Alignment.Left, false)); }
/// <summary> /// Initializes a track list control. /// </summary> /// <param name="list">The track list to initialize</param> /// <param name="config">The configuration for the list</param> /// <param name="tracks">The track collection</param> /// <returns>The initialized list</returns> private ViewDetails InitTrackList(ViewDetails list, ViewDetailsConfig config, ObservableCollection<TrackData> tracks = null) { list.Config = config; list.ContextMenu = listMenu; list.Visibility = Visibility.Collapsed; list.BorderThickness = new Thickness(0); list.Config.PropertyChanged += new PropertyChangedEventHandler(ViewDetailsConfig_PropertyChanged); list.MouseDoubleClick += new MouseButtonEventHandler(TrackList_MouseDoubleClick); list.SelectionChanged += new SelectionChangedEventHandler(TrackList_SelectionChanged); list.ContextMenuOpening += new ContextMenuEventHandler(TrackList_ContextMenuOpening); list.GotFocus += new RoutedEventHandler(TrackList_GotFocus); list.MoveItem += new MoveItemEventHandler(TrackList_MoveItem); list.SelectIndices(config.SelectedIndices); if (config == SettingsManager.SoundCloudListConfig) { SoundCloudTracks sct = list as SoundCloudTracks; if (sct != null) sct.Search(config.Filter); list.Primary = "Title"; list.Secondary1 = "Artist"; list.Secondary2 = "Genre"; list.Tertiary1 = "Length"; list.Tertiary2 = "PlayCount"; list.Tertiary1Converter = "Duration"; } else if (config == SettingsManager.YouTubeListConfig) { YouTubeTracks ytt = list as YouTubeTracks; if (ytt != null) ytt.Search(config.Filter); list.Primary = "Title"; list.Secondary1 = "Artist"; list.Secondary2 = "Views"; list.Tertiary1 = "Length"; list.Tertiary2 = "Path"; list.Secondary2Format = U.T("ColumnViews", "Format"); list.Secondary2Converter = "Number"; list.Tertiary1Converter = "Duration"; } else if (config == SettingsManager.JamendoListConfig) { JamendoTracks jt = list as JamendoTracks; if (jt != null) jt.Search(config.Filter); list.Primary = "Title"; list.Secondary1 = "Artist"; list.Secondary2 = "Album"; list.Tertiary1 = "Genre"; list.Tertiary2 = "Length"; list.Tertiary2Converter = "Duration"; } else { if (config == SettingsManager.RadioListConfig) { list.Primary = "Title"; list.Secondary1 = "Genre"; list.Secondary2 = "URL"; list.Tertiary1 = "PlayCount"; list.Tertiary2 = "LastPlayed"; list.Tertiary2Converter = "DateTime"; } else { list.Primary = "Title"; list.Secondary1 = "Artist"; list.Secondary2 = "Album"; list.Tertiary1 = "Genre"; list.Tertiary2 = "Length"; list.Tertiary2Converter = "Duration"; } list.FilterMatch = TrackList_SearchMatch; list.ItemsSource = tracks; list.FilesDropped += new FileDropEventHandler(TrackList_FilesDropped); list.PropertyChanged += new PropertyChangedEventHandler(TrackList_PropertyChanged); if (tracks != null) tracks.CollectionChanged += new NotifyCollectionChangedEventHandler(list.ItemsSource_CollectionChanged); } Grid.SetRow(list, 1); ContentContainer.Children.Add(list); return list; }
/// <summary> /// Initializes the settings manager. /// </summary> public static void Initialize() { #region Lists and collections if (FileTracks == null) FileTracks = new ObservableCollection<TrackData>(); if (HistoryTracks == null) HistoryTracks = new ObservableCollection<TrackData>(); if (QueueTracks == null) QueueTracks = new ObservableCollection<TrackData>(); if (RadioTracks == null) RadioTracks = new ObservableCollection<TrackData>(); if (Plugins == null) Plugins = new ObservableCollection<PluginItem>(); if (PluginSettings == null) PluginSettings = new List<PluginSettings>(); if (Sources == null) Sources = new ObservableCollection<SourceData>(); if (Playlists == null) Playlists = new List<PlaylistData>(); #endregion #region Equalizer if (EqualizerProfiles == null) { EqualizerProfiles = new List<EqualizerProfile>(); EqualizerProfiles.Add(CreateEqualizerLevel(U.T("EqualizerProfileDefault"), new float[] { 0, 0, 0, 0, 0, 0, 0, 0 }, 0, true)); } if (CurrentEqualizerProfile == null) CurrentEqualizerProfile = EqualizerProfiles[0]; #endregion #region Shortcuts if (ShortcutProfiles == null) { ShortcutProfiles = new List<KeyboardShortcutProfile>(); // Stoffi KeyboardShortcutProfile shortStoffi = new KeyboardShortcutProfile(); InitShortcutProfile(shortStoffi, "Stoffi", true); ShortcutProfiles.Add(shortStoffi); // Stoffi (laptop) KeyboardShortcutProfile shortLaptop = new KeyboardShortcutProfile(); InitShortcutProfile(shortLaptop, "Stoffi (laptop)", true); SetKeyboardShortcut(shortLaptop, "MediaCommands", "Previous", "Ctrl+1"); SetKeyboardShortcut(shortLaptop, "MediaCommands", "Play or pause", "Ctrl+2"); SetKeyboardShortcut(shortLaptop, "MediaCommands", "Next", "Ctrl+3"); SetKeyboardShortcut(shortLaptop, "MediaCommands", "Decrease volume", "Ctrl+4"); SetKeyboardShortcut(shortLaptop, "MediaCommands", "Increase volume", "Ctrl+5"); SetKeyboardShortcut(shortLaptop, "MediaCommands", "Seek backward", "Ctrl+6"); SetKeyboardShortcut(shortLaptop, "MediaCommands", "Seek forward", "Ctrl+7"); SetKeyboardShortcut(shortLaptop, "MediaCommands", "Toggle shuffle", "Ctrl+8"); SetKeyboardShortcut(shortLaptop, "MediaCommands", "Toggle repeat", "Ctrl+9"); ShortcutProfiles.Add(shortLaptop); // Amarok KeyboardShortcutProfile shortAmarok = new KeyboardShortcutProfile(); InitShortcutProfile(shortAmarok, "Amarok", true); SetKeyboardShortcut(shortAmarok, "Application", "Add track", "Win+A"); SetKeyboardShortcut(shortAmarok, "Application", "Add playlist", "Space"); SetKeyboardShortcut(shortAmarok, "MediaCommands", "Play or pause", "Win+X"); SetKeyboardShortcut(shortAmarok, "MediaCommands", "Next", "Win+B"); SetKeyboardShortcut(shortAmarok, "MediaCommands", "Previous", "Win+Z"); SetKeyboardShortcut(shortAmarok, "MediaCommands", "Toggle shuffle", "Ctrl+H"); SetKeyboardShortcut(shortAmarok, "MediaCommands", "Increase volume", "Win++ (numpad)"); SetKeyboardShortcut(shortAmarok, "MediaCommands", "Decrease volume", "Win+- (numpad)"); SetKeyboardShortcut(shortAmarok, "MediaCommands", "Seek forward", "Win+Shift++ (numpad)"); SetKeyboardShortcut(shortAmarok, "MediaCommands", "Seek backward", "Win+Shift+- (numpad)"); SetKeyboardShortcut(shortAmarok, "MediaCommands", "Jump to current track", "Ctrl+Enter"); SetKeyboardShortcut(shortAmarok, "MainWindow", "Toggle menu bar", "Ctrl+M"); ShortcutProfiles.Add(shortAmarok); // Banshee KeyboardShortcutProfile shortBanshee = new KeyboardShortcutProfile(); InitShortcutProfile(shortBanshee, "Banshee", true); SetKeyboardShortcut(shortBanshee, "Application", "Add track", "Ctrl+I"); SetKeyboardShortcut(shortBanshee, "Application", "Close", "Ctrl+Q"); SetKeyboardShortcut(shortBanshee, "MediaCommands", "Play or pause", "Space"); SetKeyboardShortcut(shortBanshee, "MediaCommands", "Next", "N"); SetKeyboardShortcut(shortBanshee, "MediaCommands", "Previous", "B"); ShortcutProfiles.Add(shortBanshee); // Foobar2000 KeyboardShortcutProfile shortFoobar2000 = new KeyboardShortcutProfile(); InitShortcutProfile(shortFoobar2000, "Foobar2000", true); SetKeyboardShortcut(shortFoobar2000, "Application", "Add track", "Ctrl+O"); SetKeyboardShortcut(shortFoobar2000, "Application", "Add folder", "Ctrl+A"); SetKeyboardShortcut(shortFoobar2000, "Application", "Add playlist", "Ctrl+L"); SetKeyboardShortcut(shortFoobar2000, "Application", "Add radio station", "Ctrl+U"); SetKeyboardShortcut(shortFoobar2000, "MainWindow", "General preferences", "Ctrl+P"); SetKeyboardShortcut(shortFoobar2000, "Track", "View information", "Alt+Enter"); ShortcutProfiles.Add(shortFoobar2000); // iTunes KeyboardShortcutProfile shortiTunes = new KeyboardShortcutProfile(); InitShortcutProfile(shortiTunes, "iTunes", true); SetKeyboardShortcut(shortiTunes, "Application", "Add track", "Ctrl+O"); SetKeyboardShortcut(shortiTunes, "Application", "Add playlist", "Ctrl+P"); SetKeyboardShortcut(shortiTunes, "Application", "Add radio station", "Ctrl+U"); SetKeyboardShortcut(shortiTunes, "MainWindow", "General preferences", "Ctrl+,"); SetKeyboardShortcut(shortiTunes, "MainWindow", "Search", "Ctrl+Alt+F"); SetKeyboardShortcut(shortiTunes, "MediaCommands", "Play or pause", "Space"); SetKeyboardShortcut(shortiTunes, "MediaCommands", "Increase volume", "Ctrl+Up"); SetKeyboardShortcut(shortiTunes, "MediaCommands", "Decrease volume", "Ctrl+Down"); SetKeyboardShortcut(shortiTunes, "MediaCommands", "Seek forward", "Ctrl+Alt+Right"); SetKeyboardShortcut(shortiTunes, "MediaCommands", "Seek backward", "Ctrl+Alt+Left"); SetKeyboardShortcut(shortiTunes, "MediaCommands", "Previous", "Left"); SetKeyboardShortcut(shortiTunes, "MediaCommands", "Next", "Right"); SetKeyboardShortcut(shortiTunes, "MediaCommands", "Jump to current track", "Ctrl+L"); SetKeyboardShortcut(shortiTunes, "Track", "Open folder", "Ctrl+R"); ShortcutProfiles.Add(shortiTunes); // MusicBee KeyboardShortcutProfile shortMusicBee = new KeyboardShortcutProfile(); InitShortcutProfile(shortMusicBee, "MusicBee", true); SetKeyboardShortcut(shortMusicBee, "MainWindow", "General preferences", "Ctrl+O"); SetKeyboardShortcut(shortMusicBee, "MainWindow", "Create playlist", "Ctrl+Shift+N"); SetKeyboardShortcut(shortMusicBee, "MediaCommands", "Play or pause", "Ctrl+P"); SetKeyboardShortcut(shortMusicBee, "MediaCommands", "Next", "Ctrl+N"); SetKeyboardShortcut(shortMusicBee, "MediaCommands", "Previous", "Ctrl+B"); SetKeyboardShortcut(shortMusicBee, "MediaCommands", "Increase volume", "Ctrl+Up"); SetKeyboardShortcut(shortMusicBee, "MediaCommands", "Decrease volume", "Ctrl+Down"); SetKeyboardShortcut(shortMusicBee, "Track", "Queue and dequeue", "Ctrl+Enter"); SetKeyboardShortcut(shortMusicBee, "Track", "View information", "Alt+E"); ShortcutProfiles.Add(shortMusicBee); // Rythmbox KeyboardShortcutProfile shortRythmbox = new KeyboardShortcutProfile(); InitShortcutProfile(shortRythmbox, "Rythmbox", true); SetKeyboardShortcut(shortRythmbox, "Application", "Close", "Ctrl+Q"); SetKeyboardShortcut(shortRythmbox, "Application", "Add folder", "Ctrl+O"); SetKeyboardShortcut(shortRythmbox, "Application", "Add radio station", "Ctrl+I"); SetKeyboardShortcut(shortRythmbox, "MainWindow", "Search", "Alt+S"); SetKeyboardShortcut(shortRythmbox, "MediaCommands", "Play or pause", "Ctrl+Space"); SetKeyboardShortcut(shortRythmbox, "MediaCommands", "Previous", "Alt+Left"); SetKeyboardShortcut(shortRythmbox, "MediaCommands", "Next", "Alt+Right"); SetKeyboardShortcut(shortRythmbox, "MediaCommands", "Toggle shuffle", "Ctrl+U"); SetKeyboardShortcut(shortRythmbox, "MediaCommands", "Toggle repeat", "Ctrl+R"); SetKeyboardShortcut(shortRythmbox, "MediaCommands", "Jump to current track", "Ctrl+J"); SetKeyboardShortcut(shortRythmbox, "Track", "View information", "Alt+Enter"); SetKeyboardShortcut(shortRythmbox, "MediaCommands", "Jump to previous bookmark", "Alt+,"); SetKeyboardShortcut(shortRythmbox, "MediaCommands", "Jump to next bookmark", "Alt+."); ShortcutProfiles.Add(shortRythmbox); // Spotify KeyboardShortcutProfile shortSpotify = new KeyboardShortcutProfile(); InitShortcutProfile(shortSpotify, "Spotify", true); SetKeyboardShortcut(shortSpotify, "MediaCommands", "Play or pause", "Space"); SetKeyboardShortcut(shortSpotify, "MediaCommands", "Next", "Ctrl+Right"); SetKeyboardShortcut(shortSpotify, "MediaCommands", "Previous", "Ctrl+Left"); SetKeyboardShortcut(shortSpotify, "MediaCommands", "Increase volume", "Ctrl+Up"); SetKeyboardShortcut(shortSpotify, "MediaCommands", "Decrease volume", "Ctrl+Down"); SetKeyboardShortcut(shortSpotify, "MainWindow", "Search", "Ctrl+L"); SetKeyboardShortcut(shortSpotify, "MainWindow", "General preferences", "Ctrl+P"); SetKeyboardShortcut(shortSpotify, "Track", "Open folder", "Alt+L"); ShortcutProfiles.Add(shortSpotify); // VLC KeyboardShortcutProfile shortVLC = new KeyboardShortcutProfile(); InitShortcutProfile(shortVLC, "VLC", true); SetKeyboardShortcut(shortVLC, "Application", "Add track", "Ctrl+O"); SetKeyboardShortcut(shortVLC, "Application", "Add folder", "Ctrl+F"); SetKeyboardShortcut(shortVLC, "Application", "Add radio station", "Ctrl+N"); SetKeyboardShortcut(shortVLC, "Application", "Close", "Ctrl+Q"); SetKeyboardShortcut(shortVLC, "MainWindow", "General preferences", "Ctrl+P"); SetKeyboardShortcut(shortVLC, "MediaCommands", "Play or pause", "Space"); SetKeyboardShortcut(shortVLC, "MediaCommands", "Next", "N"); SetKeyboardShortcut(shortVLC, "MediaCommands", "Previous", "P"); SetKeyboardShortcut(shortVLC, "MediaCommands", "Seek backward", "Ctrl+Left"); SetKeyboardShortcut(shortVLC, "MediaCommands", "Seek forward", "Ctrl+Right"); SetKeyboardShortcut(shortVLC, "MediaCommands", "Increase volume", "Ctrl+Up"); SetKeyboardShortcut(shortVLC, "MediaCommands", "Decrease volume", "Ctrl+Down"); SetKeyboardShortcut(shortVLC, "MediaCommands", "Toggle shuffle", "R"); SetKeyboardShortcut(shortVLC, "MediaCommands", "Toggle repeat", "L"); SetKeyboardShortcut(shortVLC, "MainWindow", "Search", "F3"); SetKeyboardShortcut(shortVLC, "MainWindow", "Create playlist", "Ctrl+Alt+P"); ShortcutProfiles.Add(shortVLC); // Winamp KeyboardShortcutProfile shortWinamp = new KeyboardShortcutProfile(); InitShortcutProfile(shortWinamp, "Winamp", true); SetKeyboardShortcut(shortWinamp, "Application", "Minimize", "Alt+M"); SetKeyboardShortcut(shortWinamp, "Application", "Add track", "Ctrl+Alt+L"); SetKeyboardShortcut(shortWinamp, "MainWindow", "History", "Ctrl+H"); SetKeyboardShortcut(shortWinamp, "MainWindow", "General preferences", "Ctrl+P"); SetKeyboardShortcut(shortWinamp, "MediaCommands", "Play or pause", "Ctrl+Alt+Insert", true); SetKeyboardShortcut(shortWinamp, "MediaCommands", "Next", "Ctrl+Alt+PageDown", true); SetKeyboardShortcut(shortWinamp, "MediaCommands", "Previous", "Ctrl+Alt+PageUp", true); SetKeyboardShortcut(shortWinamp, "MediaCommands", "Increase volume", "Ctrl+Alt+Up", true); SetKeyboardShortcut(shortWinamp, "MediaCommands", "Decrease volume", "Ctrl+Alt+Down", true); SetKeyboardShortcut(shortWinamp, "MediaCommands", "Seek forward", "Ctrl+Alt+Right", true); SetKeyboardShortcut(shortWinamp, "MediaCommands", "Seek backward", "Ctrl+Alt+Left", true); SetKeyboardShortcut(shortWinamp, "MediaCommands", "Toggle shuffle", "S"); SetKeyboardShortcut(shortWinamp, "MediaCommands", "Toggle repeat", "R"); SetKeyboardShortcut(shortWinamp, "Track", "View information", "Alt+3"); SetKeyboardShortcut(shortWinamp, "MainWindow", "Toggle menu bar", "Ctrl+Alt+M"); ShortcutProfiles.Add(shortWinamp); // Windows Media Player KeyboardShortcutProfile shortWMP = new KeyboardShortcutProfile(); InitShortcutProfile(shortWMP, "Windows Media Player", true); SetKeyboardShortcut(shortWMP, "Application", "Add track", "Ctrl+O"); SetKeyboardShortcut(shortWMP, "Application", "Add radio station", "Ctrl+U"); SetKeyboardShortcut(shortWMP, "MainWindow", "Search", "Ctrl+E"); SetKeyboardShortcut(shortWMP, "MainWindow", "Toggle menu bar", "F10"); SetKeyboardShortcut(shortWMP, "MediaCommands", "Play or pause", "Ctrl+P"); SetKeyboardShortcut(shortWMP, "MediaCommands", "Next", "Ctrl+F"); SetKeyboardShortcut(shortWMP, "MediaCommands", "Previous", "Ctrl+B"); SetKeyboardShortcut(shortWMP, "MediaCommands", "Seek forward", "Ctrl+Shift+F"); SetKeyboardShortcut(shortWMP, "MediaCommands", "Seek backward", "Ctrl+Shift+B"); SetKeyboardShortcut(shortWMP, "MediaCommands", "Toggle shuffle", "Ctrl+H"); SetKeyboardShortcut(shortWMP, "MediaCommands", "Toggle repeat", "Ctrl+T"); SetKeyboardShortcut(shortWMP, "MediaCommands", "Increase volume", "F9"); SetKeyboardShortcut(shortWMP, "MediaCommands", "Decrease volume", "F8"); SetKeyboardShortcut(shortWMP, "Track", "View information", "F2"); SetKeyboardShortcut(shortWMP, "MainWindow", "Tracklist", "Ctrl+1"); ShortcutProfiles.Add(shortWMP); } #endregion #region ViewDetails lists // sources list if (SourceListConfig == null) { ViewDetailsConfig sourceConfig = CreateListConfig(); sourceConfig.Columns.Add(CreateListColumn("Data", U.T("ColumnLocation"), 200)); sourceConfig.Columns.Add(CreateListColumn("Type", U.T("ColumnType"), 150, "SourceType")); sourceConfig.Sorts.Add("asc:Type"); sourceConfig.Sorts.Add("asc:Data"); SourceListConfig = sourceConfig; } // youtube list if (YouTubeListConfig == null) { ViewDetailsConfig youtubeConfig = CreateListConfig(); youtubeConfig.AcceptFileDrops = false; youtubeConfig.IsDragSortable = false; youtubeConfig.Columns.Add(CreateListColumn("Artist", U.T("ColumnArtist"), 200)); youtubeConfig.Columns.Add(CreateListColumn("Title", U.T("ColumnTitle"), 350)); youtubeConfig.Columns.Add(CreateListColumn("Views", U.T("ColumnViews"), 120, "Number", Alignment.Right)); youtubeConfig.Columns.Add(CreateListColumn("Length", U.T("ColumnLength"), 100, "Duration", Alignment.Right)); youtubeConfig.Columns.Add(CreateListColumn("Path", U.T("ColumnPath"), 200, Alignment.Left, false)); YouTubeListConfig = youtubeConfig; } // soundcloud list if (SoundCloudListConfig == null) { ViewDetailsConfig soundcloudConfig = CreateListConfig(); soundcloudConfig.AcceptFileDrops = false; soundcloudConfig.IsDragSortable = false; soundcloudConfig.Columns.Add(CreateListColumn("Artist", U.T("ColumnArtist"), 150)); soundcloudConfig.Columns.Add(CreateListColumn("Title", U.T("ColumnTitle"), 300)); soundcloudConfig.Columns.Add(CreateListColumn("Genre", U.T("ColumnGenre"), 100)); soundcloudConfig.Columns.Add(CreateListColumn("Length", U.T("ColumnLength"), 150, "Duration", Alignment.Right)); soundcloudConfig.Columns.Add(CreateListColumn("Path", U.T("ColumnPath"), 200, Alignment.Left, false)); SoundCloudListConfig = soundcloudConfig; } // soundcloud list if (JamendoListConfig == null) { ViewDetailsConfig jamendoConfig = CreateListConfig(); jamendoConfig.AcceptFileDrops = false; jamendoConfig.IsDragSortable = false; jamendoConfig.Columns.Add(CreateListColumn("Artist", U.T("ColumnArtist"), 150)); jamendoConfig.Columns.Add(CreateListColumn("Album", U.T("ColumnAlbum"), 150)); jamendoConfig.Columns.Add(CreateListColumn("Title", U.T("ColumnTitle"), 300)); jamendoConfig.Columns.Add(CreateListColumn("Genre", U.T("ColumnGenre"), 100)); jamendoConfig.Columns.Add(CreateListColumn("Length", U.T("ColumnLength"), 150, "Duration", Alignment.Right)); jamendoConfig.Columns.Add(CreateListColumn("Path", U.T("ColumnPath"), 200, Alignment.Left, false)); JamendoListConfig = jamendoConfig; } // file list if (FileListConfig == null) { ViewDetailsConfig fileList = CreateListConfig(); InitViewDetailsConfig(fileList); fileList.Sorts.Add("asc:Title"); fileList.Sorts.Add("asc:Track"); fileList.Sorts.Add("asc:Album"); fileList.Sorts.Add("asc:Artist"); FileListConfig = fileList; } // radio list if (RadioListConfig == null) { ViewDetailsConfig radioList = CreateListConfig(); radioList.Columns.Add(CreateListColumn("Title", U.T("ColumnTitle"), 300)); radioList.Columns.Add(CreateListColumn("Genre", U.T("ColumnGenre"), 150)); radioList.Columns.Add(CreateListColumn("URL", U.T("ColumnURL"), 300)); radioList.Sorts.Add("asc:Title"); RadioListConfig = radioList; } // disc list if (DiscListConfig == null) { ViewDetailsConfig discList = CreateListConfig(); InitViewDetailsConfig(discList); DiscListConfig = discList; } // queue list if (QueueListConfig == null) { ViewDetailsConfig queueList = CreateListConfig(); queueList.IsNumberVisible = true; InitViewDetailsConfig(queueList); queueList.Sorts.Add("asc:Title"); queueList.Sorts.Add("asc:Track"); queueList.Sorts.Add("asc:Album"); queueList.Sorts.Add("asc:Artist"); QueueListConfig = queueList; } // history list if (HistoryListConfig == null) { ViewDetailsConfig historyList = CreateListConfig(); historyList.Columns.Add(CreateListColumn("LastPlayed", U.T("ColumnPlayed"), 200, "DateTime")); historyList.Columns.Add(CreateListColumn("Artist", U.T("ColumnArtist"), 100)); historyList.Columns.Add(CreateListColumn("Album", U.T("ColumnAlbum"), 100)); historyList.Columns.Add(CreateListColumn("Title", U.T("ColumnTitle"), 100)); historyList.Columns.Add(CreateListColumn("Genre", U.T("ColumnGenre"), 100)); historyList.Columns.Add(CreateListColumn("Length", U.T("ColumnLength"), 60, "Duration", Alignment.Right)); historyList.Columns.Add(CreateListColumn("Year", U.T("ColumnYear"), 100, Alignment.Right, false)); historyList.Columns.Add(CreateListColumn("PlayCount", U.T("ColumnPlayCount"), 100, "Number", Alignment.Right, false)); historyList.Columns.Add(CreateListColumn("Path", U.T("ColumnPath"), 200, Alignment.Left, false)); historyList.Columns.Add(CreateListColumn("Track", U.T("ColumnTrack"), 100, Alignment.Right, false)); historyList.Sorts.Add("dsc:LastPlayed"); HistoryListConfig = historyList; } if (PluginListConfig == null) { ViewDetailsConfig pluginListConfig = CreateListConfig(); pluginListConfig.AcceptFileDrops = false; pluginListConfig.IsDragSortable = false; pluginListConfig.Columns.Add(CreateListColumn("Name", U.T("ColumnName"), 150)); pluginListConfig.Columns.Add(CreateListColumn("Author", U.T("ColumnAuthor"), 100)); pluginListConfig.Columns.Add(CreateListColumn("Type", U.T("ColumnType"), 100, "PluginType")); pluginListConfig.Columns.Add(CreateListColumn("Installed", U.T("ColumnInstalled"), 150, "DateTime")); pluginListConfig.Columns.Add(CreateListColumn("Version", U.T("ColumnVersion"), 80)); //pluginListConfig.Columns.Add(CreateListColumn("Enabled", U.T("ColumnEnabled"), "Enabled", 20)); pluginListConfig.Sorts.Add("asc:Name"); PluginListConfig = pluginListConfig; } #endregion #region Adjustments if (ListenBuffer == null) ListenBuffer = new Dictionary<string, Tuple<string, string>>(); //Save(); foreach (TrackData t in SettingsManager.FileTracks) if (String.IsNullOrWhiteSpace(t.ArtURL)) t.ArtURL = "/Platform/Windows 7/GUI/Images/AlbumArt/Default.jpg"; foreach (TrackData t in SettingsManager.HistoryTracks) if (String.IsNullOrWhiteSpace(t.ArtURL)) t.ArtURL = "/Platform/Windows 7/GUI/Images/AlbumArt/Default.jpg"; foreach (TrackData t in SettingsManager.QueueTracks) if (String.IsNullOrWhiteSpace(t.ArtURL)) t.ArtURL = "/Platform/Windows 7/GUI/Images/AlbumArt/Default.jpg"; foreach (PlaylistData p in SettingsManager.Playlists) foreach (TrackData t in p.Tracks) if (String.IsNullOrWhiteSpace(t.ArtURL)) t.ArtURL = "/Platform/Windows 7/GUI/Images/AlbumArt/Default.jpg"; Thread aa_thread = new Thread(delegate() { foreach (TrackData t in SettingsManager.HistoryTracks) { if (U.IsClosing) break; if (t.ArtURL == "/Platform/Windows 7/GUI/Images/AlbumArt/Default.jpg") ServiceManager.SetArt(t); } foreach (TrackData t in SettingsManager.QueueTracks) { if (U.IsClosing) break; if (t.ArtURL == "/Platform/Windows 7/GUI/Images/AlbumArt/Default.jpg") ServiceManager.SetArt(t); } foreach (PlaylistData p in SettingsManager.Playlists) foreach (TrackData t in p.Tracks) { if (U.IsClosing) break; if (t.ArtURL == "/Platform/Windows 7/GUI/Images/AlbumArt/Default.jpg") ServiceManager.SetArt(t); } foreach (TrackData t in SettingsManager.FileTracks) { if (U.IsClosing) break; if (t.ArtURL == "/Platform/Windows 7/GUI/Images/AlbumArt/Default.jpg") ServiceManager.SetArt(t); } }); aa_thread.Name = "Fetch album art"; aa_thread.Priority = ThreadPriority.BelowNormal; //aa_thread.Start(); // fix tracks foreach (TrackData t in SettingsManager.HistoryTracks) { if (t.Path.StartsWith("youtube://")) t.Path = "stoffi:track:youtube:" + t.Path.Substring(10); else if (t.Path.StartsWith("soundcloud://")) t.Path = "stoffi:track:soundcloud:" + t.Path.Substring(13); } foreach (TrackData t in SettingsManager.QueueTracks) { if (t.Path.StartsWith("youtube://")) t.Path = "stoffi:track:youtube:" + t.Path.Substring(10); else if (t.Path.StartsWith("soundcloud://")) t.Path = "stoffi:track:soundcloud:" + t.Path.Substring(13); } foreach (PlaylistData p in SettingsManager.Playlists) foreach (TrackData t in p.Tracks) { if (t.Path.StartsWith("youtube://")) t.Path = "stoffi:track:youtube:" + t.Path.Substring(10); else if (t.Path.StartsWith("soundcloud://")) t.Path = "stoffi:track:soundcloud:" + t.Path.Substring(13); } //foreach (KeyboardShortcutProfile p in ShortcutProfiles) // if (p.Shortcuts.ElementAt<KeyboardShortcut>(17).Name != "Plugins") // p.Shortcuts.Insert(17, new KeyboardShortcut { Category = "MainWindow", Name = "Plugins", IsGlobal = false, // Keys = "Alt+X" }); #endregion DispatchInitialized(); }
/// <summary> /// Import and apply a configuration from an xml file /// </summary> /// <param name="filename">The path of the file</param> public static void Import(string filename) { U.L(LogLevel.Debug, "SETTINGS", "Start parsing configuration XML"); XmlSerializer ser = new XmlSerializer(typeof(Config)); FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read); Config c = (Config)ser.Deserialize(fs); fs.Close(); U.L(LogLevel.Debug, "SETTINGS", "Parsing finished"); // tracks SettingsManager.FileTracks.Clear(); SettingsManager.HistoryTracks.Clear(); SettingsManager.QueueTracks.Clear(); ImportTracks(c.Collection, SettingsManager.FileTracks, false); ImportTracks(c.History, SettingsManager.HistoryTracks); ImportTracks(c.Queue, SettingsManager.QueueTracks); SettingsManager.Playlists.Clear(); foreach (ConfigPlaylist p in c.Playlists) { PlaylistData pl = PlaylistManager.FindPlaylist(p.Name); if (pl == null) pl = PlaylistManager.CreatePlaylist(p.Name); ImportTracks(p.Tracks, pl.Tracks); pl.ListConfig = p.ListConfig; } SettingsManager.CurrentActiveNavigation = c.CurrentActiveNavigation; SettingsManager.CurrentSelectedNavigation = c.CurrentSelectedNavigation; SettingsManager.CurrentShortcutProfile = c.CurrentShortcutProfile; SettingsManager.CurrentTrack = ImportTrack(c.CurrentTrack); SettingsManager.DetailsPaneVisible = c.DetailsPaneVisible; SettingsManager.FileListConfig = c.FileListConfig; SettingsManager.HistoryIndex = c.HistoryIndex; SettingsManager.HistoryListConfig = c.HistoryListConfig; SettingsManager.Language = c.Language; SettingsManager.MenuBarVisible = c.MenuBarVisible; SettingsManager.FastStart = c.FastStart; SettingsManager.OpenAddPolicy = c.OpenAddPolicy; SettingsManager.OpenPlayPolicy = c.OpenPlayPolicy; SettingsManager.QueueListConfig = c.QueueListConfig; SettingsManager.Repeat = c.Repeat; SettingsManager.SearchPolicy = c.SearchPolicy; SettingsManager.Seek = c.Seek; SettingsManager.Volume = c.Volume; SettingsManager.ShortcutProfiles = c.ShortcutProfiles; SettingsManager.ShowOSD = c.ShowOSD; SettingsManager.Shuffle = c.Shuffle; SettingsManager.SourceListConfig = c.SourceListConfig; SettingsManager.UpgradePolicy = c.UpgradePolicy; SettingsManager.YouTubeListConfig = c.YouTubeListConfig; }
/// <summary> /// Updates the visibility and tooltip of the search indicator /// based on a given configuration. /// </summary> /// <param name="icon">The search indicator icon</param> /// <param name="config">The configuration containing the search filter</param> private void RefreshSearchIndicator(Image icon, ViewDetailsConfig config) { if (config != null && !String.IsNullOrWhiteSpace(config.Filter)) { icon.Visibility = Visibility.Visible; icon.ToolTip = String.Format(U.T("SearchTooltip"), config.Filter); } else icon.Visibility = Visibility.Collapsed; }
/// <summary> /// Sets whether the search indicator for a given navigation item should /// be visible or not. /// </summary> /// <param name="navigation">The navigation item</param> /// <param name="config">The configuration specifying the filtering</param> public void SetSearchIndicator(string navigation, ViewDetailsConfig config) { Image i = null; if (navigation == "Files") i = FileSearchIcon; else if (navigation == "YouTube") i = YoutubeSearchIcon; else if (navigation == "SoundCloud") i = SoundCloudSearchIcon; else if (navigation == "Radio") i = RadioSearchIcon; else if (navigation == "Jamendo") i = JamendoSearchIcon; else if (navigation == "Queue") i = QueueSearchIcon; else if (navigation == "History") i = HistorySearchIcon; else { foreach (TreeViewItem tvi in Playlists.Items) { PlaylistData p = Tvi2Pl(tvi); if (p != null && navigation == "Playlist:" + p.Name) { DockPanel dp = tvi.Header as DockPanel; i = dp.Children[2] as Image; break; } } } if (i != null) RefreshSearchIndicator(i, config); }