任务单 #42364

macOS版 フォルダ演奏対応

开放日期: 2021-05-23 01:23 最后更新: 2021-05-23 23:37

报告人:
属主:
状态:
关闭
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Fixed
文件:

Details

ユーザが指定したフォルダに格納されている複数のMIDIデータファイルを、 順番に開いて演奏する機能を追加する。

フォルダに複数のMIDIデータファイルを格納しておくことで、 プレイリスト相当として活用できるようにする。

Windows版の以下チケットをマージする。

  • #42233 Win版 フォルダ演奏対応

参考

  • #41980 iOS版 フォルダ演奏機能追加

任务单历史 (3/8 Histories)

2021-05-23 01:23 Updated by: yknk
  • New Ticket "macOS版 フォルダ演奏対応" created
2021-05-23 01:23 Updated by: yknk
评论

対応方針

  • MIDIデータファイルが格納されいてるフォルダを選択できるようにする。
  • MIDIデータファイルをファイル名で昇順ソートして、順番にファイルを開けるようにする。
  • ファイル一覧ダイアログなど、リッチなユーザインターフェースは用意しない。
2021-05-23 01:24 Updated by: yknk
评论

仕様

Windows版と同じ仕様にする。

Fileメニュー

Fileメニューについて、次の項目を変更/追加する。

  • Open File... 変更:従来のOpen...から文字列のみ変更する
  • Open Folder... 追加
  • Previous File 追加
  • Next File 追加

Playbackメニュ−

Playbackメニューについて、次の項目を追加する。

  • Foler Playback 追加:チェックマークによるON/OFF指定

フォルダ選択操作

  • 「Open Folder...」選択時にフォルダ選択ダイアログを表示する。
  • ダイアログでフォルダが選択されたら、フォルダ直下に存在するMIDIデータファイル(*.mid)のリストを作成し、ファイル名で昇順ソートする。
  • ファイルリスト先頭のファイルを自動的に開く。
  • 「Previous File」「Next File」「Foler Playback」を活性化する。
  • ウィンドウにフォルダをドロップした場合も「Open Folder...」でフォルダを選択したときと同様に処理する。

ファイルリストのファイル選択操作

  • 「Previous File」選択時は、ファイルリストで現在選択しているファイルの直前のファイルを選択して開く。 すでにファイルリスト先頭のファイルを選択していた場合は何もしない。
  • 「Next File」選択時は、ファイルリストで現在選択しているファイルの直後のファイルを選択して開く。 すでにファイルリスト末尾のファイルを選択していた場合は何もしない。

通常のファイル選択操作

  • ユーザが「Open File...」メニューで一つのファイルを選択した場合、ファイルリストは破棄する。
  • ファイルリストが存在しないため「Previous File」「Next File」によるファイル選択は実施できない。
  • ウィンドウにファイルをドロップした場合も同様に処理する。

演奏終了時の動作

演奏終了時は「Repeat」「Folder Playback」の状態に応じて動作を変える。

  • 「Rpeat:OFF」「Folder Playback:OFF」:何もしない。
  • 「Rpeat:ON」「Folder Playback:OFF」:同じファイルを再び演奏開始する。
  • 「Rpeat:OFF」「Folder Playback:ON」:ファイルリストで現在選択しているファイルの直後のファイルを選択して開き、自動的に演奏を開始する。

ただしファイルリスト末尾の演奏が終了した場合は、何もしない。

  • 「Rpeat:ON」「Folder Playback:ON」:ファイルリストで現在選択しているファイルの直後のファイルを選択して開き、自動的に演奏を開始する。

ただしファイルリスト末尾の演奏が終了した場合は、ファイルリスト先頭のファイルを選択して開き、自動的に演奏を開始する。

ウィンドウタイトルの表示変更

ファイルリストは明示的に表示しないため、以下の情報をウィンドウタイトルに表示する。

  • 現在開いているファイルの名前
  • ファイルリストのファイル数と現在開いているファイルの項番
2021-05-23 01:24 Updated by: yknk
评论

対策1

MainMenu.xib

メニューを追加。 Previous Fileを複数登録することで、ショートカットキーを複数設定可能とする(COMMAND+P, COMMAND+B)。ただし片方のメニューを非表示にする。

  • Open Folder...
  • Previous File
  • Previous File (非表示メニュー)
  • Next File

メニューの文字列を変更。

  • Open... -> Open File...

MainMenu.strings

MainMenu.xib を編集しただけでは、このファイルは更新されない。 ターミナルでxibファイルが存在するディレクトリに移動してから、次のコマンドを実行して新しいファイルを生成して差し替える。

ibtool MainMenu.xib --generate-strings-file MainMenu.strings

MTFileList

ファイルリストクラスを新規追加。

2021-05-23 01:25 Updated by: yknk
评论

対策2

MIDITrailApp

  • メンバにフォルダ演奏フラグ m_isFolderPlayback を追加。
  • メンバにMIDIデータファイルリスト m_MIDIFileList を追加。

MIDITrailApp::MIDITrailApp

フォルダ演奏フラグ m_isFolderPlayback の初期化処理を追加。

MIDITrailApp::OnMenuOpenFile

  • メソッド名を OnMenuFileOpen から OnMenuOpenFile に変更。メニューの文字列に合わせるため。
  • ファイル選択パネル表示のメソッド名称変更に対応。
  • ファイルリスト破棄の処理を追加。
  • メニュースタイル更新の処理を追加。

MIDITrailApp::OnMenuOpenFolder

フォルダオープンメソッドを追加。

MIDITrailApp::OnMenuPreviousFile

前ファイル選択イベントハンドラを追加。

MIDITrailApp::OnMenuNextFile

次ファイル選択イベントハンドラを追加。

MIDITrailApp::OnMenuFolderPlayback

フォルダ演奏選択イベントハンドラを追加。

MIDITrailApp::OnMenuStartMonitoring

ウィンドウタイトル更新処理の呼び出しを追加。

MIDITrailApp::OnChangePlayStatusStop

演奏終了時に、フォルダ演奏フラグに応じて次のファイルを自動的に開き、演奏開始する処理を追加。

MIDITrailApp::OnDropFile

  • ファイルリスト破棄の処理を追加。
  • メニュースタイル更新の処理を追加。

MIDITrailApp::OnDropFolder

フォルダドロップイベントハンドラを追加。

MIDITrailApp::_LoadMIDIFile

  • ウィンドウタイトル更新処理の呼び出しを追加。

MIDITrailApp::_UpdateWindowTitle

ウィンドウタイトル更新メソッドを追加。

MIDITrailApp::_ChangeMenuStyle

新規に追加したメニューの活性化処理を追加。

MIDITrailApp::_UpdateMenuCheckmark

フォルダ演奏メニューのマーク更新処理を追加。

MIDITrailApp::_StopPlaybackAndOpenFolder

フォルダオープンメソッドを追加。

2021-05-23 01:25 Updated by: yknk
评论

対策3

MIDITrailAppDelegate::application:openFiles

ディレクトリのドロップを無視する処理を削除し、イベントハンドラを呼び出すように修正。

MTFileOpenPanel::Initialize

ファイルとフォルダの選択可否フラグの設定処理を追加。

MTFileOpenPanel::showModalWindowForSelectingFile

メソッドの名称を showModalWindow から showModalWindowForSelectingFile に変更。 ファイルとフォルダの選択可否フラグの設定処理を追加。

MTFileOpenPanel::showModalWindowForSelectingFolder

フォルダ選択メソッドを新規追加。

MTMainView::draggingEntered

ファイルドロップ受付可否確認メソッド呼び出し時の引数を追加。

MTMainView::performDragOperation

ファイルドロップ受付可否確認メソッド呼び出し時の引数を追加。 フォルダドロップとファイルドロップに分けてイベント通知を行うように修正。

MTMainView::isAcceptableObject

引数にディレクトリフラグを追加。

MTMainWindowCtrl

メンバ変数にウィンドウタイトル m_pWindowTitle を追加。

MTMainWindowCtrl::init

ウィンドウタイトル m_pWindowTitle の初期化処理を追加。

MTMainWindowCtrl::setWindowTitle

ウィンドウタイトル設定メソッドを追加。

MTMainWindowCtrl::timerControl

ウィンドウタイトルにメンバ変数 m_pWindowTitle の文字列を反映するように修正。

2021-05-23 01:25 Updated by: yknk
评论

対策4

MTMenuCtrl

メニュー項目種別 enum MTMenuItem に新メニューの定義を追加。

  • MenuOpenFolder
  • MenuPreviousFile
  • MenuPreviousFileHidden
  • MenuNextFile
  • MenuFolderPlayback

既存のメニュー定義の名前を修正。

  • MenuOpen -> MenuOpenFile

MTMenuCtrl::initialize

メニューID一覧に enum MTMenuItem 変更内容を反映。

MTMenuCtrl::menuItemOf

メニューオブジェクト取得処理に enum MTMenuItem 変更内容を反映。

MTMenuCtrl::onMenuOpen

呼び出しメソッドの名称変更に対応

  • m_pApp->OnMenuOpen -> m_pApp->OnMenuOpenFile

MTMenuCtrl::onMenuOpenFolder

フォルダオープンのイベントハンドラを追加。

MTMenuCtrl::onMenuPreviousFile

前ファイルのイベントハンドラを追加。

MTMenuCtrl::onMenuNextFile

次ファイルのイベントハンドラを追加。

MTMenuCtrl::onMenuFolderPlayback

フォルダ演奏のイベントハンドラを追加。

MTMenuCtrl::onDropFolder

フォルダドロップのイベントハンドラを追加。

2021-05-23 23:37 Updated by: yknk
  • 状态 Update from 开启 to 关闭
  • 处理结果 Update from to Fixed

Attachment File List

No attachments

编辑

Please login to add comment to this ticket » 登录名