///////////////////////////////////////////////////////////////////////////// // 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 #include #include #include #include // SysDoze()... #include #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