void CPosixThreadImpl::start(IRhoRunnable *pRunnable, IRhoRunnable::EPriority ePriority) { #if defined(OS_ANDROID) // Android has no pthread_condattr_xxx API pthread_cond_init(&m_condSync, NULL); #else pthread_condattr_t sync_details; pthread_condattr_init(&sync_details); pthread_cond_init(&m_condSync, &sync_details); pthread_condattr_destroy(&sync_details); #endif pthread_attr_t attr; int return_val = pthread_attr_init(&attr); return_val = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); RHO_ASSERT(!return_val); if ( ePriority != IRhoRunnable::epNormal) { sched_param param; return_val = pthread_attr_getschedparam (&attr, ¶m); param.sched_priority = ePriority == IRhoRunnable::epLow ? 20 : 100; //TODO: sched_priority return_val = pthread_attr_setschedparam (&attr, ¶m); } int thread_error = pthread_create(&m_thread, &attr, &runProc, pRunnable); return_val = pthread_attr_destroy(&attr); RHO_ASSERT(!return_val); RHO_ASSERT(thread_error==0); }
void CPosixThreadImpl::start(IRhoRunnable *pRunnable, IRhoRunnable::EPriority ePriority) { pthread_attr_t attr; int return_val = pthread_attr_init(&attr); //return_val = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); RHO_ASSERT(!return_val); if ( ePriority != IRhoRunnable::epNormal) { sched_param param; return_val = pthread_attr_getschedparam (&attr, ¶m); param.sched_priority = ePriority == IRhoRunnable::epLow ? 20 : 100; //TODO: sched_priority return_val = pthread_attr_setschedparam (&attr, ¶m); } #ifdef __SYMBIAN32__ size_t stacksize = 80000; pthread_attr_setstacksize(&attr, stacksize); #endif int thread_error = pthread_create(&m_thread, &attr, &runProc, pRunnable); return_val = pthread_attr_destroy(&attr); RHO_ASSERT(!return_val); RHO_ASSERT(thread_error==0); }
LRESULT CTimePickerDialog::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { SetWindowText(_T("Date")); #if defined(_WIN32_WCE) SHINITDLGINFO shidi = { SHIDIM_FLAGS, m_hWnd, SHIDIF_SIZEDLGFULLSCREEN }; RHO_ASSERT(SHInitDialog(&shidi)); SHMENUBARINFO mbi = { sizeof(mbi), 0 }; mbi.hwndParent = m_hWnd; mbi.nToolBarId = IDR_GETURL_MENUBAR; mbi.hInstRes = _AtlBaseModule.GetResourceInstance(); RHO_ASSERT(SHCreateMenuBar(&mbi)); GotoDlgCtrl(GetDlgItem(IDC_TIME_CTRL)); #else CreateButtons(); GotoDlgCtrl(m_btnOk); #endif DLG_ITEM_SET_FONT_BOLD (IDC_TIME_STATIC); return FALSE; }
bool copy_file(LPTSTR from, LPTSTR to) { RHO_ASSERT(from); RHO_ASSERT(to); /* SHFILEOPSTRUCT SHFileOp; ATL::CString source(from); ATL::CString destination(to); // add required string terminators source+=_T("\0\0"); destination+=_T("\0\0"); // set up File Operation structure ZeroMemory(&SHFileOp, sizeof(SHFILEOPSTRUCT)); SHFileOp.hwnd = NULL; SHFileOp.wFunc = FO_COPY; SHFileOp.pFrom = source; SHFileOp.pTo = destination; SHFileOp.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR; */ //if(SHFileOperation(&SHFileOp) != 0) { if ( !CopyFile(from, to, TRUE) ) { DWORD dwErr = GetLastError(); return false; } return true; }
LRESULT CRhoBluetoothDiscoveredDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { SetWindowText(_T("Discoverable")); #if defined(_WIN32_WCE) SHINITDLGINFO shidi = { SHIDIM_FLAGS, m_hWnd, SHIDIF_SIZEDLGFULLSCREEN }; RHO_ASSERT(SHInitDialog(&shidi)); SHMENUBARINFO mbi = { sizeof(mbi), 0 }; mbi.hwndParent = m_hWnd; mbi.nToolBarId = IDR_GETURL_MENUBAR; mbi.hInstRes = _AtlBaseModule.GetResourceInstance(); RHO_ASSERT(SHCreateMenuBar(&mbi)); //GotoDlgCtrl(GetDlgItem(IDC_DATE_CTRL)); #else CreateButtons(); GotoDlgCtrl(m_btnOk); #endif //DLG_ITEM_SET_FONT_BOLD (IDC_DATE_STATIC); //DLG_ITEM_SET_FONT_BOLD (IDC_TIME_STATIC); //if (m_format == CDateTimeMessage::FORMAT_DATE) { // GetDlgItem(IDC_TIME_CTRL).ShowWindow(SW_HIDE); // GetDlgItem(IDC_TIME_STATIC).ShowWindow(SW_HIDE); //} return FALSE; }
LRESULT CDateTimePickerDialog::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { SetWindowText(_T("Date")); #if defined(_WIN32_WCE) SHINITDLGINFO shidi = { SHIDIM_FLAGS, m_hWnd, SHIDIF_SIZEDLGFULLSCREEN }; RHO_ASSERT(SHInitDialog(&shidi)); SHMENUBARINFO mbi = { sizeof(mbi), 0 }; mbi.hwndParent = m_hWnd; mbi.nToolBarId = IDR_GETURL_MENUBAR; mbi.hInstRes = _AtlBaseModule.GetResourceInstance(); RHO_ASSERT(SHCreateMenuBar(&mbi)); SYSTEMTIME times[2]; // min and max times unsigned int flags = 0; if (m_min_time != 0) { UnixTimeToSystemTime(m_min_time, &(times[0])); flags = flags | GDTR_MIN; } if (m_max_time != 0) { UnixTimeToSystemTime(m_max_time, &(times[1])); flags = flags | GDTR_MAX; } DateTime_SetRange( GetDlgItem(IDC_DATE_CTRL), flags, times); GotoDlgCtrl(GetDlgItem(IDC_DATE_CTRL)); #else CreateButtons(); GotoDlgCtrl(m_btnOk); #endif DLG_ITEM_SET_FONT_BOLD (IDC_DATE_STATIC); DLG_ITEM_SET_FONT_BOLD (IDC_TIME_STATIC); if (m_format == CDateTimeMessage::FORMAT_DATE) { GetDlgItem(IDC_TIME_CTRL).ShowWindow(SW_HIDE); GetDlgItem(IDC_TIME_STATIC).ShowWindow(SW_HIDE); } return FALSE; }
LRESULT CLogOptionsDlg::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { #ifdef OS_WINCE SHINITDLGINFO shidi; shidi.dwMask = SHIDIM_FLAGS; shidi.dwFlags = SHIDIF_SIZEDLGFULLSCREEN;//SHIDIF_DONEBUTTON | SHIDIF_SIZEDLGFULLSCREEN |SHIDIF_EMPTYMENU; shidi.hDlg = m_hWnd; SHInitDialog(&shidi); SHMENUBARINFO mbi = { sizeof(mbi), 0 }; mbi.hwndParent = m_hWnd; mbi.nToolBarId = IDR_LOGOPTIONSMENUBAR; // ID of toolbar resource mbi.hInstRes = _AtlBaseModule.GetResourceInstance(); mbi.dwFlags = SHCMBF_HMENU; RHO_ASSERT(SHCreateMenuBar(&mbi)); #endif //OS_WINCE SendDlgItemMessage(IDC_CBXLEVELS,CB_ADDSTRING,0, (LPARAM)_T("Trace")); SendDlgItemMessage(IDC_CBXLEVELS,CB_ADDSTRING,0, (LPARAM)_T("Info")); SendDlgItemMessage(IDC_CBXLEVELS,CB_ADDSTRING,0, (LPARAM)_T("Warning")); SendDlgItemMessage(IDC_CBXLEVELS,CB_ADDSTRING,0, (LPARAM)_T("Error")); SendDlgItemMessage(IDC_CBXLEVELS,CB_SETCURSEL,LOGCONF().getMinSeverity(),0); CStringW strW(LOGCONF().getEnabledCategories().c_str()); SetDlgItemText(IDC_MSGCLASSES, strW ); strW = LOGCONF().getDisabledCategories().c_str(); SetDlgItemText(IDC_MSGEXCLUDE, strW ); bHandled = TRUE; return 1; // Let the system set the focus }
DWORD WINAPI CGPSDevice::GPSThreadProc(__opt LPVOID lpParameter) { DWORD dwRet = 0; GPS_POSITION gps_Position = {0}; GPS_DEVICE gps_Device = {0}; CGPSDevice * pDevice = (CGPSDevice*) lpParameter; HANDLE gpsHandles[GPS_CONTROLLER_EVENT_COUNT] = { pDevice->m_hNewLocationData, pDevice->m_hDeviceStateChange, pDevice->m_hExitThread }; gps_Position.dwSize = sizeof(gps_Position); gps_Position.dwVersion = GPS_VERSION_1; gps_Device.dwVersion = GPS_VERSION_1; gps_Device.dwSize = sizeof(gps_Device); do { dwRet = WaitForMultipleObjects( GPS_CONTROLLER_EVENT_COUNT, gpsHandles, FALSE, INFINITE); if (dwRet == WAIT_OBJECT_0) { dwRet = GPSGetPosition( pDevice->m_hGPS_Device, &gps_Position, MAX_AGE, 0); if (ERROR_SUCCESS != dwRet) { rho_geo_callcallback_error(); continue; } else pDevice->m_pController->SetGPSPosition(gps_Position); } else if (dwRet == WAIT_OBJECT_0 + 1) { dwRet = GPSGetDeviceState(&gps_Device); if (ERROR_SUCCESS != dwRet) continue; else pDevice->m_pController->SetGPSDeviceInfo(gps_Device); } else if (dwRet == WAIT_OBJECT_0 + 2) break; else RHO_ASSERT(0); } while( TRUE ); return 0; }
HRESULT Camera::selectPicture(HWND hwndOwner,LPTSTR pszFilename) { RHO_ASSERT(pszFilename); #if defined( _WIN32_WCE ) && !defined( OS_PLATFORM_MOTCE ) OPENFILENAMEEX ofn = {0}; #else OPENFILENAME ofn = {0}; #endif pszFilename[0] = 0; ofn.lStructSize = sizeof(ofn); ofn.lpstrFilter = NULL; ofn.lpstrFile = pszFilename; ofn.nMaxFile = MAX_PATH; ofn.lpstrInitialDir = NULL; ofn.lpstrTitle = _T("Select an image"); #if defined( _WIN32_WCE ) && !defined( OS_PLATFORM_MOTCE ) ofn.ExFlags = OFN_EXFLAG_THUMBNAILVIEW|OFN_EXFLAG_NOFILECREATE|OFN_EXFLAG_LOCKDIRECTORY; if (GetOpenFileNameEx(&ofn)) #else if (GetOpenFileName(&ofn)) #endif { HRESULT hResult = S_OK; /* TCHAR rhoroot[MAX_PATH]; wchar_t* root = wce_mbtowc(rho_rhodesapp_getblobsdirpath()); wsprintf(rhoroot,L"%s",root); free(root); create_folder(rhoroot);*/ StringW strBlobRoot = convertToStringW( RHODESAPP().getBlobsDirPath() ); LPCTSTR szExt = wcsrchr(pszFilename, '.'); TCHAR filename[256]; generate_filename(filename, szExt); int len = strBlobRoot.length() + wcslen(L"\\") + wcslen(filename); wchar_t* full_name = (wchar_t*) malloc((len+2)*sizeof(wchar_t)); wsprintf(full_name,L"%s\\%s",strBlobRoot.c_str(),filename); if (copy_file(pszFilename,full_name)) { wcscpy( pszFilename, filename ); } else { hResult = E_INVALIDARG; } free(full_name); return hResult; } else if (GetLastError()==ERROR_SUCCESS) { return S_FALSE; //user cancel op } return E_INVALIDARG; }
LRESULT CTimePickerDialog::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { if ((m_title != NULL) && (strlen(m_title) > 0)) { String title = m_title; StringW title_w = convertToStringW(title); //SetWindowText(title_w.c_str()); //GetDlgItem(IDC_TIME_CTRL).SetWindowText(title_w.c_str()); SetDlgItemText(ID_TIME_CAPTION, title_w.c_str()); } else { SetWindowText(_T("Date")); } #if defined(_WIN32_WCE) SHINITDLGINFO shidi = { SHIDIM_FLAGS, m_hWnd, SHIDIF_SIZEDLGFULLSCREEN }; RHO_ASSERT(SHInitDialog(&shidi)); SHMENUBARINFO mbi = { sizeof(mbi), 0 }; mbi.hwndParent = m_hWnd; mbi.nToolBarId = IDR_GETURL_MENUBAR; mbi.hInstRes = _AtlBaseModule.GetResourceInstance(); RHO_ASSERT(SHCreateMenuBar(&mbi)); GotoDlgCtrl(GetDlgItem(IDC_TIME_CTRL)); SYSTEMTIME start_time; if (m_initialTime != 0) { UnixTimeToSystemTime(m_initialTime, &start_time); DateTime_SetSystemtime( GetDlgItem(IDC_TIME_CTRL), GDT_VALID, &start_time); } #else CreateButtons(); GotoDlgCtrl(m_btnOk); #endif DLG_ITEM_SET_FONT_BOLD (IDC_TIME_STATIC); DLG_ITEM_SET_FONT_BOLD (ID_TIME_CAPTION); return FALSE; }
LRESULT CGetURLDialog::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { #if defined(_WIN32_WCE) SHINITDLGINFO shidi = { SHIDIM_FLAGS, m_hWnd, SHIDIF_SIZEDLGFULLSCREEN }; RHO_ASSERT(SHInitDialog(&shidi)); SHMENUBARINFO mbi = { sizeof(mbi), 0 }; mbi.hwndParent = m_hWnd; mbi.nToolBarId = IDR_GETURL_MENUBAR; // ID of toolbar resource mbi.hInstRes = _AtlBaseModule.GetResourceInstance(); RHO_ASSERT(SHCreateMenuBar(&mbi)); // For devices that have a back key (i.e. Smartphones), // override the back key since we have an edit control CWindow(mbi.hwndMB).SendMessage(SHCMBM_OVERRIDEKEY, VK_TBACK, MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY, SHMBOF_NODEFAULT | SHMBOF_NOTIFY)); RHO_ASSERT(SetDlgItemText(IDC_EDIT_URL, TEXT("http://"))); #endif //_WIN32_WCE return 1; // Let the system set the focus }
LPTSTR generate_filename(LPTSTR filename, LPCTSTR szExt) { RHO_ASSERT(filename); CTime time(CTime::GetCurrentTime()); tm tl, tg; time.GetLocalTm(&tl); time.GetGmtTm(&tg); int tz = tl.tm_hour-tg.tm_hour; //TBD: fix tz wsprintf(filename, L"Image_%02i-%02i-%0004i_%02i.%02i.%02i_%c%03i%s", tg.tm_mon, tg.tm_mday, 1900+tg.tm_year, tg.tm_hour, tg.tm_min, tg.tm_sec, tz>0?'_':'-',abs(tz),(szExt?szExt:L"")); return filename; }
HRESULT Camera::selectPicture(HWND hwndOwner,LPTSTR pszFilename) { RHO_ASSERT(pszFilename); OPENFILENAMEEX ofn = {0}; ofn.lStructSize = sizeof(ofn); ofn.lpstrFilter = NULL; ofn.lpstrFile = pszFilename; ofn.nMaxFile = MAX_PATH; ofn.lpstrInitialDir = NULL; ofn.lpstrTitle = _T("Select an image"); ofn.ExFlags = OFN_EXFLAG_THUMBNAILVIEW|OFN_EXFLAG_NOFILECREATE|OFN_EXFLAG_LOCKDIRECTORY; if (GetOpenFileNameEx(&ofn)) { HRESULT hResult = S_OK; TCHAR rhoroot[MAX_PATH]; wchar_t* root = wce_mbtowc(RhoGetRootPath()); wsprintf(rhoroot,L"%s%s",root,L"apps\\public\\db-files"); free(root); create_folder(rhoroot); TCHAR filename[256]; generate_filename(filename); int len = wcslen(rhoroot) + wcslen(L"\\") + wcslen(filename); wchar_t* full_name = (wchar_t*) malloc((len+2)*sizeof(wchar_t)); wsprintf(full_name,L"%s\\%s",rhoroot,filename); if (copy_file(pszFilename,full_name)) { StringCchCopy(pszFilename, MAX_PATH, filename); } else { hResult = E_INVALIDARG; } free(full_name); return hResult; } else if (GetLastError()==ERROR_SUCCESS) { return S_FALSE; //user cancel op } return E_INVALIDARG; }
HRESULT Camera::selectPicture(HWND hwndOwner,LPTSTR pszFilename) { RHO_ASSERT(pszFilename); #if defined( _WIN32_WCE ) //&& !defined( OS_PLATFORM_MOTCE ) OPENFILENAMEEX ofnex = {0}; OPENFILENAME ofn = {0}; #else OPENFILENAME ofn = {0}; #endif pszFilename[0] = 0; ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hwndOwner; ofn.lpstrFilter = NULL; ofn.lpstrFile = pszFilename; ofn.nMaxFile = MAX_PATH; ofn.lpstrInitialDir = NULL; ofn.lpstrTitle = _T("Select an image"); #if defined( _WIN32_WCE ) //&& !defined( OS_PLATFORM_MOTCE ) BOOL bRes = false; if(RHO_IS_WMDEVICE) { ofnex.ExFlags = OFN_EXFLAG_THUMBNAILVIEW|OFN_EXFLAG_NOFILECREATE|OFN_EXFLAG_LOCKDIRECTORY; bRes = lpfn_GetOpen_FileEx(&ofnex); } else bRes = GetOpenFileName(&ofn); if (bRes) #else if (GetOpenFileName(&ofn)) #endif { HRESULT hResult = S_OK; /* TCHAR rhoroot[MAX_PATH]; wchar_t* root = wce_mbtowc(rho_rhodesapp_getblobsdirpath()); wsprintf(rhoroot,L"%s",root); free(root); create_folder(rhoroot);*/ StringW strBlobRoot = convertToStringW( RHODESAPP().getBlobsDirPath() ); LPCTSTR szExt = wcsrchr(pszFilename, '.'); StringW strFileName = generate_filename(szExt); StringW strFullName = strBlobRoot + L"\\" + strFileName; if (copy_file( pszFilename, strFullName.c_str() )) { wcscpy( pszFilename, strFileName.c_str() ); } else { hResult = E_INVALIDARG; } return hResult; } else if (GetLastError()==ERROR_SUCCESS) { return S_FALSE; //user cancel op } return E_INVALIDARG; }
LRESULT CRhoMapViewDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { SetWindowText(_T("MapView")); #if defined(_WIN32_WCE) #if !defined (OS_PLATFORM_MOTCE) SHINITDLGINFO shidi = { SHIDIM_FLAGS, m_hWnd, SHIDIF_SIZEDLGFULLSCREEN }; RHO_ASSERT(SHInitDialog(&shidi)); SHMENUBARINFO mbi = { sizeof(mbi), 0 }; mbi.hwndParent = m_hWnd; mbi.nToolBarId = IDR_GETURL_MENUBAR;//IDR_MAPVIEW; mbi.hInstRes = _AtlBaseModule.GetResourceInstance(); SHCreateMenuBar(&mbi); #else m_hWndCommandBar = CommandBar_Create(_AtlBaseModule.GetResourceInstance(), m_hWnd, 1); CommandBar_AddAdornments(m_hWndCommandBar, 0, 0 ); CommandBar_Show(m_hWndCommandBar, TRUE); #endif //OS_WINCE //::SetWindowLong(GetDlgItem(IDC_SLIDER_ZOOM).m_hWnd, // GWL_EXSTYLE, // ::GetWindowLong(GetDlgItem(IDC_SLIDER_ZOOM).m_hWnd, GWL_EXSTYLE) | WS_EX_TRANSPARENT); RECT r; ::GetClientRect(m_hWnd, &r); RHO_MAP_TRACE2("execute rho_map_create( w = %d, h = %d )", r.right - r.left, r.bottom - r.top); ourMapView = rho_map_create(mParams, &ourDrawingDevice, r.right - r.left, r.bottom - r.top); rho_param_free(mParams); mParams = NULL; if (ourMapView != NULL) { int minz = ourMapView->minZoom(); int maxz = ourMapView->maxZoom(); RHO_MAP_TRACE2("request Zoom limits: minZoom = %d, maxZoom = %d", minz, maxz); ::SendMessage(GetDlgItem(IDC_SLIDER_ZOOM).m_hWnd, TBM_SETRANGEMIN, FALSE, minz); ::SendMessage(GetDlgItem(IDC_SLIDER_ZOOM).m_hWnd, TBM_SETRANGEMAX, FALSE, maxz); int dwPos = ourMapView->zoom(); dwPos = ourMapView->maxZoom() - (dwPos - ourMapView->minZoom()); ::SendMessage(GetDlgItem(IDC_SLIDER_ZOOM).m_hWnd, TBM_SETPOS, TRUE, dwPos); String strImagePath = "lib/res/blue_pushpin.png"; String fullImagePath = CFilePath::join( RHODESAPP().getRhoRuntimePath(), strImagePath); IDrawingImage* pinImg = ourDrawingDevice.createImage(fullImagePath, true); PIN_INFO pin_info = {0}; pin_info.x_offset = -10; pin_info.y_offset = -35; pin_info.click_rect_x = -10; pin_info.click_rect_y = -35; pin_info.click_rect_width = 72; pin_info.click_rect_height = 72; ourMapView->setPinImage(pinImg, pin_info); strImagePath = "lib/res/callout.png"; fullImagePath = CFilePath::join( RHODESAPP().getRhoRuntimePath(), strImagePath); IDrawingImage* pinCalloutImg = ourDrawingDevice.createImage(fullImagePath, true); PIN_INFO pin_callout_info = {0}; pin_callout_info.x_offset = 5; pin_callout_info.y_offset = 0; pin_callout_info.click_rect_width = 179; pin_callout_info.click_rect_height = 64; ourMapView->setPinCalloutImage(pinCalloutImg, pin_callout_info); strImagePath = "lib/res/callout_link.png"; fullImagePath = CFilePath::join( RHODESAPP().getRhoRuntimePath(), strImagePath); IDrawingImage* pinCalloutLinkImg = ourDrawingDevice.createImage(fullImagePath, true); ourMapView->setPinCalloutLinkImage(pinCalloutLinkImg, pin_callout_info); strImagePath = "lib/res/esri.png"; fullImagePath = CFilePath::join( RHODESAPP().getRhoRuntimePath(), strImagePath); IDrawingImage* esriLogoImg = ourDrawingDevice.createImage(fullImagePath, true); ourMapView->setESRILogoImage(esriLogoImg); } #else //CreateButtons(); //GotoDlgCtrl(m_btnOk); #endif requestRedraw(); return FALSE; }