0

ドキュメントのプロパティまたはアプリケーションフレームワークを照会することにより、ツールバーの状態(有効/無効、押された/押されていない)を更新できるツールバーコントローラーがあります。ビューの現在の状態を表すボタンがいくつかあります。

アプリケーション設計の観点から、私はツールバーコントローラーがドキュメントを指定されたときにいつでもボタンの状態を更新できるようにするのが好きです。また、ツールバーコントローラーとボタンハンドラーには内部状態がない方がいいです。

私が見ているオプション-他の提案を探しています:

  • ビューの状態をキャプチャできる訪問者と一緒にドキュメントのすべてのビューにアクセスするためのメカニズムを作成します。このメカニズムは、ボタンを有効/無効/押す/押すために使用されます。
  • ビューとツールバーハンドラーの間に接続を作成して、ツールバーボタンがビューに直接問い合わせることができるようにします。
  • 他の??
4

1 に答える 1

0

ビューのイベントループを試して、関数呼び出しディスパッチで状態を更新できます

このような:

class ViewEventArgs{
   public:
    int eventNumber;
};
class ViewEvent{
    public:
   virtual void onViewChange(ViewEventChangeArgs args) = 0;
};

class ViewController{
    public:
   virtual void doPressed() = 0;
   virtual void doChecked() = 0;
   //other interface methods
};

class ToolbarView : public ViewEvent{
   public:
   //Your EVENT-LOOP kernel will fire these events depending upon the state change in the view
   void onViewChange(ViewEventChangeArgs args)
   {
       switch(args.eventNumber){
    case PRESSED:
       getToolbarController()->doPressed();//the method dispatch
       break;
    case CHECKED:
       getToolbarController()->doChecked();
       }      
   }
    //other parts of the view
};

class ToolbarController: public ViewController{
    public:
       void doPressed() { /*pressed*/ }
       void doChecked() { /*checked*/ }
           //implementations
};
于 2012-10-01T20:45:04.553 に答える