⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tonelist.cpp

📁 sip 开源代码 源于novell sip 开源代码 源于novell
💻 CPP
字号:
/** *  Copyright (C) 2005 Savoir-Faire Linux inc. *  Author: Yan Morin <yan.morin@savoirfairelinux.com> * *  Inspired by tonegenerator of  *   Laurielle Lea <laurielle.lea@savoirfairelinux.com> (2004) *  *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include "tonelist.h"ToneList::ToneList() {  _nbTone = TONE_NBTONE; // could be dynamic  _nbCountry = TONE_NBCOUNTRY; // could be dynamic  _defaultCountryId = ZID_NORTH_AMERICA;  initToneDefinition();}ToneList::~ToneList() {}void ToneList::initToneDefinition() {  _toneZone[ZID_NORTH_AMERICA][Tone::TONE_DIALTONE] = "350+440";  _toneZone[ZID_NORTH_AMERICA][Tone::TONE_BUSY] = "480+620/500,0/500";  _toneZone[ZID_NORTH_AMERICA][Tone::TONE_RINGTONE] = "440+480/2000,0/4000";  _toneZone[ZID_NORTH_AMERICA][Tone::TONE_CONGESTION] = "480+620/250,0/250";   _toneZone[ZID_FRANCE][Tone::TONE_DIALTONE] = "440";  _toneZone[ZID_FRANCE][Tone::TONE_BUSY] = "440/500,0/500";  _toneZone[ZID_FRANCE][Tone::TONE_RINGTONE] = "440/1500,0/3500";  _toneZone[ZID_FRANCE][Tone::TONE_CONGESTION] = "440/250,0/250";  _toneZone[ZID_AUSTRALIA][Tone::TONE_DIALTONE] = "413+438";  _toneZone[ZID_AUSTRALIA][Tone::TONE_BUSY] = "425/375,0/375";  _toneZone[ZID_AUSTRALIA][Tone::TONE_RINGTONE] =     "413+438/400,0/200,413+438/400,0/2000";  _toneZone[ZID_AUSTRALIA][Tone::TONE_CONGESTION] = "425/375,0/375,420/375,8/375";   _toneZone[ZID_UNITED_KINGDOM][Tone::TONE_DIALTONE] = "350+440";  _toneZone[ZID_UNITED_KINGDOM][Tone::TONE_BUSY] = "400/375,0/375";  _toneZone[ZID_UNITED_KINGDOM][Tone::TONE_RINGTONE] =     "400+450/400,0/200,400+450/400,0/2000";  _toneZone[ZID_UNITED_KINGDOM][Tone::TONE_CONGESTION] =     "400/400,0/350,400/225,0/525";  _toneZone[ZID_SPAIN][Tone::TONE_DIALTONE] = "425";  _toneZone[ZID_SPAIN][Tone::TONE_BUSY] = "425/200,0/200";  _toneZone[ZID_SPAIN][Tone::TONE_RINGTONE] = "425/1500,0/3000";  _toneZone[ZID_SPAIN][Tone::TONE_CONGESTION] =     "425/200,0/200,425/200,0/200,425/200,0/600";  _toneZone[ZID_ITALY][Tone::TONE_DIALTONE] = "425/600,0/1000,425/200,0/200";  _toneZone[ZID_ITALY][Tone::TONE_BUSY] = "425/500,0/500";  _toneZone[ZID_ITALY][Tone::TONE_RINGTONE] = "425/1000,0/4000";  _toneZone[ZID_ITALY][Tone::TONE_CONGESTION] = "425/200,0/200";  _toneZone[ZID_JAPAN][Tone::TONE_DIALTONE] = "400";  _toneZone[ZID_JAPAN][Tone::TONE_BUSY] = "400/500,0/500";  _toneZone[ZID_JAPAN][Tone::TONE_RINGTONE] = "400+15/1000,0/2000";  _toneZone[ZID_JAPAN][Tone::TONE_CONGESTION] = "400/500,0/500";}std::stringToneList::getDefinition(COUNTRYID countryId, Tone::TONEID toneId) {  if (toneId == Tone::TONE_NULL) { return ""; }  return _toneZone[countryId][toneId];}ToneList::COUNTRYID ToneList::getCountryId(const std::string& countryName) {  if (countryName.compare("North America") == 0) {    return ZID_NORTH_AMERICA;  } else if (countryName.compare("France") == 0) {    return ZID_FRANCE;  } else if (countryName.compare("Australia") == 0) {    return ZID_AUSTRALIA;  } else if (countryName.compare("United Kingdom") == 0) {    return ZID_UNITED_KINGDOM;  } else if (countryName.compare("Spain") == 0) {    return ZID_SPAIN;  } else if (countryName.compare("Italy") == 0) {    return ZID_ITALY;  } else if (countryName.compare("Japan") == 0) {    return ZID_JAPAN;  } else {    return _defaultCountryId; // default, we don't want segmentation fault  }}TelephoneTone::TelephoneTone(const std::string& countryName, unsigned int sampleRate) {  ToneList::COUNTRYID countryId = _toneList.getCountryId(countryName);  _tone[Tone::TONE_DIALTONE] = new Tone(_toneList.getDefinition(countryId, Tone::TONE_DIALTONE), sampleRate);  _tone[Tone::TONE_BUSY] = new Tone(_toneList.getDefinition(countryId, Tone::TONE_BUSY), sampleRate);  _tone[Tone::TONE_RINGTONE] = new Tone(_toneList.getDefinition(countryId, Tone::TONE_RINGTONE), sampleRate);  _tone[Tone::TONE_CONGESTION] = new Tone(_toneList.getDefinition(countryId, Tone::TONE_CONGESTION), sampleRate);  _currentTone = Tone::TONE_NULL; }TelephoneTone::~TelephoneTone() {  for (int i=0; i<_toneList.getNbTone(); i++) {    delete _tone[i]; _tone[i] = 0;  }}voidTelephoneTone::setCurrentTone(Tone::TONEID toneId){  if ( toneId != Tone::TONE_NULL && _currentTone != toneId ) {    _tone[toneId]->reset();  }  _currentTone = toneId;}Tone*TelephoneTone::getCurrentTone(){  if ( _currentTone == Tone::TONE_NULL ) {    return 0;  }  return _tone[_currentTone];}boolTelephoneTone::shouldPlay(){  return (( _currentTone != Tone::TONE_NULL ) ? true : false );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -