00001
00032 #ifndef LL_LLMODALDIALOG_H
00033 #define LL_LLMODALDIALOG_H
00034
00035 #include "llfloater.h"
00036 #include "llframetimer.h"
00037
00038 class LLModalDialog;
00039
00040
00041
00042
00043
00044 class LLModalDialog : public LLFloater
00045 {
00046 public:
00047 LLModalDialog( const LLString& title, S32 width, S32 height, BOOL modal = true );
00048 ~LLModalDialog();
00049
00050 void reshape(S32 width, S32 height, BOOL called_from_parent = 1);
00051
00052 void startModal();
00053 void stopModal();
00054
00055 BOOL handleMouseDown(S32 x, S32 y, MASK mask);
00056 BOOL handleMouseUp(S32 x, S32 y, MASK mask);
00057 BOOL handleHover(S32 x, S32 y, MASK mask);
00058 BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
00059 BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
00060 BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
00061 BOOL handleKeyHere(KEY key, MASK mask, BOOL called_from_parent );
00062
00063 void onClose(bool app_quitting);
00064
00065 void setVisible(BOOL visible);
00066 void draw();
00067
00068 static void onAppFocusLost();
00069 static void onAppFocusGained();
00070
00071 static S32 activeCount() { return sModalStack.size(); }
00072
00073 protected:
00074 void centerOnScreen();
00075
00076 protected:
00077 LLFrameTimer mVisibleTime;
00078 BOOL mModal;
00079
00080 static std::list<LLModalDialog*> sModalStack;
00081 };
00082
00083 #endif // LL_LLMODALDIALOG_H