summaryrefslogtreecommitdiff
path: root/indra/newview/llfloaterworldmap.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llfloaterworldmap.h')
-rw-r--r--indra/newview/llfloaterworldmap.h170
1 files changed, 170 insertions, 0 deletions
diff --git a/indra/newview/llfloaterworldmap.h b/indra/newview/llfloaterworldmap.h
new file mode 100644
index 0000000000..32112a995f
--- /dev/null
+++ b/indra/newview/llfloaterworldmap.h
@@ -0,0 +1,170 @@
+/**
+ * @file llfloaterworldmap.h
+ * @brief LLFloaterWorldMap class definition
+ *
+ * Copyright (c) 2003-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+/*
+ * Map of the entire world, with multiple background images,
+ * avatar tracking, teleportation by double-click, etc.
+ */
+
+#ifndef LL_LLFLOATERWORLDMAP_H
+#define LL_LLFLOATERWORLDMAP_H
+
+#include "lldarray.h"
+#include "llfloater.h"
+#include "llhudtext.h"
+#include "llmapimagetype.h"
+#include "lltracker.h"
+
+class LLEventInfo;
+class LLFriendObserver;
+class LLInventoryModel;
+class LLInventoryObserver;
+class LLItemInfo;
+class LLTabContainer;
+class LLWorldMapView;
+
+class LLFloaterWorldMap : public LLFloater
+{
+public:
+ LLFloaterWorldMap();
+ virtual ~LLFloaterWorldMap();
+
+ static void *createWorldMapView(void* data);
+ BOOL postBuild();
+
+ virtual void onClose(bool app_quitting);
+
+ static void show(void*, BOOL center_on_target );
+ static void reloadIcons(void*);
+ static void toggle(void*);
+ static void hide(void*);
+
+ virtual void reshape( S32 width, S32 height, BOOL called_from_parent = TRUE );
+ virtual BOOL handleHover(S32 x, S32 y, MASK mask);
+ virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
+ virtual void setVisible(BOOL visible);
+ virtual void draw();
+
+ // methods for dealing with inventory. The observe() method is
+ // called during program startup. inventoryUpdated() will be
+ // called by a helper object when an interesting change has
+ // occurred.
+ void observeInventory(LLInventoryModel* inventory);
+ void inventoryChanged();
+
+ // Calls for dealing with changes in friendship
+ void observeFriends();
+ void friendsChanged();
+
+ // tracking methods
+ void trackAvatar( const LLUUID& avatar_id, const LLString& name );
+ void trackLandmark( const LLUUID& landmark_item_id );
+ void trackLocation(const LLVector3d& pos);
+ void trackEvent(const LLItemInfo &event_info);
+ void trackGenericItem(const LLItemInfo &item);
+ void trackURL(const LLString& region_name, S32 x_coord, S32 y_coord, S32 z_coord);
+
+ static const LLUUID& getHomeID() { return sHomeID; }
+
+ // A z_attenuation of 0.0f collapses the distance into the X-Y plane
+ F32 getDistanceToDestination(const LLVector3d& pos_global, F32 z_attenuation = 0.5f) const;
+
+ void clearLocationSelection(BOOL clear_ui = FALSE);
+ void clearAvatarSelection(BOOL clear_ui = FALSE);
+ void clearLandmarkSelection(BOOL clear_ui = FALSE);
+
+ // Adjust the maximally zoomed out limit of the zoom slider so you can
+ // see the whole world, plus a little.
+ void adjustZoomSliderBounds();
+
+ // Catch changes in the sim list
+ void updateSims(bool found_null_sim);
+
+protected:
+ static void onPanBtn( void* userdata );
+
+ static void onGoHome(void* data);
+
+ static void onLandmarkComboPrearrange( LLUICtrl* ctrl, void* data );
+ static void onLandmarkComboCommit( LLUICtrl* ctrl, void* data );
+
+ static void onAvatarComboPrearrange( LLUICtrl* ctrl, void* data );
+ static void onAvatarComboCommit( LLUICtrl* ctrl, void* data );
+
+ static void onCommitBackground(void* data, bool from_click);
+
+ static void onClearBtn(void*);
+ static void onFlyBtn(void*);
+ static void onTeleportBtn(void*);
+ static void onShowTargetBtn(void*);
+ static void onShowAgentBtn(void*);
+ static void onCopySLURL(void*);
+
+ static void onCheckEvents(LLUICtrl* ctrl, void*);
+
+ void centerOnTarget(BOOL animate);
+ void updateLocation();
+
+ // fly to the tracked item, if there is one
+ void fly();
+
+ // teleport to the tracked item, if there is one
+ void teleport();
+
+ void buildLandmarkIDLists();
+ static void onGoToLandmarkDialog(S32 option,void* userdata);
+ void flyToLandmark();
+ void teleportToLandmark();
+ void setLandmarkVisited();
+
+ void buildAvatarIDList();
+ void flyToAvatar();
+ void teleportToAvatar();
+
+ static void updateSearchEnabled( LLUICtrl* ctrl, void* userdata );
+ static void onLocationCommit( void* userdata );
+ static void onCommitLocation( LLUICtrl* ctrl, void* userdata );
+ static void onCommitSearchResult( LLUICtrl* ctrl, void* userdata );
+
+ void cacheLandmarkPosition();
+
+protected:
+ LLTabContainerCommon* mTabs;
+
+ // Sets gMapScale, in pixels per region
+ F32 mCurZoomVal;
+ LLFrameTimer mZoomTimer;
+
+ LLDynamicArray<LLUUID> mLandmarkAssetIDList;
+ LLDynamicArray<LLUUID> mLandmarkItemIDList;
+ BOOL mHasLandmarkPosition;
+
+ static const LLUUID sHomeID;
+
+ LLInventoryModel* mInventory;
+ LLInventoryObserver* mInventoryObserver;
+ LLFriendObserver* mFriendObserver;
+
+ LLString mCompletingRegionName;
+ LLString mLastRegionName;
+ BOOL mWaitingForTracker;
+ BOOL mExactMatch;
+
+ BOOL mIsClosing;
+
+ LLVector3d mTrackedLocation;
+ LLTracker::ETrackingStatus mTrackedStatus;
+ LLString mTrackedSimName;
+ LLString mTrackedAvatarName;
+ LLString mSLURL;
+};
+
+extern LLFloaterWorldMap* gFloaterWorldMap;
+
+#endif
+