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
351 lines
8.4 KiB
C++
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
|