-2

アプリケーションのアイコンが入ったドックバーを作りたい。アイコンをクリックすると、そのアプリケーションは昼食になります。ドックバーを非表示にするにはどうすればよいですか?

私はココアに不慣れで、それについてはわかりません。だから誰でも私にそれをするための基本的な考えを与えることができます。

前もって感謝します

4

1 に答える 1

7

ここにはいくつかの重要な要素があります。

  • 画面上の他のほとんどのものと同様に、Dockはウィンドウ内にある必要があります。おそらく、標準フレーム(タイトルバー、ストップライト、サイズ変更ハンドル)を備えたウィンドウを想像していないので、フチなしウィンドウが必要になります。特定のウィンドウレベル、つまりこれである必要があります。
  • 各アイコンは、で始まるボタンになります。これを、バウンス、実行状態の表示(DockがLEDで行うように)などが可能なカスタムビューに進化させます。
  • Dockには、実行中のアプリケーション、ブックマークされたアプリケーション(実行中もDockにとどまる)、ブックマークされたファイル(ドキュメント、フォルダーなど)の3種類のアイテムが表示されます。アプリケーションは仕切りの左側にあります。ブックマークされたファイルとゴミ箱は右側にあります。
  • ゴミ箱と言えば、必要に応じて、FSEventsを使用してゴミ箱が空にならなくなったことを検出し、NSWorkspaceまたはApple EventをFinderに送信してゴミ箱を開き、AppleEventをFinderに使用してゴミ箱を空にする必要があります。 。
  • ユーザーが実行されていないブックマークされたアプリケーションをクリックすると、NSWorkspaceを使用してそのアプリケーションを起動します。
  • すでに実行されているアプリケーションの場合は、それらをアクティブ化するか(まだアクティブになっていない場合)、または「再度開く」(すでにアクティブになっている場合)必要があります。最初にそれらを起動して、3つのケースすべてでそれが正しいことを行うかどうかを確認してみます。そうでない場合は、必要に応じて自分でAppleEventを送信できます。
  • ブックマークされたフォルダーは、リスト(メニュー)、グリッド(コレクションビュー)、および「ファン」の3つのUIのいずれかを使用してDockで閲覧できます。メニューは簡単に作成できますが、ポップオーバースタイルのメニューを作成する方法がわかりません。グリッドUIは、HUDスタイルのポップオーバーのコレクションビューになります。「ファン」は、ポップオーバーでは完全にカスタムです。
  • アプリケーションをDockに追加し(ブックマークとしてまだ存在しない場合)、アプリケーションから削除する(ブックマークされていない場合)には、アプリケーションの起動と終了を検出する必要があります。NSWorkspaceにはこのための通知があります。
  • アプリケーションのカスタムDockメニューを取得できない可能性があります。これは、AppleのDockとAppKitの間のすべてのプライベートなものです。
  • 同様に、「デスクトップへの割り当て」メニュー項目を実装して頑張ってください。
  • 各アプリケーションのDockメニューの他のコマンドは、NSRunningApplicationメソッドに対応しています。
  • また、Dockアイコンビューでのドラッグアンドドロップを処理して、並べ替えを有効にしたり、ユーザーがDockからアイテムをドラッグしてブックマークを解除したりできるようにすることもできます。実行中のアプリケーションのブックマークを解除する場合を処理することを忘れないでください(Dockはブックマークを解除しますが、アプリはまだ実行中であるため、元の場所にスナップします)。ブックマークを解除するときは、ユーザーがそれをドロップしたときにプーフ効果を再生します。
  • ユーザーが⌘-Dockからアイテムをドラッグしたら、そのアイテムで表されるファイルをドラッグします。これは、Finder(AppleのDockでは-必要に応じてこれを行うことができます)またはゴミ箱(単一のアイテムを表すものではありません)では機能しません。ドックからアイテムを取り外さないでください。
  • また、反対側では、アイコンで表されるアイテムがそのドラッグを受け取ることができる場合に限り、ユーザーがアイコンにドラッグするときにアイコンを強調表示する必要があります。
    • ユーザーがファイルをアプリケーションにドラッグするときに、すべてのファイルの種類がアプリケーションのドキュメントの種類に含まれている場合は、そのファイルを強調表示します。NSWorkspaceを使用してドラッグを完​​了し、そのアプリケーションでファイルURLを開きます。
    • ユーザーがファイル以外のURLをアプリケーションにドラッグするときに、すべてのURLのスキームがアプリケーションのURLスキームに含まれている場合は、それを強調表示します。NSWorkspaceを使用してドラッグを完​​了し、そのアプリケーションでURLを開きます。
    • ユーザーがコンテンツをアプリケーションにドラッグするときに、ドラッグペーストボード上の任意のコンテンツタイプを処理できるサービスがアプリケーションにある場合は、そのコンテンツを強調表示します。そのサービスを呼び出して完了します。(特定のアプリケーションでこれを行うためのパブリックAPIを知りません。サービス名を使用するだけで、最高のものを期待できます。)
    • ユーザーがファイルをフォルダーにドラッグするときに、フォルダーが書き込み可能であるか、フォルダーが含まれている場合は、そのフォルダーを強調表示します。ユーザーが一定時間そこにカーソルを合わせた場合は、Finderでフォルダーを開きます(この機能はスプリングロードフォルダーと呼ばれます)。ユーザーがDock内のフォルダーにファイルをドロップした場合は、修飾キーの状態に応じて、ファイルをフォルダーに移動またはコピーするか、フォルダー内にそれらのエイリアスを作成して、ドラッグを完​​了します。
    • ゴミ箱へのファイルについても同じことが言えますが、ファイルごとに正しいゴミ箱を決定する必要があります。ファイルがホームフォルダ内にある場合、正しいゴミ箱はホームフォルダのゴミ箱です。それ以外の場合は、ファイルが存在するボリュームのボリュームレベルのゴミ箱です。
    • ユーザーがボリュームをゴミ箱にドラッグしたら、そのアイコンをイジェクトアイコン(kEjectMediaIcon、で使用iconForFileType:)に変更します。ボリュームを取り出してドラッグを完​​了します。ユーザーがドラッグを完​​了した場合、キャンセルした場合、またはゴミ箱からドラッグした場合は、ゴミ箱のアイコンを元に戻します。
  • ああ、アイテムを追加するには、仕切りの前後を含め、アイテム間のドラッグを処理する必要があります。これは、前述の並べ替えのためのドラッグと重複します。
  • 自動非表示の場合、Dockを配置する画面の端(通常は最初の画面、ある場合)。ユーザーがこのウィンドウにマウスを合わせると、Dockが表示されます(薄いウィンドウが覆われているはずです)。ユーザーがマウスをDockの外に移動したら、非表示にします。
  • Dockには、仕切りにさまざまなオプションを含むコンテキストメニューがあります。
  • Dockにはすでに少なくとも2つのテーマ(デフォルトの「ガラス」テーマと2D HUDスタイルのテーマ)があるため、理想的には、ある時点でテーマのサポートを期待する必要があります。

私が何かを逃したかどうか私に知らせてください。

于 2013-01-12T20:20:50.063 に答える