Commit 65a94f60 authored by Jean-Yves LEBLEU's avatar Jean-Yves LEBLEU

Remove xivo client reference

parent e9412d48
......@@ -154,7 +154,7 @@ Please consult the following detailed upgrade notes for more information:
* It is now possible to send an email to a user with a configured email address in the
*people* xlet. See :ref:`dird-integration-views` to add the appropriate field to your
configured displays.
* The *Contacts* xlet (aka. *Search*) has been removed in favor of the :ref:`people-xlet`. You may
* The *Contacts* xlet (aka. *Search*) has been removed in favor of the people xlet. You may
need to do some manual configuration in the directories for the People Xlet to be fully
functional. See :ref:`the detailed upgrade notes <15_19_people_xlet_upgrade_notes>` for more details.
* If you need context separation in the People Xlet, you will have to **manually configure**
......@@ -317,8 +317,7 @@ See :ref:`directories` and :ref:`xivo-dird-integration` for more details
* Default password for ``xivo-polycom-5.3.0`` plugin version >= 1.4 is now **9486**.
* Caller id management for users in confd has changed. Consult the :ref:`confd_changelog`.
* The Local Directory Xlet is replaced with the People Xlet. Contacts are automatically migrated to
the server. Note that the CSV format for importing contacts has changed (see :ref:`people-xlet` for
more information).
the server. Note that the CSV format for importing contacts has changed.
15.13
-----
......@@ -590,8 +589,7 @@ Please consult the following detailed updated notes for more information:
14.06
-----
* The XiVO client now uses Qt 5 instead of Qt 4. There is nothing to be aware of unless you
are :ref:`building your own version <build_xivoclient>` of it.
* The XiVO client now uses Qt 5 instead of Qt 4.
14.05
......@@ -843,7 +841,7 @@ Please consult the following detailed upgrade notes for more information:
-----
* Upgrade procedure for HA Cluster has changed. Refer to :ref:`Specific Procedure : Upgrading a Cluster <upgrading-a-cluster>`.
* Configuration of switchboards has changed. Since the directory xlet can now display any column from the lookup source, a display filter has to be configured and assigned to the __switchboard_directory context. Refer to :ref:`Directory xlet documenttion <directory-xlet>`.
* Configuration of switchboards has changed. Since the directory xlet can now display any column from the lookup source, a display filter has to be configured and assigned to the __switchboard_directory context.
* There is no more context field directly associated with a call filter. Boss and secretary users associated with a call filter must necessarily be in the same context.
2012
......@@ -879,4 +877,3 @@ Another change is in effect beginning with XiVO 12.24: the field
+-------------+-------------+
| clock | *removed* |
+-------------+-------------+
......@@ -149,8 +149,6 @@ Xlets
To choose which features are available to users using a profile, you have to
select which *Xlets* will be available.
The Xlets are detailed in :ref:`xlet-list`.
The *Position* attribute determines how the Xlets will be laid out:
* *dock* will display a Xlet in its own frame. This frame can have some options:
......
......@@ -5,7 +5,7 @@ Directories
***********
This page documents how to add and configure directories from custom sources. Directories added from
custom sources can be used for lookup via the :ref:`XiVO Client <people-xlet>`, directory feature of
custom sources can be used for lookup via the directory feature of
phones or for :ref:`reverse lookup <reverse_lookup>` on incoming calls.
An example of `adding a source`_ and `configuring source access`_ is made for each type of source:
......
......@@ -30,4 +30,3 @@ Component specific information:
provisioning/provisioning
sccp
webi
xivo_client/xivo_client
.. index:: single:XiVO Client
***********************************************
Building the XiVO Client on GNU/Linux platforms
***********************************************
This page explains how to build an executable of the XiVO Client from its sources for GNU/Linux.
Prerequisites
=============
* Qt5 library development files: `Qt website <http://qt-project.org/downloads>`_ (Ubuntu packages
``qt5-default qt5-qmake qttools5-dev-tools qttools5-dev libqt5svg5-dev``). The currently supported
Qt version is 5.5.0.
* openGL development library - libGL (Debian package ``libgl1-mesa-dev``)
* Git (Debian package ``git``)
* Generic software building tools : ``make``, ``g++`` ... (Debian package ``build-essential``)
Get sources
===========
In a bash shell::
$ git clone git@gitlab.com:xivo.solutions/xivo-client-qt.git
Building
========
You need to have the Qt5 binaries (qmake, lrelease, ...) in your $PATH.
Launch qmake to generate the Makefile::
$ cd xivo-client-qt
$ /path/to/qt5/bin/qmake
This will also generate a file ``versions.mak`` that contains version informations about the code
being compiled. It is necessary for compilation and packaging.
You can then launch ``make``::
$ make
Binaries are available in the ``bin`` directory.
The version of the executable is taken from the ``git describe`` command.
Build options
-------------
To generate debug symbols::
$ make DEBUG=yes
To compile the unit tests of the XiVO Client::
$ qmake CONFIG+=tests
or, if you have a recent version of Google Mock::
$ qmake CONFIG+=tests CONFIG+=gmock
To compile the XiVO Client ready for functional tests::
$ make FUNCTESTS=yes
Cleaning
--------
::
$ make distclean
Launch
======
You can launch the built executable with::
$ LD_LIBRARY_PATH=bin bin/xivoclient
Package
=======
To create the Debian package, usable on Debian and Ubuntu, you first need to modify
:file:`build-deps` to locate the Qt 5 installation directory::
$ /path/to/qt5/bin/qmake -spec linux-g++
$ make
$ make pack
This will result in a ``.deb`` file in the current directory.
The version of the package is taken from the ``git describe`` command.
*********************
Building old versions
*********************
1.1.23 - Gallifrey
------------------
Build
^^^^^
* Download :download:`this patch<resources/xivoclient-1.1.23.patch>`
* git checkout xivo-client-1.1.23
* git apply xivoclient-1.1.23.patch
* Edit Makefile and set the variable QMAKE to the path of your qmake
* make all
Package (macos)
^^^^^^^^^^^^^^^
* Edit cross/macos-pack.sh and set QT_PATH
* ./cross/macos-pack.sh
1.0.15 - Dalek
--------------
Build (windows)
^^^^^^^^^^^^^^^
* Download :download:`this patch<resources/xivoclient-1.0.15.patch>`
* Edit the patch and set the paths to Qt, NSIS, etc.
* (cygwin) git checkout xivo-client-1.0.15
* (cygwin) make all-win32
* (qt cmd) mingw32-make win32-baselib
* (qt cmd) mingw32-make win32-xivoclient
* (qt cmd) mingw32-make win32-plugins
Package (windows)
^^^^^^^^^^^^^^^^^
* (cygwin) make win32packdyn-xivoclient
.. index:: single:XiVO Client
**********************************
Building the XiVO Client on Mac OS
**********************************
This page explains how to build an executable of the XiVO Client from its sources for Mac OS.
Mac OS Prerequisites
=====================
Developer tools
---------------
You will need an Apple developer account to get development tools, such as GCC. To log in or sign
in, go to the `Developer portal of Apple`_. In the Downloads section, get the Command line Tools for
XCode and install them. You might want to get XCode too, but it is rather big.
.. _Developer portal of Apple: https://developer.apple.com/downloads/index.action
Qt SDK
------
You need the development files of the Qt 5 library, available on the `Qt website
<http://qt-project.org/downloads>`_. The currently supported Qt version is 5.5.0.
Get sources
===========
In a bash shell, enter::
$ git clone git@gitlab.com:xivo.solutions/xivo-client-qt.git
Building
========
Launch qmake to generate the Makefile::
$ cd xivo-client-qt
$ /path/to/qt5/bin/qmake -spec macx-g++
This will also generate a file ``versions.mak`` that contains version informations about the code
being compiled. It is necessary for compilation and packaging.
You can then launch ``make``::
$ make
Binaries are available in the ``bin`` directory.
The version of the executable is taken from the ``git describe`` command.
Debug build
-----------
Add ``DEBUG=yes`` on the command line::
$ make DEBUG=yes
Cleaning
--------
::
$ make distclean
Launch
======
You can launch the built executable with::
$ DYLD_LIBRARY_PATH=bin bin/xivoclient.app/Contents/MacOS/xivoclient
Package
=======
You need to have the bin directory of Qt in your $PATH.
To create the app bundle::
$ make pack
This will result in a ``.dmg`` file in the current directory.
The version of the package is taken from the ``git describe`` command.
.. index:: single:XiVO Client
*********************************************
Building the XiVO Client on Windows platforms
*********************************************
This page explains how to build an executable of the XiVO Client from its sources for Windows.
Windows Prerequisites
=====================
Cygwin
------
`Cygwin Web site <http://www.cygwin.com/>`_
Click the "setup" link and execute.
During the installer, check the package:
* Devel > git
Qt SDK
------
You need the development files of the Qt 5 library, available on the `Qt website
<http://qt-project.org/downloads>`_. The currently supported Qt version is 5.5.0.
NSIS (installer only)
---------------------
You will only need NSIS installed if you want to create an installer for the XiVO Client.
`NSIS download page <http://nsis.sourceforge.net/Download>`_
During the installer, choose the full installation.
The XiVO Client NSIS script file uses two plug-ins:
* the NSIS Application Association Registration Plug-in (`download page
<http://nsis.sourceforge.net/Application_Association_Registration_plug-in#Download>`__)
* the NsProcess Plug-in (`download page <http://nsis.sourceforge.net/NsProcess_plugin>`__)
For each plug-in, download and extract the plug-in and place:
* the DLL from :file:`/Plugins` in the :file:`NSIS/Plugins` directory
* the ``.nsh`` from :file:`/Include` in the :file:`NSIS/Include` directory
Get sources
===========
In a **Cygwin shell**::
git clone git@gitlab.com:xivo.solutions/xivo-client-qt.git
cd xivo-client-qt
touch xivoclient/qt-solutions/qtsingleapplication/src/{QtSingleApplication,QtLockedFile}
Building
========
Path configuration
------------------
You must change the values in :file:`C:\\Cygwin\\home\\user\\xivo-client-qt\\build-deps` to match
the paths of your installed programs. You must use an editor capable of understanding Unix end of
lines, such as `Notepad++ <http://notepad-plus-plus.org>`_.
Replace ``C:\`` with ``/cygdrive/c`` and backslashes (``\``) with slashes (``/``). You must respect
the case of the directory names. Paths containing spaces must be enclosed in double quotes (``"``).
For example, if you installed NSIS in :file:`C:\\Program Files (x86)\\nsis`, you should write::
WIN_NSIS_PATH="/cygdrive/c/Program files (x86)/nsis"
Build
-----
In a **Cygwin shell**::
source build-deps
export PATH=$WIN_QT_PATH/bin:$WIN_MINGW_PATH/bin:$PATH
qmake
mingw32-make SHELL=
Binaries are available in the ``bin`` directory.
The version of the executable is taken from the ``git describe`` command.
Launch
======
You can launch the built executable with::
source build_deps
PATH=$WIN_QT_PATH/bin:$PATH bin/xivoclient
Package
=======
To create the installer::
mingw32-make pack
This will result in a ``.exe`` file in the current directory.
Build options
=============
To add a console::
qmake CONFIG+=console
To generate debug symbols::
mingw32-make SHELL= DEBUG=yes
Clean
-----
::
mingw32-make distclean
.. index:: single:XiVO Client
.. _build_xivoclient:
************************
Building the XiVO Client
************************
.. toctree::
:maxdepth: 1
build-win
build-gnulinux
build-macos
Building old versions
---------------------
.. toctree::
:maxdepth: 1
build-legacy
**********************
Coding the XiVO Client
**********************
Project folder map
==================
baselib
-------
The folder `baselib` contains all files necessary to build the baselib. It contains the necessary
code and data structures to communicate with the XiVO CTI server.
This library is designed to be reusable by other XiVO CTI clients. If you want to build it
without the rest of the XiVO Client, go in its folder and type::
$ qmake && make
The library will be available in the new bin folder.
xivoclient
----------
The folder `xivoclient` contains all other source files included in the XiVO Client.
`src` contains the source code files, `images` contains the images, `i18n` contains the
translation files and `qtaddons` contains some Qt addons used by the XiVO Client.
src
---
The source files are separated in three categories :
* the XiVO Client itself, the source files are directly in `src`.
* the XLet library (`xletlib`) contains the code common to multiple XLets (plugins),
like the XLet base class and mainly GUI stuff.
* the XLets themselves (`xlets`), each one is in a `xlets/something` subfolder.
Each XLet is compiled into a dynamic library, but some XLets are still compiled within the
xivoclient executable instead of in a separated library. They are marked with a `*-builtin`
subfolder name.
delivery
--------
This folder contains all license informations necessary for the XiVO Client to be redistributed,
i.e. the GNU GPLv3 and the additional requirements.
Configuration access
====================
The settings of the application are stored in BaseEngine for runtime and in files when the client is closed :
* `~/.config/XiVO` on GNU/Linux systems
* (what about other platforms?)
There are now 3 sets of functions from BaseEngine that you can use to read/store settings :
getConfig() / setConfig()
-------------------------
They are proxy methods to use the BaseConfig object inside BaseEngine. They use QVariantMap to store
the settings values. They are currently used to store/retrieve options used in the ConfigWidget.
You can find the available keys to access data in the detailed Doxygen documentation of BaseEngine,
or in `baseengine.h`.
Note that the settings stored in BaseConfig won't be written in the configuration file if BaseEngine
is not aware of their existence (loaded in `loadSettings` and saved in `saveSettings`).
getSettings()
-------------
Through this function, you can access the lowest level of configuration storage, QSettings.
It also contains the options stored in BaseConfig, but is less easy to use.
This direct access is used for purely graphical settings, only used to remember the appearance of
the GUI until the next launch. These settings don't have to be shared with other widgets, and storing
them directly in QSettings avoids writing code to import/export to/from BaseConfig.
getProfileSetting() / setProfileSetting()
-----------------------------------------
This pair of methods allow you to read/write settings directly in QSettings, but specifically for
the current configuration profile.
Configuration profiles
======================
When starting XiVO Client with an argument, this argument is interpreted as a profile name.
This profile name allows you to separate different profiles, with different configuration options.
For example, configuration profile "profileA" will auto-connect with user A and password B and "profileB"
will not auto-connect, but is set to connect with user C, no password remembered. To invoke these profiles, use :
.. code-block:: javascript
$ xivoclient profileA
$ xivoclient profileB
The default configuration profile is default-user.
Recognizing / extracting phone numbers
======================================
Of course, working on XiVO Client implies working with phone numbers. But how to interpret them easily,
when we are not sure of the format they're in?
You can use the PhoneNumber namespace (`baselib/src/phonenumber.h`) to do that, it contains routines
for recognition/extraction of phone numbers, that way you don't have to parse manually.
These subroutines are pretty basic for the moment, if you need/want to improve them, feel free to do it.
Retrieving CTI server infos
===========================
Informations are synchronized from the server to the BaseEngine when the client connects.
It is stored in BaseEngine in "lists". It is stored in a format close to the one used to transmit it,
so you can see the CTI protocol definition for further documentation.
Each list contains objects of different type. These types are :
* channel
* user
* phone
* trunk
* agent
* queue
* group
* meetme
* voicemail
* queuemember
* parking
Each type corresponds to a class derived from XInfo, e.g. channel infos are stored in ChannelInfo objects.
The basic attributes of all objects are 3 strings: the IPBX ID, the XiVO object ID and the extended
ID of the object, which is the two previous attributes linked with a "/".
Listen to IPBX events
---------------------
If you want your XLet to receive IPBX/CTI events, you can do so by inheriting the IPBXListener interface.
You must specify which type of events you want to listen. This depends of the implemented functions in the CTI server.
You can register to listen these events by calling the IPBXListener method :
registerListener(xxx);
For now, `xxx`, the event type, can take take the values :
* chitchat
* history
* records_campaign
* queuestats