Exemplo n.º 1
0
 /// <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;
     }
 }
Exemplo n.º 2
0
        /// <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);
            }
        }
Exemplo n.º 3
0
 /// <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));
 }
Exemplo n.º 4
0
        /// <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;
        }
Exemplo n.º 5
0
        /// <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();
        }
Exemplo n.º 6
0
        /// <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;
        }
Exemplo n.º 7
0
 /// <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;
 }
Exemplo n.º 8
0
        /// <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);
        }