//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_winamppoller_text_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_winamppoller_text_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { for (int i = WINAMP_POLLINGTYPE_LASTSCALE + 1; i < WINAMP_POLLINGTYPECOUNT; i++) { make_menuitem_cmd(m, agenttype_winamp_friendlynames[i], config_getfull_control_setagent_c(c, action, "WinampText", agenttype_winamp_pollingnames[i])); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_graph_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_graph_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { for (int i = 0; i < AGENTTYPE_GRAPH_CHARTTYPECOUNT; i++) { make_menuitem_cmd(m, agenttype_graph_friendlycharttypes[i], config_getfull_control_setagent_c(c, action, "Graph", agenttype_graph_charttypes[i])); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_systemmonitor_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_systemmonitor_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { //Add a menu item for every type for (int i = 1; i < SYSTEMMONITOR_NUMTYPES; i++) { make_menuitem_cmd(m, agenttype_systemmonitor_friendlytypes[i], config_getfull_control_setagent_c(c, action, "SystemMonitor", agenttype_systemmonitor_types[i])); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_systeminfo_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_systeminfo_menu_set(std::shared_ptr<bb::MenuConfig> m, control *c, agent *a, wchar_t *action, int controlformat) { //Add a menu item for every type for (int i = 1; i < SYSTEMINFO_NUMTYPES; i++) { make_menuitem_cmd(m, agenttype_systeminfo_friendlytypes[i], config_getfull_control_setagent_c(c, action, L"SystemInfo", agenttype_systeminfo_types[i])); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_diskspacemonitor_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_diskspacemonitor_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { //Add a menu item for every type for (int i = 1; i < DISKSPACEMONITOR_NUMTYPES; i++) { make_menuitem_cmd(m, agenttype_diskspacemonitor_friendlytypes[i], config_getfull_control_setagent_c(c, action, "DiskSpaceMonitor", agenttype_diskspacemonitor_types[i])); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_networkmonitor_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_networkmonitor_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { //Add a menu item for every type for (int i = 0; i < AGENTTYPE_NETWORKMONITOR_NUMINTERFACES; i++) { make_menuitem_cmd(m, agenttype_networkmonitor_friendlyinterfaces[i], config_getfull_control_setagent_c(c, action, "NetworkMonitor", agenttype_networkmonitor_interface_numbers[i])); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_switchedstate_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_switchedstate_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { char temp[32] = ""; switch(controlformat) { case CONTROL_FORMAT_TEXT: strcpy(temp, agenttype_switchedstate_typenames[AGENTTYPE_SWITCHEDSTATE_TYPE_TEXT]); break; case CONTROL_FORMAT_IMAGE: strcpy(temp, agenttype_switchedstate_typenames[AGENTTYPE_SWITCHEDSTATE_TYPE_IMAGE]); break; case CONTROL_FORMAT_TRIGGER: strcpy(temp, agenttype_switchedstate_typenames[AGENTTYPE_SWITCHEDSTATE_TYPE_TRIGGER]); break; default: make_menuitem_nop(m, "Invalid type."); break; } make_menuitem_cmd(m, "Set", config_getfull_control_setagent_c(c, action, "SwitchedState", temp)); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_system_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_system_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { int set = -1; if (a) { agenttype_system_details *details = (agenttype_system_details *) a->agentdetails; set = details->commandindex; } //List all options for (int i = 0; i < agenttype_system_touple_count; i++) { make_menuitem_bol(m, agenttype_system_touples[i].name, config_getfull_control_setagent_c(c, action, "System", agenttype_system_touples[i].name), i == set); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_compoundtext_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_compoundtext_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { const char *text = a ? ((agenttype_compoundtext_details *) a->agentdetails)->text : ""; make_menuitem_str( m, "Entry:", config_getfull_control_setagent_s(c, action, "CompoundText"), text ); make_menuitem_nop(m, ""); for (int i = 0; i < agenttype_compoundtext_commoncount; i++) { make_menuitem_bol(m, agenttype_compoundtext_commons[i], config_getfull_control_setagent_c(c, action, "CompoundText", agenttype_compoundtext_commons[i]), 0 == strcmp(text, agenttype_compoundtext_commons[i])); } }
//################################################## //agenttype_mixer_menu_linecontrols //################################################## int agenttype_mixer_menu_linecontrols(Menu *menu, control *c, char *action, char *agentname, int format, UINT device, HMIXER mixer_handle, MIXERLINE &mixer_line) { //Variables MIXERLINECONTROLS mixer_linecontrols; MIXERCONTROL mixer_controls[8]; int elementcount = 0; char text_item[256]; char text_params[256]; const char *type; //Setup the function call with required values UINT count_control = mixer_line.cControls; if (count_control > 8) count_control = 8; //Maximum 8 controls per line mixer_linecontrols.cbStruct = sizeof(MIXERLINECONTROLS); mixer_linecontrols.cControls = count_control; mixer_linecontrols.dwLineID = mixer_line.dwLineID; mixer_linecontrols.pamxctrl = &mixer_controls[0]; mixer_linecontrols.cbmxctrl = sizeof(MIXERCONTROL); //Figure out the type if (format == CONTROL_FORMAT_SCALE) { type = mixer_name_scale; } else if (format == CONTROL_FORMAT_BOOL) { type = mixer_name_bool; } else return 0; //Get the line controls if (MMSYSERR_NOERROR != mixerGetLineControls((HMIXEROBJ)mixer_handle, &mixer_linecontrols, MIXER_GETLINECONTROLSF_ALL)) { return 0; } //For every control for (unsigned int control = 0; control < count_control; control++) { bool passestest = false; switch (format) { case CONTROL_FORMAT_SCALE: passestest = (mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_VOLUME || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_BASS || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_TREBLE || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_FADER); break; case CONTROL_FORMAT_BOOL: passestest = (mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_BOOLEAN || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_BUTTON || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_LOUDNESS || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_MONO || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_MUTE || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_ONOFF || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_STEREOENH); break; } if (passestest) { elementcount++; sprintf(text_item, "- %s", mixer_controls[control].szName); sprintf(text_params, "%d %d %d", device, (int)mixer_line.dwLineID, (int)mixer_controls[control].dwControlID); make_menuitem_cmd(menu, text_item, config_getfull_control_setagent_c(c, action, type, text_params)); } } return elementcount; }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_icon_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_icon_menu_set(std::shared_ptr<bb::MenuConfig> m, control *c, agent *a, wchar_t *action, int controlformat) { make_menuitem_cmd(m, L"Browse...", config_getfull_control_setagent_c(c, action, L"Icon", L"*browse*")); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_icon_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_icon_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { make_menuitem_cmd(m, "Browse...", config_getfull_control_setagent_c(c, action, "Icon", "*browse*")); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_winamppoller_scale_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_winamppoller_scale_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { make_menuitem_cmd(m, "Track Position", config_getfull_control_setagent_c(c, action, "WinampScale", "TrackPosition")); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_winamppoller_bool_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_winamppoller_bool_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { make_menuitem_cmd(m, "Track Is Playing", config_getfull_control_setagent_c(c, action, "WinampBool", "IsPlaying")); }