diff options
Diffstat (limited to 'util/install/win/resource.cpp')
-rw-r--r-- | util/install/win/resource.cpp | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/util/install/win/resource.cpp b/util/install/win/resource.cpp deleted file mode 100644 index 4ea0ad8..0000000 --- a/util/install/win/resource.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** Contact: Qt Software Information (qt-info@nokia.com) -** -** This file is part of the utils of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the either Technology Preview License Agreement or the -** Beta Release License Agreement. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "resource.h" -#include <qfile.h> -#include <qfileinfo.h> -#include <qapplication.h> - -#ifdef Q_OS_WIN32 -#include <windows.h> -#endif - -/* - Tries to load the binary resource \a resourceName. If the resource is - smaller than \a minimumSize, the resource is not loaded and isValid() - returns false. isValid() returns also false when the loading failed. - */ -ResourceLoader::ResourceLoader( char *resourceName, int minimumSize ) -{ -#if defined(Q_OS_WIN32) - valid = true; - - HMODULE hmodule = GetModuleHandle( 0 ); - // we don't need wide character versions - HRSRC resource = FindResourceA( hmodule, resourceName, MAKEINTRESOURCEA( 10 ) ); - HGLOBAL hglobal = LoadResource( hmodule, resource ); - arSize = SizeofResource( hmodule, resource ); - if ( arSize == 0 ) { - valid = false; - return; - } - if ( arSize < minimumSize ) { - valid = false; - return; - } - arData = (char*)LockResource( hglobal ); - if ( arData == 0 ) { - valid = false; - return; - } - ba.setRawData( arData, arSize ); -#elif defined(Q_OS_MAC) - valid = false; - arSize = 0; - arData = 0; - QFile f; - QString appDir = qApp->argv()[0]; - int truncpos = appDir.findRev( "/Contents/MacOS/" ); - if (truncpos != -1) - appDir.truncate( truncpos ); - QString path = appDir + "/Contents/Qt/"; - path += resourceName; - f.setName( path ); - if (!f.open( IO_ReadOnly )) - return; - QFileInfo fi(f); - arSize = fi.size(); - arData = new char[arSize]; - if (f.readBlock( arData, arSize ) != arSize) - { - delete[] arData; - return; - } - ba.setRawData( arData, arSize ); - valid = true; - return; -#endif -} - -ResourceLoader::~ResourceLoader() -{ - if ( isValid() ) - ba.resetRawData( arData, arSize ); -#if defined(Q_OS_MAC) - delete[] arData; -#endif -} - -bool ResourceLoader::isValid() const -{ - return valid; -} - -QByteArray ResourceLoader::data() -{ - return ba; -} - - -#if defined(Q_OS_WIN32) -ResourceSaver::ResourceSaver( const QString& appName ) - : applicationName(appName) -{ -} - -ResourceSaver::~ResourceSaver() -{ -} - -bool ResourceSaver::setData( char *resourceName, const QByteArray &data, QString *errorMessage ) -{ - // we don't need wide character versions - HANDLE hExe = BeginUpdateResourceA( applicationName.latin1(), false ); - if ( hExe == 0 ) { - if ( errorMessage ) - *errorMessage = QString("Could not load the executable %1.").arg(applicationName); - return false; - } - if ( !UpdateResourceA(hExe,(char*)RT_RCDATA,resourceName,0,data.data(),data.count()) ) { - EndUpdateResource( hExe, true ); - if ( errorMessage ) - *errorMessage = QString("Could not update the executable %1.").arg(applicationName); - return false; - } - if ( !EndUpdateResource(hExe,false) ) { - if ( errorMessage ) - *errorMessage = QString("Could not update the executable %1.").arg(applicationName); - return false; - } - - if ( errorMessage ) - *errorMessage = QString("Updated the executable %1.").arg(applicationName); - return true; -} -#endif |