From f04d64869f3b1de54fb343f28f955584780001b8 Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Sat, 26 Nov 2011 15:41:10 +0000 Subject: Project folders rename part 3 git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@215 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- userinfoex/classMTime.cpp | 469 ---------------------------------------------- 1 file changed, 469 deletions(-) delete mode 100644 userinfoex/classMTime.cpp (limited to 'userinfoex/classMTime.cpp') diff --git a/userinfoex/classMTime.cpp b/userinfoex/classMTime.cpp deleted file mode 100644 index 6e03c02..0000000 --- a/userinfoex/classMTime.cpp +++ /dev/null @@ -1,469 +0,0 @@ -/* -UserinfoEx plugin for Miranda IM - -Copyright: - 2006-2010 DeathAxe, Yasnovidyashii, Merlin, K. Romanov, Kreol - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -=============================================================================== - -File name : $HeadURL: https://userinfoex.googlecode.com/svn/trunk/classMTime.cpp $ -Revision : $Revision: 194 $ -Last change on : $Date: 2010-09-20 15:57:18 +0400 (Пн, 20 сен 2010) $ -Last change by : $Author: ing.u.horn $ - -=============================================================================== -*/ - -/** - * System Includes: - **/ -#include "commonheaders.h" -#include "svc_Timezone.h" - -/****************************************************************************************** - * class MTime - * - *****************************************************************************************/ - -/********************************************* - * construction - *********************************************/ - -MTime::MTime() -{ - ZeroDate(); -} - -MTime::MTime(SYSTEMTIME &st, const BOOLEAN bIsLocal) -{ - _SysTime = st; - _isLocal = bIsLocal != FALSE; -} - -MTime::MTime(FILETIME &ft, const BOOLEAN bIsLocal) -{ - ZeroDate(); - Set(ft, bIsLocal); -} - -MTime::MTime(LARGE_INTEGER &li, const BOOLEAN bIsLocal) -{ - ZeroDate(); - Set(li, bIsLocal); -} - -MTime::MTime(DWORD dwStamp) -{ - ZeroDate(); - FromStampAsUTC(dwStamp); -} - -MTime::MTime(const MTime& mtime) -{ - Set(mtime); -} - -VOID MTime::ZeroDate() -{ - _isLocal = FALSE; - ZeroMemory(&_SysTime, sizeof(_SysTime)); -} - -/********************************************* - * validation / checks - *********************************************/ - -BOOLEAN MTime::IsValid() const -{ - return ( - _SysTime.wYear > 1600 && - _SysTime.wMonth > 0 && _SysTime.wMonth < 13 && - _SysTime.wDay > 0 && _SysTime.wDay <= DaysInMonth(_SysTime.wMonth) && - _SysTime.wHour < 25 && - _SysTime.wMinute < 60 && - _SysTime.wSecond < 60 ); -} - -BOOLEAN MTime::IsLeapYear() const -{ - return (!(((_SysTime.wYear) % 4 != 0) || (((_SysTime.wYear) % 100 == 0) && ((_SysTime.wYear) % 400 != 0)))); -} - -LONG MTime::Compare(const DWORD dwTimeStamp) const -{ - return (LONG)(TimeStamp() - dwTimeStamp); -} - -/** - * name: Compare - * desc: compare a filetime with the value of current object and return difference as number of seconds - * param: ft - FILETIME to compare with - * return: number of seconds the ft differs from the class value - **/ -LONG MTime::Compare(const FILETIME &ft) const -{ - const FILETIME ft1 = FileTime(); - return (LONG)((*(__int64*)&ft1 - *(__int64*)&ft) / 10000000i64); -} - -/** - * name: Compare - * desc: compare a systemtime with the value of current object and return difference as number of seconds it handles some strange, too. - * param: st - SYSTEMTIME to compare with - * return: number of seconds the st differs from the class value - **/ -LONG MTime::Compare(SYSTEMTIME st) const -{ - FILETIME ft2; - - //strange day-in-month thing - if (st.wYear == 0) { - if (Month() < st.wMonth) return -1; - if (Month() > st.wMonth) return 1; - - MTime mtTmp(st, FALSE); - - mtTmp.Year(Year()); - mtTmp.Day(1); - mtTmp.Set(mtTmp.FileTime(), FALSE); //gets the day of week of the first of the month - mtTmp.Day(1 + (7 + st.wDayOfWeek - mtTmp.DayOfWeek()) % 7); - - //last wDayOfWeek in month - if (st.wDay == 5) { - mtTmp.Day(mtTmp.Day() + 7 * 3); //can't be less than 4 of that day in the month - if (mtTmp.Day() + 7 <= mtTmp.DaysInMonth(st.wMonth - 1)) - mtTmp.Day(mtTmp.Day() + 7); - } - else - mtTmp.Day(7 * (st.wDay - 1)); //nth of month - - ft2 = mtTmp.FileTime(); - } - else { - SystemTimeToFileTime(&st, &ft2); - } - return Compare(ft2); -} - -/** - * name: Compare - * desc: compare a MTime with the value of current object and return difference as number of seconds it handles some strange, too. - * param: mt - MTime to compare with - * return: number of seconds the st differs from the class value - **/ -LONG MTime::Compare(const MTime &mt) const -{ - return Compare(mt.SystemTime()); -} - -/********************************************* - * conversions - *********************************************/ - -VOID MTime::UTCToLocal() -{ - if (!IsLocal()) { - TIME_ZONE_INFORMATION tzInfo; - - ZeroMemory(&tzInfo, sizeof(TIME_ZONE_INFORMATION)); - GetTimeZoneInformation(&tzInfo); - UTCToTzSpecificLocal(&tzInfo); - } -} - -VOID MTime::UTCToTzSpecificLocal(INT tzh) -{ - - TIME_ZONE_INFORMATION tzInfo; - - if (IsLocal()) LocalToUTC(); - ZeroMemory(&tzInfo, sizeof(TIME_ZONE_INFORMATION)); - - if (tzh > 24) tzh = 24; - if (tzh < -24)tzh = -24; - - GetTimeZoneInformation(&tzInfo); - tzInfo.Bias = tzh * 30i64; - UTCToTzSpecificLocal(&tzInfo); -} - -LONG MTime::_Offset(TIME_ZONE_INFORMATION *tzi) -{ - LONG offset = tzi->Bias; - // daylight saving times - if (tzi->StandardDate.wMonth != 0) { - if (tzi->DaylightDate.wMonth < tzi->StandardDate.wMonth) { - //northern hemisphere - if (Compare(tzi->DaylightDate) < 0 || Compare(tzi->StandardDate) > 0) - offset += tzi->StandardBias; - else - offset += tzi->DaylightBias; - } - else { - //southern hemisphere - if (Compare(tzi->StandardDate) < 0 || Compare(tzi->DaylightDate) > 0) - offset += tzi->DaylightBias; - else - offset += tzi->StandardBias; - } - } - return offset; -} - -VOID MTime::UTCToTzSpecificLocal(TIME_ZONE_INFORMATION *tzi) -{ - LARGE_INTEGER liFiletime; - - // do not transform to local twice - if (tzi && !_isLocal) { - liFiletime = LargeInt(); - liFiletime.QuadPart -= _Offset(tzi) * 60 * 10000000i64; - Set(liFiletime, TRUE); - } -} - -VOID MTime::TzSpecificLocalToUTC(TIME_ZONE_INFORMATION *tzi) -{ - LARGE_INTEGER liFiletime; - - // do not transform to utc twice - if (tzi && _isLocal) { - liFiletime = LargeInt(); - liFiletime.QuadPart += _Offset(tzi) * 60 * 10000000i64; - Set(liFiletime, TRUE); - } -} - -VOID MTime::LocalToUTC() -{ - TIME_ZONE_INFORMATION tzInfo; - - GetTimeZoneInformation(&tzInfo); - TzSpecificLocalToUTC(&tzInfo); -} - -/********************************************* - * return values - *********************************************/ - -LARGE_INTEGER MTime::LargeInt() const -{ - LARGE_INTEGER liFileTime = { 0 }; - - SystemTimeToFileTime(&_SysTime, (LPFILETIME)&liFileTime); - return liFileTime; -} - -FILETIME MTime::FileTime() const -{ - FILETIME ftFileTime; - - SystemTimeToFileTime(&_SysTime, &ftFileTime); - return ftFileTime; -} - -DWORD MTime::TimeStamp() const -{ - LARGE_INTEGER li; - - if (IsLocal()) { - MTime mt(*this); - mt.LocalToUTC(); - li = mt.LargeInt(); - } - else - li = LargeInt(); - - li.QuadPart /= 10000000i64; - li.QuadPart -= 11644473600i64; - - if (li.QuadPart < 0) { - return 0; - } - return (DWORD)li.QuadPart; -} - -WORD MTime::DaysInMonth(const WORD &wMonth) const -{ - static const WORD wDaysInMonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - - if (wMonth > 12) return 0; - return (IsLeapYear() && wMonth == 2) ? wDaysInMonth[wMonth] + 1 : wDaysInMonth[wMonth]; -} - -WORD MTime::DaysInYear(BOOLEAN bIgnoreLeap) const -{ - return ((!bIgnoreLeap && IsLeapYear()) ? 366 : 365); -}; - -WORD MTime::DayOfYear() const -{ - WORD daysResult = 0; - WORD i; - - for (i = 0; i < _SysTime.wMonth; i++) - daysResult += DaysInMonth(i); - daysResult += _SysTime.wDay; - return daysResult; -} - -WORD MTime::AdjustYear(const INT nDiffDays) -{ - const INT nDay = DayOfYear() + nDiffDays; - - if (nDay > DaysInYear()) - return _SysTime.wYear + 1; - else if (nDay < 0) - return _SysTime.wYear - 1; - return _SysTime.wYear; -} - -WORD MTime::TimeFormat(LPTSTR ptszTimeFormat, WORD cchTimeFormat) -{ - if (!ptszTimeFormat || !cchTimeFormat) - return 0; - if ((cchTimeFormat = GetTimeFormat(LOCALE_USER_DEFAULT, TIME_NOSECONDS, &_SysTime, NULL, ptszTimeFormat, cchTimeFormat)) == 0) { - *ptszTimeFormat = 0; - return 0; - } - return cchTimeFormat; -} - -WORD MTime::DateFormat(LPTSTR ptszTimeFormat, WORD cchTimeFormat) -{ - if (!ptszTimeFormat || !cchTimeFormat) - return 0; - if ((cchTimeFormat = GetDateFormat(LOCALE_USER_DEFAULT, DATE_SHORTDATE, &_SysTime, NULL, ptszTimeFormat, cchTimeFormat)) == 0) { - *ptszTimeFormat = 0; - return 0; - } - return cchTimeFormat; -} - -WORD MTime::DateFormatLong(LPTSTR ptszTimeFormat, WORD cchTimeFormat) -{ - if (!ptszTimeFormat || !cchTimeFormat) - return 0; - if ((cchTimeFormat = GetDateFormat(LOCALE_USER_DEFAULT, DATE_LONGDATE, &_SysTime, NULL, ptszTimeFormat, cchTimeFormat)) == 0) { - *ptszTimeFormat = 0; - return 0; - } - return cchTimeFormat; -} - -/********************************************* - * set class value - *********************************************/ - -VOID MTime::FromStampAsUTC(const DWORD dwTimeStamp) -{ - LARGE_INTEGER li; - - li.QuadPart = (dwTimeStamp + 11644473600i64) * 10000000i64; - Set(li, FALSE); -} - -VOID MTime::FromStampAsLocal(const DWORD dwTimeStamp) -{ - FromStampAsUTC(dwTimeStamp); - UTCToLocal(); -} - -VOID MTime::Set(LARGE_INTEGER liFileTime, const BOOLEAN bIsLocal) -{ - if (liFileTime.QuadPart < 0i64) liFileTime.QuadPart = 0; - FileTimeToSystemTime((LPFILETIME)&liFileTime, &_SysTime); - _isLocal = bIsLocal != FALSE; -} - -VOID MTime::Set(FILETIME &ftFileTime, const BOOLEAN bIsLocal) -{ - FileTimeToSystemTime(&ftFileTime, &_SysTime); - _isLocal = bIsLocal != FALSE; -} - -VOID MTime::Set(const MTime &mt) -{ - Set(mt.SystemTime(), mt.IsLocal()); -} - -VOID MTime::Set(SYSTEMTIME &st, const BOOLEAN bIsLocal) -{ - memcpy(&_SysTime, &st, sizeof(SYSTEMTIME)); - _isLocal = bIsLocal != FALSE; -} - -VOID MTime::GetTimeUTC() -{ - _isLocal = FALSE; - ::GetSystemTime(&_SysTime); -} - -VOID MTime::GetLocalTime() -{ - _isLocal = TRUE; - ::GetLocalTime(&_SysTime); -} - -VOID MTime::GetLocalTime(HANDLE hContact) -{ - TIME_ZONE_INFORMATION tzi; - - GetTimeUTC(); - - if (!GetContactTimeZoneInformation((WPARAM)hContact, (LPARAM)&tzi)) { - UTCToTzSpecificLocal(&tzi); - } -} - -/********************************************* - * read and write time to miranda's database - *********************************************/ - -INT MTime::DBGetStamp (HANDLE hContact, LPCSTR pszModule, LPCSTR pszSetting) -{ - DWORD dwTimeStamp; - - if (hContact == INVALID_HANDLE_VALUE || - pszModule == NULL || pszModule[0] == 0 || - pszSetting == NULL || pszSetting[0] == 0) - { - ZeroDate(); - return 1; - } - - dwTimeStamp = DB::Setting::GetDWord(hContact, pszModule, pszSetting, 0); - - if (dwTimeStamp == 0) { - ZeroDate(); - return 1; - } - FromStampAsUTC(dwTimeStamp); - _isLocal = FALSE; - return 0; -} - -INT MTime::DBWriteStamp(HANDLE hContact, LPCSTR pszModule, LPCSTR pszSetting) -{ - if (hContact == INVALID_HANDLE_VALUE || - pszModule == NULL || pszModule[0] == 0 || - pszSetting == NULL || pszSetting[0] == 0) - { - return 1; - } - return DB::Setting::WriteDWord(hContact, pszModule, pszSetting, TimeStamp()); -} -- cgit v1.2.3