20#include "KoTarStore.h"
27#include <tdeversion.h>
28#include <tdeio/netaccess.h>
30KoTarStore::KoTarStore(
const TQString & _filename, Mode _mode,
const TQCString & appIdentification )
32 kdDebug(s_area) <<
"KoTarStore Constructor filename = " << _filename
33 <<
" mode = " << int(_mode) << endl;
35 m_pTar =
new KTar( _filename,
"application/x-gzip" );
37 m_bGood = init( _mode );
38 kdDebug()<<
"appIdentification :"<<appIdentification<<endl;
39 if ( m_bGood && _mode == Write )
40 m_pTar->setOrigFileName( completeMagic( appIdentification ) );
43KoTarStore::KoTarStore( TQIODevice *dev, Mode mode,
const TQCString & appIdentification )
45 m_pTar =
new KTar( dev );
47 m_bGood = init( mode );
49 if ( m_bGood && mode == Write )
50 m_pTar->setOrigFileName( completeMagic( appIdentification ) );
53KoTarStore::KoTarStore( TQWidget* window,
const KURL& _url,
const TQString & _filename, Mode _mode,
const TQCString & appIdentification )
55 kdDebug(s_area) <<
"KoTarStore Constructor url= " << _url.prettyURL()
56 <<
" filename = " << _filename
57 <<
" mode = " << int(_mode) << endl;
62 if ( _mode == KoStore::Read )
64 m_fileMode = KoStoreBase::RemoteRead;
65 m_localFileName = _filename;
70 m_fileMode = KoStoreBase::RemoteWrite;
71 m_localFileName =
"/tmp/kozip";
74 m_pTar =
new KTar( m_localFileName,
"application/x-gzip" );
76 m_bGood = init( _mode );
78 if ( m_bGood && _mode == Write )
79 m_pTar->setOrigFileName( completeMagic( appIdentification ) );
82KoTarStore::~KoTarStore()
88 if ( m_fileMode == KoStoreBase::RemoteRead )
90 TDEIO::NetAccess::removeTempFile( m_localFileName );
92 else if ( m_fileMode == KoStoreBase::RemoteWrite )
94 TDEIO::NetAccess::upload( m_localFileName, m_url, m_window );
99TQCString KoTarStore::completeMagic(
const TQCString& appMimetype )
101 kdDebug()<<
"TQCString KoTarStore::completeMagic( const TQCString& appMimetype )********************\n";
102 TQCString res(
"KOffice " );
106 kdDebug()<<
"sssssssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n";
107 kdDebug()<<
" return :!!!!!!!!!!!!!!! :"<<res<<endl;
111bool KoTarStore::init( Mode _mode )
115 bool good = m_pTar->open( _mode == Write ? IO_WriteOnly : IO_ReadOnly );
117 if ( good && _mode == Read )
118 good = m_pTar->directory() != 0;
125bool KoTarStore::openWrite(
const TQString& )
128 m_byteArray.resize( 0 );
129 m_stream =
new TQBuffer( m_byteArray );
130 m_stream->open( IO_WriteOnly );
134bool KoTarStore::openRead(
const TQString& name )
136 const KTarEntry * entry = m_pTar->directory()->entry( name );
143 if ( entry->isDirectory() )
145 kdWarning(s_area) <<
name <<
" is a directory !" << endl;
149 KTarFile * f = (KTarFile *) entry;
150 m_byteArray.resize( 0 );
152 m_stream = f->device();
157bool KoTarStore::closeWrite()
161 kdDebug(s_area) <<
"Writing file " << m_sName <<
" into TAR archive. size "
163 if ( !m_pTar->writeFile( m_sName ,
"user",
"group", m_iSize, m_byteArray.data() ) )
164 kdWarning( s_area ) <<
"Failed to write " << m_sName << endl;
165 m_byteArray.resize( 0 );
169bool KoTarStore::enterRelativeDirectory(
const TQString& dirName )
171 if ( m_mode == Read ) {
172 if ( !m_currentDir ) {
173 m_currentDir = m_pTar->directory();
174 Q_ASSERT( m_currentPath.isEmpty() );
176 const KArchiveEntry *entry = m_currentDir->entry( dirName );
177 if ( entry && entry->isDirectory() ) {
178 m_currentDir =
dynamic_cast<const KArchiveDirectory*
>( entry );
179 return m_currentDir != 0;
187bool KoTarStore::enterAbsoluteDirectory(
const TQString& path )
189 if ( path.isEmpty() )
194 if ( m_mode == Read ) {
195 m_currentDir =
dynamic_cast<const KArchiveDirectory*
>( m_pTar->directory()->entry( path ) );
196 Q_ASSERT( m_currentDir );
197 return m_currentDir != 0;
203bool KoTarStore::fileExists(
const TQString& absPath )
const
205 return m_pTar->directory()->entry( absPath ) != 0;
virtual bool init(Mode mode)
Init store - called by constructor.
const char * name(StdAction id)