#pragma once #include "retroshare/rsconfig.h" #include class BWGraphSource: public RSGraphSource { public: struct TrafficHistoryChunk { time_t time_stamp; std::list out_rstcl ; std::list in_rstcl ; }; BWGraphSource() ; enum { SELECTOR_TYPE_FRIEND=0x00, SELECTOR_TYPE_SERVICE=0x01 }; enum { GRAPH_TYPE_SINGLE=0x00, GRAPH_TYPE_ALL=0x01, GRAPH_TYPE_SUM=0x02 }; enum { UNIT_KILOBYTES=0x00, UNIT_COUNT=0x01 }; enum { DIRECTION_UP=0x00, DIRECTION_DOWN=0x01 }; // re-derived from RSGraphSource virtual void getValues(std::map& values) const; virtual QString displayValue(float v) const; virtual QString legend(int i,float v) const; virtual void update(); QString unitName() const ; // own methdods to control what's used to create displayed info void setSelector(int selector_type, int graph_type, const std::string& selector_client_string = std::string()) ; void setDirection(int dir) ; void setUnit(int unit) ; int direction() const { return _current_direction ;} int unit() const { return _current_unit ;} int friendGraphType() const { return _friend_graph_type ;} int serviceGraphType() const { return _service_graph_type ;} const std::set& visibleFriends() const { return mVisibleFriends; } const std::set& visibleServices() const { return mVisibleServices; } protected: void convertTrafficClueToValues(const std::list &lst, std::map &vals) const; void recomputeCurrentCurves() ; private: QString niceNumber(float v) const; mutable float _total_sent ; mutable float _total_recv ; int _friend_graph_type ; int _service_graph_type ; RsPeerId _current_selected_friend ; std::string _current_selected_friend_name ; uint16_t _current_selected_service ; int _current_unit ; int _current_direction ; std::list mTrafficHistory ; std::set mVisibleFriends ; std::set mVisibleServices ; }; class BWGraph: public RSGraphWidget { public: BWGraph(QWidget *parent); BWGraphSource *source() ; const std::set& visibleFriends() const { return _local_source->visibleFriends(); } const std::set& visibleServices() const { return _local_source->visibleServices(); } protected: BWGraphSource *_local_source ; };