diff --git a/src/gui/qt/Makefile.am b/src/gui/qt/Makefile.am deleted file mode 100644 index 8b2855da5fddc728fe86f5cbd1d7c5dfc73a7017..0000000000000000000000000000000000000000 --- a/src/gui/qt/Makefile.am +++ /dev/null @@ -1,54 +0,0 @@ -noinst_LTLIBRARIES = libsflphoneqt.la - -BUILT_SOURCES = \ - configurationpanel.h\ - configurationpanelui.cpp\ - moc_configurationpanel.cpp\ - url_input.h \ - url_inputui.cpp \ - moc_url_input.cpp \ - moc_jpushbutton.cpp \ - moc_trayicon.cpp\ - moc_volumecontrol.cpp\ - moc_numerickeypad.cpp \ - moc_mydisplay.cpp \ - moc_qtGUImainwindow.cpp - -libsflphoneqt_la_SOURCES = \ - $(BUILT_SOURCES) \ - jpushbutton.cpp \ - mydisplay.cpp \ - numerickeypad.cpp \ - numerickeypadtools.cpp \ - trayicon.cpp \ - phoneline.cpp \ - point.cpp \ - qjlistboxpixmap.cpp \ - qtGUImainwindow.cpp \ - transqwidget.cpp \ - trayicon_x11.cpp \ - vector.cpp \ - volumecontrol.cpp \ - skin.cpp skin.h - - -CLEANFILES = \ - $(BUILT_SOURCES) - -libsflphoneqt_la_CXXFLAGS = -DPREFIX=\"$(prefix)\" -DPROGSHAREDIR=\"${datadir}/sflphone\" $(portaudio_CFLAGS) -libsflphoneqt_la_LIBADD = $(portaudio_LIBS) - -KDE_CXXFLAGS = $(USE_EXCEPTIONS) -AM_CPPFLAGS = -I$(top_srcdir) -I$(srcdir)/../../audio/pacpp/include/ $(QT_INCLUDES) $(X_INCLUDES) $(libccext2_CFLAGS) $(portaudio_CFLAGS) - - -%.h: %.ui - $(UIC) -o $@ $< - -moc_%.cpp: %.h - $(MOC) -o $@ $< - -%ui.cpp: %.ui - $(UIC) -o $@ -impl $*.h $< - - diff --git a/src/gui/qt/configurationpanel.ui b/src/gui/qt/configurationpanel.ui deleted file mode 100644 index b06767a7d95d4a7273d17ece47382f091dcc4108..0000000000000000000000000000000000000000 --- a/src/gui/qt/configurationpanel.ui +++ /dev/null @@ -1,1273 +0,0 @@ -<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> -<class>ConfigurationPanel</class> -<widget class="QDialog"> - <property name="name"> - <cstring>ConfigurationPanel</cstring> - </property> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>561</width> - <height>552</height> - </rect> - </property> - <property name="caption"> - <string>Configuration panel</string> - </property> - <property name="sizeGripEnabled"> - <bool>true</bool> - </property> - <grid> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QLayoutWidget" row="1" column="0" rowspan="1" colspan="2"> - <property name="name"> - <cstring>layout19</cstring> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="Line"> - <property name="name"> - <cstring>line1</cstring> - </property> - <property name="frameShape"> - <enum>HLine</enum> - </property> - <property name="frameShadow"> - <enum>Sunken</enum> - </property> - <property name="orientation"> - <enum>Horizontal</enum> - </property> - </widget> - <widget class="QLayoutWidget"> - <property name="name"> - <cstring>layout28</cstring> - </property> - <hbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QPushButton"> - <property name="name"> - <cstring>buttonHelp</cstring> - </property> - <property name="text"> - <string>&Help</string> - </property> - <property name="accel"> - <string>F1</string> - </property> - <property name="autoDefault"> - <bool>true</bool> - </property> - </widget> - <spacer> - <property name="name"> - <cstring>Horizontal Spacing2</cstring> - </property> - <property name="orientation"> - <enum>Horizontal</enum> - </property> - <property name="sizeType"> - <enum>Expanding</enum> - </property> - <property name="sizeHint"> - <size> - <width>160</width> - <height>20</height> - </size> - </property> - </spacer> - <widget class="QPushButton"> - <property name="name"> - <cstring>buttonSave</cstring> - </property> - <property name="text"> - <string>&Save</string> - </property> - <property name="accel"> - <string>Alt+S</string> - </property> - <property name="autoDefault"> - <bool>true</bool> - </property> - <property name="default"> - <bool>true</bool> - </property> - </widget> - <widget class="QPushButton"> - <property name="name"> - <cstring>buttonOk</cstring> - </property> - <property name="text"> - <string>&OK</string> - </property> - <property name="accel"> - <string>Alt+O</string> - </property> - <property name="autoDefault"> - <bool>true</bool> - </property> - </widget> - <widget class="QPushButton"> - <property name="name"> - <cstring>buttonCancel</cstring> - </property> - <property name="text"> - <string>&Cancel</string> - </property> - <property name="accel"> - <string>F, Backspace</string> - </property> - <property name="autoDefault"> - <bool>true</bool> - </property> - </widget> - </hbox> - </widget> - </vbox> - </widget> - <widget class="QListBox" row="0" column="0"> - <property name="name"> - <cstring>Menu</cstring> - </property> - <property name="sizePolicy"> - <sizepolicy> - <hsizetype>0</hsizetype> - <vsizetype>7</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="cursor"> - <cursor>13</cursor> - </property> - <property name="currentItem"> - <number>-1</number> - </property> - <property name="selectionMode"> - <enum>Single</enum> - </property> - </widget> - <widget class="QLayoutWidget" row="0" column="1"> - <property name="name"> - <cstring>layout17</cstring> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QLabel"> - <property name="name"> - <cstring>TitleTab</cstring> - </property> - <property name="font"> - <font> - <bold>1</bold> - </font> - </property> - <property name="text"> - <string>Setup signalisation</string> - </property> - </widget> - <widget class="Line"> - <property name="name"> - <cstring>line2</cstring> - </property> - <property name="frameShape"> - <enum>HLine</enum> - </property> - <property name="frameShadow"> - <enum>Sunken</enum> - </property> - <property name="orientation"> - <enum>Horizontal</enum> - </property> - </widget> - <widget class="QTabWidget"> - <property name="name"> - <cstring>Tab_Signalisations</cstring> - </property> - <widget class="QWidget"> - <property name="name"> - <cstring>SIPPage</cstring> - </property> - <attribute name="title"> - <string>SIP Authentication</string> - </attribute> - <widget class="QLayoutWidget"> - <property name="name"> - <cstring>layout24</cstring> - </property> - <property name="geometry"> - <rect> - <x>16</x> - <y>12</y> - <width>401</width> - <height>393</height> - </rect> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QGroupBox"> - <property name="name"> - <cstring>groupBox1</cstring> - </property> - <property name="title"> - <string></string> - </property> - <grid> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QLabel" row="0" column="0"> - <property name="name"> - <cstring>textLabel2</cstring> - </property> - <property name="text"> - <string>Full name</string> - </property> - </widget> - <widget class="QLineEdit" row="1" column="0"> - <property name="name"> - <cstring>fullName</cstring> - </property> - </widget> - <widget class="QLineEdit" row="3" column="0"> - <property name="name"> - <cstring>userPart</cstring> - </property> - </widget> - <widget class="QLabel" row="2" column="0"> - <property name="name"> - <cstring>textLabel3</cstring> - </property> - <property name="text"> - <string>User Part of SIP URL</string> - </property> - </widget> - <widget class="QLabel" row="4" column="0"> - <property name="name"> - <cstring>textLabel2_3</cstring> - </property> - <property name="text"> - <string>Authorization user</string> - </property> - </widget> - <widget class="QLineEdit" row="5" column="0"> - <property name="name"> - <cstring>username</cstring> - </property> - </widget> - <widget class="QLineEdit" row="9" column="0"> - <property name="name"> - <cstring>hostPart</cstring> - </property> - </widget> - <widget class="QLineEdit" row="11" column="0"> - <property name="name"> - <cstring>sipproxy</cstring> - </property> - </widget> - <widget class="QLabel" row="10" column="0"> - <property name="name"> - <cstring>textLabel3_2_2</cstring> - </property> - <property name="text"> - <string>SIP proxy</string> - </property> - </widget> - <widget class="QLineEdit" row="7" column="0"> - <property name="name"> - <cstring>password</cstring> - </property> - <property name="echoMode"> - <enum>Password</enum> - </property> - </widget> - <widget class="QLabel" row="6" column="0"> - <property name="name"> - <cstring>textLabel1_3</cstring> - </property> - <property name="text"> - <string>Password</string> - </property> - </widget> - <widget class="QLabel" row="8" column="0"> - <property name="name"> - <cstring>textLabel3_2</cstring> - </property> - <property name="text"> - <string>Host part of SIP URL</string> - </property> - </widget> - </grid> - </widget> - <widget class="QLayoutWidget"> - <property name="name"> - <cstring>layout23</cstring> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QLayoutWidget"> - <property name="name"> - <cstring>layout19</cstring> - </property> - <hbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QCheckBox"> - <property name="name"> - <cstring>autoregister</cstring> - </property> - <property name="text"> - <string>Auto-register</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - <spacer> - <property name="name"> - <cstring>spacer7</cstring> - </property> - <property name="orientation"> - <enum>Horizontal</enum> - </property> - <property name="sizeType"> - <enum>Expanding</enum> - </property> - <property name="sizeHint"> - <size> - <width>201</width> - <height>21</height> - </size> - </property> - </spacer> - <widget class="QPushButton"> - <property name="name"> - <cstring>Register</cstring> - </property> - <property name="text"> - <string>Register</string> - </property> - </widget> - </hbox> - </widget> - <spacer> - <property name="name"> - <cstring>spacer9</cstring> - </property> - <property name="orientation"> - <enum>Vertical</enum> - </property> - <property name="sizeType"> - <enum>Expanding</enum> - </property> - <property name="sizeHint"> - <size> - <width>20</width> - <height>21</height> - </size> - </property> - </spacer> - </vbox> - </widget> - </vbox> - </widget> - </widget> - <widget class="QWidget"> - <property name="name"> - <cstring>STUNPage</cstring> - </property> - <attribute name="title"> - <string>STUN</string> - </attribute> - <widget class="QGroupBox"> - <property name="name"> - <cstring>groupBox3</cstring> - </property> - <property name="geometry"> - <rect> - <x>10</x> - <y>110</y> - <width>253</width> - <height>100</height> - </rect> - </property> - <property name="title"> - <string>Settings </string> - </property> - <widget class="QLabel"> - <property name="name"> - <cstring>textLabel1_5</cstring> - </property> - <property name="geometry"> - <rect> - <x>10</x> - <y>38</y> - <width>229</width> - <height>16</height> - </rect> - </property> - <property name="text"> - <string>STUN server (address:port)</string> - </property> - </widget> - <widget class="QLineEdit"> - <property name="name"> - <cstring>STUNserver</cstring> - </property> - <property name="geometry"> - <rect> - <x>10</x> - <y>60</y> - <width>229</width> - <height>23</height> - </rect> - </property> - </widget> - </widget> - <widget class="QButtonGroup"> - <property name="name"> - <cstring>stunButtonGroup</cstring> - </property> - <property name="geometry"> - <rect> - <x>10</x> - <y>10</y> - <width>90</width> - <height>81</height> - </rect> - </property> - <property name="title"> - <string>Use STUN</string> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QRadioButton"> - <property name="name"> - <cstring>useStunNo</cstring> - </property> - <property name="text"> - <string>No</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - <widget class="QRadioButton"> - <property name="name"> - <cstring>useStunYes</cstring> - </property> - <property name="text"> - <string>Yes</string> - </property> - <property name="checked"> - <bool>false</bool> - </property> - </widget> - </vbox> - </widget> - </widget> - <widget class="QWidget"> - <property name="name"> - <cstring>DTMFPage</cstring> - </property> - <attribute name="title"> - <string>DTMF</string> - </attribute> - <widget class="QGroupBox"> - <property name="name"> - <cstring>SettingsDTMF</cstring> - </property> - <property name="geometry"> - <rect> - <x>10</x> - <y>10</y> - <width>301</width> - <height>130</height> - </rect> - </property> - <property name="title"> - <string>Settings</string> - </property> - <grid> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QLayoutWidget" row="0" column="0"> - <property name="name"> - <cstring>layout11</cstring> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QLayoutWidget"> - <property name="name"> - <cstring>layout10</cstring> - </property> - <hbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QCheckBox"> - <property name="name"> - <cstring>playTones</cstring> - </property> - <property name="text"> - <string>Play tones locally</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - <spacer> - <property name="name"> - <cstring>spacer6</cstring> - </property> - <property name="orientation"> - <enum>Horizontal</enum> - </property> - <property name="sizeType"> - <enum>Expanding</enum> - </property> - <property name="sizeHint"> - <size> - <width>111</width> - <height>20</height> - </size> - </property> - </spacer> - </hbox> - </widget> - <widget class="QLayoutWidget"> - <property name="name"> - <cstring>layout7</cstring> - </property> - <hbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QLabel"> - <property name="name"> - <cstring>labelPulseLength</cstring> - </property> - <property name="text"> - <string>Pulse length</string> - </property> - </widget> - <spacer> - <property name="name"> - <cstring>spacer3</cstring> - </property> - <property name="orientation"> - <enum>Horizontal</enum> - </property> - <property name="sizeType"> - <enum>Expanding</enum> - </property> - <property name="sizeHint"> - <size> - <width>115</width> - <height>20</height> - </size> - </property> - </spacer> - <widget class="QSpinBox"> - <property name="name"> - <cstring>pulseLength</cstring> - </property> - <property name="suffix"> - <string> ms</string> - </property> - <property name="maxValue"> - <number>1500</number> - </property> - <property name="minValue"> - <number>10</number> - </property> - <property name="value"> - <number>250</number> - </property> - </widget> - </hbox> - </widget> - <widget class="QLayoutWidget"> - <property name="name"> - <cstring>layout8</cstring> - </property> - <hbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QLabel"> - <property name="name"> - <cstring>labelSendDTMF</cstring> - </property> - <property name="text"> - <string>Send DTMF as</string> - </property> - </widget> - <spacer> - <property name="name"> - <cstring>spacer4</cstring> - </property> - <property name="orientation"> - <enum>Horizontal</enum> - </property> - <property name="sizeType"> - <enum>Expanding</enum> - </property> - <property name="sizeHint"> - <size> - <width>85</width> - <height>20</height> - </size> - </property> - </spacer> - <widget class="QComboBox"> - <item> - <property name="text"> - <string>SIP INFO</string> - </property> - </item> - <property name="name"> - <cstring>sendDTMFas</cstring> - </property> - <property name="currentItem"> - <number>0</number> - </property> - </widget> - </hbox> - </widget> - </vbox> - </widget> - </grid> - </widget> - </widget> - </widget> - <widget class="QTabWidget"> - <property name="name"> - <cstring>Tab_Audio</cstring> - </property> - <widget class="QWidget"> - <property name="name"> - <cstring>DriversPage</cstring> - </property> - <attribute name="title"> - <string>Drivers</string> - </attribute> - <widget class="QButtonGroup"> - <property name="name"> - <cstring>DriverChoice</cstring> - </property> - <property name="geometry"> - <rect> - <x>10</x> - <y>10</y> - <width>410</width> - <height>180</height> - </rect> - </property> - <property name="title"> - <string>Drivers list</string> - </property> - </widget> - </widget> - <widget class="QWidget"> - <property name="name"> - <cstring>CodecsPage</cstring> - </property> - <attribute name="title"> - <string>Codecs</string> - </attribute> - <widget class="QButtonGroup"> - <property name="name"> - <cstring>CodecsChoice</cstring> - </property> - <property name="geometry"> - <rect> - <x>20</x> - <y>10</y> - <width>133</width> - <height>157</height> - </rect> - </property> - <property name="title"> - <string>Supported codecs</string> - </property> - <widget class="QLayoutWidget"> - <property name="name"> - <cstring>layout18</cstring> - </property> - <property name="geometry"> - <rect> - <x>10</x> - <y>20</y> - <width>110</width> - <height>120</height> - </rect> - </property> - <grid> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QLayoutWidget" row="0" column="0"> - <property name="name"> - <cstring>layout17</cstring> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QComboBox"> - <item> - <property name="text"> - <string>G711u</string> - </property> - </item> - <item> - <property name="text"> - <string>G711a</string> - </property> - </item> - <item> - <property name="text"> - <string>GSM</string> - </property> - </item> - <property name="name"> - <cstring>codec1</cstring> - </property> - </widget> - <widget class="QComboBox"> - <item> - <property name="text"> - <string>G711a</string> - </property> - </item> - <item> - <property name="text"> - <string>G711u</string> - </property> - </item> - <item> - <property name="text"> - <string>GSM</string> - </property> - </item> - <property name="name"> - <cstring>codec2</cstring> - </property> - </widget> - <widget class="QComboBox"> - <item> - <property name="text"> - <string>G711u</string> - </property> - </item> - <item> - <property name="text"> - <string>G711a</string> - </property> - </item> - <item> - <property name="text"> - <string>GSM</string> - </property> - </item> - <property name="name"> - <cstring>codec3</cstring> - </property> - </widget> - </vbox> - </widget> - <widget class="QLayoutWidget" row="0" column="1"> - <property name="name"> - <cstring>layout18</cstring> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QLabel"> - <property name="name"> - <cstring>textLabel1_4</cstring> - </property> - <property name="text"> - <string>1</string> - </property> - </widget> - <widget class="QLabel"> - <property name="name"> - <cstring>textLabel1_4_2</cstring> - </property> - <property name="text"> - <string>2</string> - </property> - </widget> - <widget class="QLabel"> - <property name="name"> - <cstring>textLabel1_4_3</cstring> - </property> - <property name="text"> - <string>3</string> - </property> - </widget> - </vbox> - </widget> - </grid> - </widget> - </widget> - </widget> - <widget class="QWidget"> - <property name="name"> - <cstring>RingPage</cstring> - </property> - <attribute name="title"> - <string>Ringtones</string> - </attribute> - <widget class="QComboBox"> - <property name="name"> - <cstring>ringsChoice</cstring> - </property> - <property name="geometry"> - <rect> - <x>20</x> - <y>21</y> - <width>150</width> - <height>30</height> - </rect> - </property> - </widget> - </widget> - </widget> - <widget class="QTabWidget"> - <property name="name"> - <cstring>Tab_Preferences</cstring> - </property> - <widget class="QWidget"> - <property name="name"> - <cstring>DriversPage</cstring> - </property> - <attribute name="title"> - <string>Themes</string> - </attribute> - <widget class="QComboBox"> - <property name="name"> - <cstring>SkinChoice</cstring> - </property> - <property name="geometry"> - <rect> - <x>12</x> - <y>42</y> - <width>110</width> - <height>27</height> - </rect> - </property> - </widget> - <widget class="QPushButton"> - <property name="name"> - <cstring>buttonApplySkin</cstring> - </property> - <property name="geometry"> - <rect> - <x>136</x> - <y>40</y> - <width>80</width> - <height>32</height> - </rect> - </property> - <property name="text"> - <string>&Apply</string> - </property> - <property name="accel"> - <string>Alt+A</string> - </property> - </widget> - </widget> - <widget class="QWidget"> - <property name="name"> - <cstring>TabPage</cstring> - </property> - <attribute name="title"> - <string>Options</string> - </attribute> - <widget class="QLayoutWidget"> - <property name="name"> - <cstring>layout17</cstring> - </property> - <property name="geometry"> - <rect> - <x>10</x> - <y>10</y> - <width>262</width> - <height>200</height> - </rect> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QLayoutWidget"> - <property name="name"> - <cstring>layout16</cstring> - </property> - <hbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QLabel"> - <property name="name"> - <cstring>labelToneZone</cstring> - </property> - <property name="text"> - <string>Zone tone:</string> - </property> - </widget> - <widget class="QComboBox"> - <item> - <property name="text"> - <string>North America</string> - </property> - </item> - <item> - <property name="text"> - <string>France</string> - </property> - </item> - <item> - <property name="text"> - <string>Australia</string> - </property> - </item> - <item> - <property name="text"> - <string>United Kingdom</string> - </property> - </item> - <item> - <property name="text"> - <string>Spain</string> - </property> - </item> - <item> - <property name="text"> - <string>Italy</string> - </property> - </item> - <item> - <property name="text"> - <string>Japan</string> - </property> - </item> - <property name="name"> - <cstring>zoneToneChoice</cstring> - </property> - </widget> - <spacer> - <property name="name"> - <cstring>spacer5</cstring> - </property> - <property name="orientation"> - <enum>Horizontal</enum> - </property> - <property name="sizeType"> - <enum>Expanding</enum> - </property> - <property name="sizeHint"> - <size> - <width>31</width> - <height>21</height> - </size> - </property> - </spacer> - </hbox> - </widget> - <widget class="QCheckBox"> - <property name="name"> - <cstring>confirmationToQuit</cstring> - </property> - <property name="text"> - <string>Show confirmation to quit.</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - <widget class="QCheckBox"> - <property name="name"> - <cstring>checkedTray</cstring> - </property> - <property name="text"> - <string>Minimize to tray</string> - </property> - </widget> - <widget class="QLayoutWidget"> - <property name="name"> - <cstring>layout16</cstring> - </property> - <hbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="QLabel"> - <property name="name"> - <cstring>textLabel1_6</cstring> - </property> - <property name="text"> - <string>Voicemail:</string> - </property> - </widget> - <widget class="QLineEdit"> - <property name="name"> - <cstring>voicemailNumber</cstring> - </property> - </widget> - <spacer> - <property name="name"> - <cstring>spacer6_2</cstring> - </property> - <property name="orientation"> - <enum>Horizontal</enum> - </property> - <property name="sizeType"> - <enum>Expanding</enum> - </property> - <property name="sizeHint"> - <size> - <width>61</width> - <height>21</height> - </size> - </property> - </spacer> - </hbox> - </widget> - </vbox> - </widget> - </widget> - </widget> - <widget class="QTabWidget"> - <property name="name"> - <cstring>Tab_About</cstring> - </property> - <widget class="QWidget"> - <property name="name"> - <cstring>DriversPage</cstring> - </property> - <attribute name="title"> - <string>About SFLPhone</string> - </attribute> - <widget class="QLabel"> - <property name="name"> - <cstring>pixmapLabel1</cstring> - </property> - <property name="geometry"> - <rect> - <x>50</x> - <y>40</y> - <width>312</width> - <height>91</height> - </rect> - </property> - <property name="pixmap"> - <pixmap>image0</pixmap> - </property> - <property name="scaledContents"> - <bool>true</bool> - </property> - </widget> - <widget class="QLabel"> - <property name="name"> - <cstring>textLabel2_2</cstring> - </property> - <property name="geometry"> - <rect> - <x>20</x> - <y>170</y> - <width>371</width> - <height>121</height> - </rect> - </property> - <property name="text"> - <string><p align="center"> -Copyright (C) 2004-2005 Savoir-faire Linux inc.<br><br> -Laurielle LEA &lt;laurielle.lea@savoirfairelinux.com&gt;<br><br> -SFLPhone-0.4.1-pre1 is released under <br>the General Public License.<br> -For more information, see http://www.sflphone.org<br> -</p></string> - </property> - </widget> - </widget> - <widget class="QWidget"> - <property name="name"> - <cstring>CodecsPage</cstring> - </property> - <attribute name="title"> - <string>About Savoir-faire Linux inc.</string> - </attribute> - <widget class="QLabel"> - <property name="name"> - <cstring>textLabel1</cstring> - </property> - <property name="geometry"> - <rect> - <x>85</x> - <y>126</y> - <width>291</width> - <height>131</height> - </rect> - </property> - <property name="text"> - <string><p align="center">Website: http://www.savoirfairelinux.com<br><br> -5505, Saint-Laurent - bureau 3030<br> -Montreal, Quebec H2T 1S6</p></string> - </property> - </widget> - <widget class="QLabel"> - <property name="name"> - <cstring>pixmapLabel2</cstring> - </property> - <property name="geometry"> - <rect> - <x>130</x> - <y>50</y> - <width>173</width> - <height>48</height> - </rect> - </property> - <property name="pixmap"> - <pixmap>image1</pixmap> - </property> - <property name="scaledContents"> - <bool>true</bool> - </property> - </widget> - </widget> - </widget> - </vbox> - </widget> - </grid> -</widget> -<images> - <image name="image0"> - <data format="XPM.GZ" length="58862">789ced5d596fe3b8b27e9f5f114cbd0d0eea6475625cdc878eb3b4b34ca72799e9745f9c07c74b76c776363b07e7bfdf629194488ad49249e4f40151109292488a923e7dac85a2fff9dbc2e9d1e1c26ffffce5fea1f370d95de85e74260bbff51e6f6f67fff7affffdf72fbfae2c2d2f34971696165717967ffdc72fbfe21f0bdd05682c37d61a52ffcc7a87f40eebbb4a6f2a7d47e93da57f17fafa4aa3b7be2274e8487d7d49eab8a4f43575fc96f533d2cf58df547a53e953a5f794fe22f48d95f5de866caf2df58d25a9c34ce96beaf8b9d4cf96cf56f9f890f5333a2edb1b2bbd29757c547a4f1d1f495dd7c78b44efb13e507a43e9db426fae6ef49af27c7da93797943e50fa9ad4f145ea49fd65a577947ea8f5ee1ad7df557a5f1e872dadcbe3f8c47a97daefb2fea0f4a6d2ef95de53faa5d4757de849bdbbacf496d03babcd5e47f6ff52ea9d25a583d2d7a48e7da927f59f125d5ecf27a537947ec47a97eacbfe4c94de51fab1d2fb528767a927f5af94de913a74b5de93e7df577a5f955f14fad96aa7af9ee758eac9f36d28bda1f0b22775dd1e9e28bdaff403a9f79695bece7a2f799e23a5ebe7f9ac74f5fc7045eaba3e7c4af43e1f5f557a43eac0f8eaae25cffb4eeafa7ee354e90da5f7a4aeebe3b5d23baa3d7e3fba3d7d3fe14ee9ea7ee250e9eafec195d4757dfc5debfd06eb6b4aefabf62fb42e8fc367a9f79795ceef5b6f2db99f33a927f7734fe90da57f937a52ff20d1657fba4a6fa8fefc99e8f238bf2fd43b7d3f51e9fa7a6e95aefa8f9b52d7f5e14ce91dd5de86d0fb0d7d7df855eaba7fd854baea0fec285dd587b6d607f2f8b5d2fbaafd2f5a57c7f97dee27fdc153a5ebf6264ad7f5ffd2baac8f37521f2c2bfd4ce90da5ff10fa20391fee4b3d29df52ba2edf49f4019fff46e91da533df0c06fa3882d2d5f1af0f4a1f683d4a94fa24622e4add123117a56e89988b52b744cc45a95b22e6a2d42d117351ea9688b928754bc45c94ba25622e4add123117a56e89988b52b744cc45a95b22e6a2d42d7f177308d821399bf77544f979e4b598c32ef6b08f033cc70bb55de2155ee3cdbcafe8e30bdee210ef7084639ce03d3ee0233ed1df09e9cf38c519decebb87ef2bd53147ac768d2f8cb601612dfbf7136ecefbaa3ea2600bb70855dbb883bbf8b960dbc5366171847bb83fef7ebfbd54c51c1e58dc16da0e3f0eeef81df91dbfbc4bdbfb848b23622d282cf99570f4c7abb6e379dfc1b7962a98c31b1a3ffddce6fb7b52aac53f091107344a5ff2d87c42e8f8eb2daf0fbf25fd7973d4e1293392e0a5eff8a3a0ec6221b785b6a5b7eef7bca53ce6e8e915f39bbd2de7f916c43f57c17a2b7ebb903c966f6447ae166c6b29be08cdbaddde5bdf3b6c187c342a28bbe4e1b0255c278edcc0267e05c42d00e8f8b80ef0ad7b3e5f298b39465c96cb06849b2b42c8359ce1267433c797b1e36d0d88db2e0ab8f2c41db108a56539f602bfa9f324fbe1cd31077d838f724740ea4786bf60e02b07e7597b0fcedfbae7f3957298f372dc00d7ac327f911597e5ac818fb108a7699915dc14c8c40e9cc105f48cba874ead9ea7fdd0c67da3676df8d56f7defc8df4cb928b7751a855deeea602b507694e1bac5b7eef97ca50ce6f08b974baecd32c47321cec93c0db2e0521f37c38364e3ad32838ae3dfac73749df69709bb3d204e931bc915fd774dffabbec14d5e3ffeae900f9a72513ee6006e1d9edb0a9786a1c373776fddf3f94a29cc2dfbb8c4ba4b6730cae19c15abb52fc9fee073a267744163ab331a1242cd7657a13016581fcf6151d99151760727b9656fd9fa53e561f8d6fd9eb714638ec63eafdd649559ceb7afe0dadb5ec5f8b1652f96b2ce98e7743fde97e7c685a587e42734b3f13698900771ef29dfa211f9166790d766618c46956bc2234ee9fca76f7d0f5e234598a3912ec45f3725caa80d9e8c7bfca4f62f57ed2b3c57e5ac6a3c87fb70477e64533c49dcc7198ef101a6f81d66788477d9676ff1dc1fd2d2a7e7fa0c973084195c12b70523bad4b3676a7da6f90c3a30a61acd40e91f7847e567844260940e71421ecc928e1e877009f7e40bbfa49c293816c80dae7ae7df568a30079fcac4df380b96ef4b265137b6d5c4fe4f55fb6ad87307256b54b0e70861a94fd9f1c6ca1c5bdee439e6ba4e12af4bda8147efb9a6b0e9cf3f402bcb4584c5cf057ddbf58dd6701eb80eb204ca32e47b4821cf0d82fc3548fb4dcfd66bf319db956a2fe144c8b1a2037d49ec39b82859a302cf116b14e604888b8c676bf35cb0ceb6739e0d62a6dc3a84310311706ff154f83cb6853d8171ee39a64551ecf7937ccc4149eee2d859418e425bfc894ffa37ecb9b29833edb97c8cc343b9bc00f99f498cc3e539ff465c6322085d2ef46e064e7156a65fcca98955483ed8b0b04e7b5e5c5780b96e0e772dbb1126f20ef2b84e656089add27c43a5ab4eed3928392e97e7395f3e1436c9f619e13d8f50e9fe84e9caf11c6d897f41c8dec91cff4ee36cb64edab359e9dc6ce2e11253da1cb8497bc66401dad7f72131c7fe68c817ddf194ff421e4288eb5655995563ff7295b900863d57d287b0ecb9c3dc92599e3347d16d63ffae1e95b23c0703c2e83159edf6fe84b518a5d639a4f5c6734edaceb199aa93e1397811ef029dcbe52e957f33f2c09f79144d7c06f2904d3bf27b282efdbe92873908fba397e18c395c046cc0849bac5cc33969d7e5f2ef567ceeba548dd7f39ce32fc038cb412ecfe9d82db6c0e226d00c3fb4b8a7a351a5fbca2832b849ed77788ed84af11379d98e1da86a3c18fb3fdb769b7d9daead598fe4610ebf0438ab2036a66c3bb75e12d123241c7a8ef7b1879b79715e279fbb92df0bae61c6e772633336cfd93618f779cb3caef6d93c67645c9969b2e56d2ef5cc0ae051362dc3fce4f09cc54d60e571a1aff6764c4ecc9c636a5c67e6681d928bb96e96af60b7242765e78c185164c2c20a86e6e1898cd6375f9b467c4ee57269cf09b1a42d9be96c1693e7f27d0887e71a9eb34f8de3724434796ed78ec5391cc8c74c5b0ebc36059c5b9cc628b679ce9e1940bd36cb735c86fc629b17ad5929ecc398c7e71025ce1d5bcf325c5421a606570e9739f32838bf15f6750fb3a36726df1afeab50f76a7bce1335b5388547c5bc3c04581c28222c840593af02790b93a3a41de8f09c937b25de73cb8f1c3b8fd80cef69ef049f4c8e53dbccdf8ff7945c9edb7478a56214173edbf5bde7001ac1d788ad2e3dbce7ccb374f2ad79db4dd27aba2f17738e9de3cb45ad1bfcf0cc7bcc7925ce1be5d85a6453c1a3c55781f94966ec0ea6bcc7b6e79cecabe5f34a9e9b94f673c5f6fc1628aa26b93cd7b6b8a354ae8afcd6d574ae0878edb990e00d95bfb238cb9a7f97999f774863ab98a3796d6e84f4c4267c9d3d07de397f8c22cd5b6ced59f69c930720567379cea8af6d35cf3dc8f4c3e1b90da757e30ccfdd67b82c67f3e749de577279cef65bd3b9b7c44df464fd3697f4493fe9a33c37d3f15bf385ce7a62d88f8615e6d873d725be427815cff96d2df23a537e38e23da6cde662ceb60f7f64e6c505ec28b8346d446ec9e63907ab561f183fe4d796e5b85d7a6be610a32b88cfa5398313b56713b59de68d3d305e64fcaec7333121c9af96f0339356560dae4bfc34d39e2b9789b0ecb9f27eab27f2e8f014fb9c16cfb9b195877c9e0bcd37b7da6cf31e8be7dc6cbe555ef2dc83cd6564cd1d1147cf5c216fe263c68493f9bc623612f9142f066f9c786b98b9089e73492894ba971773ceece42fac7c6bc95cadc573b963bbc34b9ef920786c1c67abaa22cfd97c159887697d3721f754e4393cb2ec46af9d305f29c0dcb5b68792586f9abff4320d5c383ee441e29b56fad69ff854b7b39ab49dda732539d3b2e7cef3de6b87973c2c0426dfb0556571cc716e7b82e79a165f79470998581cb5ce67a9ca730dab8dc2797df54b01e63a094f64e36dde6f02c907f5fb92157d5e6c2575137e34f2adaf9957720139b90bc76fcde484a83fd9785b259e7338cc6bd1d9795299d7a8cc73b7561b7e0b08e6397bb370fedc5e300ee6650d62466f79a8b8a289f18d57ea8526f65cd9d62c7bee22ef8b5b273eb7eb8eae3831b84667a52ad9733cea99e7c85eb39527d57da8ca734e1ee2366b27e0a2884e136fcf213627a4107367c118981f7327deb2b93ea3b79d6b6d131afbd2f85cc9595036cfe5f1a39b6fd579247517d0e21a9d4bafca734de71c1607e186fd0dace6daaa3ca7a2d7693b632b5b36219426b6dec7cbf1ababfa1488f5fba3584f5e4eec5a2d7e29c20c8d6487b23e18350d7baee437f98e3d27da7bc26bfe4aec0c76f026b5313df34a1e93f9235bc416296725b9d86af61cd77062678487a9980bcf2b99d8f3eabeeb79ead5790ef7ed6f64a9f777c4a12d7a73d6ad3cc72eeebd359eca4809cc75d03f4fe44f4fd91b1f278215eb861ecab973413f965a39d4fc68bda3697cae24e65c9ef36df024d8cfbf9e08bc40dfcab38a2dc9c556e539f12e79e7cae5e607aaf31cc7654a9c43e639ea9752df1afee9e52e8f756ac5d5923cab3d57c498537268e62cd4d18ecafecbfa16b68cf85ce9b547f025688f5a9c5d7a9ef0d8988d6bd671fc43e215b3debeb17fa9c479ccb97b95798ef717ae8f42e89fd3ecf492dff11f7839c2f10369b4cae44c61e4ceedc41bd8b2ca5c72066b8dc6bc7dec9bf1347b44b66276a5a39999b928be6d10e2b90cefb5cc33e3c4389659338e9ea93e66dd01f12d56ee7976ecd89df33d843b37fbd8386665897196c7a9e4417cd0ef218c2b58f172841127232bed30cb21bed9c41cc53bcce59e174260c6e6c3dfd5f10a1e49609d15fbef75a9ef2176325fd3fc20ab4b1e6b7bce7cac8e7dcfe6f3f1ab9527357dd5a32c16f029e1a6ec9a08a9afbbebe662bf8a6fd9be67cf43e79e8b1da7a5c2ba4c2b7e8e202611ab21f9befbbac89b794e185dc1cb6c7be4b3acf96b243c7a55e50af10b5c65e6d8a5f24d62db89cf6d8ad506f116ce0939c46770e7fff29438eb0e4710f2e167b01d5ef781fcd4291e93bdb8091db21bc70070e79bcfc2e74142cfc8df07f2b7ee704cfdf0f7615f7c718b47d4fe0c0506a7f3febab5e2fa73df8cfc6be15ff2154a45d1e89e7dc12e1c10a20af334342e1f54cba1951587e7d6dfe31c51a4545b67932cfcb273d856e77d65d5c4b1e7fecb57f49daf545f4f18ce3cebcc59f3e4b057cc581f4d2c9efb3ecfafdcfffbe575eba613dfadaa58b1c96dcb7812b2c53eba58f3e7e6f265cacf254994fb156b6cffbddf87c01659619bbcc666096bec230b790c29cfcdbd37957b7f1b9a1bf54ee79b605bcc3026ff7b884fc15253ff4c82f83b385ae025b1e77e8a95cac9537dd4cf148f0803019ff75dcedda7bbb52efa407f3d7122eed30f98fa675245cc6949e69ded64e35c1f51a08f6d9d8703a0ff6bf47b08ed7c6e62b2761073b774ccfbf646cca5c22b03ce7e8e5f01c12631db4b92d53f224ea9317b8adb74be06af36360dadb543e3ee4be4b9aa8220a2baf82c249d394c96df3eaf8ad8247c9a6b81006ee008c5bccb75f5053e582b324d6cfe34d6779af1d7a723dc4a66ac00b5b108e7380cc589517c952884bf06123c074311b9a636c4b70fd64a50740d47b84eef53c1db04f738c6276a690cad74bd46c2ce3936685ba7f6f5fcaa323c774ac7bcbf60103117161abd8e047a080153fdcee20f7a26e24edf132a1e04d7c84c83989706537af6e2c91fd3336b094b3bcd55c13d3dc9699a3d23dc3e0a1c93d5d3a2273862643cc240cdeedc127692380fb5ef99274f3d7a54fd78e49537c56a9a6dfebda60798d179fa12a9544eac43774c489ca2f82e312707c1f938d9c63db5a1381487b84d75c53b764af7635baf6020ed39be2f219e8310f746cc85c5e405badb6da103f38bcea0121bb465665d7872aebf4b8c933c0f40ae97cc04854769f513e2da3ac34a3ca34ac09d6431f20a037379457d3ece7599e7668a5d9b023bb28764a3b6d3160889399683b8428d4a14efceb6ea53bab2a5e895fc46a304cf718b5e8c47cc95131ecbf6388ed74e5732a7777906721d89470fe6c8e6d2775da09339418f4e13815562b7a9594bd86522064123aae0b87e78ee07f1a4e04048eb19ebe22d4aeb9d38746622826c84b66f25163ec69c9a9ffbc73d7d8d65ec3931c3c0bf3f62ae8c306371448a79cef8f681ac37f915ea3a3353c35979eb51e7f84539168dc16dc144b2969e1387fb0223e249499ecbff5d0818a4f612fbad49691a0fd9cee335eddae96a13c2560bc51e39da92fb8d188fad8a87cbf15c287a1331972fbc7afabde4288101c173e69a21642bb5d53aeb6c0d11f7b4d2df39c4b1b4e8041f12beee68ec92df729dca919af889ed3042e494acf47b14489ae9b857becd0f2de2448d6830ed3ee6e24bf9a6703bf41fa1f888da7e0afd2e19db0ea17b704a0c3911f6a8b01f794f097b2e2c117321c1167b09fcf536bde3438939e639e38b6ec154fa7fb27deea43f49a5e52a3a5bd25aa367ced8a3b148f2c4a2fcc2465873f42cd14597e4b982fedda74cc83c675a9fcc73b0adbcd912d11fb6e63c5fe4d01508bbe007db78e2ad929e45299e0b49c45c48c4334d474acef69c2b9e33ec7ab6d2adf71c26621c250e427e4ec2b34cd0c156d8808f4b5d708767652469cf15f58fb84dfb32c29e4b7a21ceca3c37947fcb5e6d766c657b33b100c5fb26cb94b3e7421231e717810ecbba9f04786e94c58688a7249ee391b2e3b46fda521ea9f47685e5e5fb6587923c67d973e6ac7969cf9d9a9e72416b23ee97b326077be3497e83af3df2dcbb094cf819682ff394b5a987e746ca9e33c625b6a75ea4b720d0435c90c6e59e9903d3b89df00492f9bf34864ba40ec379cca4ec84da51dfae727c2ec3733c86bfa4ab7d91b5300dfa98fb6caf6d2719dc0deaa988eebda416204764c6b2d7ca9e1be6d97310f855b388b990f00828be09ddc031fb93722685e00e234a4b969a8c9534e8dd5f17bf8e04d2a6532312790f633342c1f113834f84374825d6a9ddafb00d331561c6222f52fbd26a55b2a30ccfc9d8728bfde545dc00b16eec76deec059cb1cd3aa41a138ef08937e996e37e77e25de0b743c70f5b9263a5671c686f3fe621aa0bee894c02bdef7b34aaece9cc8fbd8616dd5995d1a2e313fe052f61bf19712ef1bcac1a5fed118cd8846a127300e156b10c79230d7745cdac48bb51b02e21d62a0d8f464e6e28fa457d1a17fdde35e1f252bc5d847cd01904eafdb6f88e82aeee2b217028475a7a0ff95706443fc3bf688c81bc47c4dccf2c345abef91783ef3fc721622e4add123117a56e89988b52b744cc45a95b22e6a2d42d117351ea9688b928754bc45c94ba25622e4add123117a56e89988b52b744cc45a95b22e6a2d42d117351ea9688b928754bc45c94ba25622e4add123117a56e89988b52b744cc45a95b7efdcffffcf2ff6d14cd7e</data> - </image> - <image name="image1"> - <data format="PNG" length="3625">89504e470d0a1a0a0000000d49484452000000ad0000003008060000006357fade00000df049444154789ced5d5f681cc71dfe6d21c529a69c4b1f24438b14eac0a9b4b0aa52904a83566f91e440a4bed8322ebdb31c1af925919d87da71b89c5f94cba5b8951ecef11904920d8ea4827c4a4145e7a0700ad8d5a918ee0c0e9c835a4e460f6721ccc9e8e5ebc3deeeed9f99ddd9bd9323c737603e4b3b7f7e33fb9b6fbff9edcc8a40445789a86e0800eb0000642a885da0eeed34f085c59a1d34f5a0080090134ba0084091192e2a93c0e8e22a00e0bbee78039f5ff45530b7a91268606c0694af38a6470c1480d03c1a0edc40cfe8ad000065d29d51bda2320914b7cb0d09d1402114ca885d9511fd30aa178c2ee71a8edb405774cd90db2c414ed497599d504e2c352443031dd1310336814061ef19d68a81b19986e336908bdc0bb9cd1202633e187322054a009458022580de39355a30932f562586403d75715c00e389ab080d876cff62f11800a0582c3e3f9204406a3e55d7095dde2e23168f21341c4267b782d070c87ffd7b601f0bebc3b01507c3361c53a68067c2b8d8069007821d32721d05043b64fd1febe7f391e873c1ece72351ddfebad9bb08db78bc736ed4d744de13fb18689f79bbf0ccb02229f4c5aa2f8debc77143c321d38d50fa7b319eb80a00989a9e02e280d2df6bcab39a5dddff8cabd95f2f8780d961831d72cd4c5b57fb3868fb8552f6a84137dd1d569eced4a47195c925718782996171873f80780060b7f24873a8170f50fb8d702b5f43fd28fab00f4067b7627b0261dd65bc9e817d6ef9a5ab441426a224118501481fcd12d120118961e8b52c25df68275e0aff334bd7eeb60bd7c7c3a9b71ed2d0af5f9192467b1998cdaee2c4e9537afb8ad24313b1b86b391302183c3e44f7bfb9cfec93a2f4d0d9e1116a7df515a9ab5bc1d6932d0a1c0cd0caed3425254932d6975ecee0c2c50bb4f5648b824782d47be3baa4d999bcd14e6b777b68ebc996a9fee091207576c874f6bdb3e6fae240db0d75acc73f1da79ed77f274d24ae62e2b309bd6c5353333d7ab4414444f977b3941c32dba3a166372be5ef66d57601f41cedd3eb33a6c0c100ad2869da18dea0e6c3872551fb0207037a7f75fb004c5c49d2ecad395b5b4d4dcd943eba403bc776e8e51fff484a1299679e9f375c4ec9ab86757b8326b48701768da6f4f702ebc0d2724668c66b653bbb15b52315a67de7dca8ce489ddd0ab00d14bb4b261962adafd45fb65d8fc56376fb1681d070c8549f551b9a18b154f93d43936aff3f1f89f2c76b97adf97107eadac4d09ed2df0b00aa84aa8c8396bfd45faecd3e0be397facbeaefd7818163c7cde35d617a9d69c3f3abb8b6e683119bd284d33dcc191b26a26b1e99db09a31707a9596233879529db5ee3b33f913ae383475aa9a7bb87868e0f99190d40762d4bededbfb131745b870cad8efcdd2c4d5c4992914996e617aacc63b1237f374b0bb716e8dc471fe8368c0c876968e884b99d69a0edafe672494992e286b647864768e4ed5352783884afd7d64c7d0b1e0952e8d871ea7bb35f9a9e9ec2ca7f86e8e956988888da3bba68e47458edafa59d81a303d4fae107eee3c0e8972ffb8ef651f87498b4eb8ad243edb1b8e9fe5e884431776b8e88883a6599ba3ebb26a91a62b7b6786c8ea76b37ebc7b49ea309801ad69a138b22e8ccc0a86f35bb0aec9a176fb98e029085ce1436862175356d6524a5c2bcb98e82ba68e1d99faf3294b69a67dabb68d1f0967eb0faabb58b2cecfd71185764a18f83b13e6d11ebd53e3c30b73f70ecb889d1b10cdbfd030095697d685923cabf18a4ec7162a64fbe7e48e7fed5eaabde5ab4ad15378a4534373753faab15eab9df45835fda35ab51cb8dbc7f96d6ee666d7a9395ff713c866b37ae1311e9daf6e1370f69e874582f1fbb18a5be37fb252b535b35b0510b9f79ef8c5e67f8cbdb424c36faef351b536dfcefa17efd40e0104d7cfc89de4f16631a19d5cb3878b64fe089684c8183015a9a5f503d5e4ed4ce884e29b6523fc62d3830a2574ccda74c8c319eb80a23c375762baa8eaeac66a7a6a7980c83a29931989abad22eabbc5b14442b2fa219bdf47f35bbcaec8f9521354d6b1c0716437bb5cfdabe68bcfc071bdb65ac3d22a2cf2b8ce61367efdb57985a3adb4934431b4407fcd7afe12b7f9fa53000374d9bcdaec22d5fdfd13efa030dea76ee3c794c6d27dbf559bd723b4dc91f4a121d96a4a42449434327a4334d67f4fced723b2589880e4bd2c0d1012222537ddacfe9a30b7abb71f9927e2d79e33af7c930787ca85afe35b5bcb1fe89cf93ea5ae4f3b0a93d2f4fa076b9dd64afd69f3080b6bfa8e370ea6098d2b716282919c6a1629b6e8f4cbeecb3b67fe9e205ee9367a35884f633017560c0899423d3eaa9f2c6acd6f6a6ee39682fd8e3b45ac05b6b7f69396362544d7362d941e3c1bc6a665d6769662dcae0649f29fe09c6aab958653257cdc81b1706f234adf109d4d9ad9819d8629f674d6bb563bd7a5d8bd6e8f66d032855d70c7af420e4376aa0e14f1708eff491d7245d49133deaf1d5eee8c5410a7266e4ce761927de3ec58db1b252f048903e895ca2d623ad648dcf363535d3d3273b4c4d67d38011a0ed9659a369dacefa24e0c53f8da9a9a999929f8e53ebabaa864f1a62ab2ccdd8d4d44c43a92fdca32bc4d694464ddfa598e3c722e330dddf0bad4f2cfb346d6eb5c3b826e0a5e09120cd5e9f5619bfe4f50d9801b5cd307ed3683ae7f30d9903d352951162f118787142cc81ada15061e64adc148b2ac362b7b2aa2da99b70b00b338312e97b1eb472b178ccd1ced47cca94df54ce6a97965fb347bb8e6ab9a5e58cf73756a8f687f97b835de72351b5df5998c641d43ec7378f8cf642c321200f358a60c84f9e7771456640f1eaaead5a53a650024d786b3f30b6ff37b73470ef90bc325d1970ddcde5396d03855d8fd10a878e69272d461701a55c3d4cd93815fcfd4071a61d13dbcd556b12b5c7a9632d97d9e5e444ed0c5dae4c88cc7a0900a73ec3f5cc7aa9ae13a5cc99785a7bd1e51ca2a89c92ae437be3770a08a1b26909406ed3dc9fd483229449f5ba8651f83ff397db2c210a737d0396fac49856343a50a7542bd3fa2d278285923d3e6d75585e1cbb260742756f889c804d4bb3fa9b59474dfd1dbf63af375010eb2fe52b4f380ffd1bb8c9df0d681c3f77a67d460c6b4db530addf72428f264b7dd6c3980337335cbb954980c794228cc7ed0767bca2a8adbf514ebd46072aefaa0b63de780b9df903d07239c51d376b7957a6dd8b94db5435ec4c5ec071f719d3ba31a8e2128d914b95bd1a5edb07bf1f997536d346977db463c0e8b20706077f97a0e39e1187722d97d94777c8c9c3e5e9bd7059834356ce94c550d12c96d40b8e5d2edaf4bb645a91ef4204c6bc6bdde872ce33d3721dc5eb4411ad17ce5f1a6ab95cd5dca38babe0ad3d28e2fc25227e9cb6006e94a0770ea0922a1d280fd0a40fa7dd64b43b993167da0668dd9e6fe026f62dd37a897b3bbed9e33910a31fe0326d6ddf91882eb3e3e870d1ca3c8616c140c1bd7edb0cd6d0fae260349d03c5f933cfb3d3f266a44543f7ced9cf96591de579635a2386e6c5162b7e98f659685a1e66d6bd9fe69613629adf71b5ab3bd844ca7186b86953a6d396f8f5d9da17d15456c7da279a562e0129e31933a88e6edcbf3c7053e04405f8fdd8179a96815e4e75b714211c47e73293c9615d66889fc4655ae3cc9bb6e70b8cb93bde7e625a1e739477810154f3b9adb2471757f9fd00ffbed4d4df5aebe59467216fd1c5665a221ab8699f510040716786a5c88cd0695ca6d3ba30ad48bc6e3f32ad51d30a9d2286bd3eebae3056bcd4c468fb4cd36a767b3d7328fa49acda4f2eb4ac104e7691d7e4779757e64f8fa9ebe73f713cb9702a02f0ca17dfdda1e6caa94e2f271f3494223330d61755f274e1f55feaf5f54c2ee1f6b76abf9496411afaa3d899b6431fcfd2d653f171b8faa1f98401ebfe099fa9e3e07d007146bdb838c8ddf7bab30bbcfc12915f7f0a1c98a5c7eff3eb379dc66d29fa67be67c5b4caa4c00c2772665a81995c2f4d2b6aaf1f663296cf71cee2796a9f812d97d94f5aae865d079cfc484ea8f73eba9c035079a1c0e95fa90cdb2e3a33d312d1f4bd024efcc3fb59aede5f6569e12df1733e5af233139d66b828d312cd52e8e22085fffb98ba7e7648a8be3d675aaa3266fb9534ad093c814c4c4b44ad9753f876abcf96cf6a9f28f24e6787e42c25dfb49fce3dfbaf2cc5bf66efcb969b0669fc0df61372e24e01176eb7d2d6537bb9c08141baa43ca491df9acf049a3c58995cf21e5f2bf9a0591fdf4350cae20ce9e789e134e35386930575d7b40c0ccdbb8f8f17a656b438bacbea5cdb1dc76340a6e674614c91271bb601d9e1c9abd96f635a276d24c2805e92d7ef21040e0c52fecfe25ad48d69fda0c66c6e4c6b6428cf4c6b40b7279f9569b5fbd7fab7056231ae864a4b9a0e9dec21f9ab3cd1efdb88beca53fa611b6d3d756678a5254de9933dfa93696717f8e0252296e615d5a6565c01c0f30b637daeab59111c4de73c11ad5054c2809ede1c51253c5427a6b5aec28d9a95c92486f11b5df466374b23b218484e3833f8d43dc0ba1bcd2f02fcbd067c66ace1c3d80e4f0ccd1e66c1906690e89b9d31f5048248f2faf544d1374656b4ee7bf58bbc8175bb5ed7bf2161b5cb43b9a97b05d3fe54de5e1339a15e1fb899a9eec77570bca97b05289315078b54f7bdd6651f2f80f13b057d3fad16c75526d571e56a1b278dc1c44df5db5d4ec9ebf70ffc6ac2067ebfd191a9fcfcad05de6147799abfcf948542af361bf842a27b46d44f1b8aa25f49d0c01703c532a2aa5dbc32af170c8ca91a6c3f0c4c03f72f8a17a888f9bd6258c5e10d48031b6844cf0532eb25c733415eb1a6f048035f48f45f01d438a49f3d0bda36b406b336d00fd6a7a24a3c105057fd5a7c4dc30154374934fe066e036bc5ff03859b69b81278b6550000000049454e44ae426082</data> - </image> -</images> -<connections> - <connection> - <sender>Menu</sender> - <signal>clicked(QListBoxItem*)</signal> - <receiver>Tab_Signalisations</receiver> - <slot>setFocus()</slot> - </connection> - <connection> - <sender>buttonCancel</sender> - <signal>clicked()</signal> - <receiver>ConfigurationPanel</receiver> - <slot>reject()</slot> - </connection> - <connection> - <sender>Menu</sender> - <signal>clicked(QListBoxItem*)</signal> - <receiver>ConfigurationPanel</receiver> - <slot>changeTabSlot()</slot> - </connection> - <connection> - <sender>buttonSave</sender> - <signal>clicked()</signal> - <receiver>ConfigurationPanel</receiver> - <slot>saveSlot()</slot> - </connection> - <connection> - <sender>stunButtonGroup</sender> - <signal>clicked(int)</signal> - <receiver>ConfigurationPanel</receiver> - <slot>useStunSlot(int)</slot> - </connection> - <connection> - <sender>buttonApplySkin</sender> - <signal>clicked()</signal> - <receiver>ConfigurationPanel</receiver> - <slot>applySkinSlot()</slot> - </connection> - <connection> - <sender>DriverChoice</sender> - <signal>clicked(int)</signal> - <receiver>ConfigurationPanel</receiver> - <slot>driverSlot(int)</slot> - </connection> - <connection> - <sender>buttonOk</sender> - <signal>clicked()</signal> - <receiver>ConfigurationPanel</receiver> - <slot>accept()</slot> - </connection> -</connections> -<tabstops> - <tabstop>fullName</tabstop> - <tabstop>userPart</tabstop> - <tabstop>username</tabstop> - <tabstop>password</tabstop> - <tabstop>hostPart</tabstop> - <tabstop>sipproxy</tabstop> - <tabstop>autoregister</tabstop> - <tabstop>Register</tabstop> - <tabstop>buttonSave</tabstop> - <tabstop>buttonOk</tabstop> - <tabstop>buttonCancel</tabstop> - <tabstop>Tab_Signalisations</tabstop> - <tabstop>buttonHelp</tabstop> - <tabstop>SkinChoice</tabstop> - <tabstop>zoneToneChoice</tabstop> - <tabstop>confirmationToQuit</tabstop> - <tabstop>checkedTray</tabstop> - <tabstop>voicemailNumber</tabstop> - <tabstop>useStunYes</tabstop> - <tabstop>STUNserver</tabstop> - <tabstop>playTones</tabstop> - <tabstop>pulseLength</tabstop> - <tabstop>sendDTMFas</tabstop> - <tabstop>Menu</tabstop> - <tabstop>Tab_Audio</tabstop> - <tabstop>codec1</tabstop> - <tabstop>codec2</tabstop> - <tabstop>codec3</tabstop> - <tabstop>Tab_Preferences</tabstop> - <tabstop>Tab_About</tabstop> - <tabstop>useStunNo</tabstop> - <tabstop>ringsChoice</tabstop> - <tabstop>buttonApplySkin</tabstop> -</tabstops> -<includes> - <include location="local" impldecl="in implementation">configurationpanel.ui.h</include> -</includes> -<slots> - <slot>saveSlot()</slot> - <slot>changeTabSlot()</slot> - <slot>useStunSlot( int id )</slot> - <slot>applySkinSlot()</slot> - <slot>driverSlot( int id )</slot> -</slots> -<functions> - <function access="private" specifier="non virtual">init()</function> -</functions> -<layoutdefaults spacing="6" margin="11"/> -</UI> diff --git a/src/gui/qt/configurationpanel.ui.h b/src/gui/qt/configurationpanel.ui.h deleted file mode 100644 index 920f25f32109339824a640acd5408ef81460442d..0000000000000000000000000000000000000000 --- a/src/gui/qt/configurationpanel.ui.h +++ /dev/null @@ -1,269 +0,0 @@ -/**************************************************************************** -** ui.h extension file, included from the uic-generated form implementation. -** -** If you want to add, delete, or rename functions or slots, use -** Qt Designer to update this file, preserving your code. -** -** You should not define a constructor or destructor in this file. -** Instead, write your code in functions called init() and destroy(). -** These will automatically be called by the form's constructor and -** destructor. -*****************************************************************************/ -#include <qdir.h> -#include <qstringlist.h> - -#include "../../global.h" -#include "../../manager.h" -#include "skin.h" -#include "../../user_cfg.h" -#include "../../audio/audiolayer.h" -#include "qjlistboxpixmap.h" -#include "qmessagebox.h" -#include "qtGUImainwindow.h" - -void ConfigurationPanel::init() -{ - // For reading settings at application startup - // List skin choice from "skins" directory - QDir dir(Skin::getPath(QString(SKINDIR))); - if ( !dir.exists() ) { - _debug("\nCannot find 'skins' directory\n"); - return; - } else { - dir.setFilter( QDir::Dirs | QDir::NoSymLinks); - dir.setSorting( QDir::Name ); - - QStringList list; - list = dir.entryList(); - for (unsigned int i = 0; i < dir.count(); i++) { - if (list[i] != "." && list[i] != ".." && list[i] != "CVS") { - SkinChoice->insertItem(list[i]); - } - } - } - - // List ring choice from "rings" directory - QDir ringdir(Skin::getPath(QString(RINGDIR))); - if ( !ringdir.exists() ) { - _debug ("\nCannot find 'rings' directory\n"); - return; - } else { - ringdir.setFilter( QDir::Files | QDir::NoSymLinks); - ringdir.setSorting( QDir::Name ); - - QStringList ringlist; - ringlist = ringdir.entryList(); - for (unsigned int i = 0; i < ringdir.count(); i++) { - if (ringlist[i] != "." && ringlist[i] != ".." && ringlist[i] != "CVS") { - ringsChoice->insertItem(ringlist[i]); - } - } - } - // List audio devices - const char* devicename ; - const char* hostapiname; - - int top = 0; - AudioDevice devStruct; - - portaudio::AutoSystem autoSys; - // For each device - for (int i = 0; i < Manager::instance().deviceCount(); i++) { - // Fill the device structure - devStruct = Manager::instance().deviceList(i); - hostapiname = devStruct.hostApiName; - devicename = devStruct.deviceName; - - QString hostNameApi(hostapiname) ; - QString name = hostNameApi + " (device #" + QString::number(i) + ")"; - - // New radio button with found device name - QRadioButton* device = new QRadioButton(DriverChoice); - device->setGeometry( QRect( 10, 30 + top, 390, 21 ) ); - - // Set label of radio button - device->setText(devicename); - - // Add tooltip for each one - QToolTip::add(device , name ); - - top += 30; - if (Manager::instance().defaultDevice(i)) { - device->setChecked(true); - } - } - // Set position of the button group, with appropriate length - DriverChoice->setGeometry( QRect( 10, 10, 410, top + 30 ) ); - - ManagerImpl& manager = Manager::instance(); - // For signalisations tab - -fullName->setText(QString(manager.getConfigString( -SIGNALISATION , FULL_NAME))); - userPart->setText(QString(manager.getConfigString(SIGNALISATION, -USER_PART))); - username->setText(QString(manager.getConfigString(SIGNALISATION, -AUTH_USER_NAME))); - password->setText(QString(manager.getConfigString(SIGNALISATION, PASSWORD))); - hostPart->setText(QString(manager.getConfigString(SIGNALISATION, -HOST_PART))); - sipproxy->setText(QString(manager.getConfigString(SIGNALISATION, PROXY))); - autoregister->setChecked(manager.getConfigInt(SIGNALISATION, -AUTO_REGISTER)); - playTones->setChecked(manager.getConfigInt(SIGNALISATION, PLAY_TONES)); - pulseLength->setValue(manager.getConfigInt(SIGNALISATION, PULSE_LENGTH)); - sendDTMFas->setCurrentItem(manager.getConfigInt(SIGNALISATION, -SEND_DTMF_AS)); - STUNserver->setText(QString(manager.getConfigString(SIGNALISATION, -STUN_SERVER))); -((QRadioButton*)stunButtonGroup->find(manager.getConfigInt(SIGNALISATION, -USE_STUN)))->setChecked(true); - // For audio tab - -((QRadioButton*)DriverChoice->find(manager.getConfigInt(AUDIO, -DRIVER_NAME)))->setChecked(true); - - codec1->setCurrentText(QString(manager.getConfigString(AUDIO, CODEC1))); - codec2->setCurrentText(QString(manager.getConfigString(AUDIO, CODEC2))); - codec3->setCurrentText(QString(manager.getConfigString(AUDIO, CODEC3))); - - ringsChoice->setCurrentText(QString(manager.getConfigString(AUDIO, -RING_CHOICE))); - - // For preferences tab - SkinChoice->setCurrentText(QString(manager.getConfigString( - PREFERENCES, SKIN_CHOICE))); - confirmationToQuit->setChecked(manager.getConfigInt( - PREFERENCES, CONFIRM_QUIT)); - zoneToneChoice->setCurrentText(QString(manager.getConfigString( - PREFERENCES, ZONE_TONE))); - checkedTray->setChecked(manager.getConfigInt( - PREFERENCES, CHECKED_TRAY)); - voicemailNumber->setText(QString(manager.getConfigString( - PREFERENCES, VOICEMAIL_NUM))); - - // Init tab view order - Tab_Signalisations->show(); - Tab_Audio->hide(); - Tab_Preferences->hide(); - Tab_About->hide(); - - // Set items for QListBox - new QjListBoxPixmap (QjListBoxPixmap::Above, - QPixmap(Skin::getPathPixmap(QString(PIXDIR),QString(PIXMAP_SIGNALISATIONS))), "Signalisation", Menu ); - new QjListBoxPixmap (QjListBoxPixmap::Above, - QPixmap(Skin::getPathPixmap(QString(PIXDIR), QString(PIXMAP_AUDIO))) , - "Audio", Menu ); - - new QjListBoxPixmap (QjListBoxPixmap::Above, - QPixmap(Skin::getPathPixmap(QString(PIXDIR), QString(PIXMAP_PREFERENCES))), - "Preferences", Menu ); - new QjListBoxPixmap (QjListBoxPixmap::Above, - QPixmap(Skin::getPathPixmap(QString(PIXDIR), QString(PIXMAP_ABOUT))), - "About", Menu ); -} - -// For saving settings at application 'save' -void ConfigurationPanel::saveSlot() -{ - ManagerImpl& manager = Manager::instance(); - manager.setConfig("VoIPLink", "SIP.fullName", -string(fullName->text().ascii())); - manager.setConfig("VoIPLink", "SIP.userPart", -string(userPart->text().ascii())); - manager.setConfig("VoIPLink", "SIP.username", -string(username->text().ascii())); - manager.setConfig("VoIPLink", "SIP.password", -string(password->text().ascii())); - manager.setConfig("VoIPLink", "SIP.hostPart", -string(hostPart->text().ascii())); - manager.setConfig("VoIPLink", "SIP.proxy", string(sipproxy->text().ascii())); - manager.setConfig("VoIPLink", "SIP.autoregister", autoregister->isChecked()); - manager.setConfig("VoIPLink", "DTMF.pulseLength", pulseLength->value()); - manager.setConfig("VoIPLink", "DTMF.playTones", playTones->isChecked()); - manager.setConfig("VoIPLink", "DTMF.sendDTMFas" , sendDTMFas->currentItem()); - manager.setConfig("VoIPLink", "STUN.STUNserver", -string(STUNserver->text().ascii())); - - manager.setConfig("Audio", "Codecs.codec1", -string(codec1->currentText().ascii())); - manager.setConfig("Audio", "Codecs.codec2", -string(codec2->currentText().ascii())); - manager.setConfig("Audio", "Codecs.codec3", -string(codec3->currentText().ascii())); - - if (ringsChoice->currentText() != NULL) - manager.setConfig("Audio", "Rings.ringChoice", - string(ringsChoice->currentText().ascii())); - - manager.setConfig("Preferences", "Themes.skinChoice", - string(SkinChoice->currentText().ascii())); - manager.setConfig("Preferences", "Options.zoneToneChoice", - string(zoneToneChoice->currentText().ascii())); - manager.setConfig("Preferences", "Options.confirmQuit", - confirmationToQuit->isChecked()); - manager.setConfig("Preferences", "Options.checkedTray", -checkedTray->isChecked()); - - manager.setConfig("Preferences", "Options.voicemailNumber", - string(voicemailNumber->text().ascii())); -#if 0 - QMessageBox::information(this, "Save settings", - "You must restart SFLPhone", - QMessageBox::Yes); -#endif -} - -// Handle tab view according to current item of listbox -void ConfigurationPanel::changeTabSlot() -{ - switch (Menu->currentItem()) { - case 0: - TitleTab->setText("Setup signalisation"); - Tab_Signalisations->show(); - Tab_Audio->hide(); - Tab_Preferences->hide(); - Tab_About->hide(); - break; - case 1: - TitleTab->setText("Setup audio"); - Tab_Signalisations->hide(); - Tab_Audio->show(); - Tab_Preferences->hide(); - Tab_About->hide(); - break; - case 2: - TitleTab->setText("Setup preferences"); - Tab_Signalisations->hide(); - Tab_Audio->hide(); - Tab_Preferences->show(); - Tab_About->hide(); - break; - case 3: - TitleTab->setText("About"); - Tab_Signalisations->hide(); - Tab_Audio->hide(); - Tab_Preferences->hide(); - Tab_About->show(); - break; - } -} - - -void ConfigurationPanel::useStunSlot(int id) -{ - Manager::instance().setConfig("VoIPLink", "STUN.useStun", id); -} - - -void ConfigurationPanel::applySkinSlot() -{ - Manager::instance().setConfig("Preferences", "Themes.skinChoice", -string(SkinChoice->currentText().ascii())); -} - - -void ConfigurationPanel::driverSlot(int id) -{ - Manager::instance().setConfig("Audio", "Drivers.driverName", id); -} diff --git a/src/gui/qt/configurationpanelui.h b/src/gui/qt/configurationpanelui.h deleted file mode 100644 index 701dddf0aa5929ce900c960e8e15d8d7e0b28015..0000000000000000000000000000000000000000 --- a/src/gui/qt/configurationpanelui.h +++ /dev/null @@ -1,163 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'configurationpanel.ui' -** -** Created: Wed Jul 6 11:32:13 2005 -** by: The User Interface Compiler ($Id$) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ - -#ifndef CONFIGURATIONPANEL_H -#define CONFIGURATIONPANEL_H - -#include <qvariant.h> -#include <qpixmap.h> -#include <qdialog.h> - -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QSpacerItem; -class QFrame; -class QPushButton; -class QListBox; -class QListBoxItem; -class QLabel; -class QTabWidget; -class QWidget; -class QGroupBox; -class QLineEdit; -class QCheckBox; -class QButtonGroup; -class QRadioButton; -class QSpinBox; -class QComboBox; - -class ConfigurationPanel : public QDialog -{ - Q_OBJECT - -public: - ConfigurationPanel( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~ConfigurationPanel(); - - QFrame* line1; - QPushButton* buttonHelp; - QPushButton* buttonSave; - QPushButton* buttonOk; - QPushButton* buttonCancel; - QListBox* Menu; - QLabel* TitleTab; - QFrame* line2; - QTabWidget* Tab_Signalisations; - QWidget* SIPPage; - QGroupBox* groupBox1; - QLabel* textLabel2; - QLineEdit* fullName; - QLineEdit* userPart; - QLabel* textLabel3; - QLabel* textLabel2_3; - QLineEdit* username; - QLineEdit* hostPart; - QLineEdit* sipproxy; - QLabel* textLabel3_2_2; - QLineEdit* password; - QLabel* textLabel1_3; - QLabel* textLabel3_2; - QCheckBox* autoregister; - QPushButton* Register; - QWidget* STUNPage; - QGroupBox* groupBox3; - QLabel* textLabel1_5; - QLineEdit* STUNserver; - QButtonGroup* stunButtonGroup; - QRadioButton* useStunNo; - QRadioButton* useStunYes; - QWidget* DTMFPage; - QGroupBox* SettingsDTMF; - QCheckBox* playTones; - QLabel* labelPulseLength; - QSpinBox* pulseLength; - QLabel* labelSendDTMF; - QComboBox* sendDTMFas; - QTabWidget* Tab_Audio; - QWidget* DriversPage; - QButtonGroup* DriverChoice; - QWidget* CodecsPage; - QButtonGroup* CodecsChoice; - QComboBox* codec1; - QComboBox* codec2; - QComboBox* codec3; - QLabel* textLabel1_4; - QLabel* textLabel1_4_2; - QLabel* textLabel1_4_3; - QWidget* RingPage; - QComboBox* ringsChoice; - QTabWidget* Tab_Preferences; - QWidget* DriversPage_2; - QComboBox* SkinChoice; - QPushButton* buttonApplySkin; - QWidget* TabPage; - QLabel* labelToneZone; - QComboBox* zoneToneChoice; - QCheckBox* confirmationToQuit; - QCheckBox* checkedTray; - QLabel* textLabel1_6; - QLineEdit* voicemailNumber; - QTabWidget* Tab_About; - QWidget* DriversPage_3; - QLabel* pixmapLabel1; - QLabel* textLabel2_2; - QWidget* CodecsPage_2; - QLabel* textLabel1; - QLabel* pixmapLabel2; - -public slots: - virtual void saveSlot(); - virtual void changeTabSlot(); - virtual void useStunSlot( int id ); - virtual void applySkinSlot(); - virtual void driverSlot( int id ); - -protected: - QGridLayout* ConfigurationPanelLayout; - QVBoxLayout* layout19; - QHBoxLayout* layout28; - QSpacerItem* Horizontal_Spacing2; - QVBoxLayout* layout17; - QVBoxLayout* layout24; - QGridLayout* groupBox1Layout; - QVBoxLayout* layout23; - QSpacerItem* spacer9; - QHBoxLayout* layout19_2; - QSpacerItem* spacer7; - QVBoxLayout* stunButtonGroupLayout; - QGridLayout* SettingsDTMFLayout; - QVBoxLayout* layout11; - QHBoxLayout* layout10; - QSpacerItem* spacer6; - QHBoxLayout* layout7; - QSpacerItem* spacer3; - QHBoxLayout* layout8; - QSpacerItem* spacer4; - QGridLayout* layout18; - QVBoxLayout* layout17_2; - QVBoxLayout* layout18_2; - QVBoxLayout* layout17_3; - QHBoxLayout* layout16; - QSpacerItem* spacer5; - QHBoxLayout* layout16_2; - QSpacerItem* spacer6_2; - -protected slots: - virtual void languageChange(); - -private: - QPixmap image0; - QPixmap image1; - - void init(); - -}; - -#endif // CONFIGURATIONPANEL_H diff --git a/src/gui/qt/jpushbutton.cpp b/src/gui/qt/jpushbutton.cpp deleted file mode 100644 index 67f1d555a339c7b5176e835af5830d5b5504ab06..0000000000000000000000000000000000000000 --- a/src/gui/qt/jpushbutton.cpp +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Jerome Oufella (jerome.oufella@savoirfairelinux.com) - * - * Portions (c) Valentin Heinitz - * - * This 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, - * or (at your option) any later version. - * - * This 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 dpkg; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include <qcursor.h> -#include <qwidget.h> -#include <qlabel.h> -#include <qimage.h> -#include <qbitmap.h> -#include <qevent.h> - -#include "jpushbutton.h" -#include "skin.h" -#include "qtGUImainwindow.h" - -// This is the default constructor, it must be called with pixname being -// the base name for the picture used as button pixmap. -JPushButton::JPushButton (QWidget* parent, const char* name, - const char* pixname) : QLabel (parent, name) { - - guiWidget = (QtGUIMainWindow*)parent; - - // Load pictures - this->loadPixmaps(pixname); - - // Create transparency bitmasks - QImage tmpImg[2]; - MyCreateHeuristicMask (*(this->btnImg[0]), tmpImg[0]); - mask[0] = tmpImg[0]; - - MyCreateHeuristicMask (*(this->btnImg[1]), tmpImg[1]); - mask[1] = tmpImg[1]; - - // Resize ourself - resize (this->btnImg[0]->width(), this->btnImg[0]->height() ); - - // Set default pixmap (released) - setMask (mask[0]); - setPixmap (*(this->btnImg[0])); - - // Default cursor is pointing hand - setCursor (QCursor (Qt::PointingHandCursor)); - - setFocusPolicy(QWidget::NoFocus); - show(); -} - -// Delete allocated items -JPushButton::~JPushButton (void) { - delete this->btnImg[0]; - delete this->btnImg[1]; -} - -// This loads the pixmaps used for pressed/released state. -void -JPushButton::loadPixmaps (const char* pixname) { - QString pressedPixmapPath, releasedPixmapPath; - - pressedPixmapPath = Skin::getPath(QString(SKINDIR), - guiWidget->setPathSkin(), - QString(pixname) + PRESS_PREFIX + ".png"); - releasedPixmapPath = Skin::getPath(QString(SKINDIR), - guiWidget->setPathSkin(), - QString(pixname) + REL_PREFIX + ".png"); - - this->btnImg[0] = new QImage (releasedPixmapPath); - this->btnImg[1] = new QImage (pressedPixmapPath); -} - -// This function was derived from QImage::createHeuristicMask() -// It creates the heuristic mask that will allow transparency. -int -JPushButton::MyCreateHeuristicMask (const QImage & img_XX, QImage &m, - long transp_col) { - if (img_XX.isNull()) { - return -1; - } - - QImage img = img_XX.convertDepth(32); - - int w = img.width(); - int h = img.height(); - m = QImage(w, h, 1, 2, QImage::LittleEndian); - m.setColor( 0, 0xffffff ); - m.setColor( 1, 0 ); - m.fill( 0xff ); - QRgb bg; - // User defined transp. color not set. get it from pixel at 0x0 - if (transp_col == -1) { - // Pixel im Punkt 0x0 - bg = *((QRgb*)img.scanLine(0)+0) & 0x00ffffff ; - } - - // Use user defined color for transparency - else { - bg = transp_col & 0x00ffffff; - } - - - QRgb *p; - QRgb p24; - uchar * mp; - int x,y; - for (y = 0; y < h; y++) { - for (x = 0; x < w; x++) { - p = (QRgb *) img.scanLine(y) + x ; - - p24 = (*p & 0x00ffffff ); - if (p24 == bg) { - mp = m.scanLine(y); - - *(mp + (x >> 3)) &= ~(1 << (x & 7)); - } - p++; - } - } - return 0; -} - -// This slot is toggled when the button is pressed -// It changes the picture. -void -JPushButton::iAmPressed (void) { - setPixmap (*(this->btnImg[1])); - setMask (mask[1]); -} - -// This slot is toggled when the button is released -// It changes the picture. -void -JPushButton::iAmReleased (void) { - setPixmap (*(this->btnImg[0])); - setMask (mask[0]); -} - -// Mouse button released -void -JPushButton::mousePressEvent (QMouseEvent *e) { - switch (e->button()) { - case Qt::LeftButton: - iAmPressed(); - break; - - default: - e->ignore(); - break; - } -} - -// Mouse button released -void -JPushButton::mouseReleaseEvent (QMouseEvent *e) { - switch (e->button()) { - case Qt::LeftButton: - iAmReleased(); - // Emulate the left mouse click - if (this->rect().contains(e->pos())) { - emit clicked(); - } - break; - - default: - e->ignore(); - break; - } -} - -void -JPushButton::mouseMoveEvent (QMouseEvent *e) { - e->accept(); -} - diff --git a/src/gui/qt/jpushbutton.h b/src/gui/qt/jpushbutton.h deleted file mode 100644 index 0ef7ac7fa964f31c55fa3c65ad62f576d01f35b2..0000000000000000000000000000000000000000 --- a/src/gui/qt/jpushbutton.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Jerome Oufella (jerome.oufella@savoirfairelinux.com) - * - * Portions (c) Valentin Heinitz - * - * This 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, - * or (at your option) any later version. - * - * This 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 dpkg; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef __J_PUSH_BUTTON_H__ -#define __J_PUSH_BUTTON_H__ - -#include <qbitmap.h> -#include <qevent.h> -#include <qimage.h> -#include <qobject.h> -#include <qlabel.h> -#include <qwidget.h> -#include <qstring.h> - -#define PRESS_PREFIX "_on" -#define REL_PREFIX "_off" - -class QtGUIMainWindow; - -class JPushButton : public QLabel { -Q_OBJECT - -public: - JPushButton (QWidget*, const char*, const char*); - ~JPushButton (void); - -private: - QtGUIMainWindow* guiWidget; - - void iAmPressed (void); - void iAmReleased (void); - QImage* btnImg[2]; - QBitmap mask[2]; - void loadPixmaps (const char*); - - // This function was derived from QImage::createHeuristicMask() - int MyCreateHeuristicMask (const QImage &, QImage &, long = -1 ); - - -protected: - void mousePressEvent (QMouseEvent *); - void mouseReleaseEvent (QMouseEvent *); - void mouseMoveEvent (QMouseEvent *); - -signals: - void clicked (void); -}; - -#endif // defined(__J_PUSH_BUTTON_H__) diff --git a/src/gui/qt/mydisplay.cpp b/src/gui/qt/mydisplay.cpp deleted file mode 100644 index 7a89c8a2eadbbe2b10c8fbebba2347f29bc064aa..0000000000000000000000000000000000000000 --- a/src/gui/qt/mydisplay.cpp +++ /dev/null @@ -1,497 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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 <qapplication.h> -#include <qdatetime.h> -#include <qfont.h> -#include <qpainter.h> -#include <qstring.h> -#include <stdio.h> -#include <math.h> - -#include "skin.h" -#include "mydisplay.h" -#include "qtGUImainwindow.h" - -#define TABULATION 1 -#define TEXT_LINE 2 -#define TIMER_LINE 4 -#define FONT_FAMILY "Courier" -// Others fixed font support "Monospace", "Fixed", "MiscFixed" -#define FONT_SIZE 10 - -/////////////////////////////////////////////////////////////////////////////// -// MyDisplayThread Implementation // -/////////////////////////////////////////////////////////////////////////////// - -/** - * Default constructor. - */ -MyDisplayThread::MyDisplayThread (QWidget *thewidget) : QThread () { - alive = false; - widget = thewidget; -} - -/** - * Reimplementation of run() to update widget - */ -void -MyDisplayThread::run (void) { - alive = true; - - while (alive) { - msleep (120); - if (widget != NULL) { - widget->update(); - } - } -} - - -/////////////////////////////////////////////////////////////////////////////// -// MyDisplay Implementation // -/////////////////////////////////////////////////////////////////////////////// - -/** - * Default constructor. - */ -MyDisplay::MyDisplay (void) : QWidget () { - this->initGraphics(); - this->initText(); -} - -/** - * Constructor wtih 3 parameters. - * - * @param widget parent - * parent name - * QtGUIMainWindow - */ -MyDisplay::MyDisplay (QWidget *parent, const char *name, QtGUIMainWindow* qtgui) - : QWidget (parent, name) { - _qtgui = qtgui; - this->initGraphics(); - this->initText(); - - // For scrolling text - _timerForScrollingText = new QTimer(this); - connect (_timerForScrollingText, SIGNAL(timeout()), SLOT(shift())); - //emit signal every second - _timerForScrollingText->start(2000); - - // Graphics engine animation thread - _animationThread = new MyDisplayThread (this); - _animationThread->start(); -} - -/** - * Destructor. - */ -MyDisplay::~MyDisplay (void) { - delete _animationThread; - delete _textBuffer; - delete _qtgui; - delete _status; - delete _time; - _timerForScrollingText->stop(); - delete _timerForScrollingText; -} - -/** - * Reimplementation of paintEvent() to render text in the display with - * specified font, a fixed-size font. - */ -void -MyDisplay::paintEvent (QPaintEvent *e) { - if (e); - - QPixmap pm(_centerImage.width(),_centerImage.height()); - - // Painter settings - QFont font(FONT_FAMILY, FONT_SIZE); - font.setBold(true); - QFontMetrics fm(font); - - QPainter p; - p.begin(&pm); - p.setFont(font); - - // Text image (static) - bitBlt (&pm, 0, 0, - &(_centerImage), 0, 0, - _centerImage.width(), - _centerImage.height(), - Qt::CopyROP); - - // Display text render - renderText (p, fm, *_textBuffer); - // Display status - renderStatus (p, fm, *_status); - // Display time - renderTime (p, fm); - - // Overscreen image - bitBlt (&pm, 0, 0, - &(_overImage), 0, 0, - _overImage.width(), - _overImage.height(), - Qt::CopyROP); - - p.end(); - - // "Swap" buffers - bitBlt (this, 0, 0, - &pm, 0, 0, - _centerImage.width(), - _centerImage.height(), - Qt::CopyROP); -} - -/** - * Load display image, set geometry and start the thread to redraw LCD display. - */ -void -MyDisplay::initGraphics (void) { - // This widget is 100% painted by hand - this->setBackgroundMode (Qt::NoBackground); - - // Load display screen image - QPixmap *pixcenter = new QPixmap(Skin::getPath(QString(SKINDIR), - _qtgui->setPathSkin(), - QString(PIXMAP_SCREEN))); - _centerImage = pixcenter->convertToImage(); - delete pixcenter; - - // Load overscreen image - QPixmap *pixover = new QPixmap(Skin::getPath(QString(SKINDIR), - _qtgui->setPathSkin(), - QString(PIXMAP_OVERSCREEN))); - _overImage = pixover->convertToImage(); - delete pixover; - - // Adjust our size to the picture's one - this->setGeometry (0, 0, _centerImage.width(), _centerImage.height()); -} - -/** - * Create new buffer to compose. - */ -void -MyDisplay::initText (void) { - _textBuffer = new QString (); - // Init status to free-status - _status = new QString(FREE_STATUS); - // No display call-timer - _inFunction = false; - // No scrolling - _isScrolling = false; - _reset = false; - len_to_shift = 0; -} - -/** - * Draw text in the appropriate position. - * Scroll text on the left when text is over than width display. - * - * @param painter - * fm size of font - * str text to draw - */ -void -MyDisplay::renderText (QPainter &painter, QFontMetrics &fm, QString &str) { - // cpl = how many chars per line. - static unsigned int cpl = _centerImage.width() / fm.width("a"); - - // If the texts length is greater than the screen, we have to - // scroll the WHOLE text towards the left. - uint x_offset = 0; - uint extra_chars = 0; - QString backup_string("."); - QString str_tmp = str; - - // If call is closed, reset len_to_shift to 0 - if (getReset()) { - len_to_shift = 0; - } - - // If don't need scrolling message - if (!getIsScrolling()) { - // If the string is larger than the screen... - if (fm.width(str) > (_centerImage.width() - 5)) { - extra_chars = str.length() - cpl; - x_offset = fm.width(str[0]) * extra_chars; - - // Hack the scrolled string to inform the user - backup_string[0] = str[extra_chars]; - str.replace (extra_chars, backup_string.length(),QString("<")); - } - // Render text - _mutex.enterMutex(); - painter.drawText (TABULATION - x_offset, fm.height() * TEXT_LINE, str); - _mutex.leaveMutex(); - if (fm.width(str) > (_centerImage.width() - 5)) { - // Restore initial string. - str.replace(extra_chars, backup_string.length(), backup_string); - } - } else { - // if need scrolling text - if (_shift) { - len_to_shift += 1; - } - - if (str.length() > cpl) { - str_tmp = str.left(len_to_shift); - } - if (len_to_shift == cpl) { - str_tmp = str.right(len_to_shift); - } - if (len_to_shift == str.length()*2) { - str_tmp = str.left(len_to_shift); - len_to_shift = 0; - } - - _mutex.enterMutex(); - painter.drawText (TABULATION + _centerImage.width() - - len_to_shift * fm.width(str[0]), - fm.height() * TEXT_LINE, str_tmp); - _mutex.leaveMutex(); - } - -} - - -/** - * Draw status text. - * - * @param painter - * fm size of font - * str text to draw - */ -void -MyDisplay::renderStatus (QPainter &painter, QFontMetrics &fm, QString &str) { - painter.drawText (TABULATION, fm.height(), str); -} - -/** - * Render current time when line is free, or call timer when line is busy. - * - * @param painter - * fm size of font - */ -void -MyDisplay::renderTime (QPainter &painter, QFontMetrics &fm) { - static unsigned int minute = 0; - static unsigned int elapse; - QString minStr,secStr; - - // If conversation, display call-timer - if (_inFunction) { - elapse = _qtgui->getElapse(); - // To calculate minutes - if (elapse % 60 == 0) { - minute = elapse / 60; - elapse = elapse - minute * 60; - } - // Two digits for seconds - if ((elapse % 60) < 10) { - secStr = (QString("0" + QString::number(elapse % 60))); - } else { - secStr = QString::number(elapse % 60); - } - // Two digits for minutes - if (minute < 10) { - minStr = (QString("0" + QString::number(minute))); - } else { - minStr = QString::number(minute); - } - - _time = new QString(minStr + ":" + secStr); - - } else { - // If no conversation, display the current time - _time = new QString(QDateTime::currentDateTime().toString("hh:mm")); - - /** For english time format: - * time = new QString(QDateTime::currentDateTime().toString("h:m AP")); - */ - - // Handle time separator blinking. - static unsigned int i = 0; - if (i++ % 12 > 5) { - _time->replace (':', ' '); - } - } - painter.drawText (TABULATION, fm.height() * TIMER_LINE, *_time); -} - -/** - * To modify status. - * - * @param status - */ -void -MyDisplay::setStatus (const QString &status) { - // Free if previously allocated - if (_status != NULL) { - delete _status; - } - - _status = new QString (status); -} - -/** - * To access status. - * - *@return status - */ -QString & -MyDisplay::getStatus (void) { - return *_status; -} - -/** - * To modify timer line. - * - * @param time - */ -void -MyDisplay::setTimer (const QString &time) { - // Free if previously allocated - if (_time != NULL) { - delete _time; - } - _time = new QString (time); -} - -/** - * To access timer. - * - * @return time - */ -QString & -MyDisplay::getTimer (void) { - return *_time; -} - -/** - * To modify text buffer. - * - * @param text buffer - */ -void -MyDisplay::setTextBuffer (const QString& text) { - // Free if previously allocated - if (_textBuffer != NULL) { - delete _textBuffer; - } - _textBuffer = new QString (text); -} - -/** - * To access text buffer. - * - * @return text buffer - */ -QString & -MyDisplay::getTextBuffer (void) { - return *_textBuffer; -} - -void -MyDisplay::setIsScrolling (bool s) -{ - _mutex.enterMutex(); - _isScrolling = s; - _mutex.leaveMutex(); -} - -void -MyDisplay::resetForScrolling (bool r) -{ - _mutex.enterMutex(); - _reset = r; - _mutex.leaveMutex(); -} - -void -MyDisplay::setLenToShift (unsigned int len) -{ - _mutex.enterMutex(); - len_to_shift = len; - _mutex.leaveMutex(); -} - -/////////////////////////////////////////////////////////////////////////////// -// Implementation of the public slots // -/////////////////////////////////////////////////////////////////////////////// -void -MyDisplay::appendText (const QString &strToAdd) { - _textBuffer->append(strToAdd); -} - -void -MyDisplay::appendText (const char *text) { - _textBuffer->append(QString(text)); -} - -void -MyDisplay::appendText (const QChar &key) { - _textBuffer->append(QChar(key)); -} - -void -MyDisplay::clear (void) { - // Remove everything in the buffer. - _textBuffer->remove(0, _textBuffer->length()); - setStatus(QString(FREE_STATUS)); -} - -void -MyDisplay::clearBuffer (void) { - _textBuffer->remove(0, _textBuffer->length()); -} - -void -MyDisplay::clear (const QString &newstatus) { - // Remove everything in the buffer and set the new status. - _textBuffer->remove(0, _textBuffer->length()); - setStatus(newstatus); -} - -void -MyDisplay::backspace (void) { - // Remove the last char of the string - _textBuffer->remove(_textBuffer->length() - 1, 1); -} - -void -MyDisplay::shift (void) -{ - _mutex.enterMutex(); - if (getReset()) { - _shift = false; - len_to_shift = 0; - } else { - _shift = true; - } - _mutex.leaveMutex(); -} - -#include "moc_mydisplay.cpp" -// EOF diff --git a/src/gui/qt/mydisplay.h b/src/gui/qt/mydisplay.h deleted file mode 100644 index 0c9e6a902a4f8474b4d281cb3ae51f86d4b33faf..0000000000000000000000000000000000000000 --- a/src/gui/qt/mydisplay.h +++ /dev/null @@ -1,155 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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. - */ - -#ifndef __MYDISPLAY_H__ -#define __MYDISPLAY_H__ - - -#include <cc++/thread.h> - -#include <qevent.h> -#include <qimage.h> -#include <qsettings.h> -#include <qstring.h> -#include <qthread.h> -#include <qtimer.h> -#include <qwidget.h> - -#include "../../global.h" - - -#define FREE_STATUS "Welcome to SFLPhone" - - -/* - * The screen looks like this: - * - * --------------------- - * | STATUS | - * | | - * | TextBuffer | - * | | - * | call-timer | - * --------------------- - */ - -using namespace ost; -/////////////////////////////////////////////////////////////////////////////// -// Screen animation thread -/////////////////////////////////////////////////////////////////////////////// -class MyDisplayThread : public QThread { -public: - MyDisplayThread (QWidget *); - -public: - virtual void run (); - -private: - QWidget *widget; - bool alive; -}; - - -class QtGUIMainWindow; - -/////////////////////////////////////////////////////////////////////////////// -// Display -/////////////////////////////////////////////////////////////////////////////// -class MyDisplay : public QWidget { - Q_OBJECT -public: - // Constructors and destructor - MyDisplay (); - MyDisplay (QWidget *, const char *, QtGUIMainWindow *); - ~MyDisplay (); - - void setStatus (const QString &); - QString & getStatus (void); - void setTimer (const QString &); - QString & getTimer (void); - void setTextBuffer (const QString &); - QString & getTextBuffer (void); - - // To initialize screen image, position - void initGraphics (void); - - // To switch between time and call-timer function - inline bool getInFunction (void) { return _inFunction; } - inline void setInFunction (bool b) { _inFunction = b; } - - // To set/unset in scrolling mode - inline bool getIsScrolling (void) { return _isScrolling; } - void setIsScrolling (bool s); - - // To setup to zero X-position for displaying text - inline bool getReset (void) { return _reset; } - void resetForScrolling (bool r) ; - void setLenToShift (unsigned int len) ; - -public slots: - // To append text which you type - void appendText (const QString &); - void appendText (const char *); - void appendText (const QChar &); - - // To clear caller-id line and set FREE status - void clear (void); - - // To clear just caller-id line - void clearBuffer (void); - - // To clear caller-id line and set new status in parameter - void clear (const QString &); - - // To remove the last char of the string - void backspace (void); - - // Slot for the timeout of the scrolling mode - void shift (void); - -protected: - void paintEvent (QPaintEvent *); - -private: - Mutex _mutex; - QImage _centerImage; // text zone - QImage _overImage; - QString* _status; - MyDisplayThread* _animationThread; - QtGUIMainWindow* _qtgui; - QString* _textBuffer; - QString* _time; - bool _inFunction; - bool _shift; - QTimer* _timerForScrollingText; - bool _isScrolling; - bool _reset; - unsigned int len_to_shift; - - // To initialize status, textbuffer and variables - void initText (void); - - void renderText (QPainter &, QFontMetrics &, QString &); - void renderStatus (QPainter &, QFontMetrics &, QString &); - void renderTime (QPainter &, QFontMetrics &); -}; - -#endif // __MYDISPLAY_H__ - -// EOF diff --git a/src/gui/qt/numerickeypad.cpp b/src/gui/qt/numerickeypad.cpp deleted file mode 100644 index 3f95a6ab5a3500eeb37dac58640dbe43700aecc7..0000000000000000000000000000000000000000 --- a/src/gui/qt/numerickeypad.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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 <string> -#include <qapplication.h> - -#include "jpushbutton.h" -#include "numerickeypad.h" -#include "qtGUImainwindow.h" -#include "skin.h" - -using namespace std; - - -NumericKeypad::NumericKeypad (QWidget *parent, const char *name, WFlags f) - : TransQWidget (NULL, name, f) { - mainWindow = (TransQWidget *)parent; - gui = (QtGUIMainWindow*)parent; - this->setCaption("DTMF keypad"); - - // Load background image phone - setbgPixmap (new QPixmap (Skin::getPath(QString(SKINDIR), - gui->setPathSkin(), - QString(PIXMAP_KEYPAD)))); - - // Transform pixmap to QImage - setSourceImage (); - - setMaximumSize (getSourceImage().width(), getSourceImage().height()); - - // Calculate just one time the transparency mask bit to bit - transparencyMask (); - - string skinfilename(Skin::getPath(QString(SKINDIR), - gui->setPathSkin(), - QString(FILE_INI))); - pt = new Point(skinfilename); - - // Buttons initialisation - key0 = new JPushButton(this, NULL, DTMF_0); - key1 = new JPushButton(this, NULL, DTMF_1); - key2 = new JPushButton(this, NULL, DTMF_2); - key3 = new JPushButton(this, NULL, DTMF_3); - key4 = new JPushButton(this, NULL, DTMF_4); - key5 = new JPushButton(this, NULL, DTMF_5); - key6 = new JPushButton(this, NULL, DTMF_6); - key7 = new JPushButton(this, NULL, DTMF_7); - key8 = new JPushButton(this, NULL, DTMF_8); - key9 = new JPushButton(this, NULL, DTMF_9); - keyStar = new JPushButton(this, NULL, DTMF_STAR); - keyHash = new JPushButton(this, NULL, DTMF_POUND); - keyClose = new JPushButton(this, NULL, DTMF_CLOSE); - - // Buttons position - key0->move (pt->getX(DTMF_0), pt->getY(DTMF_0)); - key1->move (pt->getX(DTMF_1), pt->getY(DTMF_1)); - key2->move (pt->getX(DTMF_2), pt->getY(DTMF_2)); - key3->move (pt->getX(DTMF_3), pt->getY(DTMF_3)); - key4->move (pt->getX(DTMF_4), pt->getY(DTMF_4)); - key5->move (pt->getX(DTMF_5), pt->getY(DTMF_5)); - key6->move (pt->getX(DTMF_6), pt->getY(DTMF_6)); - key7->move (pt->getX(DTMF_7), pt->getY(DTMF_7)); - key8->move (pt->getX(DTMF_8), pt->getY(DTMF_8)); - key9->move (pt->getX(DTMF_9), pt->getY(DTMF_9)); - keyStar->move (pt->getX(DTMF_STAR), pt->getY(DTMF_STAR)); - keyHash->move (pt->getX(DTMF_POUND), pt->getY(DTMF_POUND)); - keyClose->move (pt->getX(DTMF_CLOSE), pt->getY(DTMF_CLOSE)); -} - -NumericKeypad::~NumericKeypad (void) { - delete key0; - delete key1; - delete key2; - delete key3; - delete key4; - delete key5; - delete key6; - delete key7; - delete key8; - delete key9; - delete keyStar; - delete keyHash; - delete keyClose; - delete pt; -} - -void -NumericKeypad::keyPressEvent (QKeyEvent* e) { - QApplication::sendEvent (mainWindow, e); - - // TODO: Key appears pressed when done. - if ((e->key() >= Qt::Key_0 and - e->key() <= Qt::Key_9) or - e->key() == Qt::Key_Asterisk or - e->key() == Qt::Key_NumberSign) { - //QApplication::sendEvent(bouton, QEvent(QEvent::MouseButtonPress)); - } else { - //QApplication::sendEvent (mainWindow, e); - } -} - - diff --git a/src/gui/qt/numerickeypad.h b/src/gui/qt/numerickeypad.h deleted file mode 100644 index 513929ae7d4ff6e31fb513e8ab5f0391594eb1d7..0000000000000000000000000000000000000000 --- a/src/gui/qt/numerickeypad.h +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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. - */ - -#ifndef __NUMERIC_KEYPAD_H__ -#define __NUMERIC_KEYPAD_H__ - -#include "jpushbutton.h" -#include "point.h" -#include "transqwidget.h" - -class QtGUIMainwindow; - -class NumericKeypad : public TransQWidget { - Q_OBJECT -public: - // Default Constructor and destructor - NumericKeypad (QWidget* = 0, const char* = 0,WFlags = 0); - ~NumericKeypad (void); - - JPushButton *key0; - JPushButton *key1; - JPushButton *key2; - JPushButton *key3; - JPushButton *key4; - JPushButton *key5; - JPushButton *key6; - JPushButton *key7; - JPushButton *key8; - JPushButton *key9; - JPushButton *keyStar; - JPushButton *keyHash; - JPushButton *keyClose; - -private: - Point *pt; - TransQWidget* mainWindow; - QtGUIMainWindow* gui; - void keyPressEvent (QKeyEvent*); -}; - -#endif // __NUMERIC_KEYPAD_H__ diff --git a/src/gui/qt/numerickeypadtools.cpp b/src/gui/qt/numerickeypadtools.cpp deleted file mode 100644 index a2e9a432d863a1e547cec936b16e7a98e16580fb..0000000000000000000000000000000000000000 --- a/src/gui/qt/numerickeypadtools.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright (C) 2004 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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 <qstring.h> -#include <stdio.h> - -#include "numerickeypadtools.h" - - - -NumericKeypadTools::NumericKeypadTools (void) { -} - -NumericKeypadTools::~NumericKeypadTools (void) { -} - -int -NumericKeypadTools::keyToNumber (int key) { - QChar tchar(key); - - if (!tchar.isLetter()) { - return -1; - } else { - return Qt::Key_0 + keymapTable[tchar.upper() - Qt::Key_A]; - } -} diff --git a/src/gui/qt/numerickeypadtools.h b/src/gui/qt/numerickeypadtools.h deleted file mode 100644 index b7238440519d48c11f53187c05346bfc352b826a..0000000000000000000000000000000000000000 --- a/src/gui/qt/numerickeypadtools.h +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Copyright (C) 2004 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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. - */ - -#ifndef __NUM_KPAD_TOOLS__ -#define __NUM_KPAD_TOOLS__ -#include <qapplication.h> - -#define KEYPAD_ID_1 0 -#define KEYPAD_ID_2 1 -#define KEYPAD_ID_3 2 -#define KEYPAD_ID_4 3 -#define KEYPAD_ID_5 4 -#define KEYPAD_ID_6 5 -#define KEYPAD_ID_7 6 -#define KEYPAD_ID_8 7 -#define KEYPAD_ID_9 8 -#define KEYPAD_ID_STAR 9 -#define KEYPAD_ID_0 10 -#define KEYPAD_ID_HASH 11 - -#ifdef __cplusplus -extern "C" { -#endif - -// 26 letters mapped to keypad numbers. -const int keymapTable[] = { - 2, 2, 2, // ABC - 3, 3, 3, // DEF - 4, 4, 4, // GHI - 5, 5, 5, // JKL - 6, 6, 6, // MNO - 7, 7, 7, 7, // PQRS - 8, 8, 8, // TUV - 9, 9, 9, 9 // WXYZ - }; -#ifdef __cplusplus -} -#endif - -class NumericKeypadTools { -public: - NumericKeypadTools (); - ~NumericKeypadTools (); - static int keyToNumber (int); - -private: -}; - -#endif // __NUM_KPAD_TOOLS__ - -// EOF diff --git a/src/gui/qt/phoneline.cpp b/src/gui/qt/phoneline.cpp deleted file mode 100644 index db964bc8cbb37cf74b53da0ee0539969461c7f35..0000000000000000000000000000000000000000 --- a/src/gui/qt/phoneline.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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 <qpushbutton.h> - -#include "jpushbutton.h" -#include "phoneline.h" - -PhoneLine::PhoneLine (void) { - jpb = NULL; - setState (FREE); - first = true; - timer = new QTime(); - b_ringing = false; - _callid = 0; - _status = ""; - _scrolling = false; - _stopScrolling = false; -} - -PhoneLine::~PhoneLine (void) { - if (timer != NULL) { - delete timer; - } -} - -enum line_state -PhoneLine::getState (void) { - return state; -} - -void -PhoneLine::setState (enum line_state state) { - this->state = state; -} - -bool -PhoneLine::isFree (void) { - if (getState() == FREE) { - return true; - } else { - return false; - } -} - -bool -PhoneLine::isBusy (void) { - if (getState() == BUSY) { - return true; - } else { - return false; - } -} - -bool -PhoneLine::isOnHold (void) { - if (getState() == ONHOLD) { - return true; - } else { - return false; - } -} - -void -PhoneLine::toggleState (void) { - if (isBusy()){ - setState(ONHOLD); - } else if (isFree() || isOnHold()) { - setState (BUSY); - } -} - -void -PhoneLine::setButton (JPushButton *jpb) { - this->jpb = jpb; -} - -JPushButton * -PhoneLine::button (void) { - return this->jpb; -} - -void -PhoneLine::startTimer(void) { - if (timer == NULL) - timer = new QTime(); - timer->start(); -} - -void -PhoneLine::stopTimer(void) { - delete timer; - timer = NULL; -} - - -// EOF diff --git a/src/gui/qt/phoneline.h b/src/gui/qt/phoneline.h deleted file mode 100644 index 56fb1c935bd059786b40214ef5076229ae805902..0000000000000000000000000000000000000000 --- a/src/gui/qt/phoneline.h +++ /dev/null @@ -1,100 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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. - */ - -#ifndef __PHONE_LINE_H__ -#define __PHONE_LINE_H__ - -#include <qpushbutton.h> -#include <qdatetime.h> - - -#define NUMBER_OF_LINES 6 -#define NUMBER_OF_STATES 2 // for the init of phoneline button pixmap - -/** Defines the state of a line. */ -enum line_state { - FREE = 0, // Line is available - BUSY, // Line is busy - ONHOLD, // Line is on hold - OFFHOLD // Line is on hold -}; - -class JPushButton; -class PhoneLine { -public: - PhoneLine (void); - ~PhoneLine (void); - - // Handle different state - enum line_state getState (void); - void setState (enum line_state); - bool isFree (void); - bool isBusy (void); - bool isOnHold (void); - void toggleState(void); - - // Handle a line like a push-button - void setButton (JPushButton *); - JPushButton *button (void); - - // Handle timer for call-timer - void startTimer (void); - void stopTimer (void); - - // Handle status for each phoneline - inline QString getStatus (void) { return _status; } - inline void setStatus (const QString& status) { _status = status; } - - // Manage a ringtone notification if there is an incoming call - inline bool getbRinging (void) { return b_ringing; } - inline void setbRinging (bool ring) { if (this->b_ringing != ring) - this->b_ringing = ring; - } - - // Handle call-id for each phoneline - inline short getCallId (void) { return _callid; } - inline void setCallId (short id) { _callid = id; } - - // Handle if need scrolling or not - inline bool scrolling (void) { return _scrolling; } - inline void setScrolling (bool s) { _scrolling = s; } - - // Handle stop scrolling - inline bool stopScrolling (void) { return _stopScrolling; } - inline void setStopScrolling(bool s) { _stopScrolling = s; } - - // For call-timer - QTime *timer; - // To start just one time the call-timer per call - bool first; - -private: - short _callid; - QString _status; - bool _scrolling; - bool _stopScrolling; - - JPushButton* jpb; - enum line_state state; - - bool b_ringing; // if incoming call, - // before IP-phone user answers (->true) -}; - -#endif // __PHONE_LINE_H__ diff --git a/src/gui/qt/point.cpp b/src/gui/qt/point.cpp deleted file mode 100644 index 1e0a7c4d0ddb6768bfdc002eb2a2dca4d7b9d6d0..0000000000000000000000000000000000000000 --- a/src/gui/qt/point.cpp +++ /dev/null @@ -1,168 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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 "point.h" - -#include <string> -#include "skin.h" -#include <iostream> -using namespace std; - -/** - * Create a config-tree from file 'filename' - */ -Point::Point (const std::string& filename) { - int opened = 1; - std::string s = "SKIN"; - using namespace Conf; - _config.addConfigTreeItem(s, ConfigTreeItem(LINE1, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(LINE2, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(LINE3, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(LINE4, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(LINE5, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(LINE6, "", "")); - - _config.addConfigTreeItem(s, ConfigTreeItem(VOICEMAIL, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DIRECTORY, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(CONFERENCE, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(TRANSFER, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(CLOSE, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(MINIMIZE, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(SETUP, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(HANGUP, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(CONNECT, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(MUTE, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_SHOW, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(VOLUME, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(VOL_MIC, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(VOL_SPKR, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(SCREEN, "", "")); - - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_0, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_1, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_2, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_3, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_4, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_5, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_6, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_7, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_8, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_9, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_STAR, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_POUND, "", "")); - _config.addConfigTreeItem(s, ConfigTreeItem(DTMF_CLOSE, "", "")); - - opened = _config.populateFromFile (filename); - if (opened != 1) { - // If opening failed, stop the application - std::cerr << "Fatal Error: Unable to open skin configuration file\n"; - exit(0); - } -} - -Point::~Point (void) { -} - - -/** - * Extract the substring before the comma - */ -string -Point::getSubstrX (const char* key) { - std::string value = _config.getConfigTreeItemValue("SKIN", string(key)); - int index = value.find(','); - return value.substr(0, index); -} - -/** - * Extract the substring after the comma - */ -string -Point::getSubstrY (const char* key) { - string value = _config.getConfigTreeItemValue("SKIN", string(key)); - int index = value.find(','); - return value.substr(index + 1, value.length() - index); -} - -/** - * Return the x-value of 'key' - */ -int -Point::getX (const char* key) { - int index; - string tmp = getSubstrX(key); - - if (getDirection(key) == HORIZONTAL) { - index = tmp.find('-'); - return atoi((tmp.substr(0, tmp.length() - index)).data()); - } else { - return atoi(tmp.data()); - } -} - -/** - * Return the y-value of 'key' - */ -int -Point::getY (const char* key) { - int index; - string tmp = getSubstrY(key); - - if (getDirection(key) == VERTICAL) { - index = tmp.find('-'); - return atoi((tmp.substr(0, tmp.length() - index)).data()); - } else { - return atoi(tmp.data()); - } -} - -/** - * Return the variation-value of 'key' (for volume) - */ -int -Point::getVariation (const char* key) { - int index; - string str; - - if (getDirection(key) == HORIZONTAL) { - str = getSubstrX(key); - } else if (getDirection(key) == VERTICAL) { - str = getSubstrY(key); - } - index = str.find('-'); - return atoi((str.substr(index + 1, str.length() - index)).data()); -} - - -/** - * Get the direction of the variation for 'key' - * - * @return 1 -> horizontal or 2 -> vertical - * (0 if no variation) - */ -int -Point::getDirection (const char* key) { - if (getSubstrX(key).find('-') != string::npos) { - return HORIZONTAL; - } else if (getSubstrY(key).find('-') != string::npos) { - return VERTICAL; - } else { - return NO_DIRECTION; - } -} diff --git a/src/gui/qt/point.h b/src/gui/qt/point.h deleted file mode 100644 index f16ce1025326ca5e9f7a5be66b4ed43ec28465d5..0000000000000000000000000000000000000000 --- a/src/gui/qt/point.h +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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. - */ - -#ifndef __POINT_H__ -#define __POINT_H__ - -#include <string> -#include "../../config/config.h" -using namespace std; - -#define NO_DIRECTION 0 -#define HORIZONTAL 1 -#define VERTICAL 2 - -class Point { -public: - Point (const string&); - ~Point (void); - - int getX (const char*); - int getY (const char*); - int getVariation (const char*); - int getDirection (const char*); - -private: - Conf::ConfigTree _config; - string getSubstrX (const char*); - string getSubstrY (const char*); -}; - -#endif // __POINT_H__ diff --git a/src/gui/qt/qjlistboxpixmap.cpp b/src/gui/qt/qjlistboxpixmap.cpp deleted file mode 100644 index 270b45cf5193b3fa3e370ff3cc362d9b15e5bf00..0000000000000000000000000000000000000000 --- a/src/gui/qt/qjlistboxpixmap.cpp +++ /dev/null @@ -1,159 +0,0 @@ -/* - Copyright(C)2004 Johan Thelin - johan.thelin -at- digitalfanatics.org - - Visit: http://www.digitalfanatics.org/e8johan/projects/jseries/index.html - - This file is part of the JSeries. - - JSeries 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. - - JSeries 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 JSeries; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include <qpainter.h> -#include <qstyle.h> - -#include "qjlistboxpixmap.h" - -QjListBoxPixmap::QjListBoxPixmap( PixmapLocation location, const QPixmap &pixmap, const QString &text, QListBox *listbox ) : QListBoxItem( listbox ) -{ - m_location = location; - m_pixmap = pixmap; - setText( text ); -} - -QjListBoxPixmap::QjListBoxPixmap( PixmapLocation location, const QPixmap &pixmap, const QString &text, QListBox *listbox, QListBoxItem *after ) : QListBoxItem( listbox, after ) -{ - m_location = location; - m_pixmap = pixmap; - setText( text ); -} - -QjListBoxPixmap::PixmapLocation QjListBoxPixmap::location() const -{ - return m_location; -} - -const QPixmap *QjListBoxPixmap::pixmap() const -{ - return &m_pixmap; -} - -void QjListBoxPixmap::setPixmap( const QPixmap &pixmap ) -{ - m_pixmap = pixmap; - listBox()->repaint(); -} - -int QjListBoxPixmap::height( const QListBox *lb ) const -{ - switch( m_location ) - { - case Above: - case Under: - - return 6 + m_pixmap.height() + lb->fontMetrics().height(); - - case Left: - case Right: - - if( m_pixmap.height() > lb->fontMetrics().height() ) - return 4 + m_pixmap.height(); - else - return 4 + lb->fontMetrics().height(); - - default: - return 0; - } -} - -int QjListBoxPixmap::width( const QListBox *lb ) const -{ - int tw; - - switch( m_location ) - { - case Above: - case Under: - - tw = lb->fontMetrics().width( text() ); - - if( tw > m_pixmap.width() ) - return 4 + tw; - else - return 4 + m_pixmap.width(); - - case Left: - case Right: - - return 6 + m_pixmap.width() + lb->fontMetrics().width( text() ); - - default: - return 0; - } -} - -void QjListBoxPixmap::setLocation( PixmapLocation location ) -{ - if( m_location == location ) - return; - - m_location = location; - listBox()->repaint(); -} - -void QjListBoxPixmap::paint( QPainter *p ) -{ - if( !( listBox() && listBox()->viewport() == p->device() ) ) - return; - - QRect r( 0, 0, listBox()->width(), height( listBox() ) ); - - if( isSelected() ) - p->eraseRect( r ); - - int tw = listBox()->fontMetrics().width( text() ); - int th = listBox()->fontMetrics().height(); - int pw = m_pixmap.width(); - int ph = m_pixmap.height(); - int xo = (listBox()->width() - width( listBox() ))/2; - int tyo = listBox()->fontMetrics().ascent(); - - switch( m_location ) - { - case Above: - p->drawText( (listBox()->width()-tw)/2, ph+4+tyo, text() ); - p->drawPixmap( (listBox()->width()-pw)/2, 2, m_pixmap ); - - break; - case Under: - p->drawText( (listBox()->width()-tw)/2, 2+tyo, text() ); - p->drawPixmap( (listBox()->width()-pw)/2, 4+th, m_pixmap ); - - break; - case Left: - p->drawText( xo+2+pw, (height( listBox() )-th)/2+tyo, text() ); - p->drawPixmap( xo, (height( listBox() )-ph)/2, m_pixmap ); - - break; - case Right: - p->drawText( xo, (height( listBox() )-th)/2+tyo, text() ); - p->drawPixmap( xo+2+tw, (height( listBox() )-ph)/2, m_pixmap ); - - break; - } - - if( isCurrent() ) - listBox()->style().drawPrimitive( QStyle::PE_FocusRect, p, r, listBox()->colorGroup() ); -} diff --git a/src/gui/qt/qjlistboxpixmap.h b/src/gui/qt/qjlistboxpixmap.h deleted file mode 100644 index d8839e30f48f521a40ee9d99d04b9a9c6f607584..0000000000000000000000000000000000000000 --- a/src/gui/qt/qjlistboxpixmap.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - Copyright(C)2004 Johan Thelin - johan.thelin -at- digitalfanatics.org - - Visit: http://www.digitalfanatics.org/e8johan/projects/jseries/index.html - - This file is part of the JSeries. - - JSeries 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. - - JSeries 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 JSeries; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QjLISTBOXPIXMAP_H -#define QjLISTBOXPIXMAP_H - -#include <qlistbox.h> -#include <qstring.h> -#include <qpixmap.h> - -/** \brief The JPixmapItem is a listbox item showing a pixmap and a text. The location of the pixmap in relation to the text can be altered. - * - * \image html jpmi.png - * The location of the pixmap in relation to the text can be altered using the location and setLocation members. - */ -class QjListBoxPixmap : public QListBoxItem -{ -public: - /** Specifies the location of the pixmap in relation to the text. */ - enum PixmapLocation - { Above, /**< The pixmap is above the text. */ - Under, /**< The pixmap is under the text. */ - Left, /**< The pixmap is to the left of the text. */ - Right /**< The pixmap is to the right of the text. */ - }; - - /** Creates a JPixmapItem. */ - QjListBoxPixmap( PixmapLocation location, const QPixmap &pixmap, const QString &text, QListBox *listbox=0 ); - /** Creates a JPixmapItem at a certain position in the listbox. */ - QjListBoxPixmap( PixmapLocation location, const QPixmap &pixmap, const QString &text, QListBox *listbox, QListBoxItem *after ); - - /** Returns the pixmap location in relation to the text. */ - PixmapLocation location() const; - /** Sets the pixmap location in relation to the text. This does not generate a re-paint of the listbox. */ - void setLocation( PixmapLocation ); - - /** Returns the pixmap. */ - const QPixmap *pixmap() const; - /** Sets the pixmap. This does not generate a re-paint of the listbox. */ - void setPixmap( const QPixmap &pixmap ); - - int height( const QListBox *lb ) const; - int width( const QListBox *lb ) const; - -protected: - void paint( QPainter *p ); - -private: - QPixmap m_pixmap; - PixmapLocation m_location; -}; - -#endif // QjLISTBOXPIXMAP_H diff --git a/src/gui/qt/qtGUImainwindow.cpp b/src/gui/qt/qtGUImainwindow.cpp deleted file mode 100644 index 5775e1b17c13cec2703154f359ca282f4f3427ab..0000000000000000000000000000000000000000 --- a/src/gui/qt/qtGUImainwindow.cpp +++ /dev/null @@ -1,1939 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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 <stdio.h> - -#include <qcheckbox.h> -#include <qcombobox.h> -#include <qevent.h> -#include <qlineedit.h> -#include <qmessagebox.h> -#include <qpushbutton.h> -#include <qregexp.h> -#include <qspinbox.h> -#include <qtimer.h> -#include <qtooltip.h> - -#include "../../audio/audiolayer.h" -#include "../../audio/dtmf.h" -#include "../../audio/ringbuffer.h" -#include "../../error.h" -#include "../../global.h" -#include "../../manager.h" -#include "../../user_cfg.h" -#include "skin.h" -#include "configurationpanelui.h" -#include "jpushbutton.h" -#include "mydisplay.h" -#include "numerickeypad.h" -#include "numerickeypadtools.h" -#include "point.h" -#include "phoneline.h" -#include "qtGUImainwindow.h" -#include "vector.h" -#include "volumecontrol.h" - -#define QCHAR_TO_STRIP "-" -#define REG_EXPR "(-|\\(|\\)| )" - -using namespace std; - -/////////////////////////////////////////////////////////////////////////////// -// Tray Icon implementation -/////////////////////////////////////////////////////////////////////////////// -MyTrayIcon::MyTrayIcon(const QPixmap &icon, const QString &tooltip, - QPopupMenu *_mypop, QObject *parent, const char *name) - : TrayIcon (icon, tooltip, _mypop, parent, name) -{ - menu = _mypop; -} - -void -MyTrayIcon::mousePressEvent (QMouseEvent *e) -{ - switch ( e->button() ) { - case RightButton: - menu->popup( e->globalPos() ); - e->accept(); - break; - - case LeftButton: - emit clickedLeft(); - break; - - case MidButton: - break; - - default: - break; - } -} - -/////////////////////////////////////////////////////////////////////////////// -// QtGUIMainWindow implementation -/////////////////////////////////////////////////////////////////////////////// - -/** - * Default Constructor - * Init, Connections - */ -QtGUIMainWindow::QtGUIMainWindow (QWidget *parent, - const char *name, - WFlags f) - : TransQWidget (parent, name, f), - GuiFramework() { - for (int i = 0; i < NUMBER_OF_LINES; i++) { - phLines[i] = new PhoneLine(); - phLines[i]->setState(FREE); - _TabIncomingCalls[i] = -1; - } - - // Create configuration_panel - _panel = new ConfigurationPanel (0, 0, false); - - // URL input dialog - _urlinput = new URL_Input (this); - - - // For DTMF - _key = new DTMF (); - _buf = new int16[SIZEBUF]; - - // Create new display and numeric _keypad - _lcd = new MyDisplay(this, 0, this); - _keypad = new NumericKeypad (this, NULL, Qt::WDestructiveClose | - Qt::WStyle_Customize | - Qt::WStyle_NoBorder); - _currentLine = -1; - _chosenLine = -1; - _prevLine = -1; - _first = true; - _chooseLine = false; - _transfer = false; - _dialtone = false; - _msgVar = false; - _apply = false; - - // Initialisation of all that concern the skin - initSkin(); - - this->initBlinkTimer(); - - - // By default, keyboard mapping mode is numerical mode - this->setMode(NUM_MODE); - - // Move - setMainLCD (); - - // Change window title and Icon. - this->setCaption(PROGNAME); - this->setIcon(QPixmap(Skin::getPathPixmap(QString(PIXDIR), - QString(SFLPHONE_LOGO)))); - - // Show the GUI - this->show(); - - // Handle the tray icon system menu - _mypop = new QPopupMenu(this); - _mypop->insertItem ("Compose", _urlinput, SLOT(show())); - _mypop->insertItem ("Setup", this, SLOT(configuration())); - _mypop->insertItem ("Quit", qApp, SLOT(quit())); - - _trayicon = new MyTrayIcon(QPixmap( - Skin::getPathPixmap(QString(PIXDIR), QString(TRAY_ICON))), - NULL, _mypop, parent, name); - _trayicon->show(); - - // Connect to handle _trayicon - connect(_trayicon, SIGNAL(clickedLeft()), this, SLOT(clickHandle())); - // Connect _blinkTimer signals to blink slot - connect(_blinkTimer, SIGNAL(timeout()),this, SLOT(blinkMessageSlot())); - connect (_blinkTimer, SIGNAL(timeout()), this, SLOT(blinkRingSlot()) ); - connect (_blinkTimer, SIGNAL(timeout()), this, SLOT(blinkLineSlot())); - // Connect to append url in display - connect (_urlinput->buttonOK, SIGNAL(clicked()), this, SLOT(stripSlot())); - // Connect to save settings - connect (_panel->buttonSave, SIGNAL(clicked()), this, SLOT(save())); - // Connect to apply skin - connect (_panel->buttonApplySkin, SIGNAL(clicked()), this,SLOT(applySkin())); - // Connect to register manually - connect (_panel->Register, SIGNAL(clicked()), this, SLOT(registerSlot())); -} - -/** - * Destructor - */ -QtGUIMainWindow::~QtGUIMainWindow(void) { - deleteButtons(); - delete _panel; - delete _blinkTimer; - delete _keypad; - delete _lcd; - delete _urlinput; - delete _mypop; - delete _trayicon; - delete pt; - delete _key; - delete[] _buf; - delete[] phLines; -} - -void -QtGUIMainWindow::deleteButtons (void) { - delete phoneKey_transf; - delete phoneKey_msg; - delete phoneKey_conf; - delete reduce_button; - delete quit_button; - delete addr_book_button; - delete configuration_button; - delete hangup_button; - delete dial_button; - delete mute_button; - delete dtmf_button; - delete vol_mic; - delete vol_spkr; - delete micVolVector; - delete spkrVolVector; - - for (int j = 0; j < NUMBER_OF_LINES; j++) { - delete phLines[j]->button(); - } - -} - -/////////////////////////////////////////////////////////////////////////////// -// Private Methods implementations -/////////////////////////////////////////////////////////////////////////////// -/** - * Init and start blink timer for all blinking pixmap, with 500 ms timeout. - */ -void -QtGUIMainWindow::initBlinkTimer(void) { - _blinkTimer = new QTimer(this); - _blinkTimer->start(500); -} - -/** - * Init variable with skin choice - */ -QString -QtGUIMainWindow::setPathSkin (void) { - std::string skinChoice = Manager::instance().getConfigString("Preferences", -"Themes.skinChoice"); - if ( skinChoice.empty() ) { - skinChoice = "metal"; - Manager::instance().setConfig("Preferences", "Themes.skinChoice", -skinChoice); - } - return QString(skinChoice); -} - -/** - * Init variable with ring choice - */ -std::string -QtGUIMainWindow::ringFile(void) { - return Manager::instance().getConfigString(AUDIO, RING_CHOICE); -} - -/** - * Get whole path for rings - */ -std::string -QtGUIMainWindow::getRingtoneFile (void) { - string ringFilename(Skin::getPathRing(string(RINGDIR), ringFile())); - return ringFilename; -} - -void -QtGUIMainWindow::initSkin (void) { - // Load file configuration skin - string skinfilename(Skin::getPath(QString(SKINDIR), setPathSkin(), - QString(FILE_INI))); - - if (!_apply) { - this->pt = new Point(skinfilename); - } else { - // If click on apply button - delete pt; - deleteButtons(); - this->pt = new Point(skinfilename); - } - // Initialisation of the buttons - initSpkrVolumePosition(); - initMicVolumePosition(); - initButtons(); - initVolume(); - // Connections of the buttons - connections(); - - // Load background image phone - setbgPixmap (new QPixmap (Skin::getPath(QString(SKINDIR), - setPathSkin(), - QString(PIXMAP_PHONE)))); - // Transform pixmap to QImage - setSourceImage (); - this->setMaximumSize (getSourceImage().width(), getSourceImage().height()); - this->setGeometry (MAIN_INITIAL_POSITION, - MAIN_INITIAL_POSITION, - getSourceImage().width(), - getSourceImage().height()); - // Calculate just one time the transparency mask bit to bit - transparencyMask (); - - // Line pixmaps initialisation - for (int i = 0; i < NUMBER_OF_LINES; i++) { - for (int j = 0; j < NUMBER_OF_STATES; j++) { - TabLinePixmap[i][j] = QPixmap(Skin::getPath(QString(SKINDIR), - setPathSkin(), - QString(PIXMAP_LINE(i, j)))); - } - } - // Message pixmaps initialisation - TabMsgPixmap[0] = QPixmap(Skin::getPath(QString(SKINDIR), setPathSkin(), - PIXMAP_MESSAGE_OFF)); - TabMsgPixmap[1] = QPixmap(Skin::getPath(QString(SKINDIR), setPathSkin(), - PIXMAP_MESSAGE_ON)); -} - -void -QtGUIMainWindow::initSpkrVolumePosition (void) { -/* - if (pt->getDirection(VOL_SPKR) == VERTICAL) { - vol_spkr_x = Manager::("Audio", "Volume.speakers_x", - pt->getX(VOL_SPKR)); - vol_spkr_y = Config::get("Audio", "Volume.speakers_y", - pt->getVariation(VOL_SPKR)); - } else if (pt->getDirection(VOL_SPKR) == HORIZONTAL) { - vol_spkr_x = Config::get("Audio", "Volume.speakers_x", - pt->getX(VOL_SPKR) + pt->getVariation(VOL_SPKR)); - vol_spkr_y = Config::get("Audio", "Volume.speakers_y", - pt->getY(VOL_SPKR)); - } - // TODO: will have to calculate the volume with pourcentage -*/ -} - -void -QtGUIMainWindow::initMicVolumePosition (void) { -/* - // TODO: will have to calculate the volume with pourcetage - if (pt->getDirection(VOL_MIC) == VERTICAL) { - vol_mic_x = Config::get("Audio", "Volume.micro_x", pt->getX(VOL_MIC)); - vol_mic_y = Config::get("Audio", "Volume.micro_y", - pt->getVariation(VOL_MIC)); - } else if (pt->getDirection(VOL_MIC) == HORIZONTAL) { - vol_mic_x = Config::get("Audio", "Volume.micro_x", - pt->getX(VOL_MIC) + pt->getVariation(VOL_MIC)); - vol_mic_y = Config::get("Audio", "Volume.micro_y", pt->getY(VOL_MIC)); - } -*/ -} - -void -QtGUIMainWindow::initVolume (void) -{ - // TODO: the manager already know the volume... - //Manager::instance().setSpkrVolume(spkrVolVector->Y() - vol_spkr_y); - //Manager::instance().setMicroVolume(micVolVector->Y() - vol_mic_y); -} - -/** - * Inits all phonekey buttons. - * Create new QPushButtons, set up tool tip, disable focus, set button geometry - * set palette. - */ -void -QtGUIMainWindow::initButtons (void) { - // Buttons initialisation - phoneKey_msg= new JPushButton(this, NULL, VOICEMAIL); - phoneKey_transf = new JPushButton(this, NULL, TRANSFER); - phoneKey_conf = new JPushButton(this, NULL, CONFERENCE); - reduce_button = new JPushButton(this, NULL, MINIMIZE); - quit_button = new JPushButton(this, NULL, CLOSE); - addr_book_button = new JPushButton(this, NULL, DIRECTORY); - configuration_button = new JPushButton(this, NULL, SETUP); - hangup_button = new JPushButton(this, NULL, HANGUP); - dial_button = new JPushButton(this, NULL, CONNECT); - mute_button = new JPushButton(this, NULL, MUTE); - dtmf_button = new JPushButton(this, NULL, DTMF_SHOW); - - // Set tooltip buttons - QToolTip::add(reduce_button, tr("Minimize window")); - QToolTip::add(quit_button, tr("Close window (Ctrl+Q)")); - QToolTip::add(phoneKey_msg, tr("Get your message")); - QToolTip::add(phoneKey_transf, tr("Call transfer (Ctrl+T)")); - QToolTip::add(phoneKey_conf, tr("Conference")); - QToolTip::add(addr_book_button, tr("Address book")); - QToolTip::add(configuration_button, tr("Configuration tools (Ctrl+C)")); - QToolTip::add(hangup_button, tr("Hangup (Esc)")); - QToolTip::add(dial_button, tr("Dial (Enter)")); - QToolTip::add(mute_button, tr("Mute (Ctrl+M)")); - QToolTip::add(dtmf_button, tr("Show DTMF _keypad (Ctrl+D)")); - - // Buttons position - phoneKey_msg->move (pt->getX(VOICEMAIL), pt->getY(VOICEMAIL)); - phoneKey_transf->move (pt->getX(TRANSFER), pt->getY(TRANSFER)); - phoneKey_conf->move (pt->getX(CONFERENCE), pt->getY(CONFERENCE)); - reduce_button->move (pt->getX(MINIMIZE), pt->getY(MINIMIZE)); - addr_book_button->move (pt->getX(DIRECTORY), pt->getY(DIRECTORY)); - quit_button->move (pt->getX(CLOSE), pt->getY(CLOSE)); - configuration_button->move (pt->getX(SETUP), pt->getY(SETUP)); - hangup_button->move (pt->getX(HANGUP), pt->getY(HANGUP)); - dial_button->move (pt->getX(CONNECT), pt->getY(CONNECT)); - mute_button->move (pt->getX(MUTE), pt->getY(MUTE)); - dtmf_button->move (pt->getX(DTMF_SHOW), pt->getY(DTMF_SHOW)); - - // Loop for line buttons - // Initialisation, set no focus, set geometry, set palette, pixmap - for (int j = 0; j < NUMBER_OF_LINES; j++) { - QString lnum; - - lnum = "l" + lnum.setNum (j + 1); - phLines[j]->setButton(new JPushButton( - this, NULL, lnum.ascii())); - phLines[j]->button()->move (pt->getX(lnum),pt->getY(lnum)); - } - - // Set pixmaps volume - micVolVector = new Vector(this, VOL_MIC, pt); - spkrVolVector = new Vector(this, VOL_SPKR, pt); - - vol_mic = new VolumeControl(this, NULL, VOLUME, micVolVector); - vol_spkr = new VolumeControl(this, NULL, VOLUME, spkrVolVector); - vol_mic->move(vol_mic_x, vol_mic_y); - vol_spkr->move(vol_spkr_x, vol_spkr_y); -} - -void -QtGUIMainWindow::connections (void) { - // Connect for clicked numeric _keypad button - connect ((QObject*)_keypad->key0, SIGNAL(clicked()), this, - SLOT(pressedKey0())); - connect ((QObject*)_keypad->key1, SIGNAL(clicked()), this, - SLOT(pressedKey1())); - connect ((QObject*)_keypad->key2, SIGNAL(clicked()), this, - SLOT(pressedKey2())); - connect ((QObject*)_keypad->key3, SIGNAL(clicked()), this, - SLOT(pressedKey3())); - connect ((QObject*)_keypad->key4, SIGNAL(clicked()), this, - SLOT(pressedKey4())); - connect ((QObject*)_keypad->key5, SIGNAL(clicked()), this, - SLOT(pressedKey5())); - connect ((QObject*)_keypad->key6, SIGNAL(clicked()), this, - SLOT(pressedKey6())); - connect ((QObject*)_keypad->key7, SIGNAL(clicked()), this, - SLOT(pressedKey7())); - connect ((QObject*)_keypad->key8, SIGNAL(clicked()), this, - SLOT(pressedKey8())); - connect ((QObject*)_keypad->key9, SIGNAL(clicked()), this, - SLOT(pressedKey9())); - connect ((QObject*)_keypad->keyStar, SIGNAL(clicked()), this, - SLOT(pressedKeyStar())); - connect ((QObject*)_keypad->keyHash, SIGNAL(clicked()), this, - SLOT(pressedKeyHash())); - connect ((QObject*)_keypad->keyClose, SIGNAL(clicked()), this, - SLOT(dtmfKeypad())); - - // Connections for the lines - connect (phLines[0]->button(), SIGNAL(clicked()), this, - SLOT(button_line0())); - connect (phLines[1]->button(), SIGNAL(clicked()), this, - SLOT(button_line1())); - connect (phLines[2]->button(), SIGNAL(clicked()), this, - SLOT(button_line2())); - connect (phLines[3]->button(), SIGNAL(clicked()), this, - SLOT(button_line3())); - connect (phLines[4]->button(), SIGNAL(clicked()), this, - SLOT(button_line4())); - connect (phLines[5]->button(), SIGNAL(clicked()), this, - SLOT(button_line5())); - - // Misc - connect (phoneKey_msg, SIGNAL(clicked()), this, SLOT(button_msg())); - connect (phoneKey_transf, SIGNAL(clicked()), this, SLOT(button_transfer())); - connect (phoneKey_conf, SIGNAL(clicked()), this, SLOT(button_conf())); - connect (dial_button, SIGNAL(clicked()), this, SLOT(dial())); - connect (mute_button, SIGNAL(clicked()), this, SLOT(button_mute())); - connect (hangup_button, SIGNAL(clicked()), this, SLOT(hangupLine())); - connect (configuration_button,SIGNAL(clicked()),this,SLOT(configuration())); - connect (addr_book_button, SIGNAL(clicked()), this,SLOT(addressBook())); - connect (dtmf_button, SIGNAL(clicked()), this, SLOT(dtmfKeypad())); - - // Connect to reduce - connect (reduce_button, SIGNAL(clicked()), this, SLOT(reduceHandle())); - // Connect to quit with keyboard - connect (this, SIGNAL(keyPressed(int)), this, SLOT(qt_quitApplication())); - // Connect to quit with quit button - connect (quit_button, SIGNAL(clicked()), this, SLOT(qt_quitApplication())); - - // Connections for volume control - connect(vol_spkr, SIGNAL(setVolumeValue(int)), this, - SLOT(volumeSpkrChanged(int))); - connect(vol_mic, SIGNAL(setVolumeValue(int)), this, - SLOT(volumeMicChanged(int))); - -} - -/** - * Returns true if the keyboard mapping returns letters. - * - * @return bool - */ -bool -QtGUIMainWindow::isInTextMode (void) { - if (modeType == TEXT_MODE) { - return true; - } else { - return false; - } -} - -/** - * Returns true if the keyboard mapping returns digits. - * - * @return bool - */ -bool -QtGUIMainWindow::isInNumMode (void) { - if (modeType == NUM_MODE) { - return true; - } else { - return false; - } -} - -/** - * Sets up the keyboard mapping mode. - */ -void -QtGUIMainWindow::setMode (int mode) { - this->modeType = mode; -} - -short -QtGUIMainWindow::isThereIncomingCall (void) -{ - for (int i = 0; i < NUMBER_OF_LINES; i++) { - if (_TabIncomingCalls[i] > 0) { - return _TabIncomingCalls[i]; - } - } - - return -1; -} - -short -QtGUIMainWindow::isIncomingCall (int line) -{ - if (_TabIncomingCalls[line] > 0) { - return _TabIncomingCalls[line]; - } else { - return -1; - } -} - -int -QtGUIMainWindow::id2line (short id) -{ - int i; - for (i = 0; i < NUMBER_OF_LINES; i++) { - if (phLines[i]->getCallId() == id) { - return i; - } - } - if (i == NUMBER_OF_LINES) { - _debug("Id is not attributed to a phoneline\n"); - return -1; - } - return -1; -} - -short -QtGUIMainWindow::line2id (int line) -{ - short i; - if (line != -1) { - i = phLines[line]->getCallId(); - } else { - return -1; - } - - if (i > 0) { - return i; - } else { - return -1; - } -} - -void -QtGUIMainWindow::changeLineStatePixmap (int line, line_state state) -{ - // Set free-status for current line - phLines[line]->setState(state); - // Set free-pixmap - if (state == ONHOLD) { - // Because for the state of line pixmap there are just 2 states - // (FREE and BUSY), so we associate ONHOLD to BUSY - state = BUSY; - } - phLines[line]->button()->setPixmap(TabLinePixmap[line][state]); -} - -int -QtGUIMainWindow::busyLineNumber (void) -{ - int temp = -1; - for (int i = 0; i < NUMBER_OF_LINES; i++) { - if (phLines[i]->isBusy() and i != _currentLine) { - temp = i; - } - } - return temp; -} - -int -QtGUIMainWindow::putOnHoldBusyLine (int line) -{ - if (line != -1 and !phLines[line]->getbRinging()) { - if (!getCall(line2id(line))->isRinging() and !getCall(line2id(line))->isProgressing()) { - // Occurs when newly off-hook line replaces another one. - _debug("On hold line %d [id=%d]\n", line, line2id(line)); - if (qt_onHoldCall(line2id(line)) != 1) { - return -1; - } - } - changeLineStatePixmap(line, ONHOLD); - return 1; - } - return 0; -} - -void -QtGUIMainWindow::dialtone (bool var) { - if (var) { - Manager::instance().playTone(); - } -} - -void -QtGUIMainWindow::callIsRinging(int id, int line, int busyLine) -{ - changeLineStatePixmap(line, BUSY); - putOnHoldBusyLine(busyLine); - displayContext(id); - if (getChooseLine()) { - // If a free line is off-hook, set this line to free state - setChooseLine(false); - changeLineStatePixmap(getChosenLine(), FREE); - dialtone(false); - } -} - -void -QtGUIMainWindow::callIsProgressing (int id, int line, int busyLine) -{ - // Same function of callIsRinging - callIsRinging(id, line, busyLine); -} - -int -QtGUIMainWindow::callIsBusy (Call* call, int id, int line, int busyLine) -{ - if(call->isAnswered() and getPrevLine() != line) { - // If the current line is not the line which is answered - _debug("CASE 3 Call %d already answered\n", id); - changeLineStatePixmap(line, BUSY); - putOnHoldBusyLine(busyLine); - if (getChooseLine()) { - // If a free line is off-hook, set this line to free state - changeLineStatePixmap(getChosenLine(), FREE); - dialtone(false); - } - peerAnsweredCall(id); - displayContext(id); - } else { - // If call is busy, put this call on hold - _debug("CASE 4 Put Call %d on-hold\n", id); - changeLineStatePixmap(line, ONHOLD); - displayStatus(ONHOLD_STATUS); - if (qt_onHoldCall(id) != 1) { - Manager::instance().displayErrorText(id, "On-hold call failed !\n"); - return -1; - } - } - return 1; -} - -int -QtGUIMainWindow::callIsOnHold(int id, int line, int busyLine) -{ - changeLineStatePixmap(line, BUSY); - if (putOnHoldBusyLine(busyLine) == -1) { - Manager::instance().displayErrorText(id, "Off-hold call failed !\n"); - return -1; - } - if (getChooseLine()) { - // If a free line is off-hook, set this line to free state - setChooseLine(false); - dialtone(false); - if (busyLine == -1) { - changeLineStatePixmap(getChosenLine(), FREE); - } - } - _lcd->setInFunction(true); - if (qt_offHoldCall(id) != 1) { - Manager::instance().displayErrorText(id, "Off-hold call failed !\n"); - return -1; - } - - displayContext(id); - _lcd->setLenToShift(0); - return 1; -} - -int -QtGUIMainWindow::callIsIncoming (int id, int line, int busyLine) -{ - _TabIncomingCalls[line] = -1; - changeLineStatePixmap(line, BUSY); - putOnHoldBusyLine(busyLine); - if (qt_answerCall(id) != 1) { - Manager::instance().displayErrorText(id, "Answered call failed !\n"); - return -1; - } - return 1; -} - -void -QtGUIMainWindow::clickOnFreeLine(int line, int busyLine) -{ - phLines[line]->button()->setPixmap(TabLinePixmap[line][BUSY]); - displayStatus(ENTER_NUMBER_STATUS); - setChooseLine(true); - setChosenLine(line); - - if (!Manager::instance().getbCongestion()) { - putOnHoldBusyLine(busyLine); - } else { - // When a new line is off-hook -> hangup the previous line - // which runs congestion tone - changeLineStatePixmap(busyLine, FREE); - _lcd->clear(QString(ENTER_NUMBER_STATUS)); - Manager::instance().congestion(false); - phLines[busyLine]->setCallId(0); - } - if (getPrevLine() != -1 and getPrevLine() != line - and phLines[getPrevLine()]->isFree()) { - changeLineStatePixmap(getPrevLine(), FREE); - } - - setPrevLine(line); - - _lcd->setInFunction(false); - _lcd->clearBuffer(); - dialtone(true); -} - -//////////////////////////////////////////////////////////////////////////// -// Public functions -//////////////////////////////////////////////////////////////////////////// -Call* -QtGUIMainWindow::getCall (short id) -{ - return Manager::instance().getCall(id); -} - -int -QtGUIMainWindow::associateCall2Line (short id) -{ - int i; - - if (getChooseLine()) { - i = getCurrentLine(); - phLines[i]->setState(BUSY); - phLines[i]->setCallId(id); - return i; - } else { - for (i = 0 ; i < NUMBER_OF_LINES; i++) { - if (phLines[i]->isFree()) { - phLines[i]->setState(BUSY); - phLines[i]->setCallId(id); - return i; - } - } - if (i == NUMBER_OF_LINES) { - displayError("All the lines are busy"); - return -1; - } - return -1; - } -} - -PhoneLine* -QtGUIMainWindow::getPhoneLine (short id) -{ - int i; - for (i = 0; i < NUMBER_OF_LINES; i++) { - if (phLines[i]->getCallId() == id) { - return phLines[i]; - } - } - if (i == NUMBER_OF_LINES) { - _debug("getPhoneLine(id): Id %d is not attributed to a phoneline\n", id); - return NULL; - } - return NULL; -} - -int -QtGUIMainWindow::getCurrentLine (void) -{ - return _currentLine; -} - -void -QtGUIMainWindow::setCurrentLine (int current) -{ - _currentLine = current; -} - -bool -QtGUIMainWindow::isCurrentId (short id) -{ - if (line2id(getCurrentLine()) == id) { - return true; - } else { - return false; - } -} - -int -QtGUIMainWindow::getElapse (void) -{ - int line = getCurrentLine(); - return (phLines[line]->timer->elapsed() / 1000); -} - -///////////////////////////////////////////////////////////////////////////// -// Reimplementation of virtual functions -///////////////////////////////////////////////////////////////////////////// - -int -QtGUIMainWindow::incomingCall (short id) -{ - int i; - // Associate call id with a phoneline i. - i = associateCall2Line(id); - if (i >= 0) { - _TabIncomingCalls[i] = id; - _debug("Phoneline %d associated to id %d\n", i, id); - if (getPhoneLine(id) != NULL) { - _lcd->setInFunction(false); - // Set boolean to true to blink pixmap to notify the ringing line - getPhoneLine(id)->setbRinging(true); - // Set the status to the phoneline - getPhoneLine(id)->setStatus(QString(getCall(id)->getStatus())); - } - - // To store information about stop scrolling text - _lcd->resetForScrolling (false); - phLines[i]->setStopScrolling(false); - // Set scrolling mode - phLines[i]->setScrolling(true); - _lcd->setIsScrolling(true); - } - - return i; -} - -void -QtGUIMainWindow::peerAnsweredCall (short id) -{ - dialtone(false); - getPhoneLine(id)->setStatus(QString(getCall(id)->getStatus())); - // Afficher call-timer - startCallTimer(id); - Manager::instance().displayStatus(CONNECTED_STATUS); - setChooseLine(false); -} - -void -QtGUIMainWindow::peerRingingCall (short id) -{ - getPhoneLine(id)->setStatus(QString(getCall(id)->getStatus())); - return 1; -} - - -void -QtGUIMainWindow::peerHungupCall (short id) -{ - int line = id2line(id); - - // To store information about scrolling text - _lcd->resetForScrolling (true); - phLines[line]->setStopScrolling(true); - // Unset scrolling mode - _lcd->setIsScrolling(false); - phLines[getCurrentLine()]->setScrolling(false); - - if (line == getCurrentLine() or getCurrentLine() == -1) { - stopCallTimer(id); - Manager::instance().displayStatus(HANGUP_STATUS); - setCurrentLine(-1); - } else { - // Stop the call timer when hang up - if (getPhoneLine(id)->timer != NULL) { - getPhoneLine(id)->stopTimer(); - } - getPhoneLine(id)->first = true; - } - getPhoneLine(id)->setStatus(QString(getCall(id)->getStatus())); - changeLineStatePixmap(line, FREE); - getPhoneLine(id)->setbRinging(false); - getPhoneLine(id)->setCallId(0); - setChooseLine(false); - _TabIncomingCalls[line] = -1; - - return 1; -} - -void -QtGUIMainWindow::displayTextMessage (short id, const string& message) -{ - (void)id; // To remove warning message of unused parameter - _lcd->clearBuffer(); - _lcd->appendText(message); -} - -void -QtGUIMainWindow::displayErrorText (short id, const string& message) -{ - _lcd->clearBuffer(); - _lcd->appendText(message); - - // Set scrolling mode - _lcd->setIsScrolling(true); - phLines[id2line(id)]->setScrolling(true); -} - -void -QtGUIMainWindow::displayError (const string& error) -{ - _lcd->clearBuffer(); - _lcd->appendText(error); -} - -void -QtGUIMainWindow::displayStatus (const string& status) -{ - if (status.compare(HANGUP_STATUS) == 0 or - status.compare(TRANSFER_STATUS) == 0) { - _lcd->clearBuffer(); - } - _lcd->setStatus(status); -} - -void -QtGUIMainWindow::displayContext (short id) -{ - displayStatus(getCall(id)->getStatus()); - - // To fetch information about scrolling text according to the context - // of the phoneline. - _lcd->setIsScrolling(phLines[id2line(id)]->scrolling()); - _lcd->resetForScrolling(phLines[id2line(id)]->stopScrolling()); - - if (getCall(id)->isIncomingType()) { - displayTextMessage (id, getCall(id)->getCallerIdName()); - } else if (getCall(id)->isOutgoingType()) { - displayTextMessage (id, getCall(id)->getCallerIdNumber()); - } else { - _debug("No call with id %d\n", id); - } -} - -void -QtGUIMainWindow::setup (void) -{ - configuration(); -} - -int -QtGUIMainWindow::selectedCall (void) -{ - int id = -1; - if (getChooseLine()) { - id = line2id(getChosenLine()); - } - return id; -} - -//////////////////////////////////////////////////////////////////////////// -// IP-phone user actions -//////////////////////////////////////////////////////////////////////////// - -int -QtGUIMainWindow::qt_outgoingCall (void) -{ - int id; - int line = -1; - - - if (_lcd->getTextBuffer() == NULL) { - Manager::instance().displayStatus(ENTER_NUMBER_STATUS); - return -1; - } - const string to(_lcd->getTextBuffer().ascii()); - if (to.empty()) { - Manager::instance().displayStatus(ENTER_NUMBER_STATUS); - return -1; - } - - id = outgoingCall(to); - if (id > 0) { - line = associateCall2Line(id); - if(line == -1) { - _debug("Call %d -> there's no available lines\n", id); - return -1; - } - _debug("Call %d -> line %d\n", id, line); - - - // To store information about stop scrolling text - _lcd->resetForScrolling (false); - phLines[line]->setStopScrolling(false); - - setCurrentLine(line); - displayStatus(TRYING_STATUS); - Manager::instance().getCall(id)->setCallerIdNumber(to); - changeLineStatePixmap(line, BUSY); - } - - return line; -} - -int -QtGUIMainWindow::qt_hangupCall (short id) -{ - int i; - i = hangupCall(id); - stopCallTimer(id); - displayStatus(HANGUP_STATUS); - setCurrentLine(-1); - return i; -} - -int -QtGUIMainWindow::qt_cancelCall (short id) -{ - int i; - i = cancelCall(id); - displayStatus(HANGUP_STATUS); - setCurrentLine(-1); - return i; -} - -int -QtGUIMainWindow::qt_answerCall (short id) -{ - int i; - i = answerCall(id); - getPhoneLine(id)->setStatus(QString(getCall(id)->getStatus())); - startCallTimer(id); - displayStatus(CONNECTED_STATUS); - getPhoneLine(id)->setbRinging(false); - return i; -} - -int -QtGUIMainWindow::qt_onHoldCall (short id) -{ - int i; - i = onHoldCall(id); - getPhoneLine(id)->setStatus(QString(getCall(id)->getStatus())); - return i; -} - -int -QtGUIMainWindow::qt_offHoldCall (short id) -{ - int i; - i = offHoldCall(id); - getPhoneLine(id)->setStatus(QString(getCall(id)->getStatus())); - displayStatus(CONNECTED_STATUS); - return i; -} - -int -QtGUIMainWindow::qt_transferCall (short id) -{ - int i; - - if (id != -1) { - const string to(_lcd->getTextBuffer().ascii());; - _debug("qt_transferCall: Transfer call %d to %s number\n", id, to.data()); - i = transferCall(id, to); - getPhoneLine(id)->setStatus(QString(getCall(id)->getStatus())); - return i; - } else { - return 0; - } -} - -void -QtGUIMainWindow::qt_muteOn (short id) -{ - muteOn(id); - getPhoneLine(id)->setStatus(QString(getCall(id)->getStatus())); - displayStatus(MUTE_ON_STATUS); -} - -void -QtGUIMainWindow::qt_muteOff (short id) -{ - muteOff(id); - getPhoneLine(id)->setStatus(QString(getCall(id)->getStatus())); - displayStatus(CONNECTED_STATUS); -} - -int -QtGUIMainWindow::qt_refuseCall (short id) -{ - int i; - i = refuseCall(id); - displayStatus(HANGUP_STATUS); - getPhoneLine(id)->setbRinging(false); - _TabIncomingCalls[id2line(id)] = -1; - setCurrentLine(-1); - return i; -} - -/////////////////////////////////////////////////////////////////////////////// -// Public Methods implementations // -/////////////////////////////////////////////////////////////////////////////// - - -/** - * Initializes LCD display, and move it at the configuration file position. - */ -void -QtGUIMainWindow::setMainLCD (void) { - // Screen initialisation - this->_lcd->move (pt->getX(SCREEN), pt->getY(SCREEN)); -} - - -int -QtGUIMainWindow::toggleLine (int line) -{ - int id; - int busyLine; - int ret = 1; - - Call* call; - - if (line == -1) { - return -1; - } - - setCurrentLine(line); - busyLine = busyLineNumber(); - setTransfer(false); - - id = line2id(line); - if (id > 0) { - // If the call-id already exists - call = getCall(id); - if (call == NULL) { - // Check if the call exists - return -1; - } else if (call->isRinging()) { - // If call is ringing - _debug("CASE 1: Call %d is ringing\n", id); - callIsRinging(id, line, busyLine); - } else if (!call->isIncomingType() and call->isProgressing()) { - // If call is progressing - _debug("CASE 2: Call %d is progressing\n", id); - callIsProgressing (id, line, busyLine); - } else if (call->isBusy()) { - ret = callIsBusy (call, id, line, busyLine); - } else if (call->isOnHold()) { - // If call is on hold, put this call on busy state - _debug("CASE 5: Put Call %d off-hold\n", id); - ret = callIsOnHold(id, line, busyLine); - } else if (call->isIncomingType()) { - // If incoming call occurs - _debug("CASE 6: Answer call %d\n", id); - ret = callIsIncoming (id, line, busyLine); - } else { - _debug("Others cases to handle\n"); - ret = -1; - } - setPrevLine(line); - } else { - // If just click on free line - _debug("CASE 7: New line off-hook\n"); - clickOnFreeLine(line, busyLine); - } - return ret; -} - -/** - * Actions occur when click on hang off button. - * Use to validate incoming and outgoing call, transfer call. - */ -void -QtGUIMainWindow::dial (void) -{ - short i; - int line = -1; - - if ((i = isThereIncomingCall()) > 0) { - // If new incoming call - line = id2line(i); - if (line != -1) { - _TabIncomingCalls[line] = -1; - toggleLine(line); - } else { - return; - } - } else if (getTransfer()){ - // If call transfer - setTransfer(false); - int id = line2id(getCurrentLine()); - if(qt_transferCall (id) != 1) { - Manager::instance().displayErrorText(id, "Transfer failed !\n"); - } - } else { - // If new outgoing call - if (getCurrentLine() < 0 or getChooseLine()) { - line = qt_outgoingCall(); - if (line == -1) { - return; - } else { - setPrevLine(line); - } - } - } -} - -/** - * Hangup the current call. - */ -void -QtGUIMainWindow::hangupLine (void) -{ - int i; - int line = getCurrentLine(); - int id = phLines[line]->getCallId(); - - setTransfer(false); - - // To store information about stop scrolling text - _lcd->resetForScrolling (true); - phLines[line]->setStopScrolling(true); - // Unset scrolling mode - _lcd->setIsScrolling(false); - phLines[getCurrentLine()]->setScrolling(false); - - if (Manager::instance().getbCongestion() and line != -1) { - // If congestion tone - if (id > 0 and qt_hangupCall(id)) { - changeLineStatePixmap(line, FREE); - _lcd->clear(QString(ENTER_NUMBER_STATUS)); - Manager::instance().congestion(false); - phLines[line]->setCallId(0); - } else if (id == 0) { - changeLineStatePixmap(line, FREE); - } - } else if ((i = isThereIncomingCall()) > 0){ - // To refuse new incoming call - _debug("Refuse call %d\n", id); - if (!qt_refuseCall(i)) { - Manager::instance().displayErrorText(id, "Refused call failed !\n"); - } - changeLineStatePixmap(id2line(i), FREE); - phLines[id2line(i)]->setCallId(0); - } else if (line >= 0 and id > 0 and getCall(id)->isProgressing()) { - // If I want to cancel a call before ringing. - if (!qt_cancelCall(id)) { - Manager::instance().displayErrorText(id, "Cancelled call failed !\n"); - } - changeLineStatePixmap(line, FREE); - phLines[line]->setCallId(0); - setChooseLine(false); - } else if (line >= 0 and id > 0) { - // If hangup current line normally - _debug("Hangup line %d\n", line); - if (!qt_hangupCall(id)) { - Manager::instance().displayErrorText(id, "Hangup call failed !\n"); - } - changeLineStatePixmap(line, FREE); - phLines[line]->setCallId(0); - setChooseLine(false); - } else if (line >= 0) { - _debug("Just load free pixmap for the line %d\n", line); - changeLineStatePixmap(line, FREE); - dialtone(false); - setChooseLine(false); - setCurrentLine(-1); - } -} - -/** - * Stop the blinking message slot and load the message-off button pixmap. - */ -void -QtGUIMainWindow::stopVoiceMessageNotification (void) { - _msgVar = false; - phoneKey_msg->setPixmap(TabMsgPixmap[FREE]); -} - -void -QtGUIMainWindow::startVoiceMessageNotification (void) { - _msgVar = true; -} - -/** - * Stop the call timer. - * - * @param line: number of line - */ -void -QtGUIMainWindow::stopCallTimer (short id) { - // Stop the call timer when hang up - if (getPhoneLine(id)->timer != NULL) { - getPhoneLine(id)->stopTimer(); - } - // No display call timer, display current hour - _lcd->setInFunction(false); - getPhoneLine(id)->first = true; -} - -/** - * Start the call timer. - * - * @param line: number of line - */ -void -QtGUIMainWindow::startCallTimer (short id) { - // Call-timer enable - _lcd->setInFunction(true); - - // To start the timer for display text just one time - if (getPhoneLine(id)->first) { - getPhoneLine(id)->startTimer(); - getPhoneLine(id)->first = false; - } -} - -/////////////////////////////////////////////////////////////////////////////// -// Public slot implementations // -/////////////////////////////////////////////////////////////////////////////// -void -QtGUIMainWindow::volumeSpkrChanged (int val) { - Manager::instance().setSpkrVolume(val); -} - -void -QtGUIMainWindow::volumeMicChanged (int val) { - Manager::instance().setMicroVolume(val); -} - -void -QtGUIMainWindow::registerSlot (void) { - _panel->saveSlot(); - registerVoIPLink(); -} - -/** - * Slot to blink with free and busy pixmaps when line is hold. - */ -void -QtGUIMainWindow::blinkLineSlot (void) { - static bool isOn = false; - int state = BUSY; - if (!isOn) { - state = FREE; - } - - for (int i = 0; i < NUMBER_OF_LINES; i++) { - // If lines are hold on, set blinking pixmap - if (phLines[i]->isOnHold()) { - phLines[i]->button()->setPixmap(TabLinePixmap[i][state]); - } - } - isOn = !isOn; -} - -// Dial the voicemail Number automatically when button is clicked -void -QtGUIMainWindow::button_msg (void) { - stopVoiceMessageNotification(); - _lcd->clearBuffer(); - _lcd->appendText(Manager::instance().getConfigString(PREFERENCES, -VOICEMAIL_NUM)); - if (qt_outgoingCall() == -1) { - return; - } -} - -// Allow to enter a phone number to transfer the current call. -// This number is validated by ok-button or typing Enter -void -QtGUIMainWindow::button_transfer (void) { - int line_num = getCurrentLine(); - if (line_num != -1 and phLines[line_num]->isBusy() - and !Manager::instance().getbCongestion()) { - setTransfer(true); - onHoldCall(line2id(getCurrentLine())); - displayStatus(TRANSFER_STATUS); - } -} - -void -QtGUIMainWindow::button_conf (void) { -//TODO: This feature is not implemented yet - QMessageBox::information(this, "Conference", - "This feature is not implemented yet", QMessageBox::Yes); -} - -void -QtGUIMainWindow::button_line0 (void) { - toggleLine (0); - -} - -void -QtGUIMainWindow::button_line1 (void) { - toggleLine (1); -} - -void -QtGUIMainWindow::button_line2 (void) { - toggleLine (2); -} - -void -QtGUIMainWindow::button_line3 (void) { - toggleLine (3); -} - -void -QtGUIMainWindow::button_line4 (void) { - toggleLine (4); -} - -void -QtGUIMainWindow::button_line5 (void) { - toggleLine (5); -} - -void -QtGUIMainWindow::button_mute(void) -{ - // Disable micro sound - static bool isOn = true; - - int id = line2id(getCurrentLine()); - - if (id != -1 and Manager::instance().getNumberOfCalls() > 0) { - // If there is at least a pending call - if(!isOn) { - qt_muteOff(id); - } else { - qt_muteOn(id); - } - isOn = !isOn; - } -} - -// Show the setup _panel -void -QtGUIMainWindow::configuration (void) { - _panel->show(); -} - -void -QtGUIMainWindow::addressBook (void) { - QMessageBox::information(this, "Directory", - "This feature is not implemented yet", QMessageBox::Yes); -} - -// Handle the dtmf-button click -void -QtGUIMainWindow::dtmfKeypad (void) { - if (_keypad->isVisible()) { - // Hide _keypad if it's visible. - _keypad->hide(); - } else { - - if (_first and !getMoved()) { - // If it's the first time that _keypad is shown. - // The position is fixed with the main initial position. - _first = false; - _keypad->setGeometry (MAIN_INITIAL_POSITION + - this->getSourceImage().width(), - MAIN_INITIAL_POSITION, - _keypad->getSourceImage().width(), - _keypad->getSourceImage().height()); - } else { - // If main window is moved, we calculate the _keypad new position - // to fix it with main window - if (getMoved()) { - _keypad->setGeometry (positionOffsetX(), - getGlobalMouseY() - getMouseY(), - _keypad->getSourceImage().width(), - _keypad->getSourceImage().height()); - } - if (_keypad->getMoved()) { - // If _keypad is moved, it shows at the previous position - _keypad->setGeometry ( - _keypad->getGlobalMouseX()-_keypad->getMouseX(), - _keypad->getGlobalMouseY()-_keypad->getMouseY(), - _keypad->getSourceImage().width(), - _keypad->getSourceImage().height()); - } - } - - // Show _keypad if it's hidden. - _keypad->show(); - } - -} - -// Get x-position offset, related to the screen size, to show numeric _keypad -int -QtGUIMainWindow::positionOffsetX (void) { - QRect screenRect; - int offset; - - // Get the screen geometry - screenRect = (QApplication::desktop())->screenGeometry (0); - - offset = this->getSourceImage().width() - getMouseX() + getGlobalMouseX(); - if (offset + _keypad->getSourceImage().width() > screenRect.right()) { - return getGlobalMouseX() - ( - getMouseX() + _keypad->getSourceImage().width()); - } else { - return offset; - } -} - -/** - * Slot when receive a message, blink pixmap. - */ -void -QtGUIMainWindow::blinkMessageSlot (void) { - static bool isOn = false; - int stateMsg = BUSY; - - if(!isOn) { - stateMsg = FREE; - } - - if (_msgVar) { - phoneKey_msg->setPixmap(TabMsgPixmap[stateMsg]); - } - isOn = !isOn; -} - - -/** - * Slot when phone is ringing, blink pixmap. - */ -void -QtGUIMainWindow::blinkRingSlot (void) -{ - static bool isOn = false; - int state = BUSY; - int i; - - if (isThereIncomingCall() != -1) { - // For the line - if (!isOn) { - state = FREE; - } - for (i = 0; i < NUMBER_OF_LINES; i++) { - if (isIncomingCall(i) != -1 and phLines[i]->getbRinging()) { - phLines[i]->button()->setPixmap(TabLinePixmap[i][state]); - } - } - isOn = !isOn; - } -} - -/** - * Slot to quit application with or without QMessageBox confirmation - */ -void -QtGUIMainWindow::qt_quitApplication (void) -{ - // Save volume positions - // TODO: save position if direction is horizontal -/* - Config::set("Audio", "Volume.speakers_x", pt->getX(VOL_SPKR)); - if (vol_spkr->getValue() != 0) { - Config::set("Audio", "Volume.speakers_y", pt->getY(VOL_SPKR) - - vol_spkr->getValue()); - } - Config::set("Audio", "Volume.micro_x", pt->getX(VOL_MIC)); - if (vol_mic->getValue() != 0) { - Config::set("Audio", "Volume.micro_y", pt->getY(VOL_MIC) - - vol_mic->getValue()); - } -*/ - // Save current position of the controls volume - save(); - - if (Manager::instance().getConfigInt(PREFERENCES, CONFIRM_QUIT)) { - // If message-box - if (QMessageBox::question(this, "Confirm quit", - "Are you sure you want to quit SFLPhone ?", - QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes) { - QApplication::exit(0); - if (!quitApplication()) { - _debug("Your data didn't be saved\n"); - } - } - } else { - // If no message-box - QApplication::exit(0); - if (!quitApplication()) { - _debug("Your data didn't be saved\n"); - } - } -} - -/** - * Slot to strip _urlinput. - */ -void -QtGUIMainWindow::stripSlot (void) { - QRegExp rx(REG_EXPR); - _lcd->appendText(_urlinput->url->text().remove(rx)); - _urlinput->close(); - dial(); -} - -/** - * Slot when numeric _keypad phonekey is pressed, append the key text and setup - * the DTMF _keypad . - * - * @param button group id - */ -void -QtGUIMainWindow::pressedKeySlot (int id) { - char code = 0; - int callid; - - // Stop dial tone because we started dialing. - if (_dialtone) { - dialtone(false); - } - - switch (id) { - case KEYPAD_ID_0: code = '0'; break; - case KEYPAD_ID_1: code = '1'; break; - case KEYPAD_ID_2: code = '2'; break; - case KEYPAD_ID_3: code = '3'; break; - case KEYPAD_ID_4: code = '4'; break; - case KEYPAD_ID_5: code = '5'; break; - case KEYPAD_ID_6: code = '6'; break; - case KEYPAD_ID_7: code = '7'; break; - case KEYPAD_ID_8: code = '8'; break; - case KEYPAD_ID_9: code = '9'; break; - case KEYPAD_ID_STAR: code = '*'; break; - case KEYPAD_ID_HASH: code = '#'; break; - } - - callid = line2id(getCurrentLine()); - if (callid != -1 and getCall(callid)->isBusy()) { - // To send DTMF during call, no display of them - sendDtmf(callid, code); - } else if (Manager::instance().isDriverLoaded() - and Manager::instance().error()->getError() == 0) { - // To compose, phone number appears in the screen if the driver is loaded - // and there is no error in configuration setup - _lcd->appendText (code); - - // Unset scrolling mode - _lcd->setIsScrolling(false); - phLines[getCurrentLine()]->setScrolling(false); - } - // To generate the dtmf if there is no error in configuration - if (Manager::instance().error()->getError() == 0) { - Manager::instance().playDtmf(code); - } -} - -// Save settings in config-file -void -QtGUIMainWindow::save() { - saveConfig(); -} - -void -QtGUIMainWindow::applySkin (void) { - _apply = true; - // For skin of the screen - _lcd->initGraphics(); - setMainLCD(); - // For skin of the gui - initSkin(); -} - - -// Handle operation to minimize the application -void -QtGUIMainWindow::reduceHandle (void) { - if (Manager::instance().getConfigInt(PREFERENCES, -CHECKED_TRAY)) { - clickHandle(); - } else { - showMinimized(); - } -} - -// Handle mouse left-button click to minimize/maximize the application -void -QtGUIMainWindow::clickHandle (void) { - if (this->isShown()) { - hide(); - } - - else if (this->isMinimized()) { - showMaximized(); - } - - else { - show(); - } -} - -void -QtGUIMainWindow::pressedKey0 (void) { - pressedKeySlot (KEYPAD_ID_0); -} - -void -QtGUIMainWindow::pressedKey1 (void) { - pressedKeySlot (KEYPAD_ID_1); -} - -void -QtGUIMainWindow::pressedKey2 (void) { - pressedKeySlot (KEYPAD_ID_2); -} -void -QtGUIMainWindow::pressedKey3 (void) { - pressedKeySlot (KEYPAD_ID_3); -} -void -QtGUIMainWindow::pressedKey4 (void) { - pressedKeySlot (KEYPAD_ID_4); -} -void -QtGUIMainWindow::pressedKey5 (void) { - pressedKeySlot (KEYPAD_ID_5); -} -void -QtGUIMainWindow::pressedKey6 (void) { - pressedKeySlot (KEYPAD_ID_6); -} -void -QtGUIMainWindow::pressedKey7 (void) { - pressedKeySlot (KEYPAD_ID_7); -} -void -QtGUIMainWindow::pressedKey8 (void) { - pressedKeySlot (KEYPAD_ID_8); -} -void -QtGUIMainWindow::pressedKey9 (void) { - pressedKeySlot (KEYPAD_ID_9); -} -void -QtGUIMainWindow::pressedKeyStar (void) { - pressedKeySlot (KEYPAD_ID_STAR); -} -void -QtGUIMainWindow::pressedKeyHash (void) { - pressedKeySlot (KEYPAD_ID_HASH); -} - -/////////////////////////////////////////////////////////////////////////////// -// Protected Methods implementations // -/////////////////////////////////////////////////////////////////////////////// -/** - * Reimplementation of keyPressEvent() to handle the keyboard mapping. - */ -void -QtGUIMainWindow::keyPressEvent(QKeyEvent *e) { - // Misc. key - switch (e->key()) { - case Qt::Key_At: - case Qt::Key_Colon: - case Qt::Key_Period: - case Qt::Key_Comma: - case Qt::Key_Plus: - case Qt::Key_Minus: - case Qt::Key_Slash: - _lcd->appendText(QChar(e->key())); - return; - break; - - case Qt::Key_Backspace: - _lcd->backspace(); - return; - break; - - case Qt::Key_Escape: - hangupLine(); - return; - break; - - case Qt::Key_Return: - case Qt::Key_Enter: - dial(); - return; - break; - - case Qt::Key_F1: - case Qt::Key_F2: - case Qt::Key_F3: - case Qt::Key_F4: - case Qt::Key_F5: - case Qt::Key_F6: - this->toggleLine(e->key() - Qt::Key_F1); - return; - break; - - // To clear the screen - case Qt::Key_L: - if (e->state() == Qt::ControlButton ) { - _lcd->clear(); - return; - } - break; - // To quit the application - case Qt::Key_Q : - if (e->state() == Qt::ControlButton ) { - emit keyPressed(e->key()); - return; - } - break; - - // To open input line - case Qt::Key_O : - if (e->state() == Qt::ControlButton ) { - _urlinput->show(); - return; - } - break; - - // To show window setup - case Qt::Key_C : - if (e->state() == Qt::ControlButton ) { - configuration(); - return; - } - break; - - // To show/hide dtmf-keypad - case Qt::Key_D : - if (e->state() == Qt::ControlButton ) { - dtmfKeypad(); - return; - } - break; - - // To set mode (text/num) - case Qt::Key_Space: - if (this->isInNumMode()) { - this->setMode(TEXT_MODE); - } else { - this->setMode(NUM_MODE); - } - return; - break; - - // To put mute on/off the mike sound - case Qt::Key_M : - if (e->state() == Qt::ControlButton ) { - button_mute(); - return; - } - break; - - // To transfer call - case Qt::Key_T : - if (e->state() == Qt::ControlButton ) { - button_transfer(); - return; - } - break; - - case Qt::Key_Alt: - case Qt::Key_CapsLock: - case Qt::Key_Shift: - case Qt::Key_Tab: - case Qt::Key_Control: - return; - break; - - default: - break; - } - - if (QChar(e->key()).isDigit() ) { - // Numeric _keypad - if (e->key() == Qt::Key_0) { - pressedKeySlot(KEYPAD_ID_0); - } else { - pressedKeySlot(e->key() - Qt::Key_0 - 1); - } - } - - // Handle * and # too. - else if ((e->key() == Qt::Key_Asterisk) - or (e->key() == Qt::Key_NumberSign)) { - (e->key() == Qt::Key_Asterisk) ? - pressedKeySlot(KEYPAD_ID_STAR) - : pressedKeySlot(KEYPAD_ID_HASH); - } - - // If letter _keypad and numeric mode, display digit. - else if (QChar(e->key()).isLetter() && this->isInNumMode() ) { - pressedKeySlot( - (NumericKeypadTools::keyToNumber(e->key())- Qt::Key_0) - 1); - } - - // If letter _keypad and text mode, display letter. - else if (QChar(e->key()).isLetter() && this->isInTextMode()) { - _lcd->appendText(QChar(e->key()).lower()); - } -} - -// EOF diff --git a/src/gui/qt/qtGUImainwindow.h b/src/gui/qt/qtGUImainwindow.h deleted file mode 100644 index f6420e824c7884f10162094a82aa0ec02177f884..0000000000000000000000000000000000000000 --- a/src/gui/qt/qtGUImainwindow.h +++ /dev/null @@ -1,452 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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. - */ - -#ifndef __QT_GUI_MAIN_WINDOW_H__ -#define __QT_GUI_MAIN_WINDOW_H__ - -#include <qimage.h> -#include <qpixmap.h> -#include <qpopupmenu.h> -#include <qwidget.h> - -#include "skin.h" -#include "../guiframework.h" -#include "configurationpanelui.h" -#include "phoneline.h" -#include "transqwidget.h" -#include "trayicon.h" -#include "url_input.h" - -#define MAIN_INITIAL_POSITION 20 - -// To type with keyboard what you want to appear in the screen. -#define TEXT_MODE 0 -#define NUM_MODE 1 - -class Call; -class DTMF; -class JPushButton; -class MyDisplay; -class MyTrayIcon; -class NumericKeypad; -class PhoneLine; -class Point; -class SipVoIPLink; -class URL_Input; -class VolumeControl; -class Vector; -/////////////////////////////////////////////////////////////////////////////// -// Tray Icon class -/////////////////////////////////////////////////////////////////////////////// -class MyTrayIcon : public TrayIcon -{ - Q_OBJECT -public: - MyTrayIcon(const QPixmap &, const QString &, QPopupMenu *popup = 0, - QObject *parent = 0, const char *name = 0 ); - ~MyTrayIcon(){}; - - QPopupMenu *menu; - -signals: - void clickedLeft(void); -protected: - void mousePressEvent (QMouseEvent *); -}; - -/////////////////////////////////////////////////////////////////////////////// -// GUI main window -/////////////////////////////////////////////////////////////////////////////// -class QtGUIMainWindow : public TransQWidget, public GuiFramework { - Q_OBJECT -public: - // Default Constructor and destructor - QtGUIMainWindow (QWidget* = 0, const char* = 0,WFlags = 0); - ~QtGUIMainWindow(void); - - // To build an array of pixmap according to the state - QPixmap TabLinePixmap[NUMBER_OF_LINES][NUMBER_OF_STATES]; - - // Reimplementation of virtual functions - virtual int incomingCall (short id); - virtual void peerAnsweredCall (short id); - virtual void peerRingingCall (short id); - virtual void peerHungupCall (short id); - virtual void displayTextMessage (short id, const std::string& message); - virtual void displayErrorText (short id, const std::string& message); - virtual void displayError (const std::string& error); - virtual void displayStatus (const std::string& status); - virtual void displayContext (short id); - virtual std::string getRingtoneFile (void); - virtual void setup (void); - virtual void sendMessage(const std::string& code, const std::string& seqId, TokenList& arg) {} - virtual void sendCallMessage(const std::string& code, - const std::string& sequenceId, - short id, - TokenList arg) {} - - - - /* - * Return the id matching to the chosen line - */ - virtual int selectedCall (void); - - // Handle IP-phone user actions - int qt_outgoingCall (void); - int qt_hangupCall (short id); - int qt_cancelCall (short id); - int qt_answerCall (short id); - int qt_onHoldCall (short id); - int qt_offHoldCall (short id); - int qt_transferCall (short id); - void qt_muteOn (short id); - void qt_muteOff (short id); - int qt_refuseCall (short id); - - /* - * Return the call corresponding to the id - */ - Call* getCall (short id); - - /* - * Return the phoneline corresponding to the call-id - */ - PhoneLine* getPhoneLine (short id); - - /* - * Accessor of the current line - */ - int getCurrentLine (void); - - /* - * Modifior of the current line - */ - void setCurrentLine (int current); - - /* - * Check if 'id' is the current id - */ - bool isCurrentId (short id); - - /* - * Return elapse for call-timer - */ - int getElapse (void); - - /* - * Set the skin path from the setup - */ - QString setPathSkin (void); - - /** - * Sets the corresponding pixmap button according to its state. - * Handle operations between lines (on hold, off hold) when you click on - * a line. Manage the different cases which could occur. - * - * @param line: number of the current line - */ - int toggleLine (int); - - /* - * Functions to handle timer call - */ - void stopCallTimer (short); - void startCallTimer (short); - - /* - * Stop the blinking-signal when you check your voicemail (not used yet) - */ - void stopVoiceMessageNotification (void); - void startVoiceMessageNotification (void); - void sendVoiceNbMessage(const std::string& nb_msg) {} - - /* - * Manage if you selected a line before dialing - */ - inline void setChooseLine (bool b) { _chooseLine = b; } - inline bool getChooseLine (void) { return _chooseLine; } - - /* - * Store the line you selected before dialing - */ - inline void setChosenLine (int line) { _chosenLine = line; } - inline int getChosenLine (void) { return _chosenLine; } - - /* - * Manage if you are in transfer mode - */ - inline void setTransfer (bool b) { _transfer = b; } - inline bool getTransfer (void) { return _transfer; } - -signals: - void keyPressed (int); - -public slots: - // Slot when you click on ok-button or type Enter - void dial (void); - - // Notification when you have received incoming call - void blinkRingSlot (void); - - // Notification when you have put on-hold a call - void blinkLineSlot (void); - - // Notification when you have received message in your mailbox - void blinkMessageSlot (void); - - // Slot to use numeric keypad - void pressedKeySlot (int); - - // To remove specified characters before appending the text in url-input - void stripSlot (void); - - // To show the address book (not implemented yet) - void addressBook (void); - - // To show keypad at the specified position - void dtmfKeypad (void); - - // To show setup windows - void configuration (void); - - // Slot to hangup call - void hangupLine (void); - - // Slot to quit application - void qt_quitApplication (void); - - // Manage different buttons in the phone - void button_mute (void); - void button_line0 (void); - void button_line1 (void); - void button_line2 (void); - void button_line3 (void); - void button_line4 (void); - void button_line5 (void); - void button_msg (void); - void button_transfer (void); - void button_conf (void); - void clickHandle (void); - void reduceHandle (void); - - // Handle pressed key of the dtmf keypad - void pressedKey0 (void); - void pressedKey1 (void); - void pressedKey2 (void); - void pressedKey3 (void); - void pressedKey4 (void); - void pressedKey5 (void); - void pressedKey6 (void); - void pressedKey7 (void); - void pressedKey8 (void); - void pressedKey9 (void); - void pressedKeyStar (void); // (*) - void pressedKeyHash (void); // (#) - - // Manage volume control - void volumeSpkrChanged (int); - void volumeMicChanged (int); - - // To register manually - void registerSlot (void); - // To save configuration - void save (void); - // To apply selected skin - void applySkin (void); - -protected: - // To handle the key pressed event - void keyPressEvent (QKeyEvent *); - -private: - NumericKeypad* _keypad; - MyDisplay* _lcd; - QTimer* _blinkTimer; - URL_Input* _urlinput; - ConfigurationPanel* _panel; - QPopupMenu* _mypop; - MyTrayIcon* _trayicon; - DTMF* _key; - PhoneLine* phLines[NUMBER_OF_LINES]; - - JPushButton* phoneKey_msg; - JPushButton* phoneKey_transf; - JPushButton* phoneKey_conf; - JPushButton* phoneKey_line0; - JPushButton* phoneKey_line1; - JPushButton* phoneKey_line2; - JPushButton* phoneKey_line3; - JPushButton* reduce_button; - JPushButton* quit_button; - JPushButton* addr_book_button; - JPushButton* configuration_button; - JPushButton* hangup_button; - JPushButton* dial_button; - JPushButton* mute_button; - JPushButton* dtmf_button; - int16* _buf; - // Configuration skin file - Point* pt; - - // For volume buttons - VolumeControl* vol_mic; - VolumeControl* vol_spkr; - Vector* micVolVector; - Vector* spkrVolVector; - int vol_mic_x, - vol_mic_y; - int vol_spkr_x, - vol_spkr_y; - - // To construct ring rect pixmap - QImage imageRing; - QImage imageNoRing; - - QPixmap TabMsgPixmap[NUMBER_OF_STATES]; - int modeType; - bool _apply; - - bool b_dialtone; - - // For numeric keypad - bool _first; - - bool _transfer; - bool _msgVar; - - // For outgoing call, if it occurs on the first free line or on the chosen - // line by the user - bool _chooseLine; - int _chosenLine; - int _prevLine; - - // Array of incoming calls, contains call-id - int _TabIncomingCalls[NUMBER_OF_LINES]; - - // The current phoneline - int _currentLine; - - bool _dialtone; - - //////////////////// - // Private functions - //////////////////// - - inline void setPrevLine(int line) { _prevLine = line; } - inline int getPrevLine(void) { return _prevLine; } - - // Set position for screen - void setMainLCD (void); - - // Handle num/text mode - void setMode (int); - bool isInTextMode (void); - bool isInNumMode (void); - - // Initialize all the skin - void initSkin (void); - void initButtons (void); - void initVolume (void); - void initSpkrVolumePosition (void); - void initMicVolumePosition (void); - - // Delete buttons called in destructor - void deleteButtons (void); - - // Initialize timer for blinking notification - void initBlinkTimer (void); - - // Initialize all the connections (SIGNAL->SLOT) - void connections (void); - - // Set the ringtone file path - string ringFile (void); - - // Set position for numeric keypad - int positionOffsetX (void); - - /* - * Associate a phoneline number to a call identifiant - * @param identifiant call - * @return phoneline number - */ - int associateCall2Line (short id); - - /** - * Search the busy line number among all lines and different with - * current line number. - * - * @return number of busy line - */ - int busyLineNumber (void); - - /* - * Put in state on-hold the line 'line' - */ - int putOnHoldBusyLine (int line); - - /* - * Return the id of the first line number if incoming call occurs - * Otherwise return -1 - */ - short isThereIncomingCall (void); - - /* - * Return the id of the line number 'line' if an incoming call occurs - * Otherwise return -1 - */ - short isIncomingCall (int line); - - /* - * Return phoneline number according to the identifiant 'id' - * id2line returns -1 if phoneline number is not found - */ - int id2line (short id); - - /* - * Return id according to the phoneline number 'line' - * line2id returns -1 if id is not found - */ - short line2id (int line); - - /* - * Change state and pixmap of the line 'line' according to the state 'state' - */ - void changeLineStatePixmap (int line, line_state state); - - /* - * Handle dial tone - */ - void dialtone (bool var); - - /* - * Functions used in toggle function - */ - void callIsRinging(int id, int line, int busyLine); - void callIsProgressing (int id, int line, int busyLine); - int callIsBusy (Call* call, int id, int line, int busyLine); - int callIsOnHold(int id, int line, int busyLine); - int callIsIncoming (int id, int line, int busyLine); - void clickOnFreeLine(int line, int busyLine); - -}; - - -#endif // __QT_GUI_MAIN_WIDOW_H__ diff --git a/src/gui/qt/transqwidget.cpp b/src/gui/qt/transqwidget.cpp deleted file mode 100644 index 7a91cbed12a0743b46ff91ac428b6007866659cc..0000000000000000000000000000000000000000 --- a/src/gui/qt/transqwidget.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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 <qpoint.h> - -#include "transqwidget.h" - -TransQWidget::TransQWidget (QWidget *parent, const char *name, WFlags f) - : QWidget (parent, name, f) { - pixmap = NULL; - _moved = false; -} - -void -TransQWidget::setbgPixmap (QPixmap *pix) { - this->pixmap = pix; -} - -void -TransQWidget::setSourceImage (void) { - this->SourceImage = pixmap->convertToImage (); -} - -QImage -TransQWidget::getSourceImage (void) { - return this->SourceImage; -} - -void -TransQWidget::transparencyMask (void) { - this->ShowedImage = SourceImage; - this->ImageMask = ShowedImage.createAlphaMask (); -} - -/** - * Reimplementation of paintEvent() to handle the transparency of the - * widget. - * This method is called everytime when the widget is redrawn. - */ -void -TransQWidget::paintEvent (QPaintEvent *e) { - if (e);// boring warning - bitBlt (this, 0, 0, &ShowedImage, 0, Qt::CopyROP); - setMask (ImageMask); -} - -/** - * Reimplementation of mouseMoveEvent() to handle the borderless window drag. - */ -void -TransQWidget::mouseMoveEvent (QMouseEvent *e) { - move (e->globalPos() - QPoint(mouse_x, mouse_y)); - global_x = e->globalX(); - global_y = e->globalY(); - _moved = true; -} - -/** - * Reimplementation of mousePressEvent() to register mouse positions. - */ -void -TransQWidget::mousePressEvent (QMouseEvent *e) { - mouse_x = e->x(); - mouse_y = e->y(); -} - diff --git a/src/gui/qt/transqwidget.h b/src/gui/qt/transqwidget.h deleted file mode 100644 index 5083aa30e40752461150b414a43a5a58fa2ad0b9..0000000000000000000000000000000000000000 --- a/src/gui/qt/transqwidget.h +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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. - */ - -#ifndef __TRANS_QWIDGET_H__ -#define __TRANS_QWIDGET_H__ - -#include <qbitmap.h> -#include <qimage.h> -#include <qpixmap.h> -#include <qwidget.h> - -class TransQWidget : public QWidget { -public: - TransQWidget (QWidget* = 0, const char* = 0, WFlags = 0); - ~TransQWidget (void) {delete pixmap;}; - - QImage getSourceImage (void); - - inline - int getMouseX (void) { return mouse_x; }; - inline - int getMouseY (void) { return mouse_y; }; - inline - int getGlobalMouseX (void) { return global_x; }; - inline - int getGlobalMouseY (void) { return global_y; }; - inline - bool getMoved (void) { return _moved; }; - -protected: - QPixmap *pixmap; - - void setbgPixmap (QPixmap *); - void setSourceImage (void); - void transparencyMask (void); - - // To handle the tranparency - void paintEvent (QPaintEvent *); - - // To handle the drag window with mouse event - void mouseMoveEvent (QMouseEvent *); - void mousePressEvent (QMouseEvent *); - -private: - // Private member variables - QImage SourceImage; - QImage ShowedImage; - QBitmap ImageMask; - - int mouse_x, - mouse_y; - int global_x, - global_y; - bool _moved; -}; - - -#endif // __TRANS_QWIDGET_H__ diff --git a/src/gui/qt/trayicon.cpp b/src/gui/qt/trayicon.cpp deleted file mode 100644 index 4eb1d3e7db82cd4bc192358fbf2eba496d5de1bc..0000000000000000000000000000000000000000 --- a/src/gui/qt/trayicon.cpp +++ /dev/null @@ -1,295 +0,0 @@ -/* - * trayicon.cpp - system-independent trayicon class (adapted from Qt example) - * Copyright (C) 2003 Justin Karneges - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#include "trayicon.h" -#include "qpopupmenu.h" - -/*! - \class TrayIcon qtrayicon.h - \brief The TrayIcon class implements an entry in the system tray. -*/ - -/*! - Creates a TrayIcon object. \a parent and \a name are propagated - to the QObject constructor. The icon is initially invisible. - - \sa show -*/ -TrayIcon::TrayIcon( QObject *parent, const char *name ) -: QObject(parent, name), pop(0), d(0) -{ - v_isWMDock = FALSE; -} - -/*! - Creates a TrayIcon object displaying \a icon and \a tooltip, and opening - \a popup when clicked with the right mousebutton. \a parent and \a name are - propagated to the QObject constructor. The icon is initially invisible. - - \sa show -*/ -TrayIcon::TrayIcon( const QPixmap &icon, const QString &tooltip, QPopupMenu *popup, QObject *parent, const char *name ) -: QObject(parent, name), pop(popup), pm(icon), tip(tooltip), d(0) -{ - v_isWMDock = FALSE; - - if ( !pm.width() || !pm.height() ) - pm = QPixmap( 16, 16 ); -} - -/*! - Removes the icon from the system tray and frees all allocated resources. -*/ -TrayIcon::~TrayIcon() -{ - sysRemove(); -} - -/*! - Informs the trayicon that the notification owner has probably been changed; - and that it should attempt to register or re-register. -*/ -void TrayIcon::newTrayOwner() -{ - // detach ourself from any existing notification area. - hide(); - // show ourself on the new notification area - show(); -} - - -/*! - Sets the context menu to \a popup. The context menu will pop up when the - user clicks the system tray entry with the right mouse button. -*/ -void TrayIcon::setPopup( QPopupMenu* popup ) -{ - pop = popup; -} - -/*! - Returns the current popup menu. - - \sa setPopup -*/ -QPopupMenu* TrayIcon::popup() const -{ - return pop; -} - -/*! - \property TrayIcon::icon - \brief the system tray icon. -*/ -void TrayIcon::setIcon( const QPixmap &icon ) -{ - //if(!popup()) { - // tip = ""; - //} - - pm = icon; - sysUpdateIcon(); -} - -QPixmap TrayIcon::icon() const -{ - return pm; -} - -/*! - \property TrayIcon::toolTip - \brief the tooltip for the system tray entry - - On some systems, the tooltip's length is limited and will be truncated as necessary. -*/ -void TrayIcon::setToolTip( const QString &tooltip ) -{ - tip = tooltip; - sysUpdateToolTip(); -} - -QString TrayIcon::toolTip() const -{ - return tip; -} - -/*! - Shows the icon in the system tray. - - \sa hide -*/ -void TrayIcon::show() -{ - sysInstall(); -} - -/*! - Hides the system tray entry. -*/ -void TrayIcon::hide() -{ - sysRemove(); -} - -/*! - \reimp -*/ -bool TrayIcon::event( QEvent *e ) -{ - switch ( e->type() ) { - case QEvent::MouseMove: - mouseMoveEvent( (QMouseEvent*)e ); - break; - - case QEvent::MouseButtonPress: - mousePressEvent( (QMouseEvent*)e ); - break; - - case QEvent::MouseButtonRelease: - mouseReleaseEvent( (QMouseEvent*)e ); - break; - - case QEvent::MouseButtonDblClick: - mouseDoubleClickEvent( (QMouseEvent*)e ); - break; - - default: - return QObject::event( e ); - break; - } - - return TRUE; -} - -/*! - This event handler can be reimplemented in a subclass to receive - mouse move events for the system tray entry. - - \sa mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), QMouseEvent -*/ -void TrayIcon::mouseMoveEvent( QMouseEvent *e ) -{ - e->ignore(); -} - -/*! - This event handler can be reimplemented in a subclass to receive - mouse press events for the system tray entry. - - \sa mouseReleaseEvent(), mouseDoubleClickEvent(), - mouseMoveEvent(), QMouseEvent -*/ -void TrayIcon::mousePressEvent( QMouseEvent *e ) -{ -#ifndef Q_WS_WIN -// This is for X11, menus appear on mouse press -// I'm not sure whether Mac should be here or below.. Somebody check? - switch ( e->button() ) { - case RightButton: - if ( pop ) { - pop->popup( e->globalPos() ); - e->accept(); - } - break; - case LeftButton: - case MidButton: - emit clicked( e->globalPos(), e->button() ); - break; - default: - break; - } -#endif - e->ignore(); -} - -/*! - This event handler can be reimplemented in a subclass to receive - mouse release events for the system tray entry. - - The default implementations opens the context menu when the entry - has been clicked with the right mouse button. - - \sa setPopup(), mousePressEvent(), mouseDoubleClickEvent(), - mouseMoveEvent(), QMouseEvent -*/ -void TrayIcon::mouseReleaseEvent( QMouseEvent *e ) -{ -#ifdef Q_WS_WIN -// This is for Windows, where menus appear on mouse release - switch ( e->button() ) { - case RightButton: - if ( pop ) { - // Necessary to make keyboard focus - // and menu closing work on Windows. - pop->setActiveWindow(); - pop->popup( e->globalPos() ); - pop->setActiveWindow(); - e->accept(); - } - break; - case LeftButton: - case MidButton: - emit clicked( e->globalPos(), e->button() ); - break; - default: - break; - } -#endif - e->ignore(); -} - -/*! - This event handler can be reimplemented in a subclass to receive - mouse double click events for the system tray entry. - - Note that the system tray entry gets a mousePressEvent() and a - mouseReleaseEvent() before the mouseDoubleClickEvent(). - - \sa mousePressEvent(), mouseReleaseEvent(), - mouseMoveEvent(), QMouseEvent -*/ -void TrayIcon::mouseDoubleClickEvent( QMouseEvent *e ) -{ - if ( e->button() == LeftButton ) - emit doubleClicked( e->globalPos() ); - e->accept(); -} - -/*! - \fn void TrayIcon::clicked( const QPoint &p ) - - This signal is emitted when the user clicks the system tray icon - with the left mouse button, with \a p being the global mouse position - at that moment. -*/ - -/*! - \fn void TrayIcon::doubleClicked( const QPoint &p ) - - This signal is emitted when the user double clicks the system tray - icon with the left mouse button, with \a p being the global mouse position - at that moment. -*/ - -void TrayIcon::gotCloseEvent() -{ - closed(); -} - diff --git a/src/gui/qt/trayicon.h b/src/gui/qt/trayicon.h deleted file mode 100644 index 10775ee26f88c54c71ae9d2e515080fb04cf2437..0000000000000000000000000000000000000000 --- a/src/gui/qt/trayicon.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * trayicon.h - system-independent trayicon class (adapted from Qt example) - * Copyright (C) 2003 Justin Karneges - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#ifndef CS_TRAYICON_H -#define CS_TRAYICON_H - -#include <qobject.h> -#include <qimage.h> - -class QPopupMenu; - -class TrayIcon : public QObject -{ - Q_OBJECT - - Q_PROPERTY( QString toolTip READ toolTip WRITE setToolTip ) - Q_PROPERTY( QPixmap icon READ icon WRITE setIcon ) - -public: - TrayIcon( QObject *parent = 0, const char *name = 0 ); - TrayIcon( const QPixmap &, const QString &, QPopupMenu *popup = 0, QObject *parent = 0, const char *name = 0 ); - ~TrayIcon(); - - // use WindowMaker dock mode. ignored on non-X11 platforms - void setWMDock(bool use) { v_isWMDock = use; } - bool isWMDock() { return v_isWMDock; } - - // Set a popup menu to handle RMB - void setPopup( QPopupMenu * ); - QPopupMenu* popup() const; - - QPixmap icon() const; - QString toolTip() const; - - void gotCloseEvent(); - -public slots: - void setIcon( const QPixmap &icon ); - void setToolTip( const QString &tip ); - - void show(); - void hide(); - - void newTrayOwner(); - -signals: - void clicked( const QPoint&, int); - void doubleClicked( const QPoint& ); - void closed(); - -protected: - bool event( QEvent * ); - virtual void mouseMoveEvent( QMouseEvent *e ); - virtual void mousePressEvent( QMouseEvent *e ); - virtual void mouseReleaseEvent( QMouseEvent *e ); - virtual void mouseDoubleClickEvent( QMouseEvent *e ); - -private: - QPopupMenu *pop; - QPixmap pm; - QString tip; - bool v_isWMDock; - - // system-dependant part -public: - class TrayIconPrivate; -private: - TrayIconPrivate *d; - void sysInstall(); - void sysRemove(); - void sysUpdateIcon(); - void sysUpdateToolTip(); - - friend class TrayIconPrivate; -}; - -#endif // CS_TRAYICON_H - diff --git a/src/gui/qt/trayicon_x11.cpp b/src/gui/qt/trayicon_x11.cpp deleted file mode 100644 index 053eeda9c4f6baedbd11a19adbdf21a0ec401fcd..0000000000000000000000000000000000000000 --- a/src/gui/qt/trayicon_x11.cpp +++ /dev/null @@ -1,407 +0,0 @@ -/* - * trayicon_x11.cpp - X11 trayicon (for use with KDE and GNOME) - * Copyright (C) 2003 Justin Karneges - * GNOME2 Notification Area support: Tomasz Sterna - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#include "trayicon.h" - -#include<qapplication.h> -#include<qimage.h> -#include<qpixmap.h> -#include<qtooltip.h> -#include<qpainter.h> - -#include<X11/Xlib.h> -#include<X11/Xutil.h> -#include<X11/Xatom.h> - -//#if QT_VERSION < 0x030200 -extern Time qt_x_time; -//#endif - -//---------------------------------------------------------------------------- -// common stuff -//---------------------------------------------------------------------------- - -// for Gnome2 Notification Area -static XErrorHandler old_handler = 0; -static int dock_xerror = 0; -extern "C" int dock_xerrhandler(Display* dpy, XErrorEvent* err) -{ - dock_xerror = err->error_code; - return old_handler(dpy, err); -} - -static void trap_errors() -{ - dock_xerror = 0; - old_handler = XSetErrorHandler(dock_xerrhandler); -} - -static bool untrap_errors() -{ - XSetErrorHandler(old_handler); - return (dock_xerror == 0); -} - -static bool send_message( - Display* dpy, /* display */ - Window w, /* sender (tray icon window) */ - long message, /* message opcode */ - long data1, /* message data 1 */ - long data2, /* message data 2 */ - long data3 /* message data 3 */ -) { - XEvent ev; - - memset(&ev, 0, sizeof(ev)); - ev.xclient.type = ClientMessage; - ev.xclient.window = w; - ev.xclient.message_type = XInternAtom (dpy, "_NET_SYSTEM_TRAY_OPCODE", False ); - ev.xclient.format = 32; - ev.xclient.data.l[0] = CurrentTime; - ev.xclient.data.l[1] = message; - ev.xclient.data.l[2] = data1; - ev.xclient.data.l[3] = data2; - ev.xclient.data.l[4] = data3; - - trap_errors(); - XSendEvent(dpy, w, False, NoEventMask, &ev); - XSync(dpy, False); - return untrap_errors(); -} - -#define SYSTEM_TRAY_REQUEST_DOCK 0 -#define SYSTEM_TRAY_BEGIN_MESSAGE 1 -#define SYSTEM_TRAY_CANCEL_MESSAGE 2 - -//---------------------------------------------------------------------------- -// TrayIcon::TrayIconPrivate -//---------------------------------------------------------------------------- - -class TrayIcon::TrayIconPrivate : public QWidget -{ -public: - TrayIconPrivate(TrayIcon *object, int size); - ~TrayIconPrivate() { } - - virtual void initWM(WId icon); - - virtual void setPixmap(const QPixmap &pm); - - virtual void paintEvent(QPaintEvent *); - virtual void enterEvent(QEvent *); - virtual void mouseMoveEvent(QMouseEvent *e); - virtual void mousePressEvent(QMouseEvent *e); - virtual void mouseReleaseEvent(QMouseEvent *e); - virtual void mouseDoubleClickEvent(QMouseEvent *e); - virtual void closeEvent(QCloseEvent *e); - -private: - TrayIcon *iconObject; - QPixmap pix; - int size; -}; - -TrayIcon::TrayIconPrivate::TrayIconPrivate(TrayIcon *object, int _size) - : QWidget(0, "psidock", WRepaintNoErase) -{ - iconObject = object; - size = _size; - - setFocusPolicy(NoFocus); - setBackgroundMode(X11ParentRelative); - - setMinimumSize(size, size); - setMaximumSize(size, size); -} - -// This base stuff is required by both FreeDesktop specification and WindowMaker -void TrayIcon::TrayIconPrivate::initWM(WId icon) -{ - Display *dsp = x11Display(); - WId leader = winId(); - - // set the class hint - XClassHint classhint; - classhint.res_name = (char*)"psidock"; - classhint.res_class = (char*)"Psi"; - XSetClassHint(dsp, leader, &classhint); - - // set the Window Manager hints - XWMHints *hints; - hints = XGetWMHints(dsp, leader); // init hints - hints->flags = WindowGroupHint | IconWindowHint | StateHint; // set the window group hint - hints->window_group = leader; // set the window hint - hints->initial_state = WithdrawnState; // initial state - hints->icon_window = icon; // in WM, this should be winId() of separate widget - hints->icon_x = 0; - hints->icon_y = 0; - XSetWMHints(dsp, leader, hints); // set the window hints for WM to use. - XFree( hints ); -} - -void TrayIcon::TrayIconPrivate::setPixmap(const QPixmap &pm) -{ - pix = pm; - setIcon(pix); - repaint(); -} - -void TrayIcon::TrayIconPrivate::paintEvent(QPaintEvent *) -{ - QPainter p(this); - p.drawPixmap((width() - pix.width())/2, (height() - pix.height())/2, pix); -} - -void TrayIcon::TrayIconPrivate::enterEvent(QEvent *e) -{ - // Taken from KSystemTray.. -//#if QT_VERSION < 0x030200 - //if ( !qApp->focusWidget() ) { - XEvent ev; - memset(&ev, 0, sizeof(ev)); - ev.xfocus.display = qt_xdisplay(); - ev.xfocus.type = FocusIn; - ev.xfocus.window = winId(); - ev.xfocus.mode = NotifyNormal; - ev.xfocus.detail = NotifyAncestor; - Time time = qt_x_time; - qt_x_time = 1; - qApp->x11ProcessEvent( &ev ); - qt_x_time = time; - //} -//#endif - QWidget::enterEvent(e); -} - -void TrayIcon::TrayIconPrivate::mouseMoveEvent(QMouseEvent *e) -{ - QApplication::sendEvent(iconObject, e); -} - -void TrayIcon::TrayIconPrivate::mousePressEvent(QMouseEvent *e) -{ - QApplication::sendEvent(iconObject, e); -} - -void TrayIcon::TrayIconPrivate::mouseReleaseEvent(QMouseEvent *e) -{ - QApplication::sendEvent(iconObject, e); -} - -void TrayIcon::TrayIconPrivate::mouseDoubleClickEvent(QMouseEvent *e) -{ - QApplication::sendEvent(iconObject, e); -} - -void TrayIcon::TrayIconPrivate::closeEvent(QCloseEvent *e) -{ - iconObject->gotCloseEvent(); - e->accept(); -} - -//---------------------------------------------------------------------------- -// TrayIconFreeDesktop -//---------------------------------------------------------------------------- - -class TrayIconFreeDesktop : public TrayIcon::TrayIconPrivate -{ -public: - TrayIconFreeDesktop(TrayIcon *object, const QPixmap &pm); -protected: - virtual bool x11Event(XEvent*); -}; - -TrayIconFreeDesktop::TrayIconFreeDesktop(TrayIcon *object, const QPixmap &pm) - : TrayIconPrivate(object, 22) -{ - initWM( winId() ); - - // initialize NetWM - Display *dsp = x11Display(); - - // dock the widget (adapted from SIM-ICQ) - Screen *screen = XDefaultScreenOfDisplay(dsp); // get the screen - int screen_id = XScreenNumberOfScreen(screen); // and it's number - - // tell X that we want to see ClientMessage and Deleted events, which - // are picked up by QApplication::x11EventFilter - Window root_window = QApplication::desktop()->winId(); - XWindowAttributes attr; - - XGetWindowAttributes(dsp, root_window, &attr); - XSelectInput(dsp, root_window, attr.your_event_mask | StructureNotifyMask); - - char buf[32]; - snprintf(buf, sizeof(buf), "_NET_SYSTEM_TRAY_S%d", screen_id); - Atom selection_atom = XInternAtom(dsp, buf, false); - XGrabServer(dsp); - Window manager_window = XGetSelectionOwner(dsp, selection_atom); - if ( manager_window != None ) - XSelectInput(dsp, manager_window, StructureNotifyMask); - XUngrabServer(dsp); - XFlush(dsp); - - if ( manager_window != None ) - send_message(dsp, manager_window, SYSTEM_TRAY_REQUEST_DOCK, winId(), 0, 0); - else - { - object->hide(); - return; - } - - // some KDE mumbo-jumbo... why is it there? anybody? - Atom kwm_dockwindow_atom = XInternAtom(dsp, "KWM_DOCKWINDOW", false); - Atom kde_net_system_tray_window_for_atom = XInternAtom(dsp, "_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR", false); - - long data = 0; - XChangeProperty(dsp, winId(), kwm_dockwindow_atom, kwm_dockwindow_atom, 32, PropModeReplace, (uchar*)&data, 1); - XChangeProperty(dsp, winId(), kde_net_system_tray_window_for_atom, XA_WINDOW, 32, PropModeReplace, (uchar*)&data, 1); - - setPixmap(pm); -} - -bool TrayIconFreeDesktop::x11Event(XEvent *ev) -{ - switch(ev->type) - { - case ReparentNotify: - show(); - - } - return false; -} - -//---------------------------------------------------------------------------- -// TrayIconWindowMaker -//---------------------------------------------------------------------------- - -class TrayIconWharf : public TrayIcon::TrayIconPrivate -{ -public: - TrayIconWharf(TrayIcon *object, const QPixmap &pm) - : TrayIconPrivate(object, 44) - { - // set the class hint - XClassHint classhint; - classhint.res_name = (char*)"psidock-wharf"; - classhint.res_class = (char*)"Psi"; - XSetClassHint(x11Display(), winId(), &classhint); - - setPixmap(pm); - } - - void setPixmap(const QPixmap &_pm) - { - QPixmap pm; - QImage i = _pm.convertToImage(); - i = i.scale(i.width() * 2, i.height() * 2); - pm.convertFromImage(i); - - TrayIconPrivate::setPixmap(pm); - - // thanks to Robert Spier for this: - // for some reason the repaint() isn't being honored, or isn't for - // the icon. So force one on the widget behind the icon - erase(); - QPaintEvent pe( rect() ); - paintEvent(&pe); - } -}; - -class TrayIconWindowMaker : public TrayIcon::TrayIconPrivate -{ -public: - TrayIconWindowMaker(TrayIcon *object, const QPixmap &pm); - ~TrayIconWindowMaker(); - - void setPixmap(const QPixmap &pm); - -private: - TrayIconWharf *wharf; -}; - -TrayIconWindowMaker::TrayIconWindowMaker(TrayIcon *object, const QPixmap &pm) - : TrayIconPrivate(object, 32) -{ - wharf = new TrayIconWharf(object, pm); - - initWM( wharf->winId() ); -} - -TrayIconWindowMaker::~TrayIconWindowMaker() -{ - delete wharf; -} - -void TrayIconWindowMaker::setPixmap(const QPixmap &pm) -{ - wharf->setPixmap(pm); -} - -//---------------------------------------------------------------------------- -// TrayIcon -//---------------------------------------------------------------------------- - -void TrayIcon::sysInstall() -{ - if ( d ) - return; - - if ( v_isWMDock ) - d = (TrayIconPrivate *)(new TrayIconWindowMaker(this, pm)); - else - d = (TrayIconPrivate *)(new TrayIconFreeDesktop(this, pm)); - - sysUpdateToolTip(); - - if ( v_isWMDock ) - d->show(); -} - -void TrayIcon::sysRemove() -{ - if ( !d ) - return; - - delete d; - d = 0; -} - -void TrayIcon::sysUpdateIcon() -{ - if ( !d ) - return; - - QPixmap pix = pm; - d->setPixmap(pix); -} - -void TrayIcon::sysUpdateToolTip() -{ - if ( !d ) - return; - - if ( tip.isEmpty() ) - QToolTip::remove(d); - else - QToolTip::add(d, tip); -} - diff --git a/src/gui/qt/url_input.ui b/src/gui/qt/url_input.ui deleted file mode 100644 index f213aa8d942ca95968190b8470e11c394b3ed936..0000000000000000000000000000000000000000 --- a/src/gui/qt/url_input.ui +++ /dev/null @@ -1,126 +0,0 @@ -<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> -<class>URL_Input</class> -<widget class="QDialog"> - <property name="name"> - <cstring>URL_Input</cstring> - </property> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>250</width> - <height>21</height> - </rect> - </property> - <property name="caption"> - <string>URL_Input</string> - </property> - <widget class="QPushButton"> - <property name="name"> - <cstring>buttonOK</cstring> - </property> - <property name="geometry"> - <rect> - <x>208</x> - <y>-1</y> - <width>20</width> - <height>23</height> - </rect> - </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>23</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>20</width> - <height>23</height> - </size> - </property> - <property name="focusPolicy"> - <enum>StrongFocus</enum> - </property> - <property name="text"> - <string>1</string> - </property> - <property name="accel"> - <string></string> - </property> - </widget> - <widget class="QPushButton"> - <property name="name"> - <cstring>buttonCancel</cstring> - </property> - <property name="geometry"> - <rect> - <x>228</x> - <y>-1</y> - <width>20</width> - <height>23</height> - </rect> - </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>23</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>20</width> - <height>23</height> - </size> - </property> - <property name="focusPolicy"> - <enum>TabFocus</enum> - </property> - <property name="text"> - <string>0</string> - </property> - <property name="accel"> - <string></string> - </property> - </widget> - <widget class="QLineEdit"> - <property name="name"> - <cstring>url</cstring> - </property> - <property name="geometry"> - <rect> - <x>-1</x> - <y>0</y> - <width>210</width> - <height>23</height> - </rect> - </property> - <property name="minimumSize"> - <size> - <width>210</width> - <height>0</height> - </size> - </property> - <property name="focusPolicy"> - <enum>StrongFocus</enum> - </property> - </widget> -</widget> -<connections> - <connection> - <sender>buttonCancel</sender> - <signal>clicked()</signal> - <receiver>URL_Input</receiver> - <slot>reject()</slot> - </connection> -</connections> -<tabstops> - <tabstop>url</tabstop> - <tabstop>buttonOK</tabstop> - <tabstop>buttonCancel</tabstop> -</tabstops> -<includes> - <include location="local" impldecl="in implementation">url_input.ui.h</include> -</includes> -<layoutdefaults spacing="6" margin="11"/> -</UI> diff --git a/src/gui/qt/url_input.ui.h b/src/gui/qt/url_input.ui.h deleted file mode 100644 index 799834218081035ecd7ba791fe2ae519f9f59de7..0000000000000000000000000000000000000000 --- a/src/gui/qt/url_input.ui.h +++ /dev/null @@ -1,12 +0,0 @@ -/**************************************************************************** -** ui.h extension file, included from the uic-generated form implementation. -** -** If you want to add, delete, or rename functions or slots, use -** Qt Designer to update this file, preserving your code. -** -** You should not define a constructor or destructor in this file. -** Instead, write your code in functions called init() and destroy(). -** These will automatically be called by the form's constructor and -** destructor. -*****************************************************************************/ - diff --git a/src/gui/qt/vector.cpp b/src/gui/qt/vector.cpp deleted file mode 100644 index c58d02b1f3bd2bb12b48afcc363a607858a55cf8..0000000000000000000000000000000000000000 --- a/src/gui/qt/vector.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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 "vector.h" -#include "point.h" -#include "transqwidget.h" - -Vector::Vector (QtGUIMainWindow* gui, const char* name, Point* pt) { - this->x = pt->getX (name); - this->y = pt->getY (name); - this->variation = pt->getVariation (name); - this->direction = pt->getDirection (name); - - this->gui = (TransQWidget*)gui; -} - -Vector::~Vector (void) { -} - -/** - * Return the y-offset of the gui - */ -int -Vector::offsetY (void) { - return (gui->getGlobalMouseY() - gui->getMouseY()); -} - -/** - * Return the x-offset of the gui - */ -int -Vector::offsetX (void) { - return (gui->getGlobalMouseX() - gui->getMouseX()); -} diff --git a/src/gui/qt/vector.h b/src/gui/qt/vector.h deleted file mode 100644 index ef0774808578582a46f7ff06ca146a182a290ba9..0000000000000000000000000000000000000000 --- a/src/gui/qt/vector.h +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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. - */ - -#ifndef __VECTOR_H__ -#define __VECTOR_H__ - - -class TransQWidget; -class Point; -class QtGUIMainWindow; - -class Vector { -public: - Vector (QtGUIMainWindow* = 0, const char* = 0, Point* = 0); - ~Vector (void); - - inline int X (void) { return x; } - inline int Y (void) { return y; } - inline int Direction (void) { return direction; } - inline int Variation (void) { return variation; } - - int offsetY (void); - int offsetX (void); - -private: - int x; - int y; - int direction; - int variation; - - TransQWidget* gui; -}; - -#endif // __VECTOR_H__ diff --git a/src/gui/qt/volumecontrol.cpp b/src/gui/qt/volumecontrol.cpp deleted file mode 100644 index 7d0b99c89a8b48358501b2542eed7d9be62dade9..0000000000000000000000000000000000000000 --- a/src/gui/qt/volumecontrol.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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 <qapplication.h> - -#include "point.h" -#include "qtGUImainwindow.h" -#include "vector.h" -#include "volumecontrol.h" -#include "skin.h" - -VolumeControl::VolumeControl (QWidget *parent, const char *name, - const char* pixname, Vector *v) : JPushButton(parent, name, pixname) { - this->vect = v; - volumeValue = 0; -} - -VolumeControl::~VolumeControl (void) { -} - -int -VolumeControl::offset (int dir) { - if (dir == VERTICAL) { - if (vect->offsetY() == 0) - return mouse_y + MAIN_INITIAL_POSITION; - else if (vect->offsetY() > 0) - return mouse_y + vect->offsetY(); - else - return 0; - } else if (dir == HORIZONTAL) { - if (vect->offsetX() == 0) - return mouse_x + MAIN_INITIAL_POSITION; - else if (vect->offsetX() > 0) - return mouse_x + vect->offsetX(); - else - return 0; - } else - return -1; -} - -void -VolumeControl::mouseMoveEvent (QMouseEvent *e) { - if (vect->Direction() == VERTICAL) { - // If the slider for the volume is vertical - QPoint ptref(e->globalX() - mouse_x, e->globalY() - offset(VERTICAL)); - if (ptref.y() >= vect->Variation() and ptref.y() <= vect->Y()) { - volumeValue = vect->Y() - ptref.y(); - // Emit a signal - emit setVolumeValue (volumeValue); - move (QPoint(vect->X(), ptref.y())); - } - } - if (vect->Direction() == HORIZONTAL) { - // If the slider for the volume is horizontal - QPoint ptref(e->globalX() - offset(HORIZONTAL), e->globalY() - mouse_y); - if (ptref.x() >= vect->X() and ptref.x() <= vect->Variation()) { - volumeValue = vect->X() - ptref.x(); - // Emit a signal - emit setVolumeValue (volumeValue); - move (QPoint(ptref.x(), vect->Y())); - } - } -} - -void -VolumeControl::mousePressEvent (QMouseEvent *e) { - mouse_x = e->x(); - mouse_y = e->y(); -} - -#include "moc_volumecontrol.cpp" - -// EOF diff --git a/src/gui/qt/volumecontrol.h b/src/gui/qt/volumecontrol.h deleted file mode 100644 index 41816c82ca8e81e8e6dd96db5e0397c6be120bd4..0000000000000000000000000000000000000000 --- a/src/gui/qt/volumecontrol.h +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Copyright (C) 2004-2005 Savoir-Faire Linux inc. - * Author: Laurielle Lea <laurielle.lea@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. - */ - -#ifndef __VOLUME_CONTROL_H__ -#define __VOLUME_CONTROL_H__ - -#include "jpushbutton.h" - -class Vector; -class VolumeControl : public JPushButton { - Q_OBJECT -public: - VolumeControl (QWidget* = 0, const char* = 0, const char* = 0, Vector* = 0); - ~VolumeControl (void); - - int getValue (void) { return volumeValue; } - inline void setValue (int val) { volumeValue = val; } - Vector* vect; -signals: - void setVolumeValue (int); -private: - - void mouseMoveEvent (QMouseEvent*); - void mousePressEvent (QMouseEvent*); - int offset (int); - - int mouse_x, - mouse_y; - int volumeValue; -}; - -#endif // __VOLUME_CONTROL_H__