void DefaultNotificationLayer::loadSettings()
{
    QSettings settings(QSettings::defaultFormat(), QSettings::UserScope, "qutim/qutim."+m_profile_name, "profilesettings");
	QString sounds_theme = settings.value("gui/sounds", "").toString();
    settings.beginGroup("notifications");
    m_show_popup = settings.value("popup", true).toBool();
    m_popup_width = settings.value("pwidth", 280).toInt();
    m_popup_height = settings.value("pheight", 110).toInt();
    m_popup_sec = settings.value("ptime", 6).toInt();
    m_popup_position = settings.value("pposition", 3).toInt();
    m_popup_style = settings.value("pstyle", 1).toInt();
    m_show_balloon = settings.value("balloon", false).toBool();
    m_balloon_sec = settings.value("bsecs", 5).toInt();
    m_show_signon = settings.value("signon", true).toBool();
    m_show_signoff = settings.value("signoff", true).toBool();
    m_show_typing = settings.value("typing", true).toBool();
    m_show_change_status = settings.value("statuschange", true).toBool();
    m_show_message = settings.value("message", true).toBool();
    settings.endGroup();
	settings.beginGroup("sounds");
	m_enable_sound = settings.value("enable",true).toBool();
	QFile snd_file(sounds_theme);
	QDomDocument snd_doc("qutimsounds");

	if ( !snd_file.open(QFile::ReadOnly | QFile::Text) || !snd_doc.setContent(&snd_file))
	{
		for(int i=0;i<qutim_sdk_0_2::NotifyCount;i++)
		{
			QString file_name = settings.value("event"+QString::number(i), "-").toString();
			m_sound_path[i] = (file_name.at(0) == '+') ? file_name.mid(1) : "";
		}
	}
	else
	{
		for(int i=0;i<qutim_sdk_0_2::NotifyCount;i++)
			m_sound_path[i] = "-";
		QDomElement rootElement = snd_doc.documentElement();
		QDomNodeList soundsNodeList = rootElement.elementsByTagName("sounds");
		if ( soundsNodeList.count() == 1 )
		{
			QDomElement soundsElement = soundsNodeList.at(0).toElement();
			soundsNodeList = soundsElement.elementsByTagName("sound");
			QDomElement soundElement;
			QString eventName, soundFileName;
			QString snd_dir = QFileInfo(snd_file).absolutePath();

			for (int i = 0; i < soundsNodeList.count(); i++)
			{
				soundElement = soundsNodeList.at(i).toElement();
				eventName = soundElement.attribute("event");
				if (eventName.isEmpty()) continue;
				if (!soundElement.elementsByTagName("file").count()) continue;
				soundFileName = snd_dir+"/"+soundElement.elementsByTagName("file").at(0).toElement().text();
				if (!QFile::exists(soundFileName)) continue;
				m_sound_path[m_sndevents_nums.value(eventName)] = soundFileName;
			}
		}
	}
	snd_file.close();
	Event popup_event(m_events->popup_enabled, 1, &m_show_popup);
	m_plugin_system->sendEvent(popup_event);
	Event sound_event(m_events->sound_enabled, 1, &m_enable_sound);
	m_plugin_system->sendEvent(sound_event);
	settings.endGroup();
}
Esempio n. 2
0
int menubar_event(menubar_t *m,int event,int data)
{
	int i,processed;
#ifndef PS2
	static int msx,msy;
#endif

	load_event(&m->load,event,data);
	video_event(&m->video,event,data);
	input_event(&m->input,event,data);
	sound_event(&m->sound,event,data);
	gui_input_event(&m->guiinput,event,data);
	options_event(&m->options,event,data);
	paths_event(&m->paths,event,data);
	rom_info_event(&m->rom_info,event,data);
	tracer_event(&m->tracer,event,data);
	memory_viewer_event(&m->memory_viewer,event,data);
	about_event(&m->about,event,data);
	switch(event) {
		//mouse button pressed
		case E_MOUSEDOWN:
		case E_MOUSEDOWN2:
			if(mouseinrange(&m->info,data) == 0)
				return(0);
			//see if the click was on a menu
			for(processed=0,i=0;i<MAX_MENUS && m->menus[i].info.w;i++) {
				//send event to the menu and see if it processes it
				if(menu_event(&m->menus[i],event,data) > 0)
					processed = 1;
			}
			for(i=0;i<3;i++) {
				if(button_event(&m->buttons[i],event,data) > 0)
					processed = 1;
			}
			//if event was not processed by a menu or button, then move the window
			if(processed == 0) {
				m->ismoving = 1;
#ifndef PS2
				video_getwindowpos(&msx,&msy);
#endif
			}
			break;
		case E_MOUSEUP:
			m->ismoving = 0;
			posx = newposx;
			posy = newposy;
			//send event off to children
			for(i=0;i<MAX_MENUS && m->menus[i].info.w;i++)
				menu_event(&m->menus[i],event,data);
#ifndef PS2
			for(i=0;i<3;i++)
				button_event(&m->buttons[i],event,data);
#endif
			break;
		case E_MOUSEMOVE:
#ifndef PS2
			if(m->ismoving && config.windowed) {
				int x,y;
				mousemove_u mm;

				mm.data = data;
				video_getwindowpos(&x,&y);
//					break;
				log_message("window moving: ms x = %d, y = %d\n",msx,msy);
				log_message("window moving: window x = %d, y = %d\n",x,y);
				log_message("window moving: mouse x = %d, y = %d\n",mm.info.x,mm.info.y);
				log_message("window moving: mouse xrel = %d, yrel = %d\n",mm.info.xrel,mm.info.yrel);
				x += mm.info.xrel;
				y += mm.info.yrel;
//				SDL_GetRelativeMouseState(&newposx,&newposy);
//				newposx += posx;
//				newposy += posy;
//				newposx = mm.info.x * 3;
//				newposy = mm.info.y * 3;
//				if(newposx == posx || newposy == posy)
//					break;
				if(x == msx && y == msy)
				video_setwindowpos(x,y);
				break;
			}
#endif
			//send event off to children
			for(i=0;i<MAX_MENUS && m->menus[i].info.w;i++)
				menu_event(&m->menus[i],event,data);
			break;
	}
	return(0);
}