//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//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*"));
}
Esempio n. 12
0
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//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"));
}