static menuSound_t Activate(menuCommon_t *self) { demoEntry_t *e; if (!m_demos.list.numItems) { return QMS_BEEP; } e = m_demos.list.items[m_demos.list.curvalue]; switch (e->type) { case ENTRY_UP: return LeaveDirectory(); case ENTRY_DN: return EnterDirectory(e); case ENTRY_DEMO: return PlayDemo(e); } return QMS_NOTHANDLED; }
//////////////////////////////////////////////////////////////////////// // When the user pressed the Enter or double-clicked... void PanelView::Execute(CustomListItem *item) //////////////////////////////////////////////////////////////////////// { BString execute; switch (item->m_Type) { case FT_DISKITEM: SetPanelMode(PM_NORMAL); ChangePath(item->m_DiskPath.String()); break; case FT_DISKBACK: SetPanelMode(PM_NORMAL); ChangePath(m_Path.String()); break; case FT_PARENT: GotoParent(); break; case FT_DIRECTORY: EnterDirectory(item->m_FileName.String()); break; case FT_SYMLINKDIR: case FT_SYMLINKFILE: // TODO: ha mar ugyis tudjuk elore.... { BEntry symlinkentry; entry_ref ref; execute.SetTo(m_Path.String()); execute+="/"; execute+=item->m_FileName; BEntry entry(execute.String()); entry.GetRef(&ref); symlinkentry.SetTo(&ref, true); if (symlinkentry.IsDirectory()) // Is it a directory? { BPath symlinkpath; symlinkentry.GetPath(&symlinkpath); ChangePath(symlinkpath.Path()); } else // No, it is a standard file.... { // Launch the selected file or document... if (entry.GetRef(&ref) == B_OK) be_roster->Launch(&ref); } } break; case FT_FILE: { // Launch the selected file or document... entry_ref ref; execute.SetTo(m_Path.String()); execute+="/"; execute+=item->m_FileName; BEntry entry(execute.String()); if (entry.GetRef(&ref) == B_OK) be_roster->Launch(&ref); } break; } }