bool Vocabulary::load( const QString& filename ) { QFile dataFile( filename ); if( !dataFile.open( QIODevice::ReadOnly ) ) return( false ); QByteArray compressedData( dataFile.readAll() ); QByteArray data( qUncompress( compressedData ) ); QDataStream in( data ); qint32 tempMagicNumber; qint16 tempVersion; Vocabulary tempVocab; in >> tempMagicNumber >> tempVersion; if( tempMagicNumber != Vocabulary::magicNumber ) { cerr << "Wrong magic number: Incompatible vocabulary data file." << endl; return( false ); } if( tempVersion > 0x0010 ) { cerr << "Vocabulary data file is from a more recent version. Upgrade toMOTko." << endl; return( false ); } in.setVersion( QDataStream::Qt_2_1 ); in >> tempVocab; dataFile.close(); id = tempVocab.getId(); markedForStudy = tempVocab.isMarkedForStudy(); title = tempVocab.getTitle(); description = tempVocab.getDescription(); author = tempVocab.getAuthor(); creationDate = tempVocab.getCreationDate(); modificationDate = tempVocab.getModificationDate(); dirty = tempVocab.isDirty(); for( TermMap::ConstIterator it = tempVocab.begin(); it != tempVocab.end(); it++ ) { const Term& term = *it; addTerm( term ); } return( true ); }
void SearchDialog::search() { const Preferences& prefs = controller->getPreferences(); QList<TermKey> results = controller->search( queryField->currentText(), prefs.getFirstLanguage(), prefs.getTestLanguage() ); resultsListView->clear(); for( QList<TermKey>::ConstIterator it = results.begin(); it != results.end(); it++ ) { const TermKey& termKey = *it; Term* term = controller->getTerm( termKey ); Vocabulary* vocab = controller->getVocabTree()->getVocabulary( termKey.getVocabId() ); if( vocab ) { ResultListItem* resultItem = new ResultListItem( resultsListView, term, prefs.getFirstLanguage(), prefs.getTestLanguage(), vocab->getTitle(), vocab->getParent()->getHumanReadablePath(), prefs.isAltInTermListShown() ); resultItem->setFont( 0, prefs.getMediumFont( prefs.getFirstLanguage() ) ); resultItem->setFont( 1, prefs.getMediumFont( prefs.getTestLanguage() ) ); } } resultsCounterLabel->setText( tr( "%1 term(s) found" ).arg( results.count() ) ); updateUi(); }