第22回 レーティングを表示する

今回は前回までに設定/保存できるようになったレーティング情報を表示します。

Form1に曲レーティングを表示するためのラベル「labelRating」、
アーティストレーティングを表示するためのラベル「labelRatingArtist」の2つを配置。

そしてForm1のPlay()およびSetRating()、SetRatingArtist()で表示更新をします。

022_1.png

■Form1.cs
		/// <summary>
		/// 曲レーティング設定
		/// </summary>
		void SetRating(int nRating)
		{
			if (_nCurrentIndex < 0)
				return;
			_option.SetRating(_listFiles[_nCurrentIndex], nRating);

			ShowRating();		//追加
		}

		/// <summary>
		/// アーティストレーティング設定
		/// </summary>
		void SetRatingArtist(int nRating)
		{
			if (_nCurrentIndex < 0)
				return;
			_option.SetRatingArtist(labelArtist.Text, nRating);

			ShowRating();		//追加
		}




		/// <summary>
		/// 曲を再生する
		/// </summary>
		void Play(bool bPlayNext = true)
		{
			if (_listFiles.Count == 0)
				return;

			if (bPlayNext || _listPlayHistory.Count == 0)
			{
				//次の曲を再生する
				if (_nCurrentIndex >= 0)
				{
					_listPlayHistory.Add(_nCurrentIndex);					//今の曲を履歴として保存
					if (_listPlayHistory.Count > 100)						//履歴の最大保存数は100
						_listPlayHistory.RemoveAt(0);
				}

				_nCurrentIndex = GetNextIndex();
			}
			else
			{
				//前の曲を再生する
				if (_nCurrentIndex >= 0)
					_listPlayNext.Insert(0, _nCurrentIndex);					//今の曲を次の曲として保存
				_nCurrentIndex = _listPlayHistory[_listPlayHistory.Count - 1];	//一番最新の履歴曲を今の曲とする
				_listPlayHistory.RemoveAt(_listPlayHistory.Count - 1);			//一番最新の履歴曲を削除
			}

			Utility.CleanTempFolder();			//tmpフォルダ内の削除

			string strFile = _listFiles[_nCurrentIndex].strFile;
			if (_listFiles[_nCurrentIndex].nEntryIndex >= 0)
			{
				//zip書庫ならtmpフォルダに解凍する
				bool ret = Utility.ExtractFileFromZip(strFile, _listFiles[_nCurrentIndex].nEntryIndex, Utility.GetTmpFile(), out strFile);
				if (ret == false)
					return;
			}

			_mediaPlayer.URL = strFile;			//再生曲をセット
			_mediaPlayer.controls.play();

			//曲名/タイトルの表示
			{
				string strTitle;
				string strArtist;
				string strAlbum;

				Utility.GetMp3Info(strFile, out strTitle, out strArtist, out strAlbum);

				labelTitle.Text = strTitle;
				labelArtist.Text = strArtist;

				ShowRating();		//追加
			}
		}

		//以下を追加
		/// <summary>
		/// レーティングの表示
		/// </summary>
		void ShowRating()
		{
			if (_nCurrentIndex < 0)
			{
				labelRating.Text = "";
				labelRatingArtist.Text = "";
				return;
			}

			int nRating = _option.GetRating(_listFiles[_nCurrentIndex]);
			int nRatingArtist = _option.GetRatingArtist(labelArtist.Text);

			labelRating.Text = GetRatingString(nRating);
			labelRatingArtist.Text = GetRatingString(nRatingArtist);
		}


		//以下を追加
		/// <summary>
		/// レーティング文字列「★」~「★★★★★」の作成
		/// </summary>
		string GetRatingString(int nRating)
		{
			if (nRating > 5)
				nRating = 5;
			if (nRating < 0)
				nRating = 0;

			string str = "";
			for (int i = 0; i < nRating; i++)
				str += "★";
			for (int i = nRating; i < 5; i++)
				str += " ";

			return str;
		}

プロジェクトファイルをダウンロード


カテゴリー「MP3プレーヤーを作る(C#)」 のエントリー