00001
00032 #ifndef LL_LLGIVEMONEY_H
00033 #define LL_LLGIVEMONEY_H
00034
00035 #include "lluuid.h"
00036 #include "llfloater.h"
00037 #include "lllslconstants.h"
00038
00039
00040
00041
00042
00043 class LLViewerRegion;
00044 class LLLineEditor;
00045 class LLTextBox;
00046 class LLButton;
00047 class LLObjectSelection;
00048 struct LLGiveMoneyInfo;
00049
00050 typedef void (*money_callback)(const LLUUID&, LLViewerRegion*,S32,BOOL,S32,const LLString&);
00051
00052 class LLFloaterPay : public LLFloater
00053 {
00054 public:
00055 LLFloaterPay(const std::string& name,
00056 money_callback callback,
00057 const LLUUID& target_id,
00058 BOOL target_is_object);
00059 virtual ~LLFloaterPay();
00060
00061
00062
00063
00064
00065 static void payViaObject(money_callback callback, const LLUUID& object_id);
00066
00067
00068
00069 static void payDirectly(money_callback callback,
00070 const LLUUID& target_id,
00071 BOOL is_group);
00072
00073 private:
00074 static void onCancel(void* data);
00075 static void onKeystroke(LLLineEditor* editor, void* data);
00076 static void onGive(void* data);
00077 void give(S32 amount);
00078 static void processPayPriceReply(LLMessageSystem* msg, void **userdata);
00079 static void onCacheOwnerName(const LLUUID& owner_id,
00080 const char* firstname,
00081 const char* lastname,
00082 BOOL is_group,
00083 void* userdata);
00084 void finishPayUI(const LLUUID& target_id, BOOL is_group);
00085
00086 protected:
00087 std::vector<LLGiveMoneyInfo*> mCallbackData;
00088 money_callback mCallback;
00089 LLTextBox* mObjectNameText;
00090 LLUUID mTargetUUID;
00091 BOOL mTargetIsObject;
00092 BOOL mTargetIsGroup;
00093 BOOL mHaveName;
00094
00095 LLButton* mQuickPayButton[MAX_PAY_BUTTONS];
00096 LLGiveMoneyInfo* mQuickPayInfo[MAX_PAY_BUTTONS];
00097
00098 LLHandle<LLObjectSelection> mObjectSelection;
00099
00100 static S32 sLastAmount;
00101 };
00102
00103
00104 #endif // LL_LLGIVEMONEY_H