static KFileMetaInfo cachedMetaInfo(const KFileItem& file) { QString dbName="metainfocache"; if (!QSqlDatabase::contains(dbName)) { QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE",dbName); db.setDatabaseName(KStandardDirs::locateLocal("appdata", dbName+".sqlite")); if (KDE_ISUNLIKELY( !db.open() )) return KFileMetaInfo(file.url()); initDataBase(db); } QSqlDatabase db=QSqlDatabase::database(dbName); if (!db.isOpen()) return KFileMetaInfo(file.url()); static const QString fields[]={ "translation.translated", "translation.untranslated", "translation.fuzzy", "translation.last_translator", "translation.source_date", "translation.translation_date", "translation.translated_reviewer", "translation.translated_approver", "translation.fuzzy_reviewer", "translation.fuzzy_approver" }; static const int nFields = sizeof(fields) / sizeof(fields[0]); QByteArray result; QSqlQuery queryCache(db); queryCache.prepare("SELECT * from metainfo where filepath=?"); queryCache.bindValue(0, qHash(file.localPath())); queryCache.exec(); if (queryCache.next() && file.time(KFileItem::ModificationTime).dateTime()==queryCache.value(2).toDateTime()) { result=queryCache.value(1).toByteArray(); QDataStream stream(&result,QIODevice::ReadOnly); //unfortunately direct KFileMetaInfo << operator doesn't work KFileMetaInfo info; QVector<QVariant> keys; stream>>keys; for(int i=0;i<keys.count();i++) info.item(fields[i]).setValue(keys.at(i)); return info; }
void KFileItem::setUDSEntry( const KIO::UDSEntry& _entry, const KUrl& _url, bool _delayedMimeTypes, bool _urlIsDirectory ) { d->m_entry = _entry; d->m_url = _url; d->m_strName.clear(); d->m_strText.clear(); d->m_iconName.clear(); d->m_strLowerCaseName.clear(); d->m_pMimeType = 0; d->m_fileMode = KFileItem::Unknown; d->m_permissions = KFileItem::Unknown; d->m_bMarked = false; d->m_bLink = false; d->m_bIsLocalUrl = _url.isLocalFile(); d->m_bMimeTypeKnown = false; d->m_hidden = KFileItemPrivate::Auto; d->m_guessedMimeType.clear(); d->m_metaInfo = KFileMetaInfo(); d->m_delayedMimeTypes = _delayedMimeTypes; d->m_useIconNameCache = false; d->readUDSEntry( _urlIsDirectory ); d->init(); }
void KFileItem::setUDSEntry( const KIO::UDSEntry& _entry, const KURL& _url, bool _determineMimeTypeOnDemand, bool _urlIsDirectory ) { m_entry = _entry; m_url = _url; m_strName = QString::null; m_strText = QString::null; m_user = QString::null; m_group = QString::null; m_strLowerCaseName = QString::null; m_pMimeType = 0; m_fileMode = KFileItem::Unknown; m_permissions = KFileItem::Unknown; m_bMarked = false; m_bLink = false; m_bIsLocalURL = _url.isLocalFile(); m_bMimeTypeKnown = false; m_hidden = Auto; m_guessedMimeType = QString::null; m_metaInfo = KFileMetaInfo(); if ( d ) d->iconName = QString::null; readUDSEntry( _urlIsDirectory ); init( _determineMimeTypeOnDemand ); }
KFileMetaInfo KFileItem::metaInfo(bool autoget, int what) const { if ((isRegularFile() || isDir()) && autoget && !d->m_metaInfo.isValid()) { bool isLocalUrl; KUrl url(mostLocalUrl(isLocalUrl)); d->m_metaInfo = KFileMetaInfo(url.toLocalFile(), mimetype(), (KFileMetaInfo::What)what); } return d->m_metaInfo; }
const KFileMetaInfo & KFileItem::metaInfo(bool autoget, int) const { bool isLocalURL; KURL url = mostLocalURL(isLocalURL); if ( autoget && !m_metaInfo.isValid() && KGlobalSettings::showFilePreview(url) ) { m_metaInfo = KFileMetaInfo( url, mimetype() ); } return m_metaInfo; }
void KFileItem::refresh() { d->m_fileMode = KFileItem::Unknown; d->m_permissions = KFileItem::Unknown; d->m_metaInfo = KFileMetaInfo(); d->m_hidden = KFileItemPrivate::Auto; refreshMimeType(); // Basically, we can't trust any information we got while listing. // Everything could have changed... // Clearing m_entry makes it possible to detect changes in the size of the file, // the time information, etc. d->m_entry.clear(); d->init(); }
void KFileItem::refresh() { m_fileMode = KFileItem::Unknown; m_permissions = KFileItem::Unknown; m_pMimeType = 0L; m_user = QString::null; m_group = QString::null; m_metaInfo = KFileMetaInfo(); m_hidden = Auto; // Basically, we can't trust any information we got while listing. // Everything could have changed... // Clearing m_entry makes it possible to detect changes in the size of the file, // the time information, etc. m_entry = KIO::UDSEntry(); init( false ); }