Files
wxWidgets/src/palmos/utils.cpp
Vadim Zeitlin 9a83f86094 Globally replace _T() with wxT().
Standardize on using a single macro across all wxWidgets sources and solve the name clash with Sun CC standard headers (see #10660).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-23 20:30:22 +00:00

351 lines
8.4 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: src/palmos/utils.cpp
// Purpose: Various utilities
// Author: William Osborne - minimal working wxPalmOS port
// Modified by: Wlodzimierz ABX Skiba - real functionality
// Created: 10/13/04
// RCS-ID: $Id$
// Copyright: (c) William Osborne, Wlodzimierz Skiba
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
// declarations
// ============================================================================
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/utils.h"
#include "wx/app.h"
#include "wx/intl.h"
#include "wx/log.h"
#include "wx/timer.h"
#endif //WX_PRECOMP
#include "wx/apptrait.h"
#include "wx/dynload.h"
#include "wx/confbase.h"
#include "wx/power.h"
#include <PalmTypes.h>
#include <MemoryMgr.h>
#include <DLServer.h>
#include <SoundMgr.h>
#include <SystemMgr.h> // SysDoze()...
#include <SysUtils.h>
#ifdef __WXPALMOS6__
extern void SysReset (void);
extern UInt32 SysTaskID (void);
#endif
// ============================================================================
// implementation
// ============================================================================
// ----------------------------------------------------------------------------
// get host name and related
// ----------------------------------------------------------------------------
// Get hostname only (without domain name)
bool wxGetHostName(wxChar *buf, int maxSize)
{
return false;
}
// get full hostname (with domain name if possible)
bool wxGetFullHostName(wxChar *buf, int maxSize)
{
return false;
}
// Get user ID e.g. jacs
bool wxGetUserId(wxChar *buf, int maxSize)
{
return wxGetUserName(buf, maxSize);
}
// Get user name e.g. Julian Smart
bool wxGetUserName(wxChar *buf, int maxSize)
{
*buf = wxT('\0');
// buffer allocation
MemHandle handle = MemHandleNew(maxSize-1);
if( handle == NULL )
return false;
// lock the buffer
char *id = (char *)MemHandleLock(handle);
if( id == NULL )
return false;
// get user's name
if( DlkGetSyncInfo(NULL, NULL, NULL, id, NULL, NULL) != errNone )
{
MemPtrUnlock(id);
return false;
}
wxStrlcpy(buf, wxSafeConvertMB2WX(id), maxSize);
// free the buffer
MemPtrUnlock(id);
return true;
}
const wxChar* wxGetHomeDir(wxString *pstr)
{
if (NULL != pstr) {
*pstr = "/palmos";
}
return wxT("/palmos");
}
wxString wxGetUserHome(const wxString& WXUNUSED(user))
{
return wxString("/palmos");
}
bool wxGetDiskSpace(const wxString& path, wxDiskspaceSize_t *pTotal, wxDiskspaceSize_t *pFree)
{
return false;
}
// ----------------------------------------------------------------------------
// env vars
// ----------------------------------------------------------------------------
bool wxGetEnv(const wxString& var, wxString *value)
{
return false;
}
#if ! WXWIN_COMPATIBILITY_2_8
bool wxSetEnv(const wxString& var, const wxChar *value)
{
return false;
}
#endif // ! WXWIN_COMPATIBILITY_2_8
bool wxUnsetEnv(const wxString& var)
{
return false;
}
// ----------------------------------------------------------------------------
// process management
// ----------------------------------------------------------------------------
int wxKill(long pid, wxSignal sig, wxKillError *krc, int flags)
{
return 0;
}
// Execute a program in an Interactive Shell
bool wxShell(const wxString& command)
{
return false;
}
// Shutdown or reboot the PC
bool wxShutdown(wxShutdownFlags wFlags)
{
switch (wFlags) {
case wxSHUTDOWN_POWEROFF:
// TODO: turn off lamps
#ifdef __WXPALMOS6__
//extern void SysReset (void);
//extern UInt32 SysTaskID (void);
#define SysReset()
#define SysTaskID() (0)
SysSleep ();
#else
//SysSleep (false, false);// undocument API
SysDoze (true);
#endif
break;
case wxSHUTDOWN_REBOOT:
SysReset ();
break;
}
return false;
}
// ----------------------------------------------------------------------------
// power management
// ----------------------------------------------------------------------------
wxPowerType wxGetPowerType()
{
//SysBatteryKind kind;
//POS_SysBatteryInfo (false, NULL, NULL, NULL, NULL, NULL, &kind, NULL);
//return wxPOWER_SOCKET;
return wxPOWER_BATTERY;
}
wxBatteryState wxGetBatteryState()
{
//#include "SystemMgr.h"
UInt8 percent;
POS_SysBatteryInfo (false, NULL, NULL, NULL, NULL, NULL, NULL, &percent);
if (percent < 3)
return wxBATTERY_SHUTDOWN_STATE;
else if (percent < 5)
return wxBATTERY_CRITICAL_STATE;
else if (percent < 15)
return wxBATTERY_LOW_STATE;
//return wxBATTERY_UNKNOWN_STATE;
return wxBATTERY_NORMAL_STATE;
}
// ----------------------------------------------------------------------------
// misc
// ----------------------------------------------------------------------------
// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX)
wxMemorySize wxGetFreeMemory()
{
uint32_t freeTotal = 0;
uint32_t freeHeap;
uint32_t freeChunk;
// executed twice: for the dynamic heap, and for the non-secure RAM storage heap
for ( uint16_t i = 0; i < POS_MemNumRAMHeaps(); i ++)
{
status_t err = MemHeapFreeBytes(i, &freeHeap, &freeChunk);
if( err != errNone )
return -1;
freeTotal+=freeHeap;
}
return (wxMemorySize)freeTotal;
}
unsigned long wxGetProcessId()
{
return SysTaskID ();
}
// Emit a beeeeeep
void wxBell()
{
SndPlaySystemSound(sndWarning);
}
bool wxIsPlatform64Bit()
{
return false;
}
wxString wxGetOsDescription()
{
wxString strOS = wxT("PalmOS");
//err = FtrGet(sysFtrCreator, sysFtrNumROMVersion, &romVersion);
//if (romVersion >= 0x02000000) v20 = true;
char *version = SysGetOSVersionString();
if(version)
{
wxString str = wxString::FromAscii(version);
MemPtrFree(version);
if(!str.empty())
{
strOS << _(" ") << str;
}
}
return strOS;
}
wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin)
{
// TODO
return wxOS_PALM_OS;
}
// ----------------------------------------------------------------------------
// sleep functions
// ----------------------------------------------------------------------------
void wxMilliSleep(unsigned long milliseconds)
{
UInt16 ticks_sec;
Int32 delay;
ticks_sec = SysTicksPerSecond ();
delay = milliseconds * ticks_sec / 1000;
if (delay > 0) {
SysTaskDelay (delay);
}
}
void wxMicroSleep(unsigned long microseconds)
{
UInt16 ticks_sec;
Int32 delay;
ticks_sec = SysTicksPerSecond ();
delay = microseconds * ticks_sec / 1000000;
if (delay > 0) {
SysTaskDelay (delay);
}
}
void wxSleep(int nSecs)
{
UInt16 ticks_sec;
Int32 delay;
ticks_sec = SysTicksPerSecond ();
delay = nSecs * ticks_sec;
if (delay > 0) {
SysTaskDelay (delay);
}
}
// ----------------------------------------------------------------------------
// font encoding <-> Win32 codepage conversion functions
// ----------------------------------------------------------------------------
extern WXDLLIMPEXP_BASE long wxEncodingToCharset(wxFontEncoding encoding)
{
return 0;
}
// we have 2 versions of wxCharsetToCodepage(): the old one which directly
// looks up the vlaues in the registry and the new one which is more
// politically correct and has more chances to work on other Windows versions
// as well but the old version is still needed for !wxUSE_FONTMAP case
#if wxUSE_FONTMAP
#include "wx/fontmap.h"
extern WXDLLIMPEXP_BASE long wxEncodingToCodepage(wxFontEncoding encoding)
{
return 0;
}
extern long wxCharsetToCodepage(const wxChar *name)
{
return 0;
}
#else // !wxUSE_FONTMAP
// this should work if Internet Exploiter is installed
extern long wxCharsetToCodepage(const wxChar *name)
{
return 0;
}
#endif // wxUSE_FONTMAP/!wxUSE_FONTMAP