Ejemplo n.º 1
0
nsresult
nsMsgIdentity::setFolderPref(const char *prefname, const nsACString& value, PRUint32 folderflag)
{
    if (!mPrefBranch)
        return NS_ERROR_NOT_INITIALIZED;

    nsCString oldpref;
    nsresult rv;
    nsCOMPtr<nsIRDFResource> res;
    nsCOMPtr<nsIMsgFolder> folder;
    nsCOMPtr<nsIRDFService> rdf(do_GetService(kRDFServiceCID, &rv));

    if (folderflag == nsMsgFolderFlags::SentMail)
    {
        // Clear the temporary return receipt filter so that the new filter
        // rule can be recreated (by ConfigureTemporaryFilters()).
        nsCOMPtr<nsIMsgAccountManager> accountManager =
            do_GetService(NS_MSGACCOUNTMANAGER_CONTRACTID, &rv);
        NS_ENSURE_SUCCESS(rv,rv);

        nsCOMPtr<nsISupportsArray> servers;
        rv = accountManager->GetServersForIdentity(this, getter_AddRefs(servers));
        NS_ENSURE_SUCCESS(rv,rv);
        PRUint32 cnt = 0;
        servers->Count(&cnt);
        if (cnt > 0)
        {
            nsCOMPtr<nsIMsgIncomingServer> server(do_QueryElementAt(servers, 0, &rv));
            if (NS_SUCCEEDED(rv))
                server->ClearTemporaryReturnReceiptsFilter(); // okay to fail; no need to check for return code
        }
    }

    // get the old folder, and clear the special folder flag on it
    rv = mPrefBranch->GetCharPref(prefname, getter_Copies(oldpref));
    if (NS_SUCCEEDED(rv) && !oldpref.IsEmpty())
    {
        rv = rdf->GetResource(oldpref, getter_AddRefs(res));
        if (NS_SUCCEEDED(rv) && res)
        {
            folder = do_QueryInterface(res, &rv);
            if (NS_SUCCEEDED(rv))
                rv = folder->ClearFlag(folderflag);
        }
    }

    // set the new folder, and set the special folder flags on it
    rv = SetCharAttribute(prefname, value);
    if (NS_SUCCEEDED(rv) && !value.IsEmpty())
    {
        rv = rdf->GetResource(value, getter_AddRefs(res));
        if (NS_SUCCEEDED(rv) && res)
        {
            folder = do_QueryInterface(res, &rv);
            if (NS_SUCCEEDED(rv))
                rv = folder->SetFlag(folderflag);
        }
    }
    return rv;
}
Ejemplo n.º 2
0
///=====================================================
/// 
///=====================================================
void Item::SaveGame(XMLNode& entitiesNode) const{
	XMLNode itemNode = entitiesNode.addChild("Item");
	Entity::SaveGame(itemNode);

	SetCharAttribute(itemNode, "glyph", m_glyph, ITEM_SYMBOL_TABLE[m_type]);
	SetColorAttribute(itemNode, "color", m_color, ITEM_COLOR_TABLE[m_type]);
}
Ejemplo n.º 3
0
/**********************************************************************
* Purpose: Sets a character at a specified coordinate to a specified
			character.
*
* Precondition:
*     None
*
* Postcondition:
*     Character set at location.
*
************************************************************************/
void ScreenBuffer::SetChar(int r, int c, wchar_t a, WORD p)
{
	if (_origin_r + _offset_r + r < 0 || _origin_c + _offset_c + c < 0)
		throw Exception("Coordinate must not lie outside of boundary!");
	if (_origin_r + _offset_r + r > SB_HEIGHT - 1 || _origin_c + _offset_c + c > SB_WIDTH - 1)
		throw Exception("Coordinate must not lie outside of boundary!");

	_chbuf[((r + _origin_r + _offset_r) * SB_WIDTH) + (c + _origin_c + _offset_c)].Char.UnicodeChar = a;
	SetCharAttribute(r, c, p);
}
Ejemplo n.º 4
0
/**********************************************************************
* Purpose: Sets attribute data at all coordinates between two
			specified coordinates.
*
* Precondition:
*     None
*
* Postcondition:
*     Character attributes at location set.
*
************************************************************************/
void ScreenBuffer::SetBlockAttribute(int r1, int c1, int r2, int c2, WORD a)
{
	if (_origin_r + _offset_r + r1 < 0 || _origin_c + _offset_c + c1 < 0 || _origin_r + _offset_r + r2 < 0 || _origin_c + _offset_c + c2 < 0)
		throw Exception("Coordinates must not lie outside of boundary!");
	if (_origin_r + _offset_r + r1 > SB_HEIGHT - 1 || _origin_c + _offset_c + c1 > SB_WIDTH - 1 || _origin_r + _offset_r + r2 > SB_HEIGHT - 1 || _origin_c + _offset_c + c2 > SB_WIDTH - 1)
		throw Exception("Coordinates must not lie outside of boundary!");

	if (c1 > c2)
	{
		c1 ^= c2; c2 ^= c1; c1 ^= c2; // XOR swap
	}

	if (r1 > r2)
	{
		r1 ^= r2; r2 ^= r1; r1 ^= r2; // XOR swap
	}

	for (int x = 0; x <= r2 - r1; ++x)
		for (int y = 0; y <= c2 - c1; ++y)
			SetCharAttribute(x + r1, y + c1, a);
}
Ejemplo n.º 5
0
NS_IMETHODIMP
nsMsgIdentity::SetDoBccList(const nsACString& aValue)
{
    return SetCharAttribute("doBccList", aValue);
}