📄 sflrequest.cpp
字号:
/** * Copyright (C) 2004-2005 Savoir-Faire Linux inc. * Author: Jean-Philippe Barrette-LaPierre * <jean-philippe.barrette-lapierre@savoirfairelinux.com> * * 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 <iostream>#include <memory> // for std::auto_ptr#include <sstream>#include <string>#include <qstring.h>#include "globals.h"#include "CallManager.hpp"#include "CallStatus.hpp"#include "CallStatusFactory.hpp"#include "EventAccount.hpp"#include "ConfigurationManager.hpp"#include "PhoneLine.hpp"#include "PhoneLineLocker.hpp"#include "PhoneLineManager.hpp"#include "SFLRequest.hpp"#include "EventAccount.hpp"EventRequest::EventRequest(const QString &sequenceId, const QString &command, const std::list< QString > &args) : Request(sequenceId, command, args){}voidEventRequest::onError(const QString &code, const QString &message){ DebugOutput::instance() << QObject::tr("EventRequest error: (%1) %1\n") .arg(code) .arg(message); PhoneLineManager::instance().errorOnGetEvents(message);}voidEventRequest::onEntry(const QString &code, const QString &message){ std::auto_ptr< Event > e(EventFactory::instance().create(code, Request::parseArgs(message))); e->execute();}voidEventRequest::onSuccess(const QString &code, const QString &message){ DebugOutput::instance() << QObject::tr("EventRequest success: (%1) %1\n") .arg(code) .arg(message); PhoneLineManager::instance().connect();}CallStatusRequest::CallStatusRequest(const QString &sequenceId, const QString &command, const std::list< QString > &args) : Request(sequenceId, command, args){}voidCallStatusRequest::onError(const QString &code, const QString &message){ DebugOutput::instance() << QObject::tr("CallStatusRequest error: (%1) %1\n") .arg(code) .arg(message); PhoneLineManager::instance().errorOnCallStatus(message);}voidCallStatusRequest::onEntry(const QString &code, const QString &message){ std::auto_ptr< Event > e(EventFactory::instance().create(code, Request::parseArgs(message))); e->execute();}voidCallStatusRequest::onSuccess(const QString &code, const QString &message){ DebugOutput::instance() << QObject::tr("CallStatusRequest success: (%1) %1\n") .arg(code) .arg(message); if(code == "206") { std::list< QString > args = Request::parseArgs(message); if(args.size() >= 2) { PhoneLineManager::instance().selectLine(*args.begin(), true); } else { DebugOutput::instance() << QObject::tr("CallStatusRequest Error: cannot get current line.\n"); } } PhoneLineManager::instance().emitReadyToShow();}AccountStatusRequest::AccountStatusRequest(const QString &sequenceId, const QString &command, const std::list< QString > &args) : Request(sequenceId, command, args){}voidAccountStatusRequest::onError(const QString &code, const QString &message){ DebugOutput::instance() << QObject::tr("AccountStatusRequest error: (%1) %1\n") .arg(code) .arg(message); PhoneLineManager::instance().slotHasEnabledAccount(false);}voidAccountStatusRequest::onEntry(const QString &code, const QString &message){ DebugOutput::instance() << "AccountStatusRequest: " << code << " : " << message << "\n"; std::auto_ptr< Event > e(EventFactory::instance().create(code, Request::parseArgs(message))); e->execute();}voidAccountStatusRequest::onSuccess(const QString &code, const QString &message){ DebugOutput::instance() << QObject::tr("AccountStatusRequest success: (%1) %1\n").arg(code).arg(message); PhoneLineManager::instance().slotHasEnabledAccount(true);}PermanentRequest::PermanentRequest(const QString &sequenceId, const QString &command, const std::list< QString > &args) : CallRelatedRequest(sequenceId, command, args){}voidPermanentRequest::onError(Call call, const QString &, const QString &message){ DebugOutput::instance() << QObject::tr("PermanentRequest: Error: %1").arg(toString()); PhoneLine *line = PhoneLineManager::instance().getLine(call); if(line) { PhoneLineLocker guard(line, false); line->error(message); line->setAction(""); } else { DebugOutput::instance() << QObject::tr("We received an error on a call " "that doesn't have a phone line (%1).\n") .arg(call.id()); }}voidPermanentRequest::onEntry(Call call, const QString &, const QString &message){ PhoneLine *line = PhoneLineManager::instance().getLine(call); if(line) { PhoneLineLocker guard(line, false); line->setLineStatus(message); line->setAction(""); } else { DebugOutput::instance() << QObject::tr("We received a status on a call related request " "that doesn't have a phone line (%1).\n") .arg(call.id()); }}voidPermanentRequest::onSuccess(Call call, const QString &, const QString &message){ PhoneLine *line = PhoneLineManager::instance().getLine(call); if(line) { PhoneLineLocker guard(line, false); line->setLineStatus(message); line->setAction(""); } else { DebugOutput::instance() << QObject::tr("We received a success on a call related request " "that doesn't have a phone line (%1).\n") .arg(call.id()); }}TemporaryRequest::TemporaryRequest(const QString &sequenceId, const QString &command, const std::list< QString > &args) : CallRelatedRequest(sequenceId, command, args){}voidTemporaryRequest::onError(Call call, const QString &code, const QString &message){ onSuccess(call, code, message);}voidTemporaryRequest::onEntry(Call call, const QString &code, const QString &message){ onSuccess(call, code, message);}voidTemporaryRequest::onSuccess(Call call, const QString &, const QString &message){ PhoneLine *line = PhoneLineManager::instance().getLine(call); if(line) { PhoneLineLocker guard(line, false); line->setTempAction(message); } else { DebugOutput::instance() << QObject::tr("We received an answer on a temporary call " "related request that doesn't have a phone " "line (%1).\n") .arg(call.id()); }}CallRequest::CallRequest(const QString &sequenceId, const QString &command, const std::list< QString > &args) : AccountRequest(sequenceId, command, args){ std::list< QString >::const_iterator pos = args.begin(); pos++; mCallId = *pos;}voidCallRequest::onError(Account, const QString &, const QString &message){ if(CallManager::instance().exist(mCallId)) { PhoneLine *line = PhoneLineManager::instance().getLine(CallManager::instance().getCall(mCallId)); if(line) { PhoneLineLocker guard(line, false); line->error(message); } else { DebugOutput::instance() << QObject::tr("We received an error on a call " "that doesn't have a phone line (%1).\n") .arg(mCallId); } } else { DebugOutput::instance() << QObject::tr("CallRequest: Trying to retreive an unregistred call (%1)\n").arg(mCallId); }}voidCallRequest::onEntry(Account, const QString &, const QString &message){ if(CallManager::instance().exist(mCallId)) { PhoneLine *line = PhoneLineManager::instance().getLine(CallManager::instance().getCall(mCallId)); if(line) { PhoneLineLocker guard(line, false); line->setLineStatus(message); } else { DebugOutput::instance() << QObject::tr("We received a status on a call related request " "that doesn't have a phone line (%1).\n") .arg(mCallId); } } else { DebugOutput::instance() << QObject::tr("CallRequest: Trying to retreive an unregistred call (%1)\n").arg(mCallId); }}voidCallRequest::onSuccess(Account, const QString &, const QString &message){ if(CallManager::instance().exist(mCallId)) { PhoneLine *line = PhoneLineManager::instance().getLine(CallManager::instance().getCall(mCallId)); if(line) { PhoneLineLocker guard(line, false); line->setLineStatus(message); } else { DebugOutput::instance() << QObject::tr("We received a success on a call related request " "that doesn't have a phone line (%1).\n") .arg(mCallId); } } else { DebugOutput::instance() << QObject::tr("CallRequest: Trying to retreive an unregistred call (%1)\n").arg(mCallId); }}ConfigGetAllRequest::ConfigGetAllRequest(const QString &sequenceId, const QString &command, const std::list< QString > &args) : Request(sequenceId, command, args){}voidConfigGetAllRequest::onError(const QString &code, const QString &message){ DebugOutput::instance() << QObject::tr("ConfigGetAllRequest error: (%1) %1\n") .arg(code) .arg(message);}voidConfigGetAllRequest::onEntry(const QString &, const QString &message){ std::list< QString > args = Request::parseArgs(message); if(args.size() >= 3) { QString section, variable, type, def, val; section = *args.begin(); args.pop_front(); variable = *args.begin(); args.pop_front(); type = *args.begin(); args.pop_front(); if(args.size() >= 1) { val = *args.begin(); args.pop_front(); } if(args.size() >= 1) { def = *args.begin(); args.pop_front(); } ConfigurationManager::instance().add(ConfigEntry(section, variable, type, def, val)); }}voidConfigGetAllRequest::onSuccess(const QString &, const QString &){ ConfigurationManager::instance().complete();}ConfigSaveRequest::ConfigSaveRequest(const QString &sequenceId, const QString &command, const std::list< QString > &args) : Request(sequenceId, command, args){}voidConfigSaveRequest::onError(const QString &code, const QString &message){ DebugOutput::instance() << QObject::tr("ConfigSaveRequest error: (%1) %1\n") .arg(code) .arg(message);}voidConfigSaveRequest::onSuccess(const QString &, const QString &){ ConfigurationManager::instance().finishSave();}StopRequest::StopRequest(const QString &sequenceId, const QString &command, const std::list< QString > &args) : Request(sequenceId, command, args){}voidStopRequest::onError(const QString &code, const QString &message){ DebugOutput::instance() << QObject::tr("StopRequest error: (%1) %1\n") .arg(code) .arg(message);}voidStopRequest::onSuccess(const QString &, const QString &){ PhoneLineManager::instance().finishStop();}SignalizedRequest::SignalizedRequest(const QString &sequenceId, const QString &command, const std::list< QString > &args) : Request(sequenceId, command, args){}voidSignalizedRequest::onError(const QString &code, const QString &message){ emit error(message, code);}voidSignalizedRequest::onEntry(const QString &code, const QString &message){ emit entry(message, code);}voidSignalizedRequest::onSuccess(const QString &code, const QString &message){ emit success(message, code);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -