Example #1
0
bool KonqMFIcon::hasMicroFormat(DOM::NodeList nodes) {
	bool ok = false;
	unsigned int n = nodes.length();
	for (unsigned int i = 0; i < n; ++i) {
		DOM::Node node = nodes.item(i);
		DOM::NamedNodeMap map = node.attributes();
		for (unsigned int j = 0; j < map.length(); ++j) {
			if (map.item(j).nodeName().string() != "class") {
				continue;
			}
			if (map.item(j).nodeValue().string() == "vevent") {
				ok = true;
				extractEvent(node);
				break;
			}
			if (map.item(j).nodeValue().string() == "vcard") {
				ok = true;
				extractCard(node);
				break;
			}
		}
		if (hasMicroFormat(node.childNodes())) {
			ok = true;
		}
	}
	return ok;
}
bool iCalConverter::convert(WString& errorDescription, long* errorCode) {
    errorDescription = TEXT("");
    *errorCode = ERROR_SUCCESS;

    if(!calendar && !iCalendar)
        return false;
    if(calendar && iCalendar)
        return true;
    if(calendar) {

        iCalendar = calendar->toString();

        if(!calendar->getProdID() || !calendar->getProdID()->getValue()) {
            *errorCode = ERROR_KEY_PROPERTY_MISSING;
            errorDescription = TEXT("'PRODID' property is missing");
            delete [] iCalendar; iCalendar = NULL;
            return false;
        }

        if(!calendar->getVersion() || !calendar->getVersion()->getValue()) {
            *errorCode = ERROR_KEY_PROPERTY_MISSING;
            errorDescription = TEXT("'VERSION' property is missing");
            delete [] iCalendar; iCalendar = NULL;
            return false;
        }
        if(calendar->getEvents())
            for(int i=0; i<calendar->getEvents()->size(); i++)
                if(!validateEvent(((Event*)calendar->getEvents()->get(i)), errorDescription, errorCode)) {
                    delete [] iCalendar; iCalendar = NULL;
                    return false;
            }
        if(calendar->getToDos())
            for(int i=0; i<calendar->getToDos()->size(); i++)
                if(!validateTodo(((ToDo*)calendar->getToDos()->get(i)), errorDescription, errorCode)) {
                    delete [] iCalendar; iCalendar = NULL;
                    return false;
                }

        return true;
   }
    if (iCalendar) {

        calendar = new Calendar();
        VObject* vo = VConverter::parse(iCalendar);
        if(!vo) {
            *errorCode = ERROR_PARSING_ERROR;
            errorDescription = TEXT("Invalid VObject returned");
            return false;
        }

        int n = vo->propertiesCount();

        if(wcscmp(vo->getProperty(0)->getName(), TEXT("BEGIN")) ||
            !vo->getProperty(0)->getValue() ||
            wcscmp(vo->getProperty(0)->getValue(), TEXT("VCALENDAR"))) {
                *errorCode = ERROR_KEY_PROPERTY_MISSING;
                errorDescription = TEXT("'BEGIN:VCALENDAR' property is missing");
                return false;
            }

        if(wcscmp(vo->getProperty(n-1)->getName(), TEXT("END")) ||
            !vo->getProperty(n-1)->getValue() ||
            wcscmp(vo->getProperty(n-1)->getValue(), TEXT("VCALENDAR"))) {
                *errorCode = ERROR_KEY_PROPERTY_MISSING;
                errorDescription = TEXT("'END:VCALENDAR' property is missing");
                return false;
            }

        if(!vo->containsProperty(TEXT("VERSION"))) {
            *errorCode = ERROR_KEY_PROPERTY_MISSING;
            errorDescription = TEXT("'VERSION' property is missing");
            return false;
        }

        if(vo->containsProperty(TEXT("VERSION")) &&
            (!vo->getProperty(TEXT("VERSION")) || wcscmp(vo->getProperty(TEXT("VERSION"))->getValue(), TEXT("2.0")))) {
                *errorCode = ERROR_ILLEGAL_VERSION_NUMBER;
                if(vo->getProperty(TEXT("VERSION"))) {
                    errorDescription = TEXT("Illegal version number : ");
                    errorDescription += vo->getProperty(TEXT("VERSION"))->getValue();
                }
                else {
                    errorDescription = TEXT("Illegal version number");
                }
                return false;
            }
        else {
            iCalProperty* prop = new iCalProperty(vo->getProperty(TEXT("VERSION"))->getValue());
            calendar->setVersion(*prop);
            vo->removeProperty(TEXT("VERSION"));
            delete prop;
        }

        if(!vo->containsProperty(TEXT("PRODID")) || !vo->getProperty(TEXT("PRODID"))) {
            *errorCode = ERROR_KEY_PROPERTY_MISSING;
            errorDescription = TEXT("'PRODID' property is missing");
            return false;
        }
        else {
            iCalProperty* prop = new iCalProperty(vo->getProperty(TEXT("PRODID"))->getValue());
            calendar->setProdID(*prop);
            vo->removeProperty(TEXT("PRODID"));
            delete prop;
        }

        if(vo->containsProperty(TEXT("CALSCALE")) ||
            vo->getProperty(TEXT("CALSCALE"))) {
                iCalProperty* prop = new iCalProperty(vo->getProperty(TEXT("CALSCALE"))->getValue());
                calendar->setCalScale(*prop);
                vo->removeProperty(TEXT("CALSCALE"));
                delete prop;
            }

        if(vo->containsProperty(TEXT("METHOD")) ||
            vo->getProperty(TEXT("METHOD"))) {
                iCalProperty* prop = new iCalProperty(vo->getProperty(TEXT("METHOD"))->getValue());
                calendar->setMethod(*prop);
                vo->removeProperty(TEXT("METHOD"));
                delete prop;
            }

        //extract VEVENTs from vo
        Event* ev;
        while((ev = extractEvent(vo, errorDescription, errorCode))) {
            if (!validateEvent(ev, errorDescription, errorCode)) {
                delete ev; ev = NULL;
                return false;
            }
            calendar->addEvent(ev);
            delete ev; ev = NULL;
        }

        //extract VTODOs from vo
        ToDo* task;
        while((task = extractTask(vo, errorDescription, errorCode))) {
            if (!validateTodo(task, errorDescription, errorCode)) {
                delete task; task = NULL;
                return false;
            }
            calendar->addToDo(task);
            delete task; task = NULL;
        }
    }

    return true;
}
Example #3
0
void adventure(eventList* pEvent, pirateTree*& aTree)
{
	int eventCode, backEvent = 0;
	eventList *backup = pEvent;
	myTree = aTree;
	eventNum = 0;
	prev11 = 0;
	while (pEvent != NULL)
	{
		eventCode = (pEvent->nEventCode > 0)? pEvent->nEventCode: (pEvent->nEventCode * -1);
		eventNum++;
		switch (extractEvent(pEvent->nEventCode))
		{
		case 1:
			if (!isSoulLand && !isRiverCrossed) addShip(eventCode);
			break;
		case 2:
			if (!isPosiden && !isRiverCrossed) monsterAttack(eventCode);
			break;
		case 3:
			if (!isSoulLand && !isRiverCrossed &&
				((!isBermuda && !isPosiden) || (isPosiden && isSteeled))) Bermuda();
			break;
		case 4:
			if (!isSteeled && !isRiverCrossed) Poseiden();
			break;
		case 5:
			if (isSteeled && !isRiverCrossed && !isSoulLand) monsterAttack2(eventCode);
			break;
		case 6:
			if (isSoulLand || isRiverCrossed) break;
			if (isSteeled) soulLand(); else deleteMyTree(myTree->root);
			break;
		case 7:
			if (isSoulLand && isJack) deadManNoTell();
			break;
		case 8:
			if (isSoulLand) strangeWedding();
			break;
		case 9:
			if (isS9 && !isRiverCrossed) driverGuy(eventCode);
			break;
		case 10:
			if (!isJack && isRiverCrossed && prev11 == 0)
			{
				Hades();
				prev11 = eventNum;
			}
			break;
		case 11:
			if (isJack && prev11 > 0)
			{
				backEvent = (999 % prev11) + 1;
				isS12 = 1;
				eventNum = 0;
				pEvent = backup;
				isAVL = 0; isS9 = 0; isRiverCrossed = 0;
				isSoulLand = 0; isPosiden = 0; isBermuda = 0; isSteeled = 0;
				isBlackBeard = 1;
				prev11 = 0;
				deleteMyTree(myTree->root);
				continue;
			}
			break;
		}
		if (myTree->root == NULL) break;
		if (isHalt) break;

		if (isS12 && eventNum == backEvent)
		{
			if (!isJack)
			{
				deleteMyTree(myTree->root);
			}
			break;
		}

		pEvent = pEvent->pNext;
	}
}