IMessageStyleOptions SimpleMessageStyleEngine::styleOptions(const OptionsNode &AEngineNode, const QString &AStyleId) const
{
	IMessageStyleOptions options;
	if (AStyleId.isEmpty() || FStylePaths.contains(AStyleId))
	{
		QString styleId = AStyleId.isEmpty() ? AEngineNode.value("style-id").toString() : AStyleId;

		// Select default style
		if (!FStylePaths.isEmpty() && !FStylePaths.contains(styleId))
		{
			int mtype = AEngineNode.parentNSpaces().value(1).toInt();
			switch (mtype)
			{
			case Message::Normal:
			case Message::Headline:
			case Message::Error:
				styleId = "Message Style";
				AEngineNode.node("style",styleId).setValue(QString("Default"),"variant");
				break;
			default:
				styleId = "Chat Style";
				AEngineNode.node("style",styleId).setValue(QString("Default"),"variant");
			}
			styleId = !FStylePaths.contains(styleId) ? FStylePaths.keys().first() : styleId;
		}

		if (FStylePaths.contains(styleId))
		{
			options.engineId = engineId();
			options.styleId = styleId;

			OptionsNode styleNode = AEngineNode.node("style",styleId);
			options.extended.insert(MSO_VARIANT,styleNode.value("variant"));
			options.extended.insert(MSO_FONT_FAMILY,styleNode.value("font-family"));
			options.extended.insert(MSO_FONT_SIZE,styleNode.value("font-size"));
			options.extended.insert(MSO_SELF_COLOR,styleNode.value("self-color"));
			options.extended.insert(MSO_CONTACT_COLOR,styleNode.value("contact-color"));
			options.extended.insert(MSO_BG_COLOR,styleNode.value("bg-color"));
			options.extended.insert(MSO_BG_IMAGE_FILE,styleNode.value("bg-image-file"));

			QList<QString> variants = styleVariants(styleId);
			QMap<QString,QVariant> info = styleInfo(styleId);

			if (!variants.contains(options.extended.value(MSO_VARIANT).toString()))
				options.extended.insert(MSO_VARIANT,info.value(MSIV_DEFAULT_VARIANT, variants.value(0)));

			if (info.value(MSIV_DISABLE_CUSTOM_BACKGROUND,false).toBool())
			{
				options.extended.remove(MSO_BG_IMAGE_FILE);
				options.extended.insert(MSO_BG_COLOR,info.value(MSIV_DEFAULT_BACKGROUND_COLOR));
			}
			else if (options.extended.value(MSO_BG_COLOR).toString().isEmpty())
			{
				options.extended.insert(MSO_BG_COLOR,info.value(MSIV_DEFAULT_BACKGROUND_COLOR));
			}

			if (options.extended.value(MSO_FONT_FAMILY).toString().isEmpty())
				options.extended.insert(MSO_FONT_FAMILY,info.value(MSIV_DEFAULT_FONT_FAMILY));
			if (options.extended.value(MSO_FONT_SIZE).toInt() == 0)
				options.extended.insert(MSO_FONT_SIZE,info.value(MSIV_DEFAULT_FONT_SIZE));

			if (options.extended.value(MSO_SELF_COLOR).toString().isEmpty())
				options.extended.insert(MSO_SELF_COLOR,info.value(MSIV_DEFAULT_SELF_COLOR,QColor(Qt::red).name()));
			if (options.extended.value(MSO_CONTACT_COLOR).toString().isEmpty())
				options.extended.insert(MSO_CONTACT_COLOR,info.value(MSIV_DEFAULT_CONTACT_COLOR,QColor(Qt::blue).name()));
		}
		else
		{
			REPORT_ERROR("Failed to find any suitable simple message style");
		}
	}
	else
	{
		REPORT_ERROR(QString("Failed to get adium style options for style=%1: Style not found").arg(AStyleId));
	}

	return options;
}
Пример #2
0
Agent::Agent()
    : mMib( 0 )
    , mReqList( 0 )
    , mSnmp( 0 )
    , mv3mp( 0 )
    , mSignal(0)
    , mRunning( false )
    , mMibModules()
{
    for( size_t i = 0; i < (lengthof(moduleInfoFuncs) - 1); ++i )
    {
        MibModule *modInfo = moduleInfoFuncs[i]();
        mMibModules.push_back( modInfo );

        if( !modInfo->InitModule() )
        {
            LOG_BEGIN(loggerModuleName, ERROR_LOG | 0);
            LOG("Agent::Init(): mibs module initialization failed at (index)");
            LOG(i);
            LOG_END;

            exit(1);
        }
    }

    int status;

    Snmp::socket_startup();  // Initialize socket subsystem
    if( Config::getInstance().getListenOn().empty() )
        mSnmp = new Snmpx(status, Config::getInstance().getPort());
    else
        mSnmp = new Snmpx(status, UdpAddress( Config::getInstance().getListenOn().c_str() ) );
    if( !mSnmp )
    {
        LOG_BEGIN(loggerModuleName, ERROR_LOG | 0);
        LOG("Agent::Init(): Error allocating Snmpx");
        LOG(status);
        LOG_END;

        exit(1);
    }

    if (status == SNMP_CLASS_SUCCESS)
    {
        LOG_BEGIN(loggerModuleName, EVENT_LOG | 1);
        LOG("Agent::Init(): SNMP listen port");
        LOG(Config::getInstance().getPort());
        LOG_END;
    }
    else
    {
        LOG_BEGIN(loggerModuleName, ERROR_LOG | 0);
        LOG("Agent::Init(): SNMP port init failed");
        LOG(status);
        LOG_END;

        delete mSnmp;

        mSnmp = 0;

        exit(1);
    }

    unsigned int snmpEngineBoots = 0;
    OctetStr engineId(SnmpEngineID::create_engine_id(Config::getInstance().getPort()));

    LOG_BEGIN(loggerModuleName,  DEBUG_LOG | 1 );
    LOG("status file name");
    LOG(Config::getInstance().getStatusFileName().c_str());
    LOG_END;

    // you may use your own methods to load/store this counter
    status = getBootCounter(Config::getInstance().getStatusFileName().c_str(), engineId, snmpEngineBoots);
    if ((status != SNMPv3_OK) && (status < SNMPv3_FILEOPEN_ERROR))
    {
        LOG_BEGIN(loggerModuleName, ERROR_LOG | 0);
        LOG("Agent::Init(): Error loading snmpEngineBoots counter (status)");
        LOG(status);
        LOG_END;
        exit(1);
    }

    snmpEngineBoots++;
    status = saveBootCounter(Config::getInstance().getStatusFileName().c_str(), engineId, snmpEngineBoots);
    if (status != SNMPv3_OK)
    {
        LOG_BEGIN(loggerModuleName, ERROR_LOG | 0);
        LOG("Agent::Init(): Error saving snmpEngineBoots counter (status)");
        LOG(status);
        LOG_END;
        exit(1);
    }

    int stat;
    mv3mp = new v3MP(engineId, snmpEngineBoots, stat);
    if( !mv3mp )
    {
        LOG_BEGIN(loggerModuleName, ERROR_LOG | 0);
        LOG("Agent::Init(): Error allocating v3MP");
        LOG(status);
        LOG_END;

        delete mSnmp;
        mSnmp = 0;

        exit(1);
    }

    mMib = new Mib();
    if( !mMib )
    {
        LOG_BEGIN(loggerModuleName, ERROR_LOG | 0);
        LOG("Agent::Init(): Error allocating Mib");
        LOG(status);
        LOG_END;

        delete mSnmp;
        mSnmp = 0;

        delete mv3mp;
        mv3mp = 0;

        exit(1);
    }

    mReqList = new RequestList();
    if( !mMib )
    {
        LOG_BEGIN(loggerModuleName, ERROR_LOG | 0);
        LOG("Agent::Init(): Error allocating RequestList");
        LOG(status);
        LOG_END;

        delete mMib;
        mMib = 0;

        delete mSnmp;
        mSnmp = 0;

        delete mv3mp;
        mv3mp = 0;

        exit(1);
    }

    // register v3MP
    mReqList->set_v3mp(mv3mp);

    // register requestList for outgoing requests
    mMib->set_request_list(mReqList);
}