added the newgui option for configure

This commit is contained in:
jpbl
2005-09-16 20:15:43 +00:00
parent e7a1ac34ba
commit 883814367f
15 changed files with 254 additions and 171 deletions

View File

@ -111,6 +111,22 @@ maintener="no"
AM_CONDITIONAL(MAINTENER_CODE, test x$maintener = xyes)
AC_MSG_CHECKING([whether to enable the new gui])
AC_ARG_ENABLE(newgui,
[ --enable-newgui Enable new gui code [default=no]],
[
AC_MSG_RESULT(yes)
newgui="yes"
],
[
AC_MSG_RESULT(no)
newgui="no"
]
)
AM_CONDITIONAL(NEWGUI_CODE, test x$newgui = xyes)
if test $ac_cv_header_portaudio_h = no; then
AC_MSG_ERROR([*** missing portaudio.h. You need a working PortAudio installation. See http://www.portaudio.com])
@ -179,6 +195,7 @@ src/audio/pacpp/source/Makefile \
src/audio/pacpp/source/portaudiocpp/Makefile \
src/gui/Makefile \
src/gui/qt/Makefile \
src/gui/official/Makefile \
src/gui/server/Makefile \
src/zeroconf/Makefile \
utilspp/Makefile \

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<XMI xmlns:UML="http://schema.omg.org/spec/UML/1.3" verified="false" timestamp="2005-09-15T15:11:28" xmi.version="1.2" >
<XMI xmlns:UML="http://schema.omg.org/spec/UML/1.3" verified="false" timestamp="2005-09-16T14:07:50" xmi.version="1.2" >
<XMI.header>
<XMI.documentation>
<XMI.exporter>umbrello uml modeller http://uml.sf.net</XMI.exporter>
@ -28,56 +28,56 @@
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="3437" isRoot="false" isAbstract="false" name="disconnect" />
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2834" isRoot="false" isAbstract="false" name="getAccount" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16250" type="2521" />
<UML:Parameter kind="return" xmi.id="16350" type="2521" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="2835" isRoot="false" value="" type="2466" isAbstract="false" name="name" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2556" isRoot="false" isAbstract="false" name="version" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16251" type="2466" />
<UML:Parameter kind="return" xmi.id="16351" type="2466" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2611" isRoot="false" isAbstract="false" name="listConfig" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16252" type="2466" />
<UML:Parameter kind="return" xmi.id="16352" type="2466" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2655" isRoot="false" isAbstract="false" name="setOption" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16253" type="2466" />
<UML:Parameter kind="return" xmi.id="16353" type="2466" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="2656" isRoot="false" value="" type="2466" isAbstract="false" name="name" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="2660" isRoot="false" value="" type="2466" isAbstract="false" name="value" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2670" isRoot="false" isAbstract="false" name="getOption" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16254" type="2466" />
<UML:Parameter kind="return" xmi.id="16354" type="2466" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="2671" isRoot="false" value="" type="2466" isAbstract="false" name="name" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2687" isRoot="false" isAbstract="false" name="saveConfig" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16255" type="2466" />
<UML:Parameter kind="return" xmi.id="16355" type="2466" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2700" isRoot="false" isAbstract="false" name="listAudioDevices" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16256" type="2466" />
<UML:Parameter kind="return" xmi.id="16356" type="2466" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2716" isRoot="false" isAbstract="false" name="listAudioCodecs" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16257" type="2466" />
<UML:Parameter kind="return" xmi.id="16357" type="2466" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2826" isRoot="false" isAbstract="false" name="listAccounts" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16258" type="2466" />
<UML:Parameter kind="return" xmi.id="16358" type="2466" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="15090" isRoot="false" isAbstract="false" name="handleevents" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16259" type="2466" />
<UML:Parameter kind="return" xmi.id="16359" type="2466" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
@ -119,7 +119,7 @@
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2524" isRoot="false" isAbstract="false" name="call" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16260" type="2468" />
<UML:Parameter kind="return" xmi.id="16360" type="2468" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="10314" isRoot="false" value="" type="2466" isAbstract="false" name="to" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
@ -150,21 +150,21 @@
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="3156" isRoot="false" isAbstract="true" name="onSuccess" >
<UML:BehavioralFeature.parameter>
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="3186" isRoot="false" value="" type="2468" isAbstract="false" name="call" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="3166" isRoot="false" value="" type="2458" isAbstract="false" name="code" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="3166" isRoot="false" value="" type="2466" isAbstract="false" name="code" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="3176" isRoot="false" value="" type="2466" isAbstract="false" name="message" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="12898" isRoot="false" isAbstract="true" name="onEntry" >
<UML:BehavioralFeature.parameter>
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="12899" isRoot="false" value="" type="2468" isAbstract="false" name="call" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="12920" isRoot="false" value="" type="2458" isAbstract="false" name="code" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="12920" isRoot="false" value="" type="2466" isAbstract="false" name="code" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="12941" isRoot="false" value="" type="2466" isAbstract="false" name="message" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="3083" isRoot="false" isAbstract="true" name="onError" >
<UML:BehavioralFeature.parameter>
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="3711" isRoot="false" value="" type="2468" isAbstract="false" name="call" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="3721" isRoot="false" value="" type="2458" isAbstract="false" name="code" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="3721" isRoot="false" value="" type="2466" isAbstract="false" name="code" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="3731" isRoot="false" value="" type="2466" isAbstract="false" name="message" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
@ -174,7 +174,7 @@
<UML:Classifier.feature>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="4219" isRoot="false" isAbstract="false" name="createHoldTask" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16261" type="3814" />
<UML:Parameter kind="return" xmi.id="16361" type="3814" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="7283" isRoot="false" isAbstract="false" name="addTask" >
@ -189,7 +189,7 @@
<UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="3927" isRoot="false" initialValue="" type="3600" isAbstract="false" name="mFactory" />
<UML:Operation isSpecification="false" isLeaf="false" visibility="private" xmi.id="4600" isRoot="false" isAbstract="false" name="getTaskFactory" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16262" type="3600" />
<UML:Parameter kind="return" xmi.id="16362" type="3600" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
@ -297,21 +297,21 @@
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="6118" isRoot="false" isAbstract="false" name="onError" >
<UML:BehavioralFeature.parameter>
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="6119" isRoot="false" value="" type="2521" isAbstract="false" name="account" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="6131" isRoot="false" value="" type="2458" isAbstract="false" name="code" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="6131" isRoot="false" value="" type="2466" isAbstract="false" name="code" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="6143" isRoot="false" value="" type="2466" isAbstract="false" name="message" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="6331" isRoot="false" isAbstract="false" name="onSuccess" >
<UML:BehavioralFeature.parameter>
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="6332" isRoot="false" value="" type="2521" isAbstract="false" name="account" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="6355" isRoot="false" value="" type="2458" isAbstract="false" name="code" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="6355" isRoot="false" value="" type="2466" isAbstract="false" name="code" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="6367" isRoot="false" value="" type="2466" isAbstract="false" name="message" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="13506" isRoot="false" isAbstract="false" name="onEntry" >
<UML:BehavioralFeature.parameter>
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="13507" isRoot="false" value="" type="2521" isAbstract="false" name="account" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="13528" isRoot="false" value="" type="2458" isAbstract="false" name="code" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="13528" isRoot="false" value="" type="2466" isAbstract="false" name="code" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="13549" isRoot="false" value="" type="2466" isAbstract="false" name="message" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
@ -371,7 +371,7 @@
<UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="6951" isRoot="false" initialValue="" type="2470" isAbstract="false" name="mapSeqToCommand&lt; string, Command>" />
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="6799" isRoot="false" isAbstract="false" name="sendCallCommand" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16263" type="2466" />
<UML:Parameter kind="return" xmi.id="16363" type="2466" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="8075" isRoot="false" value="" type="2466" isAbstract="false" name="sessionId" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="8118" isRoot="false" value="" type="2466" isAbstract="false" name="callId" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="6800" isRoot="false" value="" type="2466" isAbstract="false" name="command" />
@ -380,7 +380,7 @@
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="8161" isRoot="false" isAbstract="false" name="sendAccountCommand" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16264" type="2466" />
<UML:Parameter kind="return" xmi.id="16364" type="2466" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="8176" isRoot="false" value="" type="2466" isAbstract="false" name="sessionId" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="8191" isRoot="false" value="" type="2466" isAbstract="false" name="accountId" />
<UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="8206" isRoot="false" value="" type="2466" isAbstract="false" name="command" />
@ -401,17 +401,17 @@
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="private" xmi.id="8297" isRoot="false" isAbstract="false" name="createSessionId" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16265" type="2466" />
<UML:Parameter kind="return" xmi.id="16365" type="2466" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="private" xmi.id="8386" isRoot="false" isAbstract="false" name="createCallId" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16266" type="2466" />
<UML:Parameter kind="return" xmi.id="16366" type="2466" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="private" xmi.id="8406" isRoot="false" isAbstract="false" name="createRequestId" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16267" type="2466" />
<UML:Parameter kind="return" xmi.id="16367" type="2466" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
@ -423,7 +423,7 @@
<UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="7050" isRoot="false" initialValue="" type="2466" isAbstract="false" name="listOfarguments" />
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="6926" isRoot="false" isAbstract="false" name="toString" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16268" type="2466" />
<UML:Parameter kind="return" xmi.id="16368" type="2466" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
@ -469,7 +469,7 @@
</UML:Operation>
<UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="8893" isRoot="false" isAbstract="false" name="toString" >
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" xmi.id="16269" type="2466" />
<UML:Parameter kind="return" xmi.id="16369" type="2466" />
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
@ -571,7 +571,7 @@
</UML:Model>
</XMI.content>
<XMI.extensions xmi.extender="umbrello" >
<docsettings viewid="2457" documentation="" uniqueid="16269" />
<docsettings viewid="2457" documentation="" uniqueid="16369" />
<diagrams>
<diagram snapgrid="0" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="0" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="2460" snapy="10" showatts="1" xmi.id="2457" documentation="" type="402" showops="1" showpackage="0" name="class diagram" localid="900000" showstereotype="0" showscope="1" snapcsgrid="0" font="Sans Serif,10,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="1031" >
<widgets>
@ -579,7 +579,7 @@
<classwidget usesdiagramfillcolour="0" width="357" showattsigs="601" usesdiagramusefillcolour="0" x="1757" linecolour="#ff0000" y="535" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="180" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="2468" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
<classwidget usesdiagramfillcolour="0" width="263" showattsigs="601" usesdiagramusefillcolour="0" x="1804" linecolour="#ff0000" y="359" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="105" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="2521" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
<classwidget usesdiagramfillcolour="0" width="162" showattsigs="601" usesdiagramusefillcolour="0" x="2211" linecolour="#ff0000" y="172" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="82" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="2585" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
<classwidget usesdiagramfillcolour="0" width="336" showattsigs="601" usesdiagramusefillcolour="0" x="248" linecolour="#ff0000" y="200" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="90" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="2999" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,1,0,0,0,0" />
<classwidget usesdiagramfillcolour="0" width="356" showattsigs="601" usesdiagramusefillcolour="0" x="248" linecolour="#ff0000" y="200" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="90" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="2999" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,1,0,0,0,0" />
<classwidget usesdiagramfillcolour="1" width="226" showattsigs="601" usesdiagramusefillcolour="1" x="2230" linecolour="none" y="471" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="52" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="3600" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
<classwidget usesdiagramfillcolour="0" width="218" showattsigs="601" usesdiagramusefillcolour="0" x="2234" linecolour="#ff0000" y="376" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="45" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="3611" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
<classwidget usesdiagramfillcolour="1" width="90" showattsigs="601" usesdiagramusefillcolour="1" x="91" linecolour="none" y="249" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="29" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="3814" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
@ -593,7 +593,7 @@
<classwidget usesdiagramfillcolour="1" width="170" showattsigs="601" usesdiagramusefillcolour="1" x="724" linecolour="none" y="765" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="29" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="5465" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
<classwidget usesdiagramfillcolour="1" width="167" showattsigs="601" usesdiagramusefillcolour="1" x="1193" linecolour="none" y="783" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="29" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="5477" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
<classwidget usesdiagramfillcolour="1" width="142" showattsigs="601" usesdiagramusefillcolour="1" x="1275" linecolour="none" y="620" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="29" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="5489" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
<classwidget usesdiagramfillcolour="1" width="397" showattsigs="601" usesdiagramusefillcolour="1" x="158" linecolour="none" y="638" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="75" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="5667" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
<classwidget usesdiagramfillcolour="0" width="417" showattsigs="601" usesdiagramusefillcolour="0" x="158" linecolour="#ff0000" y="638" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="75" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="5667" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
<classwidget usesdiagramfillcolour="1" width="114" showattsigs="601" usesdiagramusefillcolour="1" x="450" linecolour="none" y="767" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="29" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="5679" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
<classwidget usesdiagramfillcolour="1" width="128" showattsigs="601" usesdiagramusefillcolour="1" x="147" linecolour="none" y="764" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="29" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="5691" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
<classwidget usesdiagramfillcolour="0" width="370" showattsigs="601" usesdiagramusefillcolour="0" x="858" linecolour="#ff0000" y="650" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="67" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="5921" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" />
@ -636,49 +636,49 @@
<assocwidget totalcounta="2" indexa="1" totalcountb="5" indexb="2" widgetbid="2999" widgetaid="4892" xmi.id="4904" >
<linepath>
<startpoint startx="342" starty="123" />
<endpoint endx="382" endy="200" />
<endpoint endx="390" endy="200" />
</linepath>
</assocwidget>
<assocwidget totalcounta="2" indexa="1" totalcountb="5" indexb="3" widgetbid="2999" widgetaid="4880" xmi.id="4929" >
<linepath>
<startpoint startx="504" starty="126" />
<endpoint endx="449" endy="200" />
<endpoint endx="461" endy="200" />
</linepath>
</assocwidget>
<assocwidget totalcounta="2" indexa="1" totalcountb="5" indexb="4" widgetbid="2999" widgetaid="4868" xmi.id="4954" >
<linepath>
<startpoint startx="649" starty="163" />
<endpoint endx="516" endy="200" />
<endpoint endx="532" endy="200" />
</linepath>
</assocwidget>
<assocwidget totalcounta="2" indexa="1" totalcountb="3" indexb="2" widgetbid="2999" widgetaid="4856" xmi.id="4979" >
<linepath>
<startpoint startx="666" starty="277" />
<endpoint endx="584" endy="260" />
<endpoint endx="604" endy="260" />
</linepath>
</assocwidget>
<assocwidget totalcounta="2" indexa="1" totalcountb="3" indexb="1" widgetbid="2999" widgetaid="4844" xmi.id="5004" >
<linepath>
<startpoint startx="664" starty="222" />
<endpoint endx="584" endy="230" />
<endpoint endx="604" endy="230" />
</linepath>
</assocwidget>
<assocwidget totalcounta="2" indexa="1" totalcountb="5" indexb="1" widgetbid="2999" widgetaid="4821" xmi.id="5029" >
<linepath>
<startpoint startx="144" starty="129" />
<endpoint endx="315" endy="200" />
<endpoint endx="319" endy="200" />
</linepath>
</assocwidget>
<assocwidget totalcounta="2" indexa="1" totalcountb="4" indexb="3" widgetbid="5667" widgetaid="5679" xmi.id="5794" >
<linepath>
<startpoint startx="507" starty="767" />
<endpoint endx="455" endy="713" />
<endpoint endx="470" endy="713" />
</linepath>
</assocwidget>
<assocwidget totalcounta="2" indexa="1" totalcountb="4" indexb="1" widgetbid="5667" widgetaid="5691" xmi.id="5819" >
<linepath>
<startpoint startx="211" starty="764" />
<endpoint endx="257" endy="713" />
<endpoint endx="262" endy="713" />
</linepath>
</assocwidget>
<assocwidget totalcounta="2" indexa="1" totalcountb="3" indexb="2" widgetbid="5921" widgetaid="6011" xmi.id="6067" >
@ -695,13 +695,13 @@
</assocwidget>
<assocwidget totalcounta="2" indexa="1" totalcountb="3" indexb="1" widgetbid="8547" widgetaid="2999" xmi.id="9023" >
<linepath>
<startpoint startx="416" starty="290" />
<startpoint startx="426" starty="290" />
<endpoint endx="548" endy="429" />
</linepath>
</assocwidget>
<assocwidget totalcounta="2" indexa="1" totalcountb="4" indexb="1" widgetbid="8547" widgetaid="5667" xmi.id="9684" >
<linepath>
<startpoint startx="356" starty="638" />
<startpoint startx="366" starty="638" />
<endpoint endx="510" endy="564" />
</linepath>
</assocwidget>
@ -744,7 +744,7 @@
<assocwidget totalcounta="2" indexa="1" totalcountb="4" indexb="2" widgetbid="5667" widgetaid="14744" xmi.id="14764" >
<linepath>
<startpoint startx="359" starty="793" />
<endpoint endx="356" endy="713" />
<endpoint endx="366" endy="713" />
</linepath>
</assocwidget>
<assocwidget totalcounta="2" indexa="1" totalcountb="3" indexb="2" widgetbid="8547" widgetaid="15208" xmi.id="15329" >
@ -1482,7 +1482,7 @@
</hierarchicalcodeblock>
</textblocks>
<header>
<codecomment tag="" text="/************************************************************************&amp;#010; singleanswer.cpp - Copyright jpbarrette&amp;#010;&amp;#010;Here you can write a license for your code, some comments or any other&amp;#010;information you want to have in your generated code. To to this simply&amp;#010;configure the &quot;headings&quot; directory in uml to point to a directory&amp;#010;where you have your heading files.&amp;#010;&amp;#010;or you can just replace the contents of this file with your own.&amp;#010;If you want to do this, this file is located at&amp;#010;&amp;#010;/usr/share/apps/umbrello/headings/heading.cpp&amp;#010;&amp;#010;-->Code Generators searches for heading files based on the file extension&amp;#010; i.e. it will look for a file name ending in &quot;.h&quot; to include in C++ header&amp;#010; files, and for a file name ending in &quot;.java&quot; to include in all generated&amp;#010; java code.&amp;#010; If you name the file &quot;heading.&lt;extension>&quot;, Code Generator will always&amp;#010; choose this file even if there are other files with the same extension in the&amp;#010; directory. If you name the file something else, it must be the only one with that&amp;#010; extension in the directory to guarantee that Code Generator will choose it.&amp;#010;&amp;#010;you can use variables in your heading files which are replaced at generation&amp;#010;time. possible variables are : author, date, time, filename and filepath.&amp;#010;just write %variable_name%&amp;#010;&amp;#010;This file was generated on Thu Sep 15 2005 at 14:16:23&amp;#010;The original location of this file is &amp;#010;**************************************************************************/&amp;#010;" />
<codecomment tag="" text="/************************************************************************&amp;#010; callrelatedrequest.cpp - Copyright jpbarrette&amp;#010;&amp;#010;Here you can write a license for your code, some comments or any other&amp;#010;information you want to have in your generated code. To to this simply&amp;#010;configure the &quot;headings&quot; directory in uml to point to a directory&amp;#010;where you have your heading files.&amp;#010;&amp;#010;or you can just replace the contents of this file with your own.&amp;#010;If you want to do this, this file is located at&amp;#010;&amp;#010;/usr/share/apps/umbrello/headings/heading.cpp&amp;#010;&amp;#010;-->Code Generators searches for heading files based on the file extension&amp;#010; i.e. it will look for a file name ending in &quot;.h&quot; to include in C++ header&amp;#010; files, and for a file name ending in &quot;.java&quot; to include in all generated&amp;#010; java code.&amp;#010; If you name the file &quot;heading.&lt;extension>&quot;, Code Generator will always&amp;#010; choose this file even if there are other files with the same extension in the&amp;#010; directory. If you name the file something else, it must be the only one with that&amp;#010; extension in the directory to guarantee that Code Generator will choose it.&amp;#010;&amp;#010;you can use variables in your heading files which are replaced at generation&amp;#010;time. possible variables are : author, date, time, filename and filepath.&amp;#010;just write %variable_name%&amp;#010;&amp;#010;This file was generated on Fri Sep 16 2005 at 10:15:20&amp;#010;The original location of this file is &amp;#010;**************************************************************************/&amp;#010;" />
</header>
<classfields>
<codeclassfield parent_id="13323" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
@ -2139,7 +2139,7 @@
</hierarchicalcodeblock>
</textblocks>
<header>
<codecomment tag="" text="/************************************************************************&amp;#010; accounttask.cpp - Copyright jpbarrette&amp;#010;&amp;#010;Here you can write a license for your code, some comments or any other&amp;#010;information you want to have in your generated code. To to this simply&amp;#010;configure the &quot;headings&quot; directory in uml to point to a directory&amp;#010;where you have your heading files.&amp;#010;&amp;#010;or you can just replace the contents of this file with your own.&amp;#010;If you want to do this, this file is located at&amp;#010;&amp;#010;/usr/share/apps/umbrello/headings/heading.cpp&amp;#010;&amp;#010;-->Code Generators searches for heading files based on the file extension&amp;#010; i.e. it will look for a file name ending in &quot;.h&quot; to include in C++ header&amp;#010; files, and for a file name ending in &quot;.java&quot; to include in all generated&amp;#010; java code.&amp;#010; If you name the file &quot;heading.&lt;extension>&quot;, Code Generator will always&amp;#010; choose this file even if there are other files with the same extension in the&amp;#010; directory. If you name the file something else, it must be the only one with that&amp;#010; extension in the directory to guarantee that Code Generator will choose it.&amp;#010;&amp;#010;you can use variables in your heading files which are replaced at generation&amp;#010;time. possible variables are : author, date, time, filename and filepath.&amp;#010;just write %variable_name%&amp;#010;&amp;#010;This file was generated on Thu Sep 15 2005 at 14:16:23&amp;#010;The original location of this file is &amp;#010;**************************************************************************/&amp;#010;" />
<codecomment tag="" text="/************************************************************************&amp;#010; accountrelatedrequest.cpp - Copyright jpbarrette&amp;#010;&amp;#010;Here you can write a license for your code, some comments or any other&amp;#010;information you want to have in your generated code. To to this simply&amp;#010;configure the &quot;headings&quot; directory in uml to point to a directory&amp;#010;where you have your heading files.&amp;#010;&amp;#010;or you can just replace the contents of this file with your own.&amp;#010;If you want to do this, this file is located at&amp;#010;&amp;#010;/usr/share/apps/umbrello/headings/heading.cpp&amp;#010;&amp;#010;-->Code Generators searches for heading files based on the file extension&amp;#010; i.e. it will look for a file name ending in &quot;.h&quot; to include in C++ header&amp;#010; files, and for a file name ending in &quot;.java&quot; to include in all generated&amp;#010; java code.&amp;#010; If you name the file &quot;heading.&lt;extension>&quot;, Code Generator will always&amp;#010; choose this file even if there are other files with the same extension in the&amp;#010; directory. If you name the file something else, it must be the only one with that&amp;#010; extension in the directory to guarantee that Code Generator will choose it.&amp;#010;&amp;#010;you can use variables in your heading files which are replaced at generation&amp;#010;time. possible variables are : author, date, time, filename and filepath.&amp;#010;just write %variable_name%&amp;#010;&amp;#010;This file was generated on Fri Sep 16 2005 at 10:15:15&amp;#010;The original location of this file is &amp;#010;**************************************************************************/&amp;#010;" />
</header>
<classfields>
<codeclassfield parent_id="13364" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
@ -2372,7 +2372,7 @@
</hierarchicalcodeblock>
</textblocks>
<header>
<codecomment tag="" text="/************************************************************************&amp;#010; requester.cpp - Copyright jpbarrette&amp;#010;&amp;#010;Here you can write a license for your code, some comments or any other&amp;#010;information you want to have in your generated code. To to this simply&amp;#010;configure the &quot;headings&quot; directory in uml to point to a directory&amp;#010;where you have your heading files.&amp;#010;&amp;#010;or you can just replace the contents of this file with your own.&amp;#010;If you want to do this, this file is located at&amp;#010;&amp;#010;/usr/share/apps/umbrello/headings/heading.cpp&amp;#010;&amp;#010;-->Code Generators searches for heading files based on the file extension&amp;#010; i.e. it will look for a file name ending in &quot;.h&quot; to include in C++ header&amp;#010; files, and for a file name ending in &quot;.java&quot; to include in all generated&amp;#010; java code.&amp;#010; If you name the file &quot;heading.&lt;extension>&quot;, Code Generator will always&amp;#010; choose this file even if there are other files with the same extension in the&amp;#010; directory. If you name the file something else, it must be the only one with that&amp;#010; extension in the directory to guarantee that Code Generator will choose it.&amp;#010;&amp;#010;you can use variables in your heading files which are replaced at generation&amp;#010;time. possible variables are : author, date, time, filename and filepath.&amp;#010;just write %variable_name%&amp;#010;&amp;#010;This file was generated on Thu Sep 15 2005 at 15:08:13&amp;#010;The original location of this file is &amp;#010;**************************************************************************/&amp;#010;" />
<codecomment tag="" text="/************************************************************************&amp;#010; requester.cpp - Copyright jpbarrette&amp;#010;&amp;#010;Here you can write a license for your code, some comments or any other&amp;#010;information you want to have in your generated code. To to this simply&amp;#010;configure the &quot;headings&quot; directory in uml to point to a directory&amp;#010;where you have your heading files.&amp;#010;&amp;#010;or you can just replace the contents of this file with your own.&amp;#010;If you want to do this, this file is located at&amp;#010;&amp;#010;/usr/share/apps/umbrello/headings/heading.cpp&amp;#010;&amp;#010;-->Code Generators searches for heading files based on the file extension&amp;#010; i.e. it will look for a file name ending in &quot;.h&quot; to include in C++ header&amp;#010; files, and for a file name ending in &quot;.java&quot; to include in all generated&amp;#010; java code.&amp;#010; If you name the file &quot;heading.&lt;extension>&quot;, Code Generator will always&amp;#010; choose this file even if there are other files with the same extension in the&amp;#010; directory. If you name the file something else, it must be the only one with that&amp;#010; extension in the directory to guarantee that Code Generator will choose it.&amp;#010;&amp;#010;you can use variables in your heading files which are replaced at generation&amp;#010;time. possible variables are : author, date, time, filename and filepath.&amp;#010;just write %variable_name%&amp;#010;&amp;#010;This file was generated on Fri Sep 16 2005 at 09:52:51&amp;#010;The original location of this file is &amp;#010;**************************************************************************/&amp;#010;" />
</header>
<classfields>
<codeclassfield parent_id="6951" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
@ -4517,7 +4517,7 @@
</codeblockwithcomments>
</textblocks>
<header>
<codecomment tag="" text="/************************************************************************&amp;#010; singleanswer.h - Copyright jpbarrette&amp;#010;&amp;#010;Here you can write a license for your code, some comments or any other&amp;#010;information you want to have in your generated code. To to this simply&amp;#010;configure the &quot;headings&quot; directory in uml to point to a directory&amp;#010;where you have your heading files.&amp;#010;&amp;#010;or you can just replace the contents of this file with your own.&amp;#010;If you want to do this, this file is located at&amp;#010;&amp;#010;/usr/share/apps/umbrello/headings/heading.h&amp;#010;&amp;#010;-->Code Generators searches for heading files based on the file extension&amp;#010; i.e. it will look for a file name ending in &quot;.h&quot; to include in C++ header&amp;#010; files, and for a file name ending in &quot;.java&quot; to include in all generated&amp;#010; java code.&amp;#010; If you name the file &quot;heading.&lt;extension>&quot;, Code Generator will always&amp;#010; choose this file even if there are other files with the same extension in the&amp;#010; directory. If you name the file something else, it must be the only one with that&amp;#010; extension in the directory to guarantee that Code Generator will choose it.&amp;#010;&amp;#010;you can use variables in your heading files which are replaced at generation&amp;#010;time. possible variables are : author, date, time, filename and filepath.&amp;#010;just write %variable_name%&amp;#010;&amp;#010;This file was generated on Thu Sep 15 2005 at 14:16:23&amp;#010;The original location of this file is &amp;#010;**************************************************************************/&amp;#010;" />
<codecomment tag="" text="/************************************************************************&amp;#010; callrelatedrequest.h - Copyright jpbarrette&amp;#010;&amp;#010;Here you can write a license for your code, some comments or any other&amp;#010;information you want to have in your generated code. To to this simply&amp;#010;configure the &quot;headings&quot; directory in uml to point to a directory&amp;#010;where you have your heading files.&amp;#010;&amp;#010;or you can just replace the contents of this file with your own.&amp;#010;If you want to do this, this file is located at&amp;#010;&amp;#010;/usr/share/apps/umbrello/headings/heading.h&amp;#010;&amp;#010;-->Code Generators searches for heading files based on the file extension&amp;#010; i.e. it will look for a file name ending in &quot;.h&quot; to include in C++ header&amp;#010; files, and for a file name ending in &quot;.java&quot; to include in all generated&amp;#010; java code.&amp;#010; If you name the file &quot;heading.&lt;extension>&quot;, Code Generator will always&amp;#010; choose this file even if there are other files with the same extension in the&amp;#010; directory. If you name the file something else, it must be the only one with that&amp;#010; extension in the directory to guarantee that Code Generator will choose it.&amp;#010;&amp;#010;you can use variables in your heading files which are replaced at generation&amp;#010;time. possible variables are : author, date, time, filename and filepath.&amp;#010;just write %variable_name%&amp;#010;&amp;#010;This file was generated on Fri Sep 16 2005 at 10:15:20&amp;#010;The original location of this file is &amp;#010;**************************************************************************/&amp;#010;" />
</header>
<classfields>
<codeclassfield parent_id="13323" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
@ -8279,7 +8279,7 @@
</codeblockwithcomments>
</textblocks>
<header>
<codecomment tag="" text="/************************************************************************&amp;#010; accounttask.h - Copyright jpbarrette&amp;#010;&amp;#010;Here you can write a license for your code, some comments or any other&amp;#010;information you want to have in your generated code. To to this simply&amp;#010;configure the &quot;headings&quot; directory in uml to point to a directory&amp;#010;where you have your heading files.&amp;#010;&amp;#010;or you can just replace the contents of this file with your own.&amp;#010;If you want to do this, this file is located at&amp;#010;&amp;#010;/usr/share/apps/umbrello/headings/heading.h&amp;#010;&amp;#010;-->Code Generators searches for heading files based on the file extension&amp;#010; i.e. it will look for a file name ending in &quot;.h&quot; to include in C++ header&amp;#010; files, and for a file name ending in &quot;.java&quot; to include in all generated&amp;#010; java code.&amp;#010; If you name the file &quot;heading.&lt;extension>&quot;, Code Generator will always&amp;#010; choose this file even if there are other files with the same extension in the&amp;#010; directory. If you name the file something else, it must be the only one with that&amp;#010; extension in the directory to guarantee that Code Generator will choose it.&amp;#010;&amp;#010;you can use variables in your heading files which are replaced at generation&amp;#010;time. possible variables are : author, date, time, filename and filepath.&amp;#010;just write %variable_name%&amp;#010;&amp;#010;This file was generated on Thu Sep 15 2005 at 14:16:23&amp;#010;The original location of this file is &amp;#010;**************************************************************************/&amp;#010;" />
<codecomment tag="" text="/************************************************************************&amp;#010; accountrelatedrequest.h - Copyright jpbarrette&amp;#010;&amp;#010;Here you can write a license for your code, some comments or any other&amp;#010;information you want to have in your generated code. To to this simply&amp;#010;configure the &quot;headings&quot; directory in uml to point to a directory&amp;#010;where you have your heading files.&amp;#010;&amp;#010;or you can just replace the contents of this file with your own.&amp;#010;If you want to do this, this file is located at&amp;#010;&amp;#010;/usr/share/apps/umbrello/headings/heading.h&amp;#010;&amp;#010;-->Code Generators searches for heading files based on the file extension&amp;#010; i.e. it will look for a file name ending in &quot;.h&quot; to include in C++ header&amp;#010; files, and for a file name ending in &quot;.java&quot; to include in all generated&amp;#010; java code.&amp;#010; If you name the file &quot;heading.&lt;extension>&quot;, Code Generator will always&amp;#010; choose this file even if there are other files with the same extension in the&amp;#010; directory. If you name the file something else, it must be the only one with that&amp;#010; extension in the directory to guarantee that Code Generator will choose it.&amp;#010;&amp;#010;you can use variables in your heading files which are replaced at generation&amp;#010;time. possible variables are : author, date, time, filename and filepath.&amp;#010;just write %variable_name%&amp;#010;&amp;#010;This file was generated on Fri Sep 16 2005 at 10:15:15&amp;#010;The original location of this file is &amp;#010;**************************************************************************/&amp;#010;" />
</header>
<classfields>
<codeclassfield parent_id="13364" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
@ -9606,7 +9606,7 @@
</codeblockwithcomments>
</textblocks>
<header>
<codecomment tag="" text="/************************************************************************&amp;#010; requester.h - Copyright jpbarrette&amp;#010;&amp;#010;Here you can write a license for your code, some comments or any other&amp;#010;information you want to have in your generated code. To to this simply&amp;#010;configure the &quot;headings&quot; directory in uml to point to a directory&amp;#010;where you have your heading files.&amp;#010;&amp;#010;or you can just replace the contents of this file with your own.&amp;#010;If you want to do this, this file is located at&amp;#010;&amp;#010;/usr/share/apps/umbrello/headings/heading.h&amp;#010;&amp;#010;-->Code Generators searches for heading files based on the file extension&amp;#010; i.e. it will look for a file name ending in &quot;.h&quot; to include in C++ header&amp;#010; files, and for a file name ending in &quot;.java&quot; to include in all generated&amp;#010; java code.&amp;#010; If you name the file &quot;heading.&lt;extension>&quot;, Code Generator will always&amp;#010; choose this file even if there are other files with the same extension in the&amp;#010; directory. If you name the file something else, it must be the only one with that&amp;#010; extension in the directory to guarantee that Code Generator will choose it.&amp;#010;&amp;#010;you can use variables in your heading files which are replaced at generation&amp;#010;time. possible variables are : author, date, time, filename and filepath.&amp;#010;just write %variable_name%&amp;#010;&amp;#010;This file was generated on Thu Sep 15 2005 at 15:08:13&amp;#010;The original location of this file is &amp;#010;**************************************************************************/&amp;#010;" />
<codecomment tag="" text="/************************************************************************&amp;#010; requester.h - Copyright jpbarrette&amp;#010;&amp;#010;Here you can write a license for your code, some comments or any other&amp;#010;information you want to have in your generated code. To to this simply&amp;#010;configure the &quot;headings&quot; directory in uml to point to a directory&amp;#010;where you have your heading files.&amp;#010;&amp;#010;or you can just replace the contents of this file with your own.&amp;#010;If you want to do this, this file is located at&amp;#010;&amp;#010;/usr/share/apps/umbrello/headings/heading.h&amp;#010;&amp;#010;-->Code Generators searches for heading files based on the file extension&amp;#010; i.e. it will look for a file name ending in &quot;.h&quot; to include in C++ header&amp;#010; files, and for a file name ending in &quot;.java&quot; to include in all generated&amp;#010; java code.&amp;#010; If you name the file &quot;heading.&lt;extension>&quot;, Code Generator will always&amp;#010; choose this file even if there are other files with the same extension in the&amp;#010; directory. If you name the file something else, it must be the only one with that&amp;#010; extension in the directory to guarantee that Code Generator will choose it.&amp;#010;&amp;#010;you can use variables in your heading files which are replaced at generation&amp;#010;time. possible variables are : author, date, time, filename and filepath.&amp;#010;just write %variable_name%&amp;#010;&amp;#010;This file was generated on Fri Sep 16 2005 at 09:52:52&amp;#010;The original location of this file is &amp;#010;**************************************************************************/&amp;#010;" />
</header>
<classfields>
<codeclassfield parent_id="6951" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >

View File

@ -1,4 +1,8 @@
SUBDIRS = qt server
if NEWGUI_CODE
officialdir = official
endif
SUBDIRS = $(officialdir) qt server
noinst_LTLIBRARIES = libguiframework.la

View File

@ -20,27 +20,38 @@
#include "account.h"
#include "requester.h"
#include "call.h"
Account::Account(const std::string &id)
: mId(id)
Account::Account(const std::string &sessionId,
const std::string &name)
: mSessionId(sessionId)
, mId(name)
{}
Call
Account::createCall()
Account::call(const std::string &to)
{
std::string callId = Requester::instance().generateCallId();
return Call(mSessionId, mAccountId, callId);
std::list< std::string > args;
args.push_back(mId);
args.push_back(to);
Requester::instance().send(mSessionId, "register", args);
return Call(mSessionId, callId);
}
std::string
Account::register()
Account::registerAccount()
{
return Requester::instance().sendAccountRequest(mSessionId, mId, "register");
std::list< std::string > args;
args.push_back(mId);
return Requester::instance().send(mSessionId, "register", args);
}
std::string
Account::unregister()
Account::unregisterAccount()
{
return Requester::instance().sendAccountRequest(mSessionId, mId, "unregister");
std::list< std::string > args;
args.push_back(mId);
return Requester::instance().send(mSessionId, "unregister", args);
}

View File

@ -27,14 +27,19 @@ class Call;
class Account {
public:
Account(const std::string &sessionId,
const std::string &name);
/**
* This will generate a call ready to be used.
*/
Call call(const std::string &to);
std::string register();
std::string unregister();
std::string registerAccount();
std::string unregisterAccount();
private:
Account();
/**
* This is the session id that we are related to.
*/

View File

@ -18,59 +18,75 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <string>
#include <list>
#include "call.h"
#include "requester.h"
std::string
Call::call(const std::string &destination)
{
std::list< std::string> args;
args.push_back(mAccountId);
args.push_back(to);
return Requester::instance().sendCallCommand(mSession, mId, "answer", args)
}
Call::Call(const std::string &sessionId,
const std::string &callId)
: mSessionId(sessionId)
, mId(callId)
{}
std::string
Call::answer()
{
return Requester::instance().sendCallCommand(mSession, mId, "answer")
std::list< std::string> args;
args.push_back(mId);
return Requester::instance().send(mSessionId, "answer", args);
}
std::string
Call::hangup()
{
return Requester::instance().sendCallCommand(mSession, mId, "hangup")
std::list< std::string> args;
args.push_back(mId);
return Requester::instance().send(mSessionId, "hangup", args);
}
std::string
Call::cancel()
{
return Requester::instance().sendCallCommand(mSession, mId, "cancel")
std::list< std::string> args;
args.push_back(mId);
return Requester::instance().send(mSessionId, "cancel", args);
}
std::string
Call::hold()
{
return Requester::instance().sendCallCommand(mSession, mId, "hold")
std::list< std::string> args;
args.push_back(mId);
return Requester::instance().send(mSessionId, "hold", args);
}
std::string
Call::unhold()
{
return Requester::instance().sendCallCommand(mSession, mId, "unhold")
std::list< std::string> args;
args.push_back(mId);
return Requester::instance().send(mSessionId, "unhold", args);
}
std::string
Call::refuse()
{
return Requester::instance().sendCallCommand(mSession, mId, "refuse")
std::list< std::string> args;
args.push_back(mId);
return Requester::instance().send(mSessionId, "refuse", args);
}
std::string
Call::sendDtmf(char c)
{
std::list< std::string > args;
args.push_back(std::string(c));
return Requester::instance().sendCallCommand(mSession, mId, "senddtmf", args)
std::list< std::string> args;
args.push_back(mId);
std::string s;
s += c;
args.push_back(s);
return Requester::instance().send(mSessionId, "senddtmf", args);
}

View File

@ -27,15 +27,8 @@ class Call
{
public:
Call(const std::string &sessionId,
const std::string &accountId,
const std::string &callId);
/**
* This function will try to call the destination.
*
*/
std::string call(const std::string &destination);
/**
* This function will answer the call.
*/
@ -80,20 +73,15 @@ class Call
private:
/**
* This is the unique identifier of the call.
*/
std::string mId;
/**
* This is the session id that we belong to.
*/
std::string mSessionId;
/**
* This is the account id that we belong to.
* This is the unique identifier of the call.
*/
std::string mAccountId;
std::string mId;
};
#endif

View File

@ -22,10 +22,10 @@
#define SFLPHONEGUI_OBJECTPOOL_H
#include <string>
#include <QMutex>
#include <QWaitCondition>
#include <qmutex.h>
#include <qwaitcondition.h>
template< T >
template< typename T >
class ObjectPool
{
public:

View File

@ -18,7 +18,10 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <sstream>
#include "request.h"
#include "requester.h"
Request::Request(const std::string &sequenceId,
const std::string &command,
@ -29,19 +32,19 @@ Request::Request(const std::string &sequenceId,
{}
void
Request::onError(int code, const std::string &message)
Request::onError(const std::string &, const std::string &)
{}
void
Request::onSuccess(int code, const std::string &message)
Request::onSuccess(const std::string &, const std::string &)
{}
std::string
Request::toString()
{
std::ostream id;
std::ostringstream id;
id << mCommand << mSequenceId;
for(std::list< std::string >::iterator pos = mArgs.begin();
for(std::list< std::string >::const_iterator pos = mArgs.begin();
pos != mArgs.end();
pos++) {
id << " " << (*pos);
@ -52,30 +55,35 @@ Request::toString()
CallRequest::CallRequest(const std::string &sequenceId,
const std::string &callId,
const std::string &command,
const std::list< std::string > &args)
: Request(sequenceId, command, args)
, mCallId(callId)
, mCallId(*args.begin())
{}
void
CallRequest::onError(int code, const std::string &message)
CallRequest::onError(const std::string &code, const std::string &message)
{
onError(Call(mCallId), code, message);
onError(Call(Requester::instance().getSessionIdFromSequenceId(getSequenceId()),
mCallId),
code,
message);
}
void
CallRequest::onError(Call call, int code, const std::string &message)
CallRequest::onError(Call , const std::string &, const std::string &)
{}
void
CallRequest::onSuccess(int code, const std::string &message)
CallRequest::onSuccess(const std::string &code, const std::string &message)
{
onSuccess(Call(mCallId), code, message);
onSuccess(Call(Requester::instance().getSessionIdFromSequenceId(getSequenceId()),
mCallId),
code,
message);
}
void
CallRequest::onSuccess(Call call, int code, const std::string &message)
CallRequest::onSuccess(Call, const std::string &, const std::string &)
{}

View File

@ -21,6 +21,11 @@
#ifndef SFLPHONEGUI_REQUEST_H
#define SFLPHONEGUI_REQUEST_H
#include <list>
#include <string>
#include "call.h"
class Request
{
public:
@ -33,14 +38,20 @@ class Request
* receive its answer, if the request didn't successfully
* ended.
*/
virtual void onError(int code, const std::string &message);
virtual void onError(const std::string &code, const std::string &message);
/**
* This function will be called when the request
* receive an answer, but there's other answers to come.
*/
virtual void onEntry(const std::string &code, const std::string &message);
/**
* This function will be called when the request
* receive its answer, if the request successfully
* ended.
*/
virtual void onSuccess(int code, const std::string &message);
virtual void onSuccess(const std::string &code, const std::string &message);
/**
* This function will translate the function into a string.
@ -51,7 +62,7 @@ class Request
/**
* Return the sequence ID.
*/
std::string getSequenceID()
std::string getSequenceId()
{return mSequenceId;}
/**
@ -63,21 +74,21 @@ class Request
/**
* Return the args.
*/
std::string getArgs()
std::list< std::string > getArgs()
{return mArgs;}
private:
const std::string mSequenceId;
const std::string mSessionId;
const std::string mCommand;
const std::list< std::string > mArgs;
}
};
class CallRequest : public Request
{
public:
CallRequest(const std::string &sequenceId,
const std::string &callId,
const std::string &command,
const std::list< std::string > &args);
@ -87,14 +98,26 @@ class CallRequest : public Request
* receive its answer, if the request didn't successfully
* ended.
*/
virtual void onError(Call call, int code, const std::string &message);
virtual void onError(Call call,
const std::string &code,
const std::string &message);
/**
* This function will be called when the request
* receive an answer, but there's other answers to come.
*/
virtual void onEntry(Call call,
const std::string &code,
const std::string &message);
/**
* This function will be called when the request
* receive its answer, if the request successfully
* ended.
*/
virtual void onSuccess(Call call, const std::string &message);
virtual void onSuccess(Call call,
const std::string &code,
const std::string &message);
private:
/**
@ -103,7 +126,8 @@ class CallRequest : public Request
* ended. This function will call the onError, but with
* the call linked to this request.
*/
virtual void onError(int code, const std::string &message);
virtual void onError(const std::string &code,
const std::string &message);
/**
* This function will be called when the request
@ -111,11 +135,12 @@ class CallRequest : public Request
* ended. This function will call the onSuccess function,
* but with the call linked to this request.
*/
virtual void onSuccess(int code, const std::string &message);
virtual void onSuccess(const std::string &code,
const std::string &message);
private:
const std::string mCallId;
}
};
#endif

View File

@ -29,10 +29,10 @@ RequesterImpl::RequesterImpl()
, mSequenceIdCount(0)
{}
SessionImpl *
getSessionImpl(const std::string &sessionId)
SessionIO *
RequesterImpl::getSessionIO(const std::string &sessionId)
{
std::map< std::string, SessionImpl * >::iterator pos = mSessions.find(sessionId);
std::map< std::string, SessionIO * >::iterator pos = mSessions.find(sessionId);
if(pos == mSessions.end()) {
throw std::runtime_error("The session is not valid.");
}
@ -41,17 +41,17 @@ getSessionImpl(const std::string &sessionId)
}
std::string
RequesterImpl::sendCallCommand(const std::string &sessionId,
const std::string &callId,
const std::string &command)
RequesterImpl::send(const std::string &sessionId,
const std::string &command,
const std::list< std::string > &args)
{
// We retreive the internal of a session.
SessionIO *session = getSessionIO(sessionId);
// We ask the factory to create the request.
Request *request = mCallRequestFactory.create(command, sequenceId, callId)
std::string sequenceId = generateSequenceId();
Request *request = mRequestFactory.create(command, sequenceId, args);
registerRequest(sessionId, sequenceId, request);
s->send(request.toString());
@ -68,6 +68,20 @@ RequesterImpl::registerRequest(const std::string &sessionId,
}
mRequests.insert(std::make_pair(sequenceId, request));
mSequenceToSession.insert(std::make_pair(sequenceId, sessionId));
}
void
RequesterImpl::registerSession(const std::string &id,
SessionIO *s)
{
if(mSessions.find(id) != mSessions.end()) {
throw std::logic_error("Registering an already know Session ID");
}
mSessions.insert(std::make_pair(id, s));
s->start();
}
void

View File

@ -21,6 +21,9 @@
#ifndef SFLPHONEGUI_REQUESTERIMPL_H
#define SFLPHONEGUI_REQUESTERIMPL_H
#include "request.h"
#include "objectfactory.h"
class Call;
class SessionIO;
@ -34,26 +37,17 @@ class RequesterImpl
* This command is non-blocking. The command linked
* to this command will be executed.
*/
void sendCallCommand(const std::string &sessionId,
const std::string &callId,
const std::string &command);
void sendCallCommand(const std::string &sessionId,
const std::string &callId,
char *command);
std::string send(const std::string &sessionId,
const std::string &command,
const std::list< std::string > &args);
static int getCodeCategory(const std::string &code);
private:
/**
* Generate a unique call ID.
*/
std::string generateCallId();
/**
* Generate a unique account ID.
*/
std::string generateAccountId();
/**
* Generate a unique session ID.
*/
@ -64,50 +58,51 @@ class RequesterImpl
*/
std::string generateSequenceId();
/**
* Register the string to return a Actual type.
*/
template< typename Actual >
void registerObject(const std::string &name);
std::string getSessionIdFromSequenceId(const std::string &sequence)
{return mSequenceToSession[sequence];}
private:
/**
* Return the SessionIO instance related to
* the session ID.
*/
SessionIO *getSessionIO(const std::string &sessionId);
/**
* Register the session.
*/
void registerSession(const std::string &id, SessionIO *io);
/**
* Register the string to return a Actual type.
*/
void registerRequest(const std::string &sessionId,
const std::string &sequenceId,
Request *request);
private:
ObjectFactory< Request > mRequestFactory;
std::map< std::string, SessionIO * > mSessions;
std::map< std::string, Request * > mRequests;
/**
* This map is used to map accounts ids to session ids.
*/
std::map< std::string, std::string > mAccountToSessionMap;
/**
* This map is used to map call ids to session ids.
*/
std::map< std::string, std::string > mCallToSessionMap;
/**
* This is the list of all accounts in each session.
*/
std::map< std::string, std::list< std::string > > mSessionAccounts;
/**
* This is the list of all calls ids in each accounts.
*/
std::map< std::string, std::list< std::string > > mAccountCalls;
/**
* Those maps are used to create a request from a request
* string.
*/
std::map< std::string, * CallRequestCreator > mCallCommandCreators;
std::map< std::string, * AccountRequestCreator > mAccountRequestCreators;
std::map< std::string, * SessionRequestCreator > mSessionRequestCreators;
std::map< std::string, * SessionListRequestCreator > mSessionListRequestCreators;
std::map< std::string, std::string > mSequenceToSession;
/**
* This is the integer used to generate the call IDs.
*/
unsigned long mCallIdCount;
}
unsigned long mSessionIdCount;
unsigned long mSequenceIdCount;
};
#include "requesterimpl.inl"
#endif

View File

@ -57,7 +57,7 @@ SessionIO::~SessionIO()
}
void
SessionIO::run()
SessionIO::start()
{
stop();
//just protecting the mutex

View File

@ -23,7 +23,7 @@
#include <string>
#include <iostream>
#include <cc++/thread.h>
#include <qthread.h>
#include "objectpool.h"
@ -46,7 +46,7 @@ class SessionIO
* This is the function that will start the threads
* that will handle the streams.
*/
void run();
void start();
/**
* This function will stop the streaming

View File

@ -59,7 +59,7 @@ namespace utilspp
static bool mDestroyed;
};
}
};
#include "SingletonHolder.inl"