зеркало из https://github.com/mozilla/gecko-dev.git
Added progid/cid to idl and interface change.
This commit is contained in:
Родитель
171ed12851
Коммит
f37eb606f8
|
@ -42,32 +42,39 @@ enum
|
|||
};
|
||||
%}
|
||||
|
||||
%{C++
|
||||
// Define Progid and CID
|
||||
// {2EA2E7D0-4095-11d3-9144-006008A6EDF6}
|
||||
#define NS_SCRIPTABLEDATEFORMAT_CID \
|
||||
{ 0x2ea2e7d0, 0x4095, 0x11d3, { 0x91, 0x44, 0x0, 0x60, 0x8, 0xa6, 0xed, 0xf6 } }
|
||||
|
||||
#define NS_SCRIPTABLEDATEFORMAT_PROGID "component://netscape/intl/scriptabledateformat"
|
||||
|
||||
extern nsISupports *NEW_SCRIPTABLE_DATEFORMAT(void);
|
||||
%}
|
||||
|
||||
[scriptable, uuid(0c89efb0-1aae-11d3-9141-006008a6edf6)]
|
||||
interface nsIScriptableDateFormat : nsISupports {
|
||||
// format date and time, locale is language country pair (e.g. en-US) or empty string for application default
|
||||
void FormatDateTime(in wstring locale,
|
||||
in nsDateFormatSelector dateFormatSelector,
|
||||
in nsTimeFormatSelector timeFormatSelector,
|
||||
in long year,
|
||||
in long month,
|
||||
in long day,
|
||||
in long hour,
|
||||
in long minute,
|
||||
in long second,
|
||||
[shared, retval] out wstring dateTimeString);
|
||||
wstring FormatDateTime(in wstring locale,
|
||||
in nsDateFormatSelector dateFormatSelector,
|
||||
in nsTimeFormatSelector timeFormatSelector,
|
||||
in long year,
|
||||
in long month,
|
||||
in long day,
|
||||
in long hour,
|
||||
in long minute,
|
||||
in long second);
|
||||
// format date, locale is language country pair (e.g. en-US) or empty string for application default
|
||||
void FormatDate(in wstring locale,
|
||||
in nsDateFormatSelector dateFormatSelector,
|
||||
in long year,
|
||||
in long month,
|
||||
in long day,
|
||||
[shared, retval] out wstring dateString);
|
||||
wstring FormatDate(in wstring locale,
|
||||
in nsDateFormatSelector dateFormatSelector,
|
||||
in long year,
|
||||
in long month,
|
||||
in long day);
|
||||
// format time, locale is language country pair (e.g. en-US) or empty string for application default
|
||||
void FormatTime(in wstring locale,
|
||||
in nsTimeFormatSelector timeFormatSelector,
|
||||
in long hour,
|
||||
in long minute,
|
||||
in long second,
|
||||
[shared, retval] out wstring timeString);
|
||||
wstring FormatTime(in wstring locale,
|
||||
in nsTimeFormatSelector timeFormatSelector,
|
||||
in long hour,
|
||||
in long minute,
|
||||
in long second);
|
||||
};
|
||||
|
|
|
@ -28,7 +28,5 @@
|
|||
{ 0x704e7c0, 0xa758, 0x11d2, \
|
||||
{ 0x91, 0x19, 0x0, 0x60, 0x8, 0xa6, 0xed, 0xf6 } }
|
||||
|
||||
nsISupports *NEW_SCRIPTABLE_DATEFORMAT(void);
|
||||
|
||||
#endif // nsDateTimeFormatCID_h__
|
||||
|
||||
|
|
|
@ -41,14 +41,14 @@ class nsScriptableDateFormat : public nsIScriptableDateFormat {
|
|||
PRInt32 hour,
|
||||
PRInt32 minute,
|
||||
PRInt32 second,
|
||||
const PRUnichar **dateTimeString);
|
||||
PRUnichar **dateTimeString);
|
||||
|
||||
NS_IMETHOD FormatDate(const PRUnichar *locale,
|
||||
nsDateFormatSelector dateFormatSelector,
|
||||
PRInt32 year,
|
||||
PRInt32 month,
|
||||
PRInt32 day,
|
||||
const PRUnichar **dateString)
|
||||
PRUnichar **dateString)
|
||||
{return FormatDateTime(locale, dateFormatSelector, kTimeFormatNone,
|
||||
year, month, day, 0, 0, 0, dateString);}
|
||||
|
||||
|
@ -57,7 +57,7 @@ class nsScriptableDateFormat : public nsIScriptableDateFormat {
|
|||
PRInt32 hour,
|
||||
PRInt32 minute,
|
||||
PRInt32 second,
|
||||
const PRUnichar **timeString)
|
||||
PRUnichar **timeString)
|
||||
{return FormatDateTime(locale, kDateFormatNone, timeFormatSelector,
|
||||
1999, 1, 1, hour, minute, second, timeString);}
|
||||
|
||||
|
@ -79,7 +79,7 @@ NS_IMETHODIMP nsScriptableDateFormat::FormatDateTime(
|
|||
PRInt32 hour,
|
||||
PRInt32 minute,
|
||||
PRInt32 second,
|
||||
const PRUnichar **dateTimeString)
|
||||
PRUnichar **dateTimeString)
|
||||
{
|
||||
nsILocaleFactory* localeFactory;
|
||||
nsILocale* aLocale;
|
||||
|
@ -101,7 +101,7 @@ NS_IMETHODIMP nsScriptableDateFormat::FormatDateTime(
|
|||
struct tm tmTime;
|
||||
time_t timetTime;
|
||||
|
||||
nsCRT::memset( &tmTime, 0, sizeof(tmTime) );
|
||||
nsCRT::memset( &tmTime, 0, sizeof(tmTime) );
|
||||
tmTime.tm_year = year - 1900;
|
||||
tmTime.tm_mon = month - 1;
|
||||
tmTime.tm_mday = day;
|
||||
|
@ -113,13 +113,26 @@ NS_IMETHODIMP nsScriptableDateFormat::FormatDateTime(
|
|||
timetTime = mktime(&tmTime);
|
||||
if (-1 != timetTime) {
|
||||
rv = aDateTimeFormat->FormatTime(aLocale, dateFormatSelector, timeFormatSelector,
|
||||
timetTime, mStringOut);
|
||||
timetTime, mStringOut);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
*dateTimeString = mStringOut.GetUnicode();
|
||||
*dateTimeString = mStringOut.ToNewUnicode();
|
||||
}
|
||||
}
|
||||
else {
|
||||
rv = NS_ERROR_ILLEGAL_VALUE; // invalid arg value
|
||||
// if mktime fails (e.g. year <= 1970), then try NSPR.
|
||||
PRTime prtime;
|
||||
char string[32];
|
||||
sprintf(string, "%.2d/%.2d/%d %.2d:%.2d:%.2d", month, day, year, hour, minute, second);
|
||||
if (PR_SUCCESS != PR_ParseTimeString(string, PR_FALSE, &prtime)) {
|
||||
rv = NS_ERROR_ILLEGAL_VALUE; // invalid arg value
|
||||
}
|
||||
else {
|
||||
rv = aDateTimeFormat->FormatPRTime(aLocale, dateFormatSelector, timeFormatSelector,
|
||||
prtime, mStringOut);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
*dateTimeString = mStringOut.ToNewUnicode();
|
||||
}
|
||||
}
|
||||
}
|
||||
NS_RELEASE(aDateTimeFormat);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче