private async Task ConfirmCreateNewPlaylistAsync()
        {
            CollectionPlaylistEditor view               = this.container.Resolve <CollectionPlaylistEditor>();
            var getCollectionPlaylistEditorViewModel    = this.container.Resolve <Func <PlaylistViewModel, CollectionPlaylistEditorViewModel> >();
            CollectionPlaylistEditorViewModel viewModel = getCollectionPlaylistEditorViewModel(null);

            view.DataContext = viewModel;

            if (this.dialogService.ShowCustomDialog(
                    0xea37,
                    16,
                    ResourceUtils.GetString("Language_New_Playlist"),
                    view,
                    500,
                    0,
                    false,
                    true,
                    false,
                    true,
                    ResourceUtils.GetString("Language_Ok"),
                    ResourceUtils.GetString("Language_Cancel"),
                    null))
            {
                await this.CreateNewPlaylistAsync(viewModel.EditablePlaylist);
            }
        }
        private async Task EditSelectedPlaylistAsync()
        {
            if (!this.IsPlaylistSelected)
            {
                return;
            }

            UserControl view = null;
            CollectionPlaylistEditorViewModel viewModel = null;

            try
            {
                var getCollectionPlaylistEditorViewModel = this.container.Resolve <Func <PlaylistViewModel, CollectionPlaylistEditorViewModel> >();
                viewModel = getCollectionPlaylistEditorViewModel(this.selectedPlaylist);

                if (this.selectedPlaylist.Type.Equals(PlaylistType.Static))
                {
                    view = this.container.Resolve <CollectionStaticPlaylistEditor>();
                }
                else if (this.selectedPlaylist.Type.Equals(PlaylistType.Smart))
                {
                    view = this.container.Resolve <CollectionSmartPlaylistEditor>();
                }

                if (viewModel == null)
                {
                    throw new Exception($"{nameof(viewModel)} is null");
                }

                if (view == null)
                {
                    throw new Exception($"{nameof(view)} is null");
                }
            }
            catch (Exception ex)
            {
                LogClient.Error($"Error while constructing Smart playlist editor View or ViewModel. Exception: {ex.Message}");

                this.dialogService.ShowNotification(
                    0xe711,
                    16,
                    ResourceUtils.GetString("Language_Error"),
                    ResourceUtils.GetString("Language_Error_Editing_Playlist"),
                    ResourceUtils.GetString("Language_Ok"),
                    true,
                    ResourceUtils.GetString("Language_Log_File"));
            }

            view.DataContext = viewModel;

            if (this.dialogService.ShowCustomDialog(
                    0xea37,
                    16,
                    ResourceUtils.GetString("Language_Edit_Playlist"),
                    view,
                    500,
                    0,
                    false,
                    true,
                    true,
                    true,
                    ResourceUtils.GetString("Language_Ok"),
                    ResourceUtils.GetString("Language_Cancel"),
                    null))
            {
                EditPlaylistResult result = await this.playlistService.EditPlaylistAsync(viewModel.EditablePlaylist);

                switch (result)
                {
                case EditPlaylistResult.Duplicate:
                    this.dialogService.ShowNotification(
                        0xe711,
                        16,
                        ResourceUtils.GetString("Language_Already_Exists"),
                        ResourceUtils.GetString("Language_Already_Playlist_With_That_Name").Replace("{playlistname}", viewModel.EditablePlaylist.PlaylistName),
                        ResourceUtils.GetString("Language_Ok"),
                        false,
                        string.Empty);
                    break;

                case EditPlaylistResult.Error:
                    this.dialogService.ShowNotification(
                        0xe711,
                        16,
                        ResourceUtils.GetString("Language_Error"),
                        ResourceUtils.GetString("Language_Error_Editing_Playlist"),
                        ResourceUtils.GetString("Language_Ok"),
                        true,
                        ResourceUtils.GetString("Language_Log_File"));
                    break;

                case EditPlaylistResult.Blank:
                    this.dialogService.ShowNotification(
                        0xe711,
                        16,
                        ResourceUtils.GetString("Language_Error"),
                        ResourceUtils.GetString("Language_Provide_Playlist_Name"),
                        ResourceUtils.GetString("Language_Ok"),
                        false,
                        string.Empty);
                    break;

                default:
                    // Never happens
                    break;
                }
            }
        }