00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "battery_monitor.h"
00024 #include "battery_monitor_treeview.h"
00025
00026 #include <netcomm/dns-sd/avahi_thread.h>
00027
00028 using namespace std;
00029 using namespace fawkes;
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 BatteryMonitor::BatteryMonitor( Glib::RefPtr< Gnome::Glade::Xml > ref_xml )
00040 {
00041 ref_xml->get_widget("wndMain", m_wnd_main);
00042 m_trv_battery = NULL;
00043 ref_xml->get_widget_derived( "trvBattery", m_trv_battery );
00044 ref_xml->get_widget("btnQuit", m_btn_quit);
00045 m_btn_quit->signal_clicked().connect( sigc::mem_fun( *this, &BatteryMonitor::on_btn_quit_clicked ) );
00046
00047 m_avahi = new AvahiThread();
00048 m_avahi->watch_service( "_fawkes._tcp", this );
00049 m_avahi->start();
00050 }
00051
00052
00053 BatteryMonitor::~BatteryMonitor()
00054 {
00055 m_avahi->cancel();
00056 m_avahi->join();
00057 delete m_avahi;
00058 }
00059
00060
00061
00062
00063 Gtk::Window&
00064 BatteryMonitor::get_window() const
00065 {
00066 return *m_wnd_main;
00067 }
00068
00069 void
00070 BatteryMonitor::all_for_now()
00071 {
00072 }
00073
00074 void
00075 BatteryMonitor::cache_exhausted()
00076 {
00077 }
00078
00079 void
00080 BatteryMonitor::browse_failed( const char* name,
00081 const char* type,
00082 const char* domain )
00083 {
00084 }
00085
00086 void
00087 BatteryMonitor::service_added( const char* name,
00088 const char* type,
00089 const char* domain,
00090 const char* host_name,
00091 const struct sockaddr* addr,
00092 const socklen_t addr_size,
00093 uint16_t port,
00094 std::list<std::string>& txt,
00095 int flags )
00096 {
00097 string host( host_name );
00098 string service( name );
00099 m_services[ service ] = host_name;
00100 m_trv_battery->add_host( host_name );
00101 }
00102
00103 void
00104 BatteryMonitor::service_removed( const char* name,
00105 const char* type,
00106 const char* domain )
00107 {
00108 std::map< string, string >::iterator i = m_services.find( string( name ) );
00109 if ( i != m_services.end() )
00110 { m_trv_battery->rem_host( (i->second).c_str() ); }
00111 }
00112
00113 void
00114 BatteryMonitor::on_btn_quit_clicked()
00115 {
00116 m_wnd_main->hide();
00117 }