00001 
00032 
00033 
00034 
00035 
00036 #ifndef LL_LLPANELCLASSIFIED_H
00037 #define LL_LLPANELCLASSIFIED_H
00038 
00039 #include "llpanel.h"
00040 #include "llclassifiedinfo.h"
00041 #include "v3dmath.h"
00042 #include "lluuid.h"
00043 #include "llfloater.h"
00044 
00045 
00046 class LLButton;
00047 class LLCheckBoxCtrl;
00048 class LLComboBox;
00049 class LLIconCtrl;
00050 class LLLineEditor;
00051 class LLTextBox;
00052 class LLTextEditor;
00053 class LLTextureCtrl;
00054 class LLUICtrl;
00055 class LLMessageSystem;
00056 
00057 class LLPanelClassified : public LLPanel
00058 {
00059 public:
00060     LLPanelClassified(BOOL in_finder, bool from_search = false);
00061      ~LLPanelClassified();
00062 
00063         void reset();
00064 
00065      BOOL postBuild();
00066 
00067      void draw();
00068 
00069          void refresh();
00070 
00071         void apply();
00072 
00073         
00074         
00075         BOOL canClose();
00076 
00077         
00078         
00079         void initNewClassified();
00080 
00081         void setClassifiedID(const LLUUID& id);
00082         void setClickThroughText(const std::string& text);
00083         static void setClickThrough(const LLUUID& classified_id,
00084                                                                 S32 teleport, S32 map, S32 profile, bool from_new_table);
00085 
00086         
00087         BOOL titleIsValid();
00088 
00089         
00090         
00091         void markForServerRequest();
00092 
00093         std::string getClassifiedName();
00094         const LLUUID& getClassifiedID() const { return mClassifiedID; }
00095 
00096     void sendClassifiedInfoRequest();
00097         void sendClassifiedInfoUpdate();
00098         void confirmPublish(S32 option);
00099 
00100     static void processClassifiedInfoReply(LLMessageSystem* msg, void**);
00101 
00102         static void callbackGotPriceForListing(S32 option, LLString text, void* data);
00103         static void callbackConfirmPublish(S32 option, void* data);
00104 
00105 protected:
00106         static void saveCallback(S32 option, void* data);
00107 
00108         static void onClickUpdate(void* data);
00109     static void onClickTeleport(void* data);
00110     static void onClickMap(void* data);
00111         static void onClickProfile(void* data);
00112     static void onClickSet(void* data);
00113 
00114         static void onFocusReceived(LLUICtrl* ctrl, void* data);
00115         static void onCommitAny(LLUICtrl* ctrl, void* data);
00116 
00117         void sendClassifiedClickMessage(const char* type);
00118         BOOL checkDirty();              
00119 
00120 protected:
00121         BOOL mInFinder;
00122         bool mFromSearch;
00123         BOOL mDirty;
00124         bool mForceClose;
00125         bool mLocationChanged;
00126         LLUUID mClassifiedID;
00127         LLUUID mRequestedID;
00128         LLUUID mCreatorID;
00129         LLUUID mParcelID;
00130         S32 mPriceForListing;
00131 
00132         
00133         S32 mTeleportClicksOld;
00134         S32 mMapClicksOld;
00135         S32 mProfileClicksOld;
00136         S32 mTeleportClicksNew;
00137         S32 mMapClicksNew;
00138         S32 mProfileClicksNew;
00139 
00140         
00141         BOOL mDataRequested;
00142 
00143         
00144         
00145         BOOL mPaidFor;
00146 
00147         LLString mSimName;
00148         LLVector3d mPosGlobal;
00149 
00150         
00151         LLTextureCtrl*  mSnapshotCtrl;
00152         LLLineEditor*   mNameEditor;
00153         LLTextEditor*   mDescEditor;
00154         LLLineEditor*   mLocationEditor;
00155         LLComboBox*             mCategoryCombo;
00156         LLCheckBoxCtrl* mMatureCheck;
00157         LLCheckBoxCtrl* mAutoRenewCheck;
00158 
00159         LLButton*    mUpdateBtn;
00160         LLButton*    mTeleportBtn;
00161         LLButton*    mMapBtn;
00162         LLButton*        mProfileBtn;
00163 
00164         LLTextBox*              mInfoText;
00165         LLButton*               mSetBtn;
00166         LLTextBox*              mClickThroughText;
00167 
00168         LLRect          mSnapshotSize;
00169         typedef std::list<LLPanelClassified*> panel_list_t;
00170         static panel_list_t sAllPanels;
00171 };
00172 
00173 
00174 class LLFloaterPriceForListing
00175 : public LLFloater
00176 {
00177 public:
00178         LLFloaterPriceForListing();
00179         virtual ~LLFloaterPriceForListing();
00180         virtual BOOL postBuild();
00181 
00182         static void show( void (*callback)(S32 option, LLString value, void* userdata), void* userdata );
00183 
00184 private:
00185         static void onClickSetPrice(void*);
00186         static void onClickCancel(void*);
00187         static void buttonCore(S32 button, void* data);
00188 
00189 private:
00190         void (*mCallback)(S32 option, LLString, void*);
00191         void* mUserData;
00192 };
00193 
00194 
00195 #endif // LL_LLPANELCLASSIFIED_H