Ejemplo n.º 1
0
        private void ParseINI(KFN KFN)
        {
            KFN.ResourceFile resource = KFN.Resources.Where(r => r.FileName == "Song.ini").First();
            byte[]           data     = KFN.GetDataFromResource(resource);
            string           iniText  = new string(Encoding.UTF8.GetChars(data));

            SongINI sINI = new SongINI(iniText);

            iniBlocksView.ItemsSource = sINI.Blocks;
            this.AutoSizeColumns(iniBlocksView.View as GridView);
        }
Ejemplo n.º 2
0
        public ExportWindow(string exportType, KFN KFN)
        {
            InitializeComponent();

            WindowElement.Title += exportType;
            this.KFN             = KFN;
            this.exportType      = exportType;

            videoLabel.Visibility      = (exportType == "EMZ") ? Visibility.Visible : Visibility.Hidden;
            videoSelect.Visibility     = (exportType == "EMZ") ? Visibility.Visible : Visibility.Hidden;
            playVideoButton.Visibility = (exportType == "EMZ") ? Visibility.Visible : Visibility.Hidden;
            deleteID3Tags.IsChecked    = true;
            deleteID3Tags.Visibility   = (exportType == "MP3+LRC") ? Visibility.Visible : Visibility.Hidden;
            artistLabel.Visibility     = (exportType != "EMZ") ? Visibility.Visible : Visibility.Hidden;
            titleLabel.Visibility      = (exportType != "EMZ") ? Visibility.Visible : Visibility.Hidden;
            artistSelect.Visibility    = (exportType != "EMZ") ? Visibility.Visible : Visibility.Hidden;
            titleSelect.Visibility     = (exportType != "EMZ") ? Visibility.Visible : Visibility.Hidden;
            encLabel.Visibility        = (exportType != "EMZ") ? Visibility.Visible : Visibility.Hidden;
            encSelect.Visibility       = (exportType != "EMZ") ? Visibility.Visible : Visibility.Hidden;

            // TODO
            playVideoButton.IsEnabled = false;
            playAudioButton.IsEnabled = false;

            // AUDIO
            List <KFN.ResourceFile> audios = KFN.Resources.Where(r => r.FileType == "Audio").ToList();
            string audioSource             = KFN.GetAudioSourceName();

            audioSelect.ItemsSource       = audios;
            audioSelect.DisplayMemberPath = "FileName";
            audioSelect.SelectedItem      = audios.Where(a => a.FileName == audioSource).FirstOrDefault();
            if (audioSelect.SelectedItem == null)
            {
                System.Windows.MessageBox.Show("Can`t find audio source!");
                return;
            }
            if (audios.Count == 1)
            {
                audioSelect.IsEnabled = false;
            }

            // LYRICS
            Dictionary <string, string> lyrics = new Dictionary <string, string>();
            List <KFN.ResourceFile>     texts  = KFN.Resources.Where(r => r.FileType == "Text").ToList();

            foreach (KFN.ResourceFile resource in texts)
            {
                lyrics.Add(resource.FileName, this.GetResourceText(resource));
            }

            KFN.ResourceFile songIni = KFN.Resources.Where(r => r.FileName == "Song.ini").First();
            byte[]           data    = KFN.GetDataFromResource(songIni);
            string           iniText = new string(Encoding.UTF8.GetChars(data));
            SongINI          sINI    = new SongINI(iniText);

            foreach (SongINI.BlockInfo block in sINI.Blocks.Where(b => b.Id == "1" || b.Id == "2"))
            {
                string lyricFromBlock = (exportType == "EMZ")
                    ? KFN.INIToELYR(block.Content)
                    : KFN.INIToExtLRC(block.Content);
                if (lyricFromBlock != null)
                {
                    lyrics.Add("Song.ini: " + block.Name, lyricFromBlock);
                }
                else
                {
                    lyrics.Add("Song.ini: " + block.Name, "Can`t convert lyric from Song.ini");
                }
            }
            lyricSelect.DisplayMemberPath = "Key";
            lyricSelect.SelectedIndex     = 0;
            if (lyrics.Count == 1)
            {
                lyricSelect.IsEnabled = false;
            }
            lyricSelect.ItemsSource = lyrics;
            lyricPreview.Text       = ((KeyValuePair <string, string>)lyricSelect.SelectedItem).Value;

            // ARTIST-TITLE
            if (exportType == "MP3+LRC")
            {
                List <string> artists = new List <string> {
                    null
                };
                List <string> titles = new List <string> {
                    null
                };

                KeyValuePair <string, string> kfnArtist = KFN.Properties.Where(p => p.Key == "Artist").FirstOrDefault();
                if (kfnArtist.Value != null && kfnArtist.Value.Length > 0)
                {
                    artists.Add(kfnArtist.Value);
                }
                KeyValuePair <string, string> kfnTitle = KFN.Properties.Where(p => p.Key == "Title").FirstOrDefault();
                if (kfnTitle.Value != null && kfnTitle.Value.Length > 0)
                {
                    titles.Add(kfnTitle.Value);
                }

                foreach (KFN.ResourceFile resource in KFN.Resources.Where(r => r.FileType == "Audio"))
                {
                    string[] atFromID3 = ID3Class.GetArtistAndTitle(KFN.GetDataFromResource(resource));
                    if (atFromID3[0] != null)
                    {
                        artists.Add(atFromID3[0]);
                    }
                    if (atFromID3[1] != null)
                    {
                        titles.Add(atFromID3[1]);
                    }
                }
                artists = artists.Distinct().ToList();
                titles  = titles.Distinct().ToList();

                artistSelect.ItemsSource   = artists;
                artistSelect.SelectedIndex = 0;
                titleSelect.ItemsSource    = titles;
                titleSelect.SelectedIndex  = 0;

                encSelect.ItemsSource       = this.encodings;
                encSelect.DisplayMemberPath = "Value";
                encSelect.SelectedIndex     = 0;
            }

            // VIDEO
            if (exportType == "EMZ")
            {
                List <KFN.ResourceFile> videos = KFN.Resources.Where(r => r.FileType == "Video").ToList();
                if (videos.Count == 0)
                {
                    videos.Add(new KFN.ResourceFile("Video", "video not found", 0, 0, 0, false));
                    videoSelect.IsEnabled = false;
                }
                else
                {
                    videos.Add(new KFN.ResourceFile("Video", "don`t use video", 0, 0, 0, false));
                }
                videoSelect.ItemsSource       = videos;
                videoSelect.DisplayMemberPath = "FileName";
                videoSelect.SelectedIndex     = 0;
            }
        }