Exec_stat MCAndroidPlayerControl::Get(MCNativeControlProperty p_property, MCExecPoint &ep) { bool t_bool = false; int32_t t_integer; jobject t_view; t_view = GetView(); switch (p_property) { case kMCNativeControlPropertyContent: { ep.setsvalue(m_path); return ES_NORMAL; } case kMCNativeControlPropertyShowController: { MCAndroidObjectRemoteCall(t_view, "getShowController", "b", &t_bool); FormatBoolean(ep, t_bool); return ES_NORMAL; } case kMCNativeControlPropertyLooping: { MCAndroidObjectRemoteCall(t_view, "getLooping", "b", &t_bool); FormatBoolean(ep, t_bool); return ES_NORMAL; } case kMCNativeControlPropertyDuration: { MCAndroidObjectRemoteCall(t_view, "getDuration", "i", &t_integer); FormatInteger(ep, t_integer); return ES_NORMAL; } case kMCNativeControlPropertyCurrentTime: { MCAndroidObjectRemoteCall(t_view, "getCurrentTime", "i", &t_integer); FormatInteger(ep, t_integer); return ES_NORMAL; } case kMCNativeControlPropertyNaturalSize: { int32_t t_width = 0, t_height = 0; MCAndroidObjectRemoteCall(t_view, "getVideoWidth", "i", &t_width); MCAndroidObjectRemoteCall(t_view, "getVideoHeight", "i", &t_height); sprintf(ep.getbuffer(I2L * 2 + 3), "%d,%d", t_width, t_height); ep.setstrlen(); return ES_NORMAL; } default: break; } return MCAndroidControl::Get(p_property, ep); }
IO_stat IO_read_to_eof(IO_handle stream, MCExecPoint &ep) { uint4 nread; nread = (uint4)MCS_fsize(stream) - (uint4)MCS_tell(stream); char *dptr = ep.getbuffer(nread); MCS_read(dptr, 1, nread, stream); ep.setlength(nread); return IO_NORMAL; }
// MW-2005-05-15: Updated for new answer command restructuring int MCA_folder(MCExecPoint &ep, const char *p_title, const char *p_prompt, const char *p_initial, unsigned int p_options) { if (MCmajorosversion >= 0x0600 && MCModeMakeLocalWindows()) return MCA_file(ep, p_title, p_prompt, nil, p_initial, p_options | MCA_OPTION_FOLDER_DIALOG); // MW-2005-05-27: We'll use a static (I know bad me) to store the version // of the shell dll. static int s_shell_version = -1; static char *s_last_folder = NULL; char *t_native_filename; unsigned int t_native_filename_length; if (p_initial != NULL) { t_native_filename_length = strlen(p_initial); t_native_filename = (char *)_alloca(t_native_filename_length + 2); strcpy(t_native_filename, p_initial); MCU_path2native(t_native_filename); } else { t_native_filename = s_last_folder; t_native_filename_length = 0; } if (!MCModeMakeLocalWindows()) { MCRemoteFolderDialog(ep, p_title, p_prompt, t_native_filename); if (!ep.isempty()) { if (s_last_folder != NULL) delete s_last_folder; s_last_folder = ep.getsvalue().clone(); MCU_path2native(s_last_folder); } return 0; } if (s_shell_version == -1) s_shell_version = get_dll_version("shell32.dll"); bool sheet = (p_options & MCA_OPTION_SHEET) != 0; char *prompt = (char *)p_prompt; ep . clear(); BROWSEINFOA bi; memset(&bi, 0, sizeof(BROWSEINFO)); Window pw; pw = MCModeGetParentWindow(); if (pw != DNULL) bi.hwndOwner = (HWND)pw->handle.window; bi.pidlRoot = NULL; bi.lpszTitle = prompt; bi.ulFlags = BIF_RETURNONLYFSDIRS; if (s_shell_version >= 500) bi.ulFlags |= BIF_NEWDIALOGSTYLE; if (t_native_filename != NULL) { bi . lpfn = BrowseCallbackProc; bi . lParam = (LPARAM)t_native_filename; } else { bi.lpfn = NULL; bi.lParam = NULL; } LPITEMIDLIST lpiil; LPMALLOC lpm; char *tdir = NULL; SHGetMalloc(&lpm); DWORD t_error; lpiil = SHBrowseForFolderA(&bi); if (lpiil == NULL) { t_error = GetLastError(); } if (lpiil != NULL && SHGetPathFromIDListA(lpiil, ep.getbuffer(PATH_MAX))) { if (s_last_folder != NULL) delete s_last_folder; s_last_folder = strclone(ep . getbuffer(0)); MCU_path2std(ep.getbuffer(0)); ep.setstrlen(); } else { ep.clear(); MCresult->sets(MCcancelstring); } // SMR 1880 clear shift and button state waitonbutton(); lpm->Free(lpiil); lpm->Release(); return 0; }