// // The contents of this file are subject to the Mozilla Public License // Version 1.0 (the "License"); you may not use this file except in // compliance with the License. You may obtain a copy of the License at // http://www.mozilla.org/MPL/ // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code is CPhone, a cross platform voip gui. // // The Initial Developer of the Original Code is Derek Smithies. // // Copyright (C) 2002 Indranet Technologies Ltd, // http://www.indranet-technologies.com // All Rights Reserved. // // Contributor(s): _______________ /* * * $Log: callanswerSub.cxx,v $ * Revision 1.5 2004/04/23 05:09:59 dereksmithies * Fixes so it works with latest openh323 lib, and not lock X display. * * Revision 1.4 2003/08/26 04:48:02 dereksmithies * Fixes to get statistics working right, add icons, add ok,cancel,apply buttons * * Revision 1.3 2003/08/11 01:48:14 dereksmithies * Fix windows compile errors * * Revision 1.2 2003/04/04 04:37:49 dereksmithies * Major upgrade. * Ixj & microtelco support added. Fix threading issues. * * Revision 1.1.1.1 2002/05/12 22:55:05 dereksmithies * Initial release. * * * * */ #include #include #include #include #include #include #include "mainwindowSub.h" #include "callanswerSub.h" #define CUSTOM_EVENT_SETUP (QEvent::User + 1) CallAnswer::CallAnswer(QString remote) : FormCallAnswer( 0, "Call Answer", FALSE, WStyle_NoBorderEx), remoteNode(remote) { move(10, 10); CPhone::Current().SetWindowId(eCallAnswer, winId()); QApplication::postEvent(this, new QCustomEvent(CUSTOM_EVENT_SETUP)); } void CallAnswer::Setup() { TextLabelCallFrom->setText("Call from " + remoteNode); move(600,60); qApp->beep(); //Alert the user. We need a response. startTimer(1000 * 60);//60 second timeout on user response. } /* * Destroys the object and frees any allocated resources */ CallAnswer::~CallAnswer() { } void CallAnswer::AcceptIncomingCall_slot() { if (CPhone::Current().ForgetExists(eCallAnswer, winId())) AdviseParent(CALL_ANSWER_RESPONSE_YES); close (TRUE); } void CallAnswer::RejectIncomingCall_slot() { if (CPhone::Current().ForgetExists(eCallAnswer, winId())) AdviseParent(CALL_ANSWER_RESPONSE_NO); close (TRUE); } void CallAnswer::closeEvent(QCloseEvent *e) { if (CPhone::Current().ForgetExists(eCallAnswer, winId())) AdviseParent(CALL_ANSWER_RESPONSE_TMO); e->accept(); } void CallAnswer::timerEvent(QTimerEvent *) { if (CPhone::Current().ForgetExists(eCallAnswer, winId())) { AdviseParent(CALL_ANSWER_RESPONSE_TMO); CPhone::GetUi().DisplayMessage("Ignoring incoming call from " + remoteNode); } close(TRUE); //TRUE means delete this class. } void CallAnswer::AdviseParent(unsigned action) { QCustomEvent *ce = new QCustomEvent(action); QApplication::postEvent(&CPhone::Current().GetUi(), ce); } void CallAnswer::customEvent( QCustomEvent *e) { if (e->type() == CUSTOM_EVENT_DIE) close(TRUE); if (e->type() == CUSTOM_EVENT_SETUP) Setup(); }