OSDN Ticket Archive


Ticket #42364

macOS版 フォルダ演奏対応

登録: 2021-05-23 01:23 最終更新: 2021-05-23 23:37

報告者:
yknk
担当者:
yknk
チケットの種類:
機能リクエスト
状況:
完了
コンポーネント:
MIDITrail Ver.1.3.x for macOS
マイルストーン:
Version 1.3.3 for macOS (完了済み)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし

詳細

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

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

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

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

参考

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

チケットの履歴

2021-05-23 01:23 更新者: yknk
  • 新しいチケット "macOS版 フォルダ演奏対応" が作成されました
2021-05-23 01:23 更新者: yknk
コメント

対応方針

  • MIDIデータファイルが格納されいてるフォルダを選択できるようにする。
  • MIDIデータファイルをファイル名で昇順ソートして、順番にファイルを開けるようにする。
  • ファイル一覧ダイアログなど、リッチなユーザインターフェースは用意しない。
2021-05-23 01:24 更新者: 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 更新者: 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 更新者: 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 更新者: 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 更新者: 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 更新者: yknk
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 修正済み に更新されました

添付ファイルリスト

添付ファイルはありません