コード例 #1
0
itype_id vehicle_part::ammo_current() const
{
    if( is_battery() ) {
        return "battery";
    }

    if( is_tank() && !base.contents.empty() ) {
        return base.contents.front().typeId();
    }

    if( is_fuel_store( false ) || is_turret() ) {
        return base.ammo_current();
    }

    return "null";
}
コード例 #2
0
ファイル: BatteryMonitor.cpp プロジェクト: GustavoMOG/ede
void BatteryMonitor::scan_and_init(void) {
	if(con.connected()) return;
	E_RETURN_IF_FAIL(con.connect(EDBUS_SYSTEM));
	
	/* get battery devices */
	EdbusMessage msg, reply;
	msg.create_method_call(UPOWER_SERVICE, UPOWER_PATH, UPOWER_SERVICE, "EnumerateDevices");

	E_RETURN_IF_FAIL(con.send_with_reply_and_block(msg, 1000, reply));
	E_RETURN_IF_FAIL(reply.size() == 1);

	EdbusMessage::const_iterator it = reply.begin();
	E_RETURN_IF_FAIL(it->is_array());

	EdbusList arr = it->to_array();
	it = arr.begin();
	EdbusMessage::const_iterator ite = arr.end();

	for(; it != ite; ++it) {
		if(!it->is_object_path()) continue;

		EdbusObjectPath p = it->to_object_path();

		if(is_battery(con, p.path())) {
			/* filters so signal_cb() doesn't get clobbered with uninterested dbus signals */
			con.add_signal_match(p.path(), UPOWER_INTERFACE, "Changed");
			//con.add_signal_match(p.path(), UPOWER_SERVICE, "DeviceChanged");
			batts.push_back(p);
		}
	}
	
	update_icon_and_tooltip();

	/* ready to receive signals */
	con.signal_callback(signal_cb, this);
	con.setup_listener_with_fltk();
}