EXPORT_C void PlayerApplicationSettingsResourceInit::DefineAttributesL(MPlayerApplicationSettingsObserver& aSettings, CResourceFile& aResourceFile) { // Read the settings from the resource file RResourceReader reader; reader.OpenLC(&aResourceFile, KAVRCPResourceId); // Check the version of this resource file TUint16 formatVersion = reader.ReadUint16L(); if (formatVersion != KAVRCPFormatVersion) { reader.Close(); User::Leave(KErrCorrupt); } // Find out how many settings this resource file contains TInt settingsCount = reader.ReadUint16L(); if (settingsCount < 0) { reader.Close(); User::Leave(KErrCorrupt); } // read the settings from aResource RArray<TUint> values; RArray<TPtrC8> valueTexts; CleanupClosePushL(values); CleanupClosePushL(valueTexts); // Read each AVRCP attribute setting in turn for (int i = 0; i < settingsCount; i++) { values.Reset(); valueTexts.Reset(); // Read attribute, description text, initial value and defined values TUint attributeID(reader.ReadUint8L()); TUint initialValue(reader.ReadUint8L()); TPtrC8 attributeText(reader.ReadTPtrC8L()); TInt valuesCount(reader.ReadUint16L()); for (int j = 0; j < valuesCount; j++) { TUint thisValue = reader.ReadUint8L(); TPtrC8 thisDescription = reader.ReadTPtrC8L(); values.AppendL(thisValue); valueTexts.AppendL(thisDescription); } // Now define this attribute, then continue to next attribute aSettings.DefineAttributeL(attributeID, attributeText, values, valueTexts, initialValue); } // cleaning up values and valueTexts CleanupStack::PopAndDestroy(3); // values, valueTexts, reader }
queryList* FSqueryTool( queryList *listpointer ) { void getDirectoryPath( ) ; void attributeDATE( ) ; void attributeNAME( ) ; resultList* attributeID( query *, int ) ; char oneLine[BUFFER_SIZE] ; // one line from the an opened file char *word ; // a token during string tokenization int numClauses ; queryList *tempQueries ; // a pointer to the query list arguement resultList *tempResults ; getDirectoryPath( ) ; tempQueries = listpointer ; tempResults = NULL ; while( tempQueries != NULL ) { for( numClauses = 0 ; numClauses <= tempQueries -> oneQuery -> numClauses ; numClauses++ ) { if( strcmp( tempQueries -> oneQuery -> myClauses[numClauses].attribute, "ID" ) == 0 ) { if( numClauses == 0 ) tempResults = attributeID( tempQueries -> oneQuery, numClauses ) ; else { if( strcmp( tempQueries -> oneQuery -> myClauses[numClauses-1].conjecture, "AND" ) == 0 ) tempResults = andResult( tempResults, attributeID( tempQueries -> oneQuery, numClauses ) ) ; if( strcmp( tempQueries -> oneQuery -> myClauses[numClauses-1].conjecture, "OR" ) == 0 ) tempResults = orResult(tempResults, attributeID( tempQueries -> oneQuery, numClauses ) ) ; } } if( strcmp( tempQueries -> oneQuery -> myClauses[numClauses].attribute, "DATE" ) == 0 ) { char fileTime[22] = { '\0' } ; dateResults = NULL; formatTimeStamp( fileTime, tempQueries -> oneQuery -> myClauses[numClauses].value ) ; fileQueryTime = parsedate( fileTime, NULL) ; strcpy( operatorType, tempQueries -> oneQuery -> myClauses[numClauses].operator ) ; attributeDATE( ) ; if( numClauses == 0 ) tempResults = dateResults ; else { if( strcmp( tempQueries -> oneQuery -> myClauses[numClauses-1].conjecture, "AND" ) == 0 ) tempResults = andResult( tempResults, dateResults ) ; if( strcmp( tempQueries -> oneQuery -> myClauses[numClauses-1].conjecture, "OR" ) == 0 ) tempResults = orResult( tempResults, dateResults ) ; } } if( strcmp( tempQueries -> oneQuery -> myClauses[numClauses].attribute, "NAME" ) == 0 ) { nameResults = NULL; strcpy( operatorType, tempQueries -> oneQuery -> myClauses[numClauses].operator ) ; strcpy( queryName, tempQueries -> oneQuery -> myClauses[numClauses].value ) ; attributeNAME( ) ; if( numClauses == 0 ) tempResults = nameResults ; else { if( strcmp( tempQueries -> oneQuery -> myClauses[numClauses-1].conjecture, "AND" ) == 0 ) tempResults = andResult( tempResults, nameResults ) ; if( strcmp( tempQueries -> oneQuery -> myClauses[numClauses-1].conjecture, "OR" ) == 0 ) tempResults = orResult( tempResults, nameResults ) ; } } } while ( tempResults != NULL ) { tempQueries -> oneQuery -> results = addResultItem( tempQueries -> oneQuery -> results, tempResults -> oneResult ) ; tempQueries -> oneQuery -> numFound++ ; tempResults = ( resultList* ) tempResults -> link ; } tempQueries = ( queryList* ) tempQueries -> link ; } return listpointer ; }