コード例 #1
0
ファイル: AppWindow.xaml.cs プロジェクト: jeason0813/iTuner
        /// <summary>
        /// Set the menu item states just prior to displaying the context menu.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

        private void SetMenuItemStates(object sender, EventArgs e)
        {
            WinForms.ContextMenu menu = sender as WinForms.ContextMenu;
            if (menu == null)
            {
                return;
            }

            MenuMap map = (MenuMap)menu.Tag;

            // main context menu items
            map["mute"].Checked    = controller.IsMuted;
            map["shuffle"].Checked = controller.Shuffle;
            map["play"].Icon       = (controller.IsPlaying ? Resx.Pause : Resx.Play);

            // library menu items

            if (librarian.IsActive(Resx.I_ScanContextDuplicates) ||
                librarian.IsActive(Resx.I_ScanContextPhantoms) ||
                (controller.CurrentContext == Controller.PlayerContext.None))
            {
                map["cleanthis"].Enabled = false;
            }
            else
            {
                map["cleanthis"].Enabled = true;

                map["cleanthis"].Text = controller.IsMusicalPlaylist
                                        ? Resx.MenuCleanAlbum
                                        : Resx.MenuCleanPlaylist;
            }

            map["scandead"].Enabled  = !librarian.IsActive(Resx.I_ScanPhantoms);
            map["scandup"].Enabled   = !librarian.IsActive(Resx.I_ScanDuplicates);
            map["scanempty"].Enabled = !librarian.IsActive(Resx.I_ScanEmptyDirectories);

            var isMusic = (controller != null) &&
                          controller.IsMusicalPlaylist &&
                          (controller.CurrentTrack != null) &&
                          controller.Librarian?.Catalog != null;

            var hasPlaylist = (controller.CurrentPlaylist != null);
            var noDialogs   = (syncDialog == null) && (exportDialog == null);
            var notXporting = !librarian.IsActive(Resx.I_ScanExport) && !librarian.IsActive(Resx.I_ScanImportPlaylist);

            // fix menu items

            map["fixalbum"].Enabled = isMusic;
            map["fixtrack"].Enabled = isMusic;

            // export menu items

            map["exalbum"].Enabled    = isMusic && noDialogs && notXporting;
            map["exartist"].Enabled   = isMusic && noDialogs && notXporting;
            map["explaylist"].Enabled = isMusic && hasPlaylist && noDialogs && notXporting;

            // synchronize item

            map["sync"].Enabled = isMusic && noDialogs;
        }