From 47d455dd55be855e4cc691c32f687f723d9247ee Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdegraphics@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kuickshow/src/filecache.cpp | 83 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 kuickshow/src/filecache.cpp (limited to 'kuickshow/src/filecache.cpp') diff --git a/kuickshow/src/filecache.cpp b/kuickshow/src/filecache.cpp new file mode 100644 index 00000000..c1c1affe --- /dev/null +++ b/kuickshow/src/filecache.cpp @@ -0,0 +1,83 @@ +#include + +#include + +#include +#include +#include + +#include "filecache.h" + +FileCache * FileCache::s_self; + +FileCache::FileCache() + : m_limit( 0 ), + m_tempDir( 0L ) +{ + m_files.setAutoDelete( true ); + m_files.setMaxCost( 100 ); // good default? ### make configurable? +} + +FileCache::~FileCache() +{ + delete m_tempDir; +} + +void FileCache::shutdown() +{ + if ( s_self ) + { + delete s_self; + s_self = 0L; + } +} + +FileCache * FileCache::self() +{ + if ( !s_self ) + s_self = new FileCache(); + return s_self; +} + +KuickFile * FileCache::getFile( const KURL& url ) +{ + QString urlString = url.prettyURL(); + KuickFile *file = m_files.find( urlString ); + if ( !file ) { + file = new KuickFile( url ); + m_files.insert( urlString, file ); + } + + return file; +} + +QString FileCache::tempDir() +{ + if ( !m_tempDir ) { + m_tempDir = createTempDir(); + + if ( !m_tempDir ) { + kdWarning() << "Unable to create temporary directory for KuickShow" << endl; + return QString::null; + } + } + + return m_tempDir->name(); +} + + +KTempDir * FileCache::createTempDir() +{ + QString tmpName = QString::fromLatin1( KGlobal::instance()->instanceName() ); + tmpName.append( QString::number( getpid() ) ); + QString dirName = locateLocal( "tmp", tmpName ); + KTempDir *dir = new KTempDir( dirName ); + dir->setAutoDelete( true ); + if ( dir->status() != 0L ) + { + delete dir; + return 0L; + } + + return dir; +} -- cgit v1.2.1