bool ItemManager::resetTimestamp(const ItemInfoType &info)
{
#if defined(Q_OS_MAC)
    struct timeval times[2];
    // アクセス日時
    times[0].tv_sec = info.timestampOfRead.toTime_t();
    times[0].tv_usec= info.timestampOfRead.toMSecsSinceEpoch() % 100 * 1000;
    // 更新日時
    times[1].tv_sec = info.timestampOfModified.toTime_t();
    times[1].tv_usec= info.timestampOfModified.toMSecsSinceEpoch() % 100 * 1000;
    // 反映(アクセス日時は反映できないor反映してもすぐ変わる模様)
    return !::utimes(info.filePath.toLocal8Bit(), times);
#elif defined(Q_OS_WIN32)
    QVector<wchar_t> fileNameW(info.filePath.size() + 1);
    info.filePath.toWCharArray(&fileNameW[0]);
    HANDLE hFile = ::CreateFile(
                        &fileNameW[0],
                        GENERIC_WRITE, 0,
                        NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (INVALID_HANDLE_VALUE != hFile)
    {
        BOOL r;
        // time_t の基準日から FILETIME への変更
        LONGLONG offsetOfTimeT = 0;
        SYSTEMTIME stBase = { 1970, 1, 0, 1, 0, 0, 0, 0 };
        ::SystemTimeToFileTime(&stBase, (FILETIME*)&offsetOfTimeT);
        // タイムスタンプを FILETIME の基準日からに変更し適用
        LONGLONG nCreationTime = 0, nLastAccessTime = 0, nLastWriteTime = 0;
        nCreationTime   = offsetOfTimeT + info.timestampOfCreated.toMSecsSinceEpoch()  * 10000LL;
        nLastAccessTime = offsetOfTimeT + info.timestampOfRead.toMSecsSinceEpoch()     * 10000LL;
        nLastWriteTime  = offsetOfTimeT + info.timestampOfModified.toMSecsSinceEpoch() * 10000LL;
        r = ::SetFileTime(hFile, (const FILETIME*)&nCreationTime, (const FILETIME*)&nLastAccessTime,
                                 (const FILETIME*)&nLastWriteTime);
        ::CloseHandle(hFile);
        return FALSE != r;
    }
    return false;
#else
#error "not impliment1"
#endif
}
Exemple #2
0
	bool FreeImage::saveToFile( const UTF8String & fileName, SavingFormat savingFormat, unsigned int quality ) {
		#ifdef WIN32
		WString fileNameW( fileName );
		#endif
		
		load();

		#ifdef WIN32
		bool r( FreeImage_SaveU( ( FREE_IMAGE_FORMAT ) savingFormat, this -> freeImage, fileNameW.toCString(), quality ) );
		#else
		bool r( FreeImage_Save( ( FREE_IMAGE_FORMAT ) savingFormat, this -> freeImage, fileName.toCString(), quality ) );
		#endif

		if ( r ) {
			log( String( "Success writing file : " ) << fileName );
			return true;
		} else {
			error( String( "error writing file : " ) << fileName );
			return false;
		}
	}